【MATLAB图像处理3】 canny边缘检测 (附源码)

canny边缘检测,相对于sobel是较为复杂的一种检测算法,也是迄今为止最优秀的一种边缘检测算法,但是不可否认,它也带来了大量的运算。

 

canny分四步:

1.对灰度图进行高斯滤波  (很简单)

2.. 求出梯度的幅值图像和角度图像(一般用sobel求,简单)

3.对梯度幅值图形进行非最大值抑制,并进行双阈值处理。(难)

4.连接分析来检测并连接边缘。(很难)

 

 

1、高斯滤波。

使用二维高斯公式,产生高斯滤波模版。公式就不写,源码里会有。然后用模版和图像进行卷积。这一步很简单,就不多说了

 

2、求梯度的赋值和角度

用sobel算子,x方向为[-1,-2,-1;               y方向的算子为x方向的转置。然后分别用这两个算子和图像做卷积。然后用公式 A=sqrt(x.^2+y.^2)就是梯度幅值图了。

                                            0, 0, 0

                                            1, 2, 1 ]

 

然后是求角度,没一点的角度为arctan[y/x],求出梯度角度图;

 

3、利用求出的梯度角度图,把各个梯度分别划分到水平,垂直,45°,-45°,四个方向上。然后把赋值图按所划分的四个方向,分别同邻近的两个点比较,若为最大值则保留,若不是,则变为0;这样就得到非最大值抑制图

你可能感兴趣的:(MATLAB图像处理,MATLAB,图像处理)