Я использую skimage.segmentation.felzenszwalb
, как показано на рисунке here, и это здорово.scikit-image - felzenszwalb сегментация: удалите большие сегменты
Я настроил параметры как можно лучше, но он все еще обнаруживает некоторые большие сегменты, которые я не хочу. Как я могу удалить сегменты выше определенного размера? Я знаю, что вы можете использовать skimage.measure.regionprops
, чтобы получить площадь каждого сегмента, но я не уверен, как удалить сегмент с segments_fz
, оставив массив в такте за mark_boundaries
.
import numpy as np
import skimage.io
from skimage.util import img_as_float
from skimage.segmentation import felzenszwalb
from skimage.segmentation import mark_boundaries
img = img_as_float(astronaut()[::2, ::2])
segments_fz = felzenszwalb(img, scale=100, sigma=0.5, min_size=50)
print("Felzenszwalb number of segments: {}".format(len(np.unique(segments_fz))))
segmented_img = mark_boundaries(img, segments_fz)
skimage.io.imsave('img_labeled.png', segmented_img)
Это похоже на this post, но они пытаются удалить мелкие объекты, а не больших.