几种边缘检测方法归纳学习

本文梳理了边缘检测的几种方法。传统算子包括梯度算子(如Roberts、Prewitt、Sobel)、方向算子(如Kirsch、Nevitia)和多阶段算子(如Canny)等;深度学习方法中,HED利用VGG-16和特征融合实现多尺度检测,RCF进一步提取所有卷积层特征提升精度,EdgeNAT采用Transformer架构结合注意力机制优化检测效果。此外,还有小波变换、变分法等其他边缘检测技术。

目录

1 边缘检测算子

1.1 梯度算子

1.2 方向算子

1.3 多阶段算子(以Canny算子为例)

2 深度学习驱动的边缘检测方法

2.1 HED

2.2 RCF

2.3 基于Transformer的方法(以EdgeNAT为例)

3 其它边缘检测方法

4 参考资料


边缘检测算子

1.1 梯度算子

对于阶跃状边缘,其边缘点处的一阶导数具有极值特性。基于此特性,可以通过计算每个像素的梯度来检测边缘点:梯度的大小反映了边缘的强度,而梯度的方向则与边缘的走向垂直。在实际检测过程中,可以选择一个适当的阈值 T,对梯度图像进行二值化处理。也就是说,当某像素的梯度值 Grad(x,y)≥ T 时,将该像素标记为边缘点,即令 Grad(x,y)=1;否则,令 Grad(x,y)= 0。通过这种方式,可以生成一幅边缘二值图像。

图1 梯度算子

然而,梯度算子仅利用了邻近像素的灰度信息进行计算,对噪声较为敏感,难以有效抑制噪声的影响。这可能导致在噪声较多的情况下,检测结果中出现较多伪边缘或边缘断裂的现象。

Roberts梯度算子对应的滤波器如图2所示,对应的差分表达式如下。这种算子进行边缘检测的同时,去噪效果仍然有限,但效果较原始的梯度算子好一些。

fx\prime=\left| f(x+1,y+1)-f(x,y) \right| \\ fy\prime=\left| f(x+1,y)-f(x,y+1) \right|

图2 Roberts梯度算子

为了在检测边缘的同时减少噪声的影响,Prewitt算子通过增大滤波器的尺寸,将边缘检测算子从2×2扩展为3×3来进行差分计算,如图3(左1、左2)所示。使用Prewitt算子不仅能够有效检测边缘点,还能够在一定程度上抑制噪声的干扰。在此基础上,Sobel算子通过对4-邻域采用加权差分的方式进一步改进,其对应的滤波器如图3(左3、左4)所示。该算子不仅能更精准地检测边缘点,而且对噪声的抑制效果更为显著,但其检测出的边缘相对较宽。

图3 Prewitt算子和Sobel算子

1.2 方向算子

方向算子通过一组滤波器分别计算图像在不同方向上的差分值,并将其中的最大值作为边缘强度,同时将其对应的方向定义为边缘方向。这种机制能够有效捕捉图像中灰度变化显著的区域,从而实现边缘检测。常用的八方向Kirsch滤波器(3×3)如图4所示,各方向间的夹角为45°,覆盖了全方位的边缘信息。

图4 3×3 Kirsch算子的八方向滤波器

假设输入图像为 f,滤波器为 Wk(k=1,2,…,8),则在像素位置 (x,y) 的边缘强度可表示如下。如果以最大值的绝对值作为边缘强度,并通过符号判断确定边缘方向,则考虑到各滤波器的对称性,仅需使用前四个滤波器即可完成计算。

E(x, y) = \underset{k}{\max} \left\{ {W}_k \cdot {f} \right\}

Kirsch 算子的方向滤波器不仅限于3×3尺寸,还可以扩展为更大的尺寸以适应不同的应用场景。例如,八方向的5×5滤波器中的前四个如图5所示。

图5 5×5 Kirsch算子的前四个滤波器

另一种著名的方向算子是Nevitia算子,它包含12个5×5的滤波器。这些滤波器分为两组,前6个滤波器如图6所示,后6个滤波器可通过前6个的对称性推导得到。各方向间的夹角为30°,相比Kirsch算子,Nevitia算子利用了更精细的位置权值分配来调整边缘方向,从而在某些场景下能够提供更高的检测精度。

