深度学习传统CV算法——边缘检测算子总结以及新兴边缘算法

边缘检测算子总结

  • 边缘检测算子总结
    • SUSAN边缘及角点检测方法
      • SUSAN检测方法概述
      • SUSAN边缘检测
        • 边缘响应的计算
        • 边缘方向的计算
        • 非极大值抑制
        • 子像素精度
        • 检测位置并不依赖于窗口大小
    • SUSAN角点检测
      • 排除误检的角点
      • 非极大值抑制
    • SUSAN噪声滤波方法
    • 新兴的边缘检测算法

边缘检测算子总结

算子 优缺点比较
Roberts 对具有陡峭的低噪声的图像处理效果较好, 但利用Roberts算子提取边缘的结果是边缘比较粗, 因此边缘定位不是很准确。
Sobel 对灰度渐变和噪声较多的图像处理效果比较好, Sobel算子对边缘定位比较准确。
Kirsch 对灰度渐变和噪声较多的图像处理效果较好。
Prewitt 对灰度渐变和噪声较多的图像处理效果较好。
Laplacian 对图像中的阶跃性边缘点定位准确, 对噪声非常敏感, 丢失一部分边缘的方向信息, 造戌一些不连续的检测边缘。
LoG LoG算子子经常出现双边缘像素边界, 而且该检测方法对噪声比较敏感,所以很少用LoG算子检测边缘,而是用来判断边缘像素是位于凸显过的明区还是暗区。
Canny 此方法不容易受噪声的干扰,能够检测到真正的弱边缘。在edge函数中,最有效的边缘检测方法是Canny方法,该方法 的优点在于使用不同的阈值分别检测强边缘和弱边缘,并且仅当弱边缘与强边缘相连时,才将弱边缘包含在输出图像中。因此,这种方法不容易被噪声“填充”,跟容易检测出真正的弱边缘

SUSAN边缘及角点检测方法

SUSAN检测方法概述

SUSAN检测方法是一种基于窗口模板的检测方法,主要是通过在图像每个像素点位置处建立一个窗口,这个窗口是圆形的,这里为了得到各方向同性的响应,窗口内可以是常数权值或高斯权值,一般情况下,窗口半径为3.4个像素(即窗口内总有37个像素)。 这样的窗口模板被放置在每个像素的位置,确定点之间强度相似程度可以由下面的图来描述,这里的x轴是指像素点之间强度差别,y轴指的相似程度,为1就指完全相似。
深度学习传统CV算法——边缘检测算子总结以及新兴边缘算法_第1张图片
深度学习传统CV算法——边缘检测算子总结以及新兴边缘算法_第2张图片
考虑为了运算简单,一般情况下使用a线(上图),最后统计所以同中心点相似的点数(即相似程度为1的点)相似点所在区域被称为USAN(Univalue Segment Assimilating Nucleus),而特征边缘或角点就是在这个点数值局部最小地方。图中的分界点(区分是否相似的像素差别)实际上反映了图像特征的最小对比程度,及被排除噪声的最大数目。
SUSAN边缘及角点检测没有用到图像像素的梯度(导数),因为这个原因,所以即使在噪声存在情况下,也能有好的表现。因为只要噪声足够的少,没有包含到所有相似像素的点,那么噪声就可以被排除。在计算时,单个值的集合统一消除了噪声的影响,所以SUSAN对于噪声具有较好的鲁棒性。
SUSAN是通过比较像素点邻域同其中心相似程度,所以也具有了光强变化不变性(因为像素点差别不会变化),及旋转不变性(旋转不会改变局部像素间的相似程度),及一定程度的尺度不变性(角点的角度在尺度放大并不会变化,这里的一定程度是指在尺度放大时,局部的曲度会慢慢平滑)。另外SUSAN使用的参数也非常的少,所以对于计算量及储存量要求低。
SUSAN方法被提出来,主要是为针对于边缘检测和角点检测的,然后其对于噪声较高的鲁棒性,也会用于在噪声消除中,被用于去选择最佳局部平滑邻域(相似程度的点最多的地方)。本文重点描述SUSAN方法用于边缘检测和角点检测的思路,并简要介绍下SUSAN方法是如何应用于噪声消除领域的。

SUSAN边缘检测

SUSAN边缘检测总共包括5个步骤:

  1. 边缘响应的计算;
  2. 边缘方向的计算;
  3. 非极大值抑制;
  4. 子像素精度和检测位置。
    具体的检测过程如下。

边缘响应的计算

