我用MATLAB编写了一个代码,在平滑后(使用中值滤波器进行降噪),使用Sobel算法进行边缘检测,最后进行阈值处理,使用预定义的模式来省略不真实(或不需要的)边缘。我的问题是,当我将Pattern = [1 1 1;0 0 0;0 0 0]
应用于边缘检测(BW)图像时,令人惊讶的是我保留了垂直边缘(实际上没有进行重大更改)。
我的模式应用程序代码:
[l,k] = size(edgeDetected_BW);
P(1:l , 1:k)=1; //improved edge detected image
Pattern = [1 1 1;0 0 0;0 0 0];
for i=1:l-2
for j=1:k-2
if((edgeDetected_BW([i i+1 i+2] , [j j+1 j+2])| Pattern) == Pattern)
P(i+1 , j+1) = 0;
end
end
end
运行此代码后,线条变粗,并删除了几个点。我的错误在哪里?
。:后视汽车:。
黄色圆圈中的圆点是不受欢迎的。
答案 0 :(得分:0)
如果你的目标是削减边缘,我会使用[1 1 1;0 0 0;1 1 1];
作为模板模板。此外,P(i:i+2 , j:j+2) = 0;