图6 5×5 Nevitia算子的前六个滤波器

方向算子通过多方向模板的设计,能够灵活适应不同场景的边缘检测需求。Kirsch算子以简洁的结构和高效的计算特点,适合快速提取边缘信息;而Nevitia算子则通过更精细的权值分配,在某些场景下展现出更高的检测精度。

1.3 多阶段算子(以Canny算子为例)

Canny算子被认为是边缘检测的“黄金标准”,具有较高的精度和鲁棒性。这一算子由澳洲计算机科学家约翰·坎尼(John F. Canny)于1986年提出,属于一种多级边缘检测算法,其目标是找到一个最优边缘,并提出了边缘检测的三个主要子目标:

(1)好的检测:算法能够尽可能多地标示出图像中的实际边缘;

(2)好的定位:标识出的边缘要与实际图像中的实际边缘尽可能接近;

(3)最小响应:图像中的边缘只能被标识一次,并且可能存在的图像噪声不应该标识为边缘。

具体地,Canny边缘检测算法分有高斯滤波、梯度计算、非极大值抑制、双阈值边缘连接几个主要步骤。高斯滤波可以有效抑制噪声,以避免噪声对后续梯度计算的干扰,同时保留图像的主要结构信息。在此处,高斯滤波器的核是一个如下所示的二维高斯函数,其中 σ 是高斯函数的标准差,用于控制平滑程度。

G(x,y)=\frac{1}{2\pi \sigma ^2}e^{-\frac{x^2+y^2}{2\sigma ^2}}

随后,计算图像中每个像素点的梯度幅值和方向。在此处,可以使用上述提到的Prewitt算子、Sobel 算子(或其他梯度算子)来计算水平梯度 Gx 和垂直梯度 Gy,并通过如下公式来计算梯度的幅值 |▽I | 和方向 θ。得到的梯度幅值越大,说明该点的变化越剧烈,越有可能是边缘点;得到的梯度方向则可以用于确定边缘的方向性,以帮助细化边缘,用于后续的非极大值抑制。

|\nabla I|=\sqrt{G_{x}^{2}+G_{y}^{2}},\quad \theta =\mathrm{arc}\tan \left( \frac{G_y}{G_x} \right)

非极大值抑制可以消除边缘的冗余响应,使得边缘更加清晰、细锐,这一步也是Canny算法的核心之一,确保了边缘的连续性和单一响应。实现时,对于每个像素点,根据其梯度方向(这里的梯度方向通常被量化为0°、45°、90°、135°四个主要方向以简化计算),比较当前像素与其邻域像素的梯度幅值。如果当前像素的梯度幅值不是局部最大值,则将其置为 0,也就是抑制掉这个像素。最后是双阈值边缘连接,这一步用于进一步筛选边缘点,并连接断裂的边缘。其中,双阈值检测可以有效区分真实边缘和噪声边缘,边缘连接则确保了边缘的完整性,避免因阈值设置不当而导致边缘断裂。实现时,首先设置低阈值和高阈值两个阈值,并根据梯度幅值和阈值设定将像素点分为三类:

(1)强边缘点:梯度幅值大于高阈值的点,直接保留;

(2)弱边缘点:梯度幅值介于低阈值和高阈值之间的点,只有当它们与强边缘点相连时才会被保留,并在分类完毕后使用连通性分析(如8邻域搜索)将弱边缘点与强边缘点连接起来;

(3)非边缘点:梯度幅值小于低阈值的点,直接丢弃。

总的来说,Canny算子属于一种多阶段优化的边缘检测算法,具有高精度、抗噪能力强和边缘连续性好的特点。不过,这一方法的计算复杂度也比较高,对参数选择较为敏感,适用于高质量边缘检测场景。

除此之外,这样的多阶段算子还有马尔算子(Marr-Hildreth算子、LoG算子)。该算子结合了高斯滤波与拉普拉斯算子的特点,首先对图像进行高斯平滑处理以抑制噪声,随后通过检测二阶导数的零交叉点来确定边缘位置。这种方法对噪声具有较强的鲁棒性,但在图像的拐角或曲线区域,边缘检测效果可能不够理想。

2 深度学习驱动的边缘检测方法

2.1 HED

