3

can.png 画像の境界を見つけるために、MATLAB で数学的形態関数を使用したいと考えています。入力画像は次のとおりです。

ここに画像の説明を入力

次のような境界を取得したい:

ここに画像の説明を入力

strel 、 imerode 、 imdilate を使用して、さまざまな組み合わせとパラメーターを使用しようとしましたが、結果は十分ではありません(期待とはほど遠い)

私の試用コードの1つは次のとおりです。

a = imread ('can.png');
b = im2bw(a);

SE = strel('rectangle', [10 50 ]) ;
i2 = imdilate(b,SE);

figure(1); imshow(i2);

p = ones(4);
c = b - imerode(b,p);

figure(2); imshow(c);

出力は次のとおりです。

ここに画像の説明を入力

予想される画像を作成する方法を教えてください(缶の境界線が薄い黒の背景をお願いしますか?どうもありがとうございました。

4

2 に答える 2

5

その形態学的勾配を二値化し、次に基本SEで拡張を行い、穴を埋め、最後にその境界を取得します(現在の画像を考えると簡単です)。これには、魔法の任意のしきい値は必要ありません。

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

于 2013-01-22T02:07:02.827 に答える
4
im = imread('can.png');

% turn image to BW
imb = (im < 220);

% fill the holes in the image
imf = imfill(imb, 'holes');

% find the edge
ed = edge(imf);

結果の画像:

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

于 2013-01-22T02:06:25.377 に答える