边缘检测常用算子
2011-05-15 14:27
246 查看
边缘检测常用算子:
基于一阶微分的边缘检测方法:
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,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]连接起来为止。
基于一阶微分的边缘检测方法:
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】,用一阶偏导的有限差分来计算梯度的幅值和方向;
计算梯度作用模板,遍历像素,进行模板运算即可。
【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]连接起来为止。
相关文章推荐
- 图像处理常用边缘检测算子总结
- 图像处理常用边缘检测算子总结
- 图像处理常用边缘检测算子总结(转)
- 图像处理常用边缘检测算子总结
- 图像处理常用边缘检测算子总结
- 图像处理常用边缘检测算子
- 图像处理常用边缘检测算子总结
- 图像处理常用边缘检测算子总结(转)
- python数字图像处理(三)边缘检测常用算子
- 图像处理常用边缘检测算子总结
- 边缘检测常用算子
- 图像处理常用边缘检测算子总结
- 图像处理常用边缘检测算子总结
- 数字图像处理技术中常用的边缘检测算子
- 【图像处理复习】图像处理常用边缘检测算子总结
- 图像梯度特征的常用边缘检测算子:Sobel、Prewitt、Roberts
- 常用边缘检测算子及其特性
- 图像处理常用边缘检测算子总结
- OpenCV2马拉松第15圈——边缘检测(Laplace算子,LOG算子)
- 【OpenCV入门教程之十二】OpenCV边缘检测:Canny算子,Sobel算子,Laplace算子,Scharr滤波器合辑