《Holistically-nested edge detection》一文提出了一个新的网络结构用于边缘检测,即文章的题目Holistically-Nested Network(HED)。其中Holistically表示该算法试图训练一个image-to-image的网络,Nested则强调在生成的输出过程中通过不断的集成和学习得到更精确的边缘预测图的过程。从图7中HED和传统Canny算法进行边缘检测的效果对比图,可以看到HED的效果要好一些。

图7 HED和Canny进行边缘检测的效果对比图

HED创作于2015年,采用了当时最先进的VGG-16作为骨干网络,并通过迁移学习对网络权重进行了初始化。此外,HED创新性地引入了多尺度特征融合的思想,这一理念在其他经典方法中也有体现,例如Inception、SSD和FPN等。这些方法的对比可参考图8。

图8 HED与其他多尺度特征方法的比较

(a) Multi-stream learning: 使用不同结构,不同参数的网络训练同一副图片,类似的结构有Inception;

(b) Skip-layer network learning: 该结构有一个主干网络,在主干网络中添加若干条到输出层的skip-layer,类似的结构有FPN;

(c) Single model on multiple inputs: 该方法使用同一个网络,不同尺寸的输入图像得到不同尺度分Feature Map,YOLOv2采用了该方法;

(d) Training independent network: 使用完全独立的网络训练同一张图片,得到多个尺度的结果,该方法类似于集成模型;

(e) Holistically-Nested networks: HED采用的方法。

具体来说,HED以VGG-16作为主干网络,去掉全连接层,保留卷积层和池化层,以用于从输入图像中提取多层次的特征。为了捕捉不同尺度的边缘信息,HED在VGG-16的每个池化层之后引入了侧输出分支。这些分支通过1×1卷积将特征图压缩为单通道,并使用双线性插值上采样将特征图恢复到与输入图像相同的分辨率,从而生成多个尺度的边缘预测图。这些边缘图分别对应低层的细节信息(如纹理、细小边缘)和高层的语义信息(如物体轮廓、大尺度边缘),能够全面覆盖图像中的边缘特征。为了综合这些多尺度的边缘信息,HED引入了一个加权融合层,对所有侧输出分支的结果进行加权求和,生成最终的边缘图。这种嵌套式的多尺度特征融合方式不仅提升了模型的鲁棒性,还使得边缘检测结果更加精细和准确。在损失函数的设计上,HED采用了逐像素的二分类交叉熵损失函数。对于每个侧输出分支和最终融合的边缘图,都分别计算一个损失值,并通过加权求和的方式得到总损失函数。

在训练阶段,HED利用标注好的边缘图作为监督信号,通过反向传播算法优化模型参数。由于采用端到端的训练方式,整个模型可以一次性完成优化,无需复杂的预处理或后处理步骤。此外,HED的训练过程还充分利用了预训练的VGG-16权重,通过迁移学习加速收敛并提升性能。在推理阶段,HED的流程非常高效:输入图像经过前向传播后,直接输出最终的边缘图。由于模型已经通过多尺度特征融合生成了高质量的边缘预测,因此无需额外的后处理步骤即可获得清晰、连续的边缘结果。

HED算法在边缘检测效果上相较于传统方法有显著提升,同时具备较快的推理速度;然而,其模型规模较大,导致训练过程中显存占用较高。不过,在当前的主流GPU环境下,训练HED算法还是没有问题的。

2.2 RCF

如图9所示,作者构建了一个基于VGG-16和HED架构的简单网络,用于生成中间层的输出。可以看出,随着卷积层的深入,所提取的信息逐渐从细节转向更粗粒度的语义特征。这表明中间卷积层包含了重要的细节信息,对边缘检测任务具有很重要的作用。然而,以往的CNN架构通常只使用最终的卷积层或池化层之前的几层特征,而忽略了中间层的潜在价值。另一方面,由于更丰富的卷积特征对许多视觉任务具有显著效果,研究人员倾向于设计更深的网络结构。但随着网络深度的增加,梯度消失或爆炸问题以及训练数据不足使得模型难以收敛。

图9 基于VGG-16和HED架构的中间层特征可视化

