2016-09-07 2 views
1

グレースケールイメージの場合、イメージを元のイメージを構成するコンポーネントを含むサブイメージに分割する機能がPIL/Pillowにありますか?たとえば、pngのグレースケールイメージにブロックセットが含まれているとします。ここで、画像の種類は常に背景とのコントラストが高くなります。python/PILを使用してイメージコンポーネントを検索

私はopenCVを使いたくないので、一般的なBLOB検出が必要なだけで、Pillow/PILには既にそのようなことがあると考えていました。

+0

あなたは正確に何をしたいですか?あなたのイメージはどのように見えますか?いくつかの追加情報を提供する必要があります。すでに試したことのあるコード例が理想的です。 – meetaig

+0

PIL/Pillowにこれを実行する機能があるかどうかを具体的に質問しています。私は働くコードがないことを明確にしました。 – user1658296

+1

魔法の 'do_what_i_want()'関数はありません。あなたはもっと精巧にする必要があります。一般に、コントラストが良いと言えば、しきい値処理から始めます。 'floodfill'のようなラベル付けアルゴリズムは、異なるブロブを識別することができます。そして、あなたはバウンディングボックスを計算することができます。 – meetaig

答えて

-1

はい、可能です。 PILでedge検出アルゴリズムを使用できます。 サンプルコード:

from PIL import Image, ImageFilter 
image = Image.open('/tmp/sample.png').convert('RGB') 
image = image.filter(ImageFilter.FIND_EDGES) 
image.save('/tmp/output.png') 

sample.png:

enter image description here

output.png:PILを使用していない

enter image description here

+1

OPがもっと矩形を抽出するにはどうしたらいいですか?どのように矩形が見つかった地域を特定しますか? – meetaig

0

が、私は思う一見の価値: I私がnumpy arrのリストとしてインポートした画像ファイルのリストから始めてくださいAYS、と私はthreshold> 0

from skimage.measure import label, regionprops 
import numpy as np 

bool_array_list= [] 

for image in image_files: 
    bool_array = np.copy(image) 
    bool_array[np.where(bool_array > 0)] = 1 
    bool_array_list.append(bool_array) 

img_region_list = [] 

それから私は、8方向の接続を使用して、異なる領域を識別するためにラベルを使用し、regionpropsは私に、サイズなどのメトリックの束を与えているブールバージョンのリストを作成しますと場所。

for item in bool_array_list: 
    tmp_region_list = regionprops(label(item, 
             connectivity=2 
             ) 
           ) 
    img_region_list.append(tmp_region_list) 
関連する問題