matlab图像处理之边缘检测基础算法

一、Roberts 边缘检测算子(代码在最下边

       Roberts边缘检测算子根据任意一对互相垂直方向上的差分可用来计算梯度的原理,采用对角线方向相邻两像素之差;Roberts检测器较为简单,但具有一些功能上的限制,例如,它是非对称的,而且不能检测诸如45°倍数的边缘。然而,它还是经常用于硬件实现中,因为它既简单又快速。

二、Sobel 边缘检测算子(代码在最下边

       Sobel 算子很容易在空间上实现,边缘检测效果较好,且受噪声的影响也较小。邻域增大抗噪性会更好,但计算量也会增大,得出的边缘也会相应变粗。Sobel算子会检测出许多伪边缘,边缘定位精度不够高,在精度要求不高时是一种较常用的边缘检测方法。

三、Prewitt 边缘检测算子(代码在最下边

        图像中的每个像素都用这两个核作卷积,一个核对垂直边缘影响最大,另一个核对水平边缘影响最大。两个卷积的绝对值的最大值作为该点的输出值。不能简单的将小于0的值处理为0,这样会丢失信息。它比Sobel检测器在计算上要简单一些,但比较容易产生一些噪声。

四、Canny边缘检测器(代码在最下边

        Canny检测器的效果较好,更适合用于检测真正的弱边缘。Canny算子给出了一个好的边缘检测算子的3个指标:低失误率,即真正的边缘点尽可能提取,非边缘点尽可能不提取;高位置精度,检测的边缘应尽可能接近真实边缘;对每一个边缘点有唯一的响应,即得到单像素宽度的边缘。

clear all;

I = imread(‘veg.png’);

I=rgb2gray(I);

J1= edge(I,‘sobel’); %利用Sobel算子进行边缘检测

J2= edge(I,‘roberts’); %利用roberts算子进行边缘检测

J3= edge(I,‘prewitt’); %利用prewitt算子进行边缘检测

J4= edge(I,‘canny’); %利用canny算子进行边缘检测

subplot(2,3,1),imshow(I)

subplot(2,3,2),imshow(J1)

subplot(2,3,3),imshow(J2)

subplot(2,3,4),imshow(J3)

subplot(2,3,5),imshow(J4)

 

猜你喜欢

转载自blog.csdn.net/weixin_46908370/article/details/121441950
今日推荐