TGD第八篇:二维应用——图像边缘检测

发布于:2025-07-31 ⋅ 阅读:(34) ⋅ 点赞:(0)

从本篇介绍 TGD 在二维信号处理中的任务应用。TGD 是我们定义的一种新的“变化率表征”,对连续函数而言是一种新的“广义导数”,对离散序列而言是一种新的差分。二维离散序列最常见的就是图像,那么依赖图像变化率的任务,常见且重要的就是边缘检测。感兴趣的朋友可直接阅读原始论文,同时欢迎阅读详见前面的章节:

TGD 第一篇:初心——我想要为“阶梯函数”求导

TGD 第二篇:破局——去除导数计算中的无穷小极限

TGD 第三篇:革新——卷积计算导数的高效之路

TGD 第四篇:初瞰——抗噪有效的定性计算

TGD 第五篇:飞升——给多元函数的导数计算加上全景雷达

TGD 第六篇:落地——离散序列的 TGD 计算

TGD 第七篇:一维应用——信号去噪和插值

一、图像边缘检测简述

理论上,图像边缘是指图像中亮度值出现跃变的地方。当亮度值发生跃变时,图像亮度值的一阶导数中就会出现相应的局部极大值点,或者亮度值的二阶导数中会出现过零点。因此,图像边缘检测任务实质上是计算图像的一阶或二阶导数,并对局部极值点或过零点进行精确定位。目前主流的边缘检测方法可以分为两类:一类是基于梯度的(Gradient-based)算法,如 Canny 边缘检测算法;另一类则是基于拉普拉斯的(Laplacian-based),它们分别对应于计算图像的一阶和二阶导数。

图1:经典离散差分算子

许多经典的离散微分算子,如 Sobel 算子、 Sobel-Feldman 算子和 Scharr 算子被用于计算图像的水平和垂直方向导数的近似表达,而 Laplacian 算子则计算图像二阶导数的近似表达。这些算子由于受到尺寸的限制(如 3 × 3 3 \times 3 3×3 的卷积核),在实际应用中对 噪声敏感 。噪声会在图像的一阶导数中带来许多局部极值,并在二阶导数中带来过零点,从而产生假阳性的检测边缘(False-positive detected edges),如下所示。

图2:基于经典算子的边缘检测结果示例

过去的计算机视觉实践发现,对图像进行滤波(平滑)能有效去除噪声以及由其产生的假阳性检测边缘。为此过去的研究工作建议在使用 Sobel 和 Laplacian 算子计算图像导数之前对图像进行平滑降噪。由于线性算子在卷积中具有结合性和可交换性,微分算子是线性的,当选择线性平滑算子时,可以有以下结论:

∇ x , y ( I ( x , y ) ∗ S ( x , y ) ) = I ( x , y ) ∗ ∇ x , y ( S ( x , y ) ) = ∇ x , y ( I ( x , y ) ) ∗ S ( x , y ) \nabla_{x, y}(I(x, y) * S(x, y))=I(x, y) * \nabla_{x, y}(S(x, y))=\nabla_{x, y}(I(x, y)) * S(x, y) x,y(I(x,y)S(x,y))=I(x,y)x,y(S(x,y))=x,y(I(x,y))S(x,y)

其中 ∇ x , y \nabla_{x, y} x,y 是线性微分算子(如 Sobel 算子), I ( x , y ) I(x, y) I(x,y) 是图像灰度矩阵, S ( x , y ) S(x, y) S(x,y) 是线性平滑算子(如高斯平滑卷积核)。上式表明: 对经过平滑的图像求微分相当于用平滑函数的导数对原始图像进行卷积 ,使新的微分算子具有更大的尺寸。 Marr 等研究人员指出,高斯平滑在时空定位和频率定位之间提供了最佳的权衡,因此高斯函数被广泛用于图像滤波1。并且随之推导得到的一阶高斯导数算子和 LoG 算子被普遍应用于计算图像一阶和二阶导数。

噪声通常是高频信号,但是图像中的边缘也是高频信号 。高斯滤波带来了一个严重的问题,低通滤波去除了噪声,也让图像中的高频原始信号被大大抑制,致使关于边缘的高频信息丢失,并使检测得到的边缘位置相比于真实位置出现偏移,检测结果不可靠(后面的实验图中会看出来)。

