5

私は Skel=bwmorph(BM,'skel') を使用して川の骨格を取得した Image Processing Toolbox を使用して、MATLAB でコードを作成しています。BP=bwmorph(Skel,'branchpoints') を使用して、合流点と支流が存在するポイントを取得したいと考えています。スケルトンが次のように見えるときはいつでも、BP で多くの誤検知が発生します。

oQo
Q
o

実際の予想される分岐点とともに、Q ピクセルも分岐点としてマークします。このような偽陽性はたくさんあります。

true 分岐点は BP の孤立したピクセルとして発生するのに対し、false 分岐点は常にペアで形成されることに気付きました。

分岐点アルゴリズムがどのようにポイントを見つけるか教えてください。 それがわかれば、幸運な偶然ではなく、偽陽性がペアであり、真陽性が単独であるという実際の理由があると確信できます。

ピクセル周辺の 8 コネクティビティを見ているような気がしますが、それだけではないと思います。

明確にするために、出力のトリミングされた画像にマークを付けました。それが与えるポジティブは赤で示されています。ご覧のとおり、これらのピクセルの 1 つだけが実際には分岐点です。アルゴリズムがどのように機能するかを知りたいので、誤検知がペアで発生する理由を論理的に説明できます (実際に発生する場合)。

画像

4

2 に答える 2

2
BW = (rgb2gray(imread('w5udH.jpg')) > 50);
[i,j] = ind2sub(size(BW), find(bwmorph(bwmorph(BW,'thin',Inf),'branchpoint') == 1));
imshow(BW); hold on; plot(j,i,'rx');

(ここにアップロードしたために画像に奇妙なアーティファクトがいくつかあります)

ここに画像の説明を入力

于 2012-05-22T13:39:38.713 に答える
2

ピクセルが最小 (8-) 接続されていません。使用してみてください

Thin = bwmorph(Skel,'thin');
BP = bwmorph(Thin,'branchpoints');

不要なピクセルを削除します。(skel の代わりに thin を使用することもできます)。

少なくとも 3 つのピクセル (中心を除く) が「1」の場合、分岐点の基本的なアルゴリズムは 3,3 の近傍ピクセルを調べると思います。

于 2012-05-22T13:24:41.587 に答える