[数字图像处理]Canny边缘检测

Canny边缘检测算法详解:

1、基本原理:

  • 须满足条件:抑制噪声;精确定位边缘。
  • Canny提出边缘检测的三个目标,将此实现的过程就是Canny边缘检测算子。
  • 从数学上表达了三个准则[信噪比准则(低错误率)、定位精度准则、单边缘响应准则],并寻找表达式的最佳解。
  • 属于先平滑后求导的方法。

2、算法实现步骤:


a.用高斯滤波器平滑输入图像:



Guass过程:

1、用坐标点表示一个3x3的邻域,设中心点的坐标为(0,0),相邻的点以此类推;

2、计算权重矩阵。设定方差的值,将对应各个坐标点带入二维高斯公式中,得到一个权重矩阵,归一化权重矩阵(矩阵中各个点除以权重之和),得到标准的权重矩阵,也就是说得到了高斯模板。

3、计算高斯模糊。设在一幅图像中的3x3区域内,用各像素点的灰度值乘以对应点的权重。

4、将3中得到的9个值求和,就是中心点的高斯模糊值。

卷积过程:

通过guass过程求得中心点的高斯模糊值,使高斯模板遍历原图像,得到每一点的高斯模糊值的这种过程就是卷积过程。对数字图像处理来讲,是一种离散卷积过程,卷积是一种过程,是模板在图像中移动的过程,移动才叫卷积,没有移动,就没有卷积。

b.计算梯度的幅值图像和角度(方向)图像:

补充:求变化率时,对于一元函数,求导;对于二元函数,求偏导。

    数字图像处理中,求取灰度值的梯度(变化率)是用一阶有限差分来进行近似得到的。(即:使差商近似取代微商。求灰度的变化率,分别取x和y方向上相邻像素做差,代替求取x和y方向一阶偏导)

例:计算一点x方向和y方向的梯度幅值和方向


上图中显示一段直的边缘线段放大后一部分,每个方块代表一个像素点,用一个方框强调点处边缘的幅值和方向。令灰色像素值为0,白色像素值为1.

如图关于一点为中心的3x3邻域,使用Prewitt卷积模板进行计算:

                                                     

根据x方向和y方向的卷积模板,可知,在3x3邻域中从底部一行像素值减去顶部一行的像素,得到x方向的偏导数(梯度);同样,从右边一列像素值减去左边一列的像素,得到y方向的偏导数。

由此,可以计算出该点梯度的幅值和方向:


如下图表示了中心点的梯度向量、方位角以及边缘方向。(任意点的边缘与梯度向量正交)

[数字图像处理]Canny边缘检测_第1张图片


Canny算子中使用的卷积模板:

           



c.对梯度幅值进行非极大值抑制:

对图像上的任意一中心点梯度方向(边缘法线)定义四个方向:水平、垂直、+45º、-45º。将所有可能的边缘方向量化为这四个方向,并划分了方向范围,如图:

[数字图像处理]Canny边缘检测_第2张图片

表示图像区域的四个基本边缘方向:水平、-45º、垂直、+45º。对于角度图像中的任一点为中心的区域,可以给出如下非极大值方案:

1、寻找最接近的方向。

2、若梯度幅值比沿方向的任意一邻域的梯度幅值小,则抑制,令;否则,令是非极大值抑制后的图像。图像仅包含细化后的边缘,它等于抑制了非最大边缘点的

 

d.用双阈值算法检测和连接边缘


1、选取两个阈值 。高阈值和低阈值,高阈值和低阈值的比率为2:1或3:1;

2、创建高阈值图像和低阈值图像。使用高阈值和低阈值分别图像进行阈值处理,得到高阈值图像,低阈值图像(高阈值图像非零像素比低阈值图像少,并且所有的非零像素都包含在低阈值图像中);

3、定义“”边缘像素图像,“”边缘像素图像。低阈值图像与高阈值图像做差,得到一副新的图像,称之为边缘像素图像,将高阈值图像称为边缘像素图像(边缘像素作为有效的边缘像素,立即标记,由于阈值大,所以边缘存在不闭和现象);

4、依次访问边缘像素,若到达边缘不连通端点时,使用8连通在边缘像素图像中寻找有效的边缘点,并对有效点进行标记;若边缘像素全部访问完毕,则将边缘像素图像中的所有未标记点像素置零;

5、将新的边缘像素图像与边缘像素图像相加,得到完整的边缘,检测过程完成。

    








你可能感兴趣的:(算法,图像处理,canny,边缘检测)