MATLABで画像の境界線と交差するオブジェクトの数を数える


9

さまざまな兆候のあるRGB画像があります。私の主な目標は、画像の境界線と接触している標識を数えることです。

取り組みと課題

画像をロードすることから始めました。1]、次にそれをグレースケールに変換し、メジアンフィルターを適用してノイズを取り除きます[図1]。2]。次に、しきい値を0.2にして2値化しました。その結果、図3が得られました。この時点で2値化された画像を取得しましたが、問題は、同じ標識に属する一部が1つだけではなく、さまざまな領域に表示されていることです。私の目標は、同じオブジェクトに属する領域をマージすることです。そのためbwlabel、画像にある標識の数を数えimclearborder、境界線にある標識を取り除くために使用bwlabelし、両者の違いを取得するためにもう一度使用することができます二つ。

私のアプローチは、使用していたbwmorphDilateオブジェクトを拡張し、その後でそれらを埋めるためにしようとimfillholes。しかし問題は、それらを少量拡張すると、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

イチジク5 http://dl.dropbox.com/u/5272012/5.png


私の質問は、標識が壊れていると正確に何をあなたに伝えていますか?出力を実際にどのように配置しますか?つまり、カットされたすべての標識を色付けしますか?または、本当に各標識をリストして、カット/フルを分類しますか?
Dipan Mehta

回答:


3

私の意見では、膨張収縮は非常に基本的なツールです。そのような決定を行うには、非常に強力な情報ベースとかなりまともな入力画像があります。

これが私の見解です:

  1. 図1から3に進むのに十分な成功を収めた場合、個々の兆候を識別してセグメント化できます。

  2. 以前に既知の兆候があると想定すると、まともな高速アルゴリズムを適用してパターンマッチングを実行できます。正確なパターンがわからない場合は、パターンの外形を特定するだけです。

  3. 分類に基づいて、一致した各パターンの重心と、それぞれの幅と高さを常に定義できます。重心のX、Y位置が境界線に近すぎる場合つまり、またははエッジの外側にあり、同様にY軸にも適用できます。c e n t r o i d x > i m a g e w i d t h s h a p e w i d t hcentroid(x)<0centroid(x)>imagewidthshapewidth

  4. 何がエッジに当たるかについてのみ懸念しているとすると、各エッジのみから始めて、そこでパターンマッチングを開始する必要があります。部分パターン/形状に一致する開始および部分パターン/形状が一致しない場合、オブジェクトは、そのISエッジで切断されます。

問題を適切に定式化するのに役立つ可能性のある参考資料をいくつか示します。

このペーパーは、あなたが扱っている標識/トークンに関する多くの基本を理解するのにとても良いです。

Anil K. Jain and Aditya Vailaya Shape-Based Retrieval:Case Study with Trademark Image Databases パターン認識1998、vol。31、no9、pp.1369-1390

部分的または隠れた形状/パターンマッチングを扱う多くの研究要素があります。

Eli Sabre、Yaowu Xu、A。Murat Tekalp 部分マッチングガイド付き画像ラベリングのためのサブマトリックスマッチングによる部分形状認識パターン認識38(2005)1560 – 1573

このアプローチを採用すると、より具体的なクエリの回答が展開されます。


おい!パターンマッチングを使用することはできません。非常に時間がかかり、計算作業が多すぎるためです。また、オブジェクト(標識)のスケールは可変である可能性があります(教授は、標識のスケールが+ 30%から-30%までの非常にランダムな画像を提供するため、パターンマッチングは役に立ちません。これを解決するための命令
ルイ・トロビスコ2012年

@RuiTrovisco私はこれを理解しています。これが私が一種の書いた理由です-私はあなたのフィードバックに基づいて答えを改善します。あなたの質問にいくつかコメントを付けました。元に戻してください。
Dipan Mehta

1

ここにあなたが求めているものの反対を示す小さなインスピレーションがあります。

まずはfig3から。

% Find background
labels = bwlabel(~fig3);
[n,idx] = hist(labels(:),0:max(labels(:)));
[bgrSize bgrLableIdx] = max(n);
bgr = (labels == idx(bgrLableIdx));
bgr = imopen(bgr,strel('disk',3));

% Remove border objects and cleanup
borderCleared = imclearborder(~bgr);
borderCleared = imopen(borderCleared,strel('disk',3));

ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.