为了缓解大尺寸高斯平滑核与高频信息损失之间的矛盾, Marr 和 Hildreth,Canny 等研究者提出了多尺度方法,通过融合不同尺度卷积核的检测结果以获得最终结果。更多的多尺度方法可以参见边缘检测综述2的第 3.4 节。然而,由于小尺度高斯滤波器的噪声敏感性和大尺度高斯滤波器的边缘偏移这两个不可避免的问题,要融合受多因素干扰的且均不可靠的检测结果以获得准确的图像边缘,仍然是难题和挑战。在我看来,过去不存在一种能够准确检测高频边缘信号同时抑制噪声的边缘检测方法。

在现有的微分框架中,缺少一个抗噪且精准的变化率表征,症结所在是不完善的离散序列导数计算理论。 使用大卷积核进行图像导数计算的实践与传统离散序列差分计算理论,即通过有限差分近似导数的数学理论之间存在巨大的鸿沟。前者要求在一定区间范围内进行计算,而后者则要求计算区间大小趋于 0 0 0 ,这是非常矛盾的(有点像打台球中的“ 大力轻推 ”)。

然而, TGD 的出现,让事情有了转机。

二、基于一阶 TGD 的图像边缘检测

在基于梯度的边缘检测方法中,最著名的莫过于 John Canny 在 1986 年提出的边缘检测算法。 OpenCV 提供了一个开源的 Canny 边缘检测算法实现,它由四个阶段组成:高斯平滑降噪,使用 Sobel 算子计算图像的梯度,非极大值抑制,以及双阈值选取。详见 OpenCV 相关文档

由于一阶 TGD 算子自然地结合了图像平滑降噪和图像导数计算,可以将 Canny 算法的前两个阶段融合为一个阶段,形成三段式的 基于一阶 TGD 的图像边缘检测算法。 为了提高梯度计算的稳定性,我除了在 x x x y y y 轴方向进行计算外,还在两个斜 45 度方向进行 TGD 计算,最后将两个梯度振幅进行平均,得到最终梯度振幅。算法及流程图如下所示:

图3:基于一阶TGD的图像边缘检测算法 图4:基于一阶TGD的图像边缘检测算法流程图

算法有两个细节需要说明:一个是我用了四个方向计算图像 TGD,增强稳定性;另一个是 TGD 可以进行方向导数计算,图像中的边缘朝向恰恰是梯度方向(变化率最大的方向)的正交方向,为此我可以通过比较四个方向图像 TGD 的幅度值,大致得到水平、竖直、两个斜四十五度的边缘朝向,也可以通过 d y / d x \mathrm{d}y/\mathrm{d}x dy/dx 得到更为细致的方向。

在随后的实验中,二维一阶 TGD 算子使用旋转构造法得到,其中权重分布函数 w w w 使用指数函数,旋转权重使用余弦函数。由于对于噪声图像,通常的做法是先对图像进行平滑处理,然后再进行梯度计算,或者使用具有较大尺寸的卷积核将平滑处理和梯度计算相结合。为了进行公平比较,我将在保持算法的其他部分不变的情况下,比较边缘检测算法中的一阶高斯导数算子和一阶 TGD 算子的性能,其实也就是比较传统 Canny 算法和基于 TGD 的检测算法之间的性能。

下图为带噪声的清华大学二校门的边缘检测结果比较。实验使用 13 × 13 13 \times 13 13×13 17 × 17 17 \times 17 17×17 的一阶高斯导数算子和一阶 TGD 算子( 我还没见过谁敢在 Canny 边缘检测算法中用这么大的卷积核 )。子图 (e) 至 § 分别展示了边缘检测的局部细节。对于一阶高斯导数算子,在 TGD 第三篇中从理论上论证了它不满足无偏性,随着算子尺寸的增加,一阶高斯导数算子得到的边缘定位结果会引起越来越严重的漂移,这与实验结果一致。相比之下,一阶 TGD 算子在大尺寸下仍然可以实现准确的定位,并具有良好的降噪性能。

图5:带噪自然图像的边缘检测结果对比

除了自然图像外,带噪声的文本图像3更能凸显基于高斯平滑在边缘检测算法中带来的降噪和精准定位之间的冲突。下图展示了 Sobel 算子、一阶高斯导数算子和所提出的一阶 TGD 算子在带噪英文报纸图像上的检测结果。Sobel 算子的尺寸为 3 × 3 3 \times 3 3×3 ,后两者为 13 × 13 13 \times 13 13×13 17 × 17 17 \times 17 17×17 。子图 (g) 至 (j) 显示了边缘定位的局部细节。受制于噪声的敏感性,基于 Sobel 算子的边缘定位中存在着许多错误的检测结果。尽管一阶高斯导数算子具有良好的降噪性能,但边缘定位结果出现了一至两个像素的偏移,表明(至少在边缘检测任务中)高斯滤波器并不适合用于连续高频信号的降噪。实验发现,一阶 TGD 的无偏性在超大尺寸中可能不能很好地保持,在连续高频信号中也会出现定位不准确的情况,比如说字母 y y y 的交点处(毕竟 TGD 在去噪中相当于一个高截止频率的低通滤波器,本质还是低通滤波器,总会损失部分高频信号)。尽管如此, 一阶 TGD 算子仍然优于一阶高斯导数算子

