图像边缘检测算子

2025-10-04 16:42:46

1、edge函数用于实现图线的边缘检测,其调用格式如下:

        BW=edge(I);默认sobel算子

        BW=egde(I,’Sobel’,thresh);   

        BW=edge(I,’Roberts’);

        BW=edge(I,’Prewitt’);

        BW=edge(I,’Log’,thresh,sigma);

        BW=edge(I,’Canny’);

 其中thresh表示阀值,sigma表示Sobel,Roberts,Prewitt,LOG(Laplacian-Gauss),Canny表示边缘检测相关的算子,sigma表示标准差。

2、Sobel算子

Sobel算子从不同的方向进行边缘检测,sobel算子并不是简单求平均然后在差分,而是提高了中心像素上下左右4个方向像素的权重。通常用于处理灰度渐变和噪声较多的图像。

示例:利用Sobel算子不同阀值进行图像边缘检测

编写对应的m文件如下:

       I=imread('coins.png');

       I1=edge(I,'Sobel',0.03);

       I2=edge(I,'Sobel',0.05);

       I3=edge(I,'Sobel',0.08);

       subplot(2,2,1)

       imshow(I);

       title('原始图像');

       subplot(2,2,2)

       imshow(I1);

       title('利用阀值0.03,Sobel算子进行图像边缘检测');

       subplot(2,2,3)

       imshow(I2);

       title('利用阀值0.05,Sobel算子进行图像边缘检测');

       subplot(2,2,4)

       imshow(I3);

       title('利用阀值0.08,Sobel算子进行图像边缘检测');

程序运行结果如下图:

图像边缘检测算子

3、Roberts算子

Roberts算子是一种斜向偏差分的梯度计算方法,,梯度的大小代表边缘的强度,梯度的方向和边缘走向垂直的

示例:利用Roberts算子不同阀值进行图像边缘检测

编写对应的m文件如下:

        I=imread('rice.png');

       BW1=edge(I,'Roberts',0.02);

       BW2=edge(I,'Roberts',0.05);

       BW3=edge(I,'Roberts',0.07);

       subplot(2,2,1)

       imshow(I);

       title('原始图像');

       subplot(2,2,2)

       imshow(BW1);

       title('利用阀值0.02,Roberts算子进行边缘检测');

       subplot(2,2,3)

       imshow(BW2);

       title('利用阀值0.05,Roberts算子进行边缘检测');

       subplot(2,2,4)

       imshow(BW3);

       title('利用阀值0.08,Roberts算子进行边缘检测');

程序运行结果如下图:

图像边缘检测算子

4、Prewitt算子

Prewitt算子是一种边缘样板算子,利用像素点上下左右邻点灰度差,在边缘处达到边缘检测的目的。

示例:利用Prewitt算子不同阀值进行图像边缘检测

编写对应的m文件如下:

       I=imread('cameraman.tif');

       BW1=edge(I,'Prewitt',0.02);

       BW2=edge(I,'Prewitt',0.05);

       BW3=edge(I,'Prewitt',0.07);

       subplot(2,2,1)

       imshow(I);

       title('原始图像');

       subplot(2,2,2)

       imshow(BW1);

       title('利用阀值0.02,Canny算子进行边缘检测');

       subplot(2,2,3)

       imshow(BW2);

       title('利用阀值0.05,Canny算子进行边缘检测');

       subplot(2,2,4)

       imshow(BW3);

       title('利用阀值0.08,Canny算子进行边缘检测');

程序运行结果如下图:

图像边缘检测算子

5、Laplacian-Gauss算子

       Laplacian-Gauss算子是对Laplacian算子的一种改进,需要考虑5×5领域的处理,从而获得更好的边缘检测效果

示例:利用不同标准差的LOG算子来检测图像边缘

编写对应的m文件如下:

       I=imread('pout.tif');

      BW1=edge(I,'LOG',0.002,1);

      BW2=edge(I,'LOG',0.002,2);

      BW3=edge(I,'LOG',0.002,2.5);

      subplot(2,2,1)

      imshow(I);

      title('原始图片');

      subplot(2,2,2);

      imshow(BW1);

      title('标准差为1,阀值0.002的LOG算子边缘检测');

      subplot(2,2,3);

      imshow(BW2);

      title('标准差为2,阀值0.002的LOG算子边缘检测');

      subplot(2,2,4);

      imshow(BW3);

      title('标准差为2.5,阀值0.002的LOG算子边缘检测');

程序运行结果如下:

图像边缘检测算子

6、Canny算子

     Canny提出了边缘检测的三个准则(1)信噪比准则(2)定位精确度准则(3)单边缘响应准则

示例:利用Canny算子来对图像进行边缘检测

编写对应的m文件如下:

       I=imread('eight.tif');

      BW1=edge(I,'Canny',0.02);

      BW2=edge(I,'Canny',0.05);

      BW3=edge(I,'Canny',0.07);

      subplot(2,2,1)

      imshow(I);

      title('原始图像');

      subplot(2,2,2)

      imshow(BW1);

      title('利用阀值0.02,Canny算子进行边缘检测');

      subplot(2,2,3)

      imshow(BW2);

      title('利用阀值0.05,Canny算子进行边缘检测');

      subplot(2,2,4)

      imshow(BW3);

      title('利用阀值0.08,Canny算子进行边缘检测');

程序运行结果如下图:

图像边缘检测算子

7、总结,分别利用上述几种算子对图像进行边缘检测,查看每一种边缘检测效果

示例:利用不同边缘检测算子对图像进行边缘检测

编写对应m文件如下:

        I=imread('cameraman.tif');

       BW1=edge(I,'Sobel',0.03);

       BW2=edge(I,'Roberts',0.03);

       BW3=edge(I,'Prewitt',0.03);

       BW4=edge(I,'LOG',0.03);

       BW5=edge(I,'Canny',0.03);

       subplot(2,3,1)

       imshow(I);

       title('原始图像');

       subplot(2,3,2)

       imshow(BW1);

       title('利用阀值0.03,Sobel算子进行边缘检测');

       subplot(2,3,3)

       imshow(BW2);

       title('利用阀值0.03,Roberts算子进行边缘检测');

       subplot(2,3,4)

       imshow(BW3);

       title('利用阀值0.03,Prewitt算子进行边缘检测');

       subplot(2,3,5)

       imshow(BW4);

       title('利用阀值0.03,LOG算子进行边缘检测');

       subplot(2,3,6)

       imshow(BW5);

       title('利用阀值0.03,Canny算子进行边缘检测');

程序运行结果如下:

图像边缘检测算子

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