Image 如何在MATLAB中使用预定义模式改进边缘检测?

Image 如何在MATLAB中使用预定义模式改进边缘检测?,image,matlab,image-processing,edge-detection,Image,Matlab,Image Processing,Edge Detection,我用MATLAB编写了一个代码,在平滑(使用中值滤波器进行降噪)、使用Sobel算法进行边缘检测并最终进行阈值化之后,使用预定义的模式来忽略不真实(或不需要的)边缘。我的问题是,例如,当我将Pattern=[1 1;0 0 0;0 0 0]应用于边缘检测(BW)图像时,令人惊讶的是,我仍然保留了垂直边缘(实际上没有进行重大更改) 我的模式应用程序代码: [l,k] = size(edgeDetected_BW); P(1:l , 1:k)=1; //improved edge detected

我用MATLAB编写了一个代码,在平滑(使用中值滤波器进行降噪)、使用Sobel算法进行边缘检测并最终进行阈值化之后,使用预定义的模式来忽略不真实(或不需要的)边缘。我的问题是,例如,当我将
Pattern=[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
运行此代码后,代码行变粗,一些点被删除。我的错在哪里

:汽车的后视图:

黄色圆圈中的点是不需要的