图6:带噪文本图像的边缘检测结果对比

下图展示了边缘检测结果中的边缘朝向,其中红色表示水平方向,蓝色表示垂直方向,绿色表示右上-左下方向,黄色表示左上-右下方向。使用的四个方向的一阶 TGD 算子的尺寸为 13 × 13 13 \times 13 13×13 ,并且 A n g l e ( θ ) = arctan ⁡ ( d y / d x ) \mathrm{Angle}(\theta) = \arctan (\mathrm{d}y/\mathrm{d}x) Angle(θ)=arctan(dy/dx) 。可以看出, TGD 算子具有准确表达梯度方向的功能。最后值得补充指出的是,实验发现基于旋转构造法和正交构造法得到的一阶 TGD 算子的检测结果基本一致。

图7:基于一阶TGD的图像边缘检测算法得到的边缘朝向图

三、基于二阶 TGD 的图像边缘检测

Laplacian 算子是图像二阶导数的各向同性度量,能将图像中灰度值快速变化的区域加以凸显,因而常用于边缘检测。然而,Laplacian 算子对图像噪声和离散点很敏感。为得到更好的边缘检测结果,图像首先需要进行高斯滤波。由于卷积操作满足结合律,高斯平滑滤波器可以先与拉普拉斯算子进行卷积,然后再与图像进行卷积,这就是所谓的 LoG (Laplacian of Gaussian)算子。基于 LoG 的边缘检测方法通常分为两个阶段。 首先将 LoG 算子与图像进行卷积并过滤掉小于阈值的噪声结果,然后对于卷积结果进行过零点定位。 (在具体的工程实现中,为了优化结果,在后处理中通常采用了连通域大小判定,将连通域太小的边缘视作噪声并剔除)

基于二阶 TGD 的图像边缘检测算法仍然遵循传统的两阶段 LoG 图像边缘检测算法4。与之前的算法相比,基于 二阶 TGD 的算法具有两点不同。首先,用 LoT 算子取代了 LoG 算子。其次,引入了二阶方向 TGD 算子计算边缘朝向。如果图像强度在差分计算方向上变化较快,则与二阶方向 TGD 算子卷积后得到的响应值绝对数值就会更大。由于图像边缘与梯度方向正交,则最高响应对应的计算方向也与图像边缘也正交。因此,可以通过比较几个二阶方向 TGD 算子的响应值大小来确定边缘朝向。然而,在传统的基于 LoG 的方法中,由于 LoG 算子的各向同性特性,无法获得边缘朝向。

注意,边缘理论上应该是过零点,即二阶导数为 0 0 0 。然而在实际操作中会发现,图像边缘不是这么回事儿。假设图像中为一半黑一半白,则图像边缘其实同时是黑的那一排像素以及相邻的白色的那一排像素,在这两个地方二阶导数都是两个绝对值很大的值,只不过一正一负,过零点其实是这两个像素中间的亚像素。为了细化图像边缘,我们既可以定义黑的那一排为边缘,也可以定义白的那一排为边缘。

图8:基于二阶TGD的图像边缘检测算法 图9:基于二阶TGD的图像边缘检测算法流程图

话不多说,开始实验,为了进行公平比较,我将在保持算法的其他部分不变的情况下,仅替换一开始使用的卷积核。下图展示了 3 × 3 3 \times 3 3×3 Laplacian 算子, 13 × 13 13 \times 13 13×13 17 × 17 17 \times 17 17×17 的 LoG 以及 LoT 算子对噪声自然图像的检测结果。子图 (e) 至 § 展示了不同尺寸的 LoG 和 LoT 算子对图像的边缘定位的局部细节。可以看出,Laplacian 算子对噪声以及孤立的点相当敏感,它导致了大量的假阳性检测边缘。大尺度给 LoG 算子带来了降噪性能,但在定位方面存在严重的偏移。相比之下,LoT 算子在减少噪声的同时对非常精细的细节实现了精准的定位。

图10:带噪自然图像的边缘检测结果对比

