Расчет покрытия поверхности бинарного изображения дает противоречивые результаты, несмотря на правильный внешний вид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»