上の写真が示すように、セグメンテーション後に1つの画像の境界を取得しました。しかし、論理的な境界を取得しただけで、セグメンテーションによって分割された各領域にラベルを付けたいと思います。関数 bwlabel は機能しません。接続された領域にのみラベルを付けることができます。では、これらの 200 の領域にどのようにラベルを付けることができますか ???
質問する
482 次
1 に答える
0
元の画像がimgと呼ばれ、現在の bw セグメント化された画像がIと呼ばれる場合、次のことをお勧めします。
I = (I==0); % invert the image
cc = bwconncomp(I,8); % could use 4-connected neighborhood also
s = regionprops(cc,img,'all');
最後の行は、セグメント化された領域ごとに元の画像から利用可能なすべてのプロパティを提供します (必要な場合)。あなたが言及したようにbwlabelを使用することもできますが、 bwconncompの方が高速/効率的であると思います。
ラベル付けのためのbwlabelの代替手段は次のとおりです。
L = labelmatrix(cc);
次に、label2rgbを使用してセグメントを表示するのが好きです。
RGB_label = label2rgb(L, @jet, 'k', 'shuffle');
imshow(RGB_label);
これにより、提供されたカラーマップ (この場合はジェット) に従って各セグメントがランダムに色付けされます。
于 2012-09-06T04:12:13.157 に答える