首先考虑到图像以每点像素为中心的圆形模板(半径为3.4个像素,模板内共有37个像素),对于其内的每个邻域点都作如下相似度衡量的计算(标准是上图的a线),这里的r是领域像素距离中心的长度,而r0是中心位置,t指相似度分界值(其决定了特征同背景的最小区别程度,及最大可被排除的噪声数)。

在这里插入图片描述
当然我们也可以用平滑的线来从代替这种直接的分割方式(如下图b线),这样可以获得更稳定而敏感的结果,虽然计算复杂但是可以通过查找表来获得较快的速度。公式如下:
在这里插入图片描述
并计算总共的相似程度:
在这里插入图片描述
接下来,将n同一个固定的阈值g比较(一般设置为最大同中心相似点数nmax的0.75倍左右),初始的边缘响应可以用下面等式计算:
在这里插入图片描述
这里g是为了排除噪声的影响,而当n小于这个阈值时,才能被考虑其的边缘是否是边缘,n越小,其边缘响应就越大。如果一个阶跃边缘被考虑,如果这个点在边缘上,那么其USAN的值应当是小于或等于0.5倍的最大值,而对于曲线边缘来说,这个值应该会更少(因为曲度会更小,所以在窗口内,曲线内的区域会更小),所以g的加入不会影响原来的边缘检测的结果的(即所得的边缘响应R是不会为0的)。

边缘方向的计算

为什么要计算边缘方向呢?首先,非极大值抑制需要找到边缘方向(这个之后再解释),另外确定子像素级精度也需要找到边缘方向(这个好理解),最后,一些应用可以会用到边缘方向(也包括位置及长度),一个像素若其边缘长度不会0,那么便有边缘方向,边缘一般有两种情况:
深度学习传统CV算法——边缘检测算子总结以及新兴边缘算法_第3张图片
一种是标准的边缘点(如同中的a和b,其刚好位于边缘的一边或另一边),而c是另一种情况,其刚好位于左右两边的过渡带间,而过渡带的强度恰好为左右像素强度的一半。这里还引入了一个概念,USAN的引力中心(USAN区域即图像模板内的白色区域,就是同中心相似的区域),其可以由下式计算:
在这里插入图片描述
其中a和b情况可以被视一种像素间边缘,引力中心同模板中心的向量恰好垂直于局部边缘方向,我们可以通过这种方式来找到其边缘方向。 而上图c的情况就完全不一样了,其引力中心同模板中心恰好在一点上(这被视为一种像素内边缘),此时边缘的方向就要找到USAN区域内最长的对称轴方向,这个可以通过如下公式来获得:
深度学习传统CV算法——边缘检测算子总结以及新兴边缘算法_第4张图片
前两项的比值可以用于确定边缘的方向(度数),而后一项的符号用于确定一个倾斜边缘其梯度的符号(往那边倾斜)。 接下来的问题就是如何自动决定每点是属于以上哪种的边缘,首先如果USAN区域(像素数)比模板直径(像素数)要小,那么这应该是像素内边缘(如c)。如果要大的话,然后又找到USAN的引力中心,那么这应该是像素间边缘情况(如a和b)。如果引力中心同模板中心的距离小于1个像素的话,此时用于像素内边缘情况(如c)来计算更为精确。

非极大值抑制

CANNY算子中已有介绍,此处不再赘述。
链接: 二阶微分算子.

子像素精度

对于每一个边缘点,首先找到边缘方向,然后在边缘垂直方向上减少边缘宽度,之后剩下的边缘点做3点二次曲线拟合,而曲线的转折点(一般情况下同最初边缘点的距离应当少于半个像素)被视为边缘的精确位置。

检测位置并不依赖于窗口大小

即窗口模板增大,不会改变检测的边缘的位置,即SUSAN具有尺度不变性,另外其对于视点改变后的图像检测重复率也非常高,因为视点变化不会影响其角点是否存在。

SUSAN角点检测

  1. 角点检测方法同其边缘检测方法非常类似,其使用相同的方法来计算每个像素点的同圆形窗口内的相似程度n,然后n也是同一个权值g来比较,不过这里的g只是控制噪声存在数目,而需要考虑边缘,所以g的值为nmax的一半就可以了。
  2. 在特征检测方法里,我们一般需要至少一个阈值来区分特征同非特征,而这个阈值的选择将极大影响了最终特征提取的结果。一般情况下,这里有两种类型的阈值:一个衡量质量,一个衡量数量。
  3. SUSAN方法里的t和g恰好分别符合这两种情况,g控制角点检测的质量,如果g越小,那么我们得到的角点就更尖锐,而t则控制角点数目,如果t越小,那么我们检测的角点数目就越小,然后t却不会影响最终角点质量。(这段是题外话了)
  4. 在计算角响应度后,而在非极大值抑制之前,我们可以排除一些在边缘或噪声位置的误检测角点,比如一条倾斜率比较小的直线,因为边缘线至少要一个像素宽度,所以会在直线上形成不连续断裂,这些断裂的位置可能会形成被误检的角点(如上图的c)。

