基于二阶微分的边缘检测方法:


  

  

 

两种Laplacian模板(附件中)

 

Gauss-Lanlancian算子(附件中)

 

 

Laplacian 算子是二阶导数边缘算子,考察的是3*3邻域,上图是两种比较常用的模板,算法简述如下:

【1】,遍历图像(除去边缘,防止越界),对每个像素做Laplancian模板卷积运算,注意是只做其中的一种模板运算,并不是两个。

【2】,复制到目标图像,结束。

 

Gauss-Laplacian考察的是5*5的邻域,检测的同时,引入了滤波,是噪声得以平滑,上图是一种常用的算子,算法简述。

【1】,遍历图像(除去边缘,防止越界),对每个像素做Gauss -Laplancian模板卷积运算。

【2】,复制到目标图像,结束。

 

Canny边缘检测是非常重要的一种边缘检测算法,主要过程如下:

【1】,用高斯滤波器平滑图像。

已经学习过,根据高斯函数,构造高斯模板,进行滤波,不在赘述。

【2】,用一阶偏导的有限差分来计算梯度的幅值方向

计算梯度作用模板,遍历像素,进行模板运算即可。(图片均在附件中)

 

 

 

 

 


幅值和方向:(图片均在附件中)

 

 

 

 

 

 

 

 

 

 

 


其中,Phi 表示是幅值,Theta 是方向,用图像副本进行保存。

【3】,对梯度幅值进行非极大值抑制;

 

为确定边缘,必须保留局部梯度最大的点,而抑制非极大值(NMS)。


解决办法是,利用梯度的方向:

已经求出Theta 的值,梯度的方向用于非极大值的抑制,将梯度角离散化到0,1,2,3中的一个(通过线性映射),采用近似的算法。知道了梯度角,也就知道了梯度线方向。

邻域的中心像素M与沿着梯度线的两个像素相比。如果M的梯度值不比沿梯度线的两个相邻像素梯度值大,则令M=0。

 

【4】,用双阈值算法检测和连接边缘。

减少假边缘段数量的典型方法是对N[i,j]使用一个阈值。将低于阈值的所有值赋零值。但问题是如何选取阈值?

 解决方法

双阈值算法。双阈值算法对非极大值抑制图象作用两个阈值τ1和τ2,且2τ1≈τ2,从而可以得到两个阈值边缘图象N1[i,j]和N2[i,j]。由于N2[i,j]使用高阈值得到,因而含有很少的假边缘,但有间断(不闭合)。双阈值法要在N2[i,j]中把边缘连接成轮廓,当到达轮廓的端点时,该算法就在N1[i,j]的8邻点位置寻找可以连接到轮廓上的边缘,这样,算法不断地在N1[i,j]中收集边缘,直到将N2[i,j]连接起来为止。

你可能感兴趣的:(基于二阶微分的边缘检测方法:)