Matlab中的图像变形

use*_*485 3 matlab image-processing edge-detection

我想在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);
Run Code Online (Sandbox Code Playgroud)

输出是:

在此输入图像描述

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

mmg*_*mgp 5

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

在此输入图像描述 在此输入图像描述