目录
1,边缘检测
图像边缘信息主要集中在高频段,通常说图像锐化或检测边缘,实质就是高频滤波。我们知道微分运算是求信号的变化率,具有加强高频分量的作用。 在空域运算中来说,对图像的锐化就是计算微分。 由于数字图像的离散信号,微分运算就变成计算差分或梯度。 图像处理中有多种边缘检测(梯度)算子,常用的包括普通一阶差分,Robert算子(交叉差分),Sobel算子等等,是基于寻找梯度强度。拉普拉斯算子(二阶差分)是基于过零点检测。通过计算梯度,设置阀值,得到边缘图像。 边缘检测 是图像处理和计算机视觉中的基本问题。 边缘检测的目的 是标识数字图像中亮度变化明显的点。 图像属性中的显著变化通常反映了属性的重要事件和变化。 边缘检测是图像处理和计算机视觉中,尤其是特征提取中的一个研究领域。 除非场景中的物体非常简单并且照明条件得到了很好的控制,否则确定一个用来判断两个相邻点之间有多大的亮度变化才算是有边界的阈值,并不是一件容易的事。实际上,这也是为什么边缘检测不是一个微不足道问题的原因之一。 图像边缘检测大幅度地减少了数据量,并且剔除了可以认为不相关的信息,保留了图像重要的结构属性。 有许多方法用于边缘检测,它们的绝大部分可以划分为两类: 滤波 做为边缘检测的预处理通常是必要的,通常采用高斯滤波。 已发表的边缘检测方法应用计算边界强度的度量,这与平滑滤波有本质的不同。 正如许多边缘检测方法依赖于图像梯度的计算,他们用不同种类的滤波器来估计x-方向和y-方向的梯度。 其它一些边缘检测操作是 基于亮度的二阶导数 。这实质上是亮度梯度的变化率。 在理想的连续变化情况下,在二阶导数中检测过零点将得到梯度中的局部最大值。另一方面,二阶导数中的峰值检测是边线检测,只要图像操作使用一个合适的尺度表示。 如上所述,边线是双重边缘,这样我们就可以在边线的一边看到一个亮度梯度,而在另一边看到相反的梯度。这样如果图像中有边线出现的话我们就能在亮度梯度上看到非常大的变化。 ①滤波: 边缘检测算法主要是基于图像强度的一阶和二阶导数,但导数的计算对噪声很敏感,因此必须使用滤波器来改善与噪声有关的边缘检测器的性能。需要指出,大多数滤波器在降低噪声的同时也导致了边缘强度的损失,因此,增强边缘和降低噪声之间需要折中。 ②增强: 增强边缘的基础是确定图像各点邻域强度的变化值。增强算法可以将邻域(或局部)强度值有显著变化的点突显出来。边缘增强一般是通过计算梯度幅值来完成的。 ③检测: 在图像中有许多点的梯度幅值比较大,而这些点在特定的应用领域中并不都是边缘,所以应该用某种方法来确定哪些点是边缘点。最简单的边缘检测判据是梯度幅值阈值判据。 ④定位: 如果某一应用场合要求确定边缘位置,则边缘的位置可在子像素分辨率上来估计,边缘的方位也可以被估计出来。 在边缘检测算法中,前三个步骤用得十分普遍。这是因为大多数场合下,仅仅需要边缘检测器指出边缘出现在图像某一像素点的附近,而没有必要指出边缘的精确位置或方向。 边缘检测的实质是采用某种算法来提取出图像中对象与背景间的交界线。我们将 边缘定义 为图像中灰度发生急剧变化的区域边界。 边缘检测方法 图像灰度的变化情况可以用图像灰度分布的梯度来反映,因此我们可以用 局部图像微分技术 来获得边缘检测算子。 经典的边缘检测方法,是通过对原始图像中像素的某小邻域构造边缘检测算子来达到检测边缘这一目的的。
2,边缘检测原理
《计算机视觉教程》笔记
编著:章毓晋(清华大学电子工程系)
出版社:人民邮电出版社
出版时间:2017.3
图像中的边缘是像素灰度值发生加速变化而不连续的结果。
边缘检测是常见的图像基元检测的基础,也是所有基于边界的图像分割方法的第一步。
像素灰度值的变化可利用计算导数的方法来检测,一般常使用一阶和二阶导数。
下面借助图4.1.1来介绍不同类型边缘的一些特点以及对它们进行检测的原理。
在图4.1.1中,第1排是图像中典型边缘的示例;
第2排是沿第1排中水平虚线位置得到的图像水平方向的对应剖面图;
第3和第4排分别为剖面的一阶和二阶导数。
这里考虑了3种常见的边缘剖面:
在图 4.1.1(a)中,对灰度值剖面的一阶导数在图像由暗变明的位置处有一个向上的阶跃,而在其他位置都为零。这表明可用一阶导数的幅度值来检测边缘的存在,幅度峰值一般对应边缘位置。对灰度值剖面的二阶导数在一阶导数的阶跃上升区间有一个向上的脉冲,而在一阶导数的阶跃下降区间有一个向下的脉冲。在这两个阶跃区间之间会有一个过零点,它的位置正对应原图像中边缘的位置。所以可用二阶导数的过零点检测边缘位置,而用二阶导数在过零点附近的符号确定边缘像素在图像边缘的暗区或明区。
在图4.1.1(b)中,脉冲状的剖面边缘与图4.1.1(a)所示的一阶导数形状相同,所以图4.1.1 (b)所示的一阶导数形状与图 4.1.1(a)所示的二阶导数形状相同,它的两个二阶导数过零点正好分别对应脉冲的上升沿和下降沿。通过检测脉冲剖面的两个二阶导数过零点就可确定脉冲的范围。对比前一种情况,可以看出直线段和边缘是不同的,需要用不同的检测方法。
在图 4.1.1(c)中,屋顶状边缘的剖面可看作是将脉冲边缘底部拉开而得到的,所以它的一阶导数是将图 4.1.1(b)所示的脉冲剖面的一阶导数的上升沿和下降沿分别拉伸开而得到的,而它的二阶导数是将脉冲剖面二阶导数的上升沿和下降沿拉开而得到的。通过检测屋顶状边缘剖面的一阶导数过零点可以确定屋顶的中心位置。
基于以上的讨论和检测原理,可采用许多不同的方式来检测边缘。在空域对边缘的检测常采用局部导数算子进行。下面分别对一阶导数算子和二阶导数算子进行介绍,然后讨论如何将检测出的边缘点连接成曲线或封闭轮廓并细化的技术。