Маскирование в ndimagebinary_closingPython

Программы на Python
Anonymous
Маскирование в ndimagebinary_closing

Сообщение Anonymous »

У меня есть два изображения:
  • Двоичный контур некоторой структуры ().
  • Некоторые поверхности внутри этой структуры ().
Я хочу объединить эти два изображения так, чтобы между ними не оставалось дыр. Для этого я:

[*]сделал копию поверхности и расширил ее в 10 раз
[*]объединил нерасширенная исходная поверхность и контур
[*]запустите ndi.binary_closing с расширенной поверхностью в качестве маски
< /ol>

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

outline = ...
surface = ...

merged = np.logical_or(outline, surface)
dilated_surface = ndimage.binary_dilation(surface, iterations=10)
merged = ndimage.binary_closing(merged, mask=dilated_surface)
Согласно документации, маска должна влиять только на то, какие пиксели можно изменить. Так почему же я получаю два совершенно разных результата при таком использовании по сравнению с без маски? Я имею в виду отверстия по краям маски.
Я знаю, что вместо этого можно сделать:

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

closed = ndi.binary_closing(merged)
merged[neighborhood_mask] = closed[neighborhood_mask]
но это дает немного другие результаты (по понятным причинам), и я хочу лучше понять маскировку.
Вот результаты:
Изображение

И есть только объединенное изображение вместе с поверхностью:
Изображение
Изображение


Подробнее здесь: https://stackoverflow.com/questions/787 ... ry-closing

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