2016-07-14 26 views
1

MATLABでは、連結成分アルゴリズムの原理に基づいて画像分割関数を実装する必要がありますが、いくつかの変更が必要です。これは、非常に単純な2D画像で、背景色と異なる色のオブジェクトを対象としています。MATLABの画像分割アルゴリズム

イメージは、マトリックスとしてイメージを撮ると、私は背景色を選択するツールを提供します(イメージごとに変わります)。次に、画像の背景の色の値を選択すると、画像内のすべてのオブジェクトを分割する必要があります。その結果は、画像の同じサイズのラベル付き行列で、バックグラウンドは0です、およびオブジェクトごとに異なる番号を使用します。

これは私が何を意味するかのグラフィックの例です。

enter image description here

私はそれを行う方法のアイデアを理解し、私はMATLAB上でそれを実装する方法がわかりません。各ピクセル(行列位置)に対して、私はそれを訪問したようにマークし、値がバックグラウンドの1つに対応する場合は0を割り当て、そうでない場合は別の値を割り当てます。オブジェクトはさまざまな色で形成することができるので、最終的には、色が何であれ、隣接するピクセルのグループを分割する必要があります。また、例の画像の緑のオブジェクトを1つのオブジェクトとしてカウントするには、8つの接続を使用する必要があります。また、オブジェクトは上から下、左から右に数える必要があります。

MATLABでこれを行う簡単な方法はありますか?私はbwlabelの機能を知っていますが、それは2値画像のみで動作しますので、私の場合に適応したいと思います。

+0

Image Segmentationに関するMatlabのチュートリアル(http://www.mathworks.com/discovery/image-segmentation.html)を見たことがありますか?特に、大津の方法が助けになると思います。具体的には、bwconncomp関数を見てください –

答えて

1

あなたは背景色を知っていれば、簡単にあなたのイメージが同じサイズのバイナリマスクに変換することができます:あなたは、バイナリマスクを持って

bw=img!=bg_color; 

たら、あなたのように8連結の引数でbwlavelを呼び出すことができます自分自身を提案してください。

注:処理する前に、rgb2indを使用してカラー画像をRGB表現からインデックス付き画像に変換したい場合があります。

+0

MATLAB実装全体を投稿することは可能でしょうか?ありがとうございました! – xwang