LoT 对于文本的边缘检测结果更令人惊叹。下图展示了 3 × 3 3 \times 3 3×3 Laplacian 算子, 13 × 13 13 \times 13 13×13 17 × 17 17 \times 17 17×17 的 LoG 以及 LoT 算子对噪声文本图像的边缘检测结果。检测细节显示在子图 (g) 至 (j) 中。受噪声的影响,拉普拉斯算子在字母附近显示了许多假阳性检测边缘。此外,由于高频信号的过度损失,如标点符号 ” . ” 和字母 ”T” 的水平线,大尺度 LoG 检测到的边缘出现了严重的偏移,尺度越大偏移越多。由于只有算子中心是负权重,所以 LoT 算子对卷积核尺寸大小不敏感,对于连续的高频信号,LoT 可以同时实现降噪和准确定位。

图11:带噪文本图像的边缘检测结果对比

下图显示了边缘定位结果的边缘朝向,其中红色表示水平方向,蓝色表示垂直方向,绿色表示右上-左下方向,黄色表示左上-右下方向。所用的四个二阶方向 TGD 算子的尺寸为 13 × 13 13 \times 13 13×13 。检测到的朝向与真实的物理边缘朝向基本一致。基于一阶 TGD 算法和基于二阶 TGD 算法之间的差异源于获得的边缘位置不同,基于一阶 TGD 的方法检测得到“外边缘”,而基于 LoT 的方法检测得到“内边缘”。最后值得补充指出的是,实验发现基于旋转构造法和正交构造法得到的二阶 TGD 算子的检测结果基本一致。

图12:基于二阶TGD的图像边缘检测算法得到的边缘朝向图

还值得补充的一点是,对于白底黑字的图像,边缘被认为是黑白相间的白色像素或黑色像素。基于一阶 TGD 的边缘检测算法通常将文本轮廓(白色像素)定位为边缘(图 6 (j)),而基于 LoT 的边缘检测算法通常将文本本身(黑色像素)定位为边缘(图 11 (j)),即上面说的「基于一阶 TGD 的方法检测得到“外边缘”,而基于 LoT 的方法检测得到“内边缘”」。

为此, 建议使用 LoT 算子进行文本边缘检测,使用一阶 TGD 算子进行自然图像边缘检测

四、分析与讨论

将 TGD 应用于图像边缘检测任务大幅提高了边缘定位的准确性,并享有与过去算法相当的去噪性能。

那么, 为什么高斯平滑(一阶高斯导数算子和 LoG 算子)会出现边缘漂移呢

因为算法后面的非极大值抑制、双阈值选取等等操作都是一样的。不妨让我们将注意力从边缘定位图转移到梯度幅值图上,一方面边缘被定义为梯度中的极值点和过零点,另一方面梯度幅值是 TGD 对于输入图像的初始感知结果。梯度反映了局部阴影和光照的变化,以及图像中物体的变化,使其成为图像特性的良好表征。梯度信息的准确性和鲁棒性对于计算机视觉的后续任务非常重要,不仅仅是边缘检测。

下图展示了一阶高斯导数算子和一阶 TGD 算子计算得到的梯度幅值的比较,幅值被归一化(除以最大值)。卷积核尺寸均为 17 × 17 17 \times 17 17×17 。由于梯度幅值为正值,采用灰度图进行可视化,其中颜色越白,梯度幅值越大。图像边缘被定位在梯度幅值的局部极值点处(局部最白)。结果显示,一阶高斯导数算子和一阶 TGD 算子都达到了明显的降噪效果。然而,一阶高斯导数算子的结果显示梯度局部极值点出现了明显的外扩,如汉字“宣统辛亥”(子图 ©)和英文字母“ a ”和“ s ”(子图 (g)),这种扩展不利于准确识别汉字和英文字母这些细锐边缘。相比之下,一阶 TGD 算子的结果更可靠,局部梯度极值集中在物理边缘处,自然而然算法检测得到的梯度极大值点就是图像边缘本身,从而保证了边缘定位的准确性。

图13:一阶梯度幅度对比图

下图则展示了尺寸为 17 × 17 17 \times 17 17×17 的 LoG 和 LoT 算子对图像的卷积结果,结果也被归一化处理(除以最大正值),其中红色为正,蓝色为负,图像边缘位于红色和蓝色的零交叉点(白色)。结果表明大卷积核都实现了明显的降噪。LoT 算子卷积图像后得到的响应能量集中在真实物理边缘处,使得图像边缘被精确地定位。而 LoG 算子卷积图像后得到的响应能量则远离真实物理边缘,导致了边缘定位出现数个像素的漂移。

图14:LoG和LoT卷积图像后幅度对比图

