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算子进行图像边缘检测');程序运行结果如下图:

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算子进行边缘检测');程序运行结果如下图:

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算子进行边缘检测');程序运行结果如下图:
