边缘提取算子检测比较

1、sobert、robert和prewitt算子检测图像边缘
I=imread(‘mc.jpg’);i2=im2double(I); ihd=rgb2gray(i2);
[thr,sorh,keepapp]=ddencmp(‘den’,‘wv’,ihd);
ixc=wdencmp(‘gbl’,ihd,‘sym4’,2,thr,sorh,keepapp);
figure,imshow(ixc),title('消噪后图像 ');
k2=medfilt2(ixc,[7,7]); figure,imshow(k2),title(‘中值滤波’);
isuo=imresize(k2,0.25,‘bicubic’);
esobel=edge(isuo,‘sobel’);erob=edge(isuo,‘roberts’);eprew=edge(isuo,‘prewitt’);
subplot(2,2,1);imshow(isuo);title(‘前期处理图像’);
subplot(2,2,2);imshow(esobel);title(‘sobel算子提取’);
subplot(2,2,3);imshow(erob);title(‘roberts算子提取’);
subplot(2,2,4);imshow(eprew);title(‘prewitt算子提取’);
边缘提取算子检测比较

拉普拉斯算子、canny算子
I=imread(‘mc.jpg’);i2=im2double(I); ihd=rgb2gray(i2);
[thr,sorh,keepapp]=ddencmp(‘den’,‘wv’,ihd);
ixc=wdencmp(‘gbl’,ihd,‘sym4’,2,thr,sorh,keepapp);
figure,imshow(ixc),title('消噪后图像 ');
k2=medfilt2(ixc,[7,7]);
isuo=imresize(k2,0.25,‘bicubic’);
elog=edge(isuo,‘log’);ecanny=edge(isuo,‘canny’);
subplot(2,2,1);imshow(isuo);title(‘前期处理图像’);
subplot(2,2,2);imshow(k2),title(‘中值滤波’);
subplot(2,2,3);imshow(ecanny);title(‘canny算子提取’);
subplot(2,2,4);imshow(elog);title(‘log算子提取’);
边缘提取算子检测比较

比较结果:
Roberts算子检测方法对具有陡峭的低噪声的图像处理效果较好,但是利用roberts算子提取边缘的结果是边缘比较粗,因此边缘的定位不是很准确。
Sobel算子检测方法对灰度渐变和噪声较多的图像处理效果较好,sobel算子对边缘定位不是很准确,图像的边缘不止一个像素。
Prewitt算子检测方法对灰度渐变和噪声较多的图像处理效果较好。但边缘较宽,而且间断点多。
Laplacian算子法对噪声比较敏感,所以很少用该算子检测边缘,而是用来判断边缘像素视为与图像的明区还是暗区。
Canny方法不容易受噪声干扰,能够检测到真正的弱边缘。优点在于,使用两种不同的阈值分别检测强边缘和弱边缘,并且当弱边缘和强边缘相连时,才将弱边缘包含在输出图像中。