边缘检测算子_Matlab

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wangxiaobei2017/article/details/78058973

边缘检测的基本步骤是:原始图像经过平滑滤波产生平滑图像,在经过锐化滤波生成锐化图像,然后才是边缘检测生成二值图像,在经过霍夫变换,连接边缘。
通过Matlab运行了几种边缘检测算子,梯度算子(一阶):Roberts,Prewitt,Sobel、高斯-拉普拉斯算子(二阶)和Canny边缘检测算子。

% 练习边缘检测函数,通过青豆的图片,检测出青豆的边缘

% 首先通过rgb2gray 把彩色图像转换成灰度图像
clear all;
I1 = imread('qingdou.jpg');
%I1 = imread('zouxian.jpg');
I = rgb2gray(I1);
subplot(2,3,1);
imshow(I);

% 通过边缘函数进行处理并查看效果

bw1 = edge(I, 'sobel');
bw2 = edge(I, 'prewitt');
bw3 = edge(I, 'roberts');
bw4 = edge(I, 'log');
bw5 = edge(I, 'canny');
subplot(2,3,2);imshow(bw1);title('sobel');
subplot(2,3,3);imshow(bw2);title('prewitt');
subplot(2,3,4);imshow(bw3);title('roberts');
subplot(2,3,5);imshow(bw4);title('log');
subplot(2,3,6);imshow(bw5);title('canny');

直接对青豆图像的处理效果不是很明显,效果如下:
这里写图片描述

然后对一个走线图进行了试验,效果还可以
这里写图片描述
总体来看,Canny算子的效果不错

猜你喜欢

转载自blog.csdn.net/wangxiaobei2017/article/details/78058973