1

これは、画像内のオブジェクトの数をカウントするためのMATLABコードのステップの1つです。

B = bwboundaries(img2);
imshow(img2)
text(10,10,strcat('\color{green}Objects Found:',num2str(length(B))))
hold on

コードの説明は

> This step finds the boundaries of each object that it finds and stores
> it in B. The text function prints the number of objects that are found
> by bwboundaries.

しかし、私はステップ3を理解できません。誰かが各行のコードを簡単に説明できますか。ありがとう。

4

3 に答える 3

2

ヘルプについては、その関数のヘルプ ファイルをbwboundaries参照してください。

imshow(img2)

... img2Figure ウィンドウにイメージを表示します。

length(B)

...ベクトル (または行列) B のスカラー長を指定し8ます。

num2str(length(B))

...この数値を文字列に変換します'8'

strcat('\color{green}Objects Found:',num2str(length(B)))

...文字列の先頭に string を追加し'8'ます\color{green}Objects Found:。この場合、完全な文字列になります。

\color{green}Objects Found:8

関数はtext、このテキストを現在の軸上の指定された位置、この場合は位置 (10, 10) に配置します。これのトリッキーな部分は、\color{green}MATLAB にテキストを緑色にするように指示するテキスト文字列の部分です (テキストがプロットされたときに表示されません)。

`hold on`

...同じ軸にプロットされた新しいアイテムが現在のアイテムを消去するのを防ぎます。

これらのコマンドのほとんどについては、コマンドを使用して MATLAB から学習できますhelp。例help bwboundaries:

>> help bwboundaries
 bwboundaries Trace region boundaries in binary image.
    B = bwboundaries(BW) traces the exterior boundary of objects, as well
    as boundaries of holes inside these objects. It also ... <snip>
于 2013-03-08T19:51:17.070 に答える
1

@BillCheatmanの回答に加えて、おそらくBWBOUNDARIES functioniが何をしているのか、そしてそれが何を返しているのかを理解する必要があります。完全な説明と例については、ドキュメントを参照してください。

あなたもそれを見つけるでしょう

bwboundaries は、P 行 1 列のセル配列 B を返します。ここで、P はオブジェクトと穴の数です。

したがって、ステートメントlength(B)はセル配列の最大次元を示しますB。これはP、上記の引用または見つかったオブジェクトの数にあります。

于 2013-03-08T19:58:04.097 に答える
1

"text(10,10,strcat('\color{green}Objects Found:',num2str(length(B)))) " この行は、(10,10) の位置にテキスト行を書き込みます。画像。

"B = bwboundaries(img2);" これは、バイナリ イメージである img2 の境界を計算するためのものです。

この画像を例に取りましょう:
ここに画像の説明を入力

この画像から、4 つのエッジがあることがわかります。したがって、「B = bwboundaries(img2);」を使用すると、4 セル データである B が得られます。各セルは、すべてのエッジ ポイント座標を格納する *2 行列です。したがって、行列の各行はエッジ ポイントです。私たちが持っている例では、4 つのエッジがあり、それらの図は次のように示されています。 ここに画像の説明を入力

于 2013-03-09T22:13:39.860 に答える