3

我想在 MATLAB 中使用数学形态学函数来找到 can.png 图像的边界。输入图像为:

在此处输入图像描述

我想得到一个边界,例如:

在此处输入图像描述

我尝试使用 strel、imerode、imdilate 使用不同的组合和参数,但结果不够好(与预期相去甚远)

我的试用代码之一是:

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 回答