3

とpythonで小さなブロブを保つ:私は2枚の画像持っているバイナリイメージに大きなブロブを取り除くが、PILやskimage

enter image description here enter image description here

Exuse異なる解像度をそれがない点です。左には、カメラの反射による「大きな」小塊があります。私はそのブロブを取り除きたいので、ブロブを閉じる。しかし、右側には私が保つ必要がある貴重な情報である小塊があります。 これらの画像はどちらも同じアルゴリズムを実行する必要があります。 私は単純なオープニングを使用する場合は、小さなブロブもなくなります。 skimageまたは/およびPILを使ってPythonでこれを実装する簡単な方法はありますか?

完璧な世界では、左の画像は白い円を作成し、右の画像は白い円の中に黒い点があるはずです。右側の画像の黒い点のサイズを変更することは大丈夫です。ここ

直接enter image description here

+0

あなたは白い領域内の黒い斑点について話していますか?画像に注釈を追加します。あなたの入力イメージを提供する。あなたの "大きな塊"も近くの小さなものを持っている、彼らはあまりにも欲しいですか? – Piglet

+0

はい、それは私の意味です。私はあなたの提案のおかげで、新しい画像がそれをクリアしてくれることを願っています – Kev1n91

+0

すべての黒い斑点を検出し、閾値より大きな斑点が削除されるように閾値を設定することができました。 – ebeneditos

答えて

1

OKを画像に問題を記述しなければならない画像です。だから私は答える前に。私はこれがハックな方法であり、科学的な背景がないことを伝える必要があります。

from skimage import io, measure 
import numpy as np 
img = io.imread('img.png', as_grey=True) 
img = np.invert(img>0) 
labeled_img = measure.label(img) 
labels = np.unique(labeled_img) 
newimg = np.zeros((img.shape[0],img.shape[1])) 
for label in labels: 
    if np.sum(labeled_img==label) < 250: 
     newimg = newimg + (labeled_img==label) 
io.imshow(newimg) 
io.show() 

これはハック方法ですので、私はむしろ答えコメントしている必要があります知っているが、私はコメントするのに十分なポイントを持っていません。

関連する問題