さまざまな兆候のあるRGB画像があります。私の主な目標は、画像の境界線と接触している標識を数えることです。
取り組みと課題
画像をロードすることから始めました。1]、次にそれをグレースケールに変換し、メジアンフィルターを適用してノイズを取り除きます[図1]。2]。次に、しきい値を0.2にして2値化しました。その結果、図3が得られました。この時点で2値化された画像を取得しましたが、問題は、同じ標識に属する一部が1つだけではなく、さまざまな領域に表示されていることです。私の目標は、同じオブジェクトに属する領域をマージすることです。そのためbwlabel
、画像にある標識の数を数えimclearborder
、境界線にある標識を取り除くために使用bwlabel
し、両者の違いを取得するためにもう一度使用することができます二つ。
私のアプローチは、使用していたbwmorph
、Dilate
オブジェクトを拡張し、その後でそれらを埋めるためにしようとimfill
、holes
。しかし問題は、それらを少量拡張すると、4]、imfill
それらを大きく拡張すると[]はそれらを埋めるようには見えません[図5]すべてのオブジェクトがマージし始めます:(
コード
img=im2double(imread('image.png')); figure, imshow(img)
img_gray=rgb2gray(img); imshow(img_gray);
img_mediana=medfilt2(img_gray, [3 3]); figure, imshow(img_mediana);
img_bin=im2bw(img_mediana, 0.2); imshow(img_bin)
img_dilate=bwmorph(img_bin, 'Dilate', 10); imshow(img_dilate)
img_fill=imfill(img_dilate, 'Holes'); figure, imshow(img_fill)
図
図1:
図1 http://dl.dropbox.com/u/5272012/1.png
図2:
イチジク2 http://dl.dropbox.com/u/5272012/2.png
図3:
図3 http://dl.dropbox.com/u/5272012/3.png
図4:
イチジク4 http://dl.dropbox.com/u/5272012/4.png
図5: