У вас хорошее начало, используйте ndimage.sum
, чтобы найти размеры каждой помеченной области.
Оттуда вы можете использовать sizes
(или что-то из него полученное) в качестве таблицы поиска:
from scipy import ndimage
label_im, nb_labels = ndimage.label(binary_img)
sizes = ndimage.sum(binary_img, label_im, range(nb_labels + 1))
mask = sizes > 1000
binary_img = mask[label_im]
Это создает таблицу поиска mask
, которая равна true
для индексов, которые соответствуют меткам для более крупных регионов, и false
в других местах.Индексирование в справочную таблицу с использованием помеченного изображения дает желаемое двоичное изображение.
Обратите внимание, что sizes[label_im]
- это изображение, в котором каждый регион окрашен в свой размер.То есть каждый пиксель в области # 1 получает значение размера области # 1.Вы можете создать пороговое значение для этого изображения, чтобы удалить небольшие области:
size_img = sizes[label_im]
binary_img = size_img > 1000
(Эти две строки эквивалентны двум последним строкам предыдущего фрагмента кода.)