边缘检测常用算子

来源:互联网 发布:最优化 推荐 编辑:程序博客网 时间:2024/04/28 21:07

 

边缘检测常用算子:

 

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

 

Roberts 算子考虑图像的2*2邻域,是最简单的边缘检测算子,算法过程简述:

1】,遍历图像(除去上边缘和左边缘),对每个像素做Roberts模板运算。

2】,将结果保存到目标图像,结束。

 

Sobel算子考察的是3*3邻域,由两个卷积核组成,见上图,算法过程简述:

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

2】,比较两个计算结果的大小,取较大者复制到目标图像,结束。

 

Prewitt算子和Sobel算子类似,所不同的是选用不同的模板而已,算法过程相同。

 

Krisch算子同样考究3*3邻域,所不同的是选用了八个卷积核,见上图,算法过程简述:

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

2】,比较八个计算结果的大小,取较大者复制到目标图像,结束。

 

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

 

 

 

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

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

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

 

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

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

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

 

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

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

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

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

计算梯度作用模板,遍历像素,进行模板运算即可。

   

 

 

 

 


幅值和方向:

        
 

 

 

 

 

 

 

 

 

 

 
















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

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

 

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


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

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

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

 

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

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

 解决方法

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

 

 

 

 

原创粉丝点击