基于这一现状,Yun Liu等人在2017年提出了一种全新的深度结构——RCF(Richer Convolutional Features),以图像到图像的方式实现边缘检测的像素级预测。RCF能够自动学习融合来自CNN各层的互补信息,从而在不同尺度上精确地表示目标或目标部件的特征。具体而言,RCF从VGG-16的所有卷积层中提取浅层细节特征与深层语义特征,并利用侧向输出分支生成每个尺度的边缘预测图。每个分支包含一个1×1卷积层和双线性插值操作,用于调整分辨率以适配不同尺度的特征表达。与此同时,RCF引入了逐层监督机制,对每个侧向输出施加二值交叉熵损失函数,从而增强中间层特征的学习能力,并有效缓解梯度消失问题。此外,RCF通过加权融合机制整合所有侧向输出,平衡局部细节信息与全局语义信息,最终生成高精度的像素级边缘预测结果。

相较于HED,RCF从VGG-16的每一个卷积层中提取特征,而非仅限于每个阶段的最后一层,从而更全面地捕捉不同尺度的边缘信息。此外,RCF通过加权融合机制动态调整各侧向输出的贡献,而非采用简单的平均融合策略,在边缘检测的精度和鲁棒性上实现了进一步的提升。

2.3 基于Transformer的方法(以EdgeNAT为例)

基于Transformer的边缘检测方法近年来逐渐成为研究热点,其核心思想是利用Transformer强大的全局建模能力来捕捉图像中长距离依赖关系,从而提升边缘检测的精度和鲁棒性。与传统的卷积神经网络(CNN)主要依赖局部感受野不同,Transformer通过自注意力机制能够直接建模图像中任意两个像素之间的关系,在处理复杂背景、遮挡场景以及细粒度边缘时表现出更强的性能,但也面临计算复杂度较高和训练数据需求较大的挑战。

在查阅资料时,找到了一个比较新的基于Transformer的边缘检测方法,叫做EdgeNAT方法。该方法创新性地采用DiNAT(Dilated Neighborhood Attention Transformer,膨胀邻域注意力变换器)作为编码器,并引入SCAF-MLA(Spatial and Channel Attention Fusion - Multi-Level Aggregation,空间与通道注意力融合—多级特征聚合)解码器,显著提升了边缘检测的精度和效率。具体而言,DiNAT结合了邻域注意力(Neighborhood Attention, NA)和膨胀邻域注意力(Dilated Neighborhood Attention, DiNA),既保留了局部细节特征,又能够有效捕获长距离依赖关系。这一设计解决了传统 CNN方法容易丢失细节信息的问题,同时避免了复杂的两阶段架构,使得计算效率大幅提升。另一方面,SCAF-MLA通过空间注意力(Spatial Attention Module, SAM)和通道注意力(Channel Attention Module, CAM)提取更加丰富的多尺度特征,并采用预融合策略,在不同层级特征融合时保持较高的通道数,从而更好地学习全局与局部信息之间的关联。

实验结果表明,EdgeNAT在多个公开数据集上均达到了最优的边缘检测效果。此外,在RTX 4090 GPU上,EdgeNAT的推理速度达到了20.87 FPS,比EDTER(2.2 FPS)快了近10倍,在保证高精度的同时显著提升了推理效率。通过消融实验验证,EdgeNAT的单阶段架构和SCAF-MLA设计不仅有效提升了边缘检测质量,还避免了传统方法中PPM和Bottom-up路径带来的额外计算负担。

3 其它边缘检测方法

除了上述边缘检测方法外,还有一些其他重要的技术方向,这些方向通常结合特定领域的知识或引入新的计算范式,以应对不同场景下的边缘检测需求。比如,基于小波变换的方法通过多尺度分解捕捉图像的局部特征和奇异点,适合处理纹理丰富的图像;基于变分法的方法通过定义能量函数并优化其解来提取边缘,能够结合先验知识(如边缘连续性和区域平滑性),在理论上有较强的支持,但计算复杂度较高;基于稀疏表示的方法则利用过完备字典和稀疏编码近似表示边缘信息,在噪声环境下表现出较强的鲁棒性。此外,融合多种方法的混合模型通过结合不同技术的优势,能够在精度和效率之间实现更好的平衡,从而为复杂场景下的边缘检测提供更灵活且高效的解决方案。

4 参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值