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に似ていますが、彼らは代わりに大規模なもので、小さなオブジェクトを削除しようとしています。