我正在尝试从图像中提取边缘。我使用了以下算法。还给出了 512 * 512 灰度图像的输入图像(e11)。
- 求输入图像的形态梯度(gradientim)
- 求梯度图像的负像(negativeim)
- 使用底帽变换(bottomhatim)从闭合图像中减去原始图像。
- 计算输入图像的平均像素(AVG)
- 找到基于 AVG 的二值图像,对图像进行平滑处理。
- 找到最大的连接区域以找到较大的对象(CC)。
- 从平滑后的图像(边缘)中减去最大区域。
我写的matlab代码如下
e11 = imread("lena.jpg");
e11= double(e11);
gradientim = imdilate(e11,se) - imerode(e11,se);
negativeim = imcomplement(gradientim);
bottomhatim = imclose(negativeim,se) - e11 ;
AVG = mean2(e11);
%-------Computing binary image--------
for i=1:(height)
for j=1:(width)
if(AVG > bottomhatim(i,j,:))
bottomhatim(i,j,:) = 1;
else
bottomhatim(i,j,:) = 0;
end
end
end
CC = bwconncomp(bottomhatim);
edge = bottomhatim - CC;
在执行第 7 步时,由于连接组件(CC)的类型是 'struct' ,我收到如下错误
“'struct' 类型的输入参数的未定义函数 'minus'”。
是否可以使用“bwconncomp”函数来查找最大的连接区域?是否有任何替代函数?请帮助我更正此代码。提前致谢。