“梯度幅度图”为什么会有所差别?既然输入图都是一样的,那么还是要回到 卷积核 本身。

在一阶高斯导数算子和一阶 TGD 算子的可视化中,算子被归一化为最大值为 1。通过可视化结果可以看出,一阶高斯导数算子的主要能量(两个峰值)随着卷积核尺寸的增加而向外移动,这打破了“TGD 理论中的单调约束”,从而在大尺寸下引发了边缘定位漂移。并且 卷积核中双峰较于中心偏移越多,检测得到的边缘相较于真实物理边缘漂移对应增多 。相较而言,一阶 TGD 算子的主要能量(两个峰值)总是集中在卷积核的中心,这保证了大尺寸下边缘定位的准确性。

在 LoG 和 LoT 算子的可视化中,算子被归一化为最小值为 −2。可见,LoG 算子在卷积核中心附近有大量的负值,导致其相应的过零点不在中心,并随着算子尺寸的增加向外移动,从而引发了大尺寸卷积核的边缘定位漂移。并且 卷积核中过零点较于中心偏移越多,检测得到的边缘相较于真实物理边缘漂移对应增多 。相反, LoT 算子的过零点总是位于卷积核的中心,符合单调约束,保证了大尺寸下边缘定位的准确性。虽然 Gunn56研究了离散 LoG 带来的边缘检测误差,并指出误差与算子尺寸有关。但 Gunn 主要分析了构造卷积核时卷积核权重数值的截断误差,而不是基于微分理论以及卷积核自身特性获得答案。

图15:高斯一阶导数算子(左)和一阶TGD算子(右) 图16:LoG算子(左)和LoT算子(右)

请注意到, 图像的 TGD 结果本身也可以作为图像的一种特征存在 。为此,把图像的 TGD 结果统称为图像的 「 TGD 特征 」。它的特点是抗噪声和幅值图的旋转不变性,这对计算机视觉而言是至关重要的。除边缘检测外,TGD 的其他应用前景包括使用鲁棒的 TGD 特征取代传统的图像梯度特征以服务下游任务,如基于 TGD 的 HOG(Histogram of Oriented Gradient)和目标检测等应用。

五、更多的实验结果

下面展示更多的实验结果,使用卷积核都是 17 × 17 17 \times 17 17×17 尺寸的。

5.1 基于一阶 TGD 的图像边缘检测结果

5.2 基于二阶 TGD 的图像边缘检测结果

六、结语

基于 TGD 的图像边缘检测算法其实就是传统的 Canny 边缘检测算法和 LoG 边缘检测算法,最大的不同就是替换了传统计算的图像导数的卷积核。TGD 在图像边缘检测的算法设计层面,可以说几乎没有什么贡献;但是在算法性能上限上,又可以说是贡献巨大的。这也是为什么本章更多展示结果,而不用给出代码示例的原因。

二维图像中有边缘,高维空间中依然有边缘,例如在视频的时空三维空间中,不仅有静止物体自带的“静态边缘”,还有运动物体在时空中形成的“运动边缘”;在人体连续 CT 图构成的三维空间中,骨骼表面也会形成边缘。那么,基于高维 TGD 算子,我可以把图像边缘检测算法向视频等三维数据升级。

TGD 的应用肯定不仅局限于一维、二维信号,还有很多很多…

敬请下回分解,谢谢。

原文地址:TGD第八篇:二维应用——图像边缘检测


  1. Marr D, Hildreth E. Theory of edge detection[J]. Proceedings of the Royal Society of London. Series B. Biological Sciences, 1980, 207(1167): 187-217. ↩︎

  2. Ziou D, Tabbone S, et al. Edge detection techniques-an overview[J]. Pattern Recognition and Image Analysis C/C of Raspoznavaniye Obrazov I Analiz Izobrazhenii, 1998, 8: 537-559. ↩︎

  3. 图像来源:https://www.sciencenews.org/sn-magazine/december-29-1923 ↩︎

  4. Wang X. Laplacian operator-based edge detectors[J]. IEEE transactions on pattern analysis and machine intelligence, 2007, 29(5): 886-890. ↩︎

  5. Gunn S R. Edge detection error in the discrete laplacian of gaussian[C]//Proceedings 1998 International Conference on Image Processing. ICIP98 (Cat. No. 98CB36269): volume 2. IEEE, 1998: 515-519. ↩︎

  6. Gunn S R. On the discrete representation of the laplacian of gaussian[J]. Pattern Recognition, 1999, 32(8): 1463-1472. ↩︎


网站公告

今日签到

点亮在社区的每一天
去签到