排除误检的角点

首先找到USAN的引力中心,然后计算引力中心同模板中心的距离,当USAN恰好能指示一个正确角点时,其引力中心同模板中心将不会靠得太近,而如果是条细线的话,引力中心同模板中心将会很近(如上图a和b所示)。另外的操作就是要加强USAN的邻近连续性,在真实图像里,非常容易出现小的噪声点,而这些噪声点可能分布于USAN内。所以对于模板内所有的像素,如果其是位于引力中心同模板中心所连的直线上,那么都应该视为USAN的一部分。

非极大值抑制

SUSAN角点检测方法同基于导数检测方法一个非常大的优势在于,其不会在靠近中心相邻的区域不会与中心区域的角响应很难区分,所以局部的非极大值抑制中需要简单地选择局部的最大值就可以了。

SUSAN噪声滤波方法

SUSAN噪声滤波方法主要是通过仅平滑那些同中心像素相似的区域(即USAN),而由此保留图像的结构信息。而USAN的平滑主要就是找到其中所以像素的平均值,而不会对其相邻的不相关区域进行操作。 不过在区分相似度的公式上,却没有用到原来的公式,而是如下:

在这里插入图片描述
滤波器的最终公式为:
深度学习传统CV算法——边缘检测算子总结以及新兴边缘算法_第5张图片

新兴的边缘检测算法

  1. 小波分析
    1986 年,小波分析在 Y.Meyer , S.Mallat 与 I.Daubechies 等的研究工作基础上迅速地发展起来,成为一门新兴的学科,并在信号处理中应用相当广泛。小波变换的理论基础是傅里叶变换,它具有多尺度特征,如当尺度较大时,可以很好的滤除噪声,但不能很精确的检测到边缘;当尺度较小时,能够检测到很好的边缘信息,但图像的去噪效果较差。因此可以把用多种尺度来检测边缘而得到的结果相结合,充分利用各种尺度的优点,来得到更精确的检测结果。 目前,有很多不同的小波边缘检测算法,主要差别在于采用的小波变换函数不同,常用的小波函数包括: Morlet 小波、 Daubechies 小波、 Harr 小波、Mexican Hat 小波、 Hermite 小波、 Mallet 小波、基于高斯函数的小波及基于B 样条的小波等。
  2. 模糊算法
    在上世纪 80 年代中期, Pal 与 King 等人率先提出了一种模糊算法用来检测图像的边缘,可以很好地把目标物体从背景中提取出来。基于模糊算法的图像边缘检测步骤如下: (1) 把隶属度函数 G 作用在图像上,得到的映像为“模糊的隶属度矩阵”; (2) 反复对隶属度矩阵实行非线性变换,从而使真实的边缘更加明显,而伪边缘变弱; (3) 计算隶属度矩阵的−1 ( 逆 ) 矩阵; (4)采用“ max ”和“ min ”算子提取边缘。该算法存在的缺点是计算复杂,且一部分低灰度值的边缘信息有所损失。
    3 人工神经网络
    利用人工神经网络 [36-38] 来提取边缘在近年来已经发展为一个新的研究方向,其本质是视边缘检测为模式识别问题,以利用它需要输入的知识少及适合并行实现等的优势。其思想与传统方法存在很大的不同,是先把输入图像映射到某种神经元网络,再把原始边缘图这样的先验知识输入进去,然后进行训练,一直到学习过程收敛或者用户满意方可停止。用神经网络方法来构造函数模型主要是依据训练。在神经网络的各种模型中,前馈神经网络应用最为广泛,而最常用来训练前馈网络的是 BP 算法。用 BP 网络检测边缘的算法存在一些缺点,如较慢的收敛速度,较差的数值稳定性,难以调整参数,对于实际应用的需求很难满足。目前, Hopfield神经网络算法和模糊神经网络算法在很多方面都有所应用。神经网络具有下面 5 种特性: (1) 自组织性; (2) 自学习性; (3) 联想存储功能; (4) 告诉寻求优化解的能力; (5) 自适应性等。 以上神经网络的特性决定了它用来检测图像边缘的可用性。

参考网站Glab.

你可能感兴趣的:(深度学习理论,计算机视觉,CV,算法,深度学习,图像处理)