Расчет покрытия поверхности двоичного изображения дает противоречивые результаты, несмотря на правильный визуальный видPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Расчет покрытия поверхности двоичного изображения дает противоречивые результаты, несмотря на правильный визуальный вид

Сообщение Anonymous »

Я работаю с бинарным изображением, созданным на основе изображения, полученного при микроскопии, и пытаюсь рассчитать покрытие поверхности стопкообразными структурами (ячейками). Изображение визуально показывает эти структуры правильно, но количество пикселей для расчета покрытия поверхности не соответствует тому, что я вижу.
Вот описание моей проблемы:
  • Изображение является двоичным (0 и 1), где одно значение представляет собой области стека (ячейки), а другое — фон.
    < /li>
    Когда я просматриваю бинарное изображение, ячейки отображаются правильно сегментированными. Однако когда я рассчитываю покрытие поверхности путем подсчета соответствующих пикселей (0 или 1), результат всегда оказывается ниже ожидаемого.
Что я пробовал:
  • Я проверил двоичное изображение, проверив уникальные значения и применив анализ гистограммы. На гистограмме изображения видны два пика, близкие к 0 и 255, что говорит о том, что изображение действительно двоичное.
  • Я пробовал использовать адаптивный порог, глобальный порог и заполнение дыр, но эти методы дали результат. либо неправильно подсчитано количество пикселей, либо не удалось повысить точность покрытия.
  • Непосредственный подсчет пикселей с интенсивностью, представляющей стеки (например, 0 или 255), дает процент ниже ожидаемого.
    li>
Вопрос: Почему двоичное изображение с визуально правильной сегментацией может давать неточное покрытие поверхности при подсчете пикселей и как я могу обеспечить соответствие количества пикселей визуальному виду?
Вот фрагмент кода, который я использую для расчета покрытия поверхности:

Код: Выделить всё

def calculate_surface_coverage(binary_image, stack_value=0): 

Код: Выделить всё

   stack_pixel_count = np.sum(binary_image == stack_value)

Код: Выделить всё

   total_pixels = binary_image.size

Код: Выделить всё

   surface_coverage = (stack_pixel_count / total_pixels) * 100

Код: Выделить всё

   return surface_coverage

Код: Выделить всё

surface_coverage = calculate_surface_coverage(binary_image, stack_value=0) 

Код: Выделить всё

print(f"Surface Coverage: {surface_coverage:.2f}%") 


Подробнее здесь: https://stackoverflow.com/questions/791 ... despite-co
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»