Matlab中的图像变形

时间:2013-01-22 01:36:47

标签: matlab image-processing edge-detection

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

enter image description here

我希望得到一个边界,例如:

enter image description here

我尝试使用不同的组合和参数使用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);

输出结果为:

enter image description here

任何身体都可以帮助我,如何创建预期的图像(罐头的边界很薄的黑色背景,请?非常感谢。

2 个答案:

答案 0 :(得分:5)

对其形态梯度进行二值化,然后对基本SE进行扩张,填充孔并最终获得其边界(给定当前图像时为平凡)。这不需要任何神奇的任意阈值。

enter image description here enter image description here

答案 1 :(得分: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);

结果图片:

enter image description here