我想在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);
输出结果为:
任何身体都可以帮助我,如何创建预期的图像(罐头的边界很薄的黑色背景,请?非常感谢。
答案 0 :(得分:5)
对其形态梯度进行二值化,然后对基本SE进行扩张,填充孔并最终获得其边界(给定当前图像时为平凡)。这不需要任何神奇的任意阈值。
答案 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);
结果图片: