1. 引言
在图像处理中,边缘检测始终是核心研究领域。图像中的边缘区域是局部亮度变动最为明显的区域,这些区域常常承载着图像的核心信息,如物体的轮廓、纹理特征等[1]。因此,从图像中准确、高效地提取边缘信息对于后续的图像处理任务,包括目标识别、图像分割和特征提取,至关重要[2]。传统边缘检测算法利用一阶或二阶导数计算局部窗口的特征值(灰度或梯度),并据此设定阈值处理图像信息。常见的算子包括Prewitt、Sobel、Roberts [3] [4]等,它们具有运算速度较快、易于实现等优点。其中,Canny [5]算子较其他算子展现出了更高的精确度。但Canny算子在处理过程中可能会对图像的细节信息进行一定程度的平滑处理,从而导致图像边缘的细节丢失。这可能会影响到一些对细节信息敏感的应用场景,如医学图像分析[6]等。此外,Canny算子对于不同噪声滤除效果具有一定差异性,尤其对椒盐噪声干扰下的图像去噪效果较差,容易产生伪边缘[7]。近年来,针对Canny算子的不足,研究者们提出了一些改进方案:徐武等[8]在滤波设计上进行改进,有效滤除了椒盐噪声并保护图像边缘细节信息;付文博等[9]将CNN和Canny相结合,提出基于C-Canny的图像分割方法,以提升阈值定位精度;张晨阳等[10]采用分数阶Sobel算子来构建用于求解梯度的函数;Yu等[11]在此基础上,采用了一种新的形态滤波算法来替代高斯滤波。Zhang [12]提出一种基于自适应双边滤波Canny算子的边缘检测方法,该方法通过加权平均策略有效去噪并减少非边缘信息的干扰,提高了边缘检测的准确性和效率。Zhu等[13]采用自适应中值滤波器和引导滤波器代替传统高斯滤波以平滑图像和去噪,并运用改进的Otsu算法选取高低阈值,该方法可以更准确地提取复杂图像中的边缘信息。上述改进算法增加了复杂性和计算成本,依赖于更多的参数选择,并且对特定噪声和图像类型的适应性不足。因此,本文集成了自适应高斯滤波、曲度算子、灰度梯度映射和最大类间方差法等改进措施,这些改进有效平衡了去噪与边缘保留,增强了算法稳定性与实际效用,为复杂场景中的边缘信息提取提供了新的解决途径,具有广阔的应用潜力和研究意义。
2. 改进Canny边缘检测算法
改进Canny算法的核心是简化其复杂的计算步骤和高参数敏感性,同时提升抗噪声能力和边缘连接性,以适配更广泛的图像处理需求。
2.1. 优化高斯滤波器
2.1.1. 引入自适应高斯滤波器
自适应高斯滤波器的引入优化了传统Canny算法在图像去噪过程中导致的边缘信息模糊问题。滤波器通过自适应参数调整机制,根据图像局部特性动态调整滤波器的尺寸和参数,有效地保留边缘信息和细节,能够显著减少弱边缘或孤立边缘被减弱或遗漏的情况,从而在复杂的环境和噪声背景下,边缘检测算法的性能得到了显著的提升。
高斯函数的一般形式如公式(1)所示:
(1)
其中,(
)作为标准差,其数值决定高斯滤波器的宽度。对图像中的每个像素点,计算邻域内像素的加权平均,将结果作为滤波后图像在该点的值。
自适应高斯滤波器根据图像局部特性动态调整标准差和窗口大小:在平滑区域用较大标准差抑制噪声,在边缘区域用较小标准差保留细节。窗口尺寸需平衡信号点数量与边缘信息保留,过大可能导致边缘损失。通过卷积操作,滤波器自适应调整参数,实现去噪与边缘保留。
具体流程如下:
1) 采用自适应高斯滤波器。首先,选择确定窗口大小,通常表示为(N * N),其中(N)是奇数,以便窗口有一个明确的中心像素。
2) 计算局部统计特性:在选定的窗口内,计算图像的局部统计特性均值(
)和方差(
)。方式如下:
(2)
(3)
其中
是图像在坐标
处的像素值,均值(
)代表窗口内所有像素点的平均值,方差(
)则反映了窗口内像素点的离散程度,这些统计量将用于调整高斯滤波器的参数。
(4)
(5)
(6)
(7)
其中,
和
分别是Sobel算子的水平和垂直分量,其中
是滤波后的图像。根据计算出的水平梯度和垂直梯度来确定每个像素点的梯度幅值(G)和梯度方向(
)。其参数的计算公式为:
(8)
(9)
其中,梯度幅值(G)反映了边缘的强度,而梯度方向(
)则指示了边缘的方向。
6) 非极大值抑制:非极大值抑(Non-Maximum Suppression, NMS)的目的细化检测到的边缘,使保留的边缘像素点具有局部梯度最大的特性。比较当前像素点的梯度幅值与其沿梯度方向上相邻像素点的梯度幅值。如果该像素点的梯度幅值不是其沿梯度方向最大的,则被抑制,即不被视为有效边缘点。
7) 自适应双阈值处理与边缘连接:为了减少假边缘和噪声边缘的影响,我们采用自适应双阈值处理。设高阈为
和低阈值为
(
)。如果某像素点的梯度幅值大于
,则确定该点为边缘点;如果小于
,则确定该点不是边缘点。对介于双阈值间的弱边缘像素,若其与强边缘像素连通,则保留为有效边缘。这有助于连接断裂的边缘。
2.1.2. 曲度算子的计算
在边缘检测中,曲度信息对于区分不同类型的边缘(如直线、曲线等)非常重要。在本文中,定义了边缘曲率算子[14],它表示边缘曲率的程度,记为
。对于二值边缘图
中任意点
,当
时,为非边缘点
;当
时,为边缘点。
具体计算过程如下:
1) 取
对应的梯度方向
,并以
为中心在
中取5 × 5邻域。
2) 取
,
,遍历5 × 5邻域中的点
,记
为过
与过
的两切线的夹角。当
时,
为非边缘点,
;
当
时,
为边缘点,令:
(10)
(11)
3) 计算
:
(12)
其中:N是
邻域中边缘点个数。
的值越大,说明
处边缘曲线的弯曲程度越大,即
处噪声的强度越大。
上诉方法利用优化后的自适应高斯滤波器计算曲度算子实现图像降噪,但传统双阈值检测依赖经验,未充分考虑每张图像独特像素属性,易丢失边缘或误判。为此,本文提出基于灰度梯度映射函数的双阈值选择策略。
2.1.3. 基于灰度梯度映射的最大类间方差法
图像分割中采用最大类间方差法(Otsu)进行阈值自动选取,此方法基于图像灰度特征,实现前景与背景的有效分离。设有一个图像,其灰度级数为L,各灰度级别下像素数量记为
,而图像总像素数为(
)。选定阈值t后,图像可据此分为两区域:
和
。各灰度级i出现的概率表述如下:
(13)
总均值为:
(14)
计算各灰度级的出现概率、背景与前景区域的占比及平均灰度值背景:
(15)
(16)
(17)
(18)
最终通过优化类间方差:
(19)
其中,
代表目标的像素集合,
是一个指数参数,用于调整
以达到某种平衡状态,而
也作为一个调节变量存在。图像处理领域,Canny算法作为边缘检测的一种有效方法,其过程中涉及梯度值
的计算:
2.2. 灰度梯度映射函数的双阈值设定
阈值分割是图像处理中将灰度图像转换为二值图像的关键技术之一。最大类间方差法通过分析灰度直方图,寻找最佳阈值,使前景与背景[15]差异最大化。该方法计算不同阈值下的类间方差,选择使方差最大的阈值作为最佳分割点。
设图像的灰度级为灰度levels,直方图为h(i),其中i表示灰度值。根据某个阈值T,图像被分为两类:类1 (灰度值在0到T之间)和类2 (灰度值在T + 1到255之间)。计算每一类的类间方差
,通过类的均值和权重计算得到。对于每个可能的阈值T,计算类间方差。当达到最大值时,对应的阈值即为最佳阈值。
2.2.1. 基于Canny算法的梯度函数计算
Canny算法在运算中生成的梯度值中间结果用
表示,梯度函数由下式得到:
(20)
其中,像素集合
,
对应灰度值为特定值时的平均梯度。
2.2.2. 构造灰度梯度映射函数
当两种函数以指数方式进行融合调整时,其效果尤为突出,可以显著改善边缘识别和检测效果。因此,本研究提出的灰度梯度映射函数的形式如下:
(21)
2.2.3. 计算最佳阈值(双阈值)
基于上述方法,最理想的分割阈值为:
(22)
设定最优阈值是一个高阈值。在双阈值判断中,梯度强度超过高阈值的像素点会被认定为边缘点,大部分边缘点在第一次检测中即可确定。高阈值通常是低阈值的二到三倍。由于大多数边缘点已经用高阈值确定,我们选择使用二倍关系来确定低阈值。
2.3. 本文算法流程
1) 噪声去除:对输入图像应用自适应高斯滤波器,调整滤波器参数以平衡去噪和保留边缘信息。
2) 构建曲度算子:使用曲度算子进行边缘检测,可以提高边缘检测的准确性和灵敏度。
3) 灰度梯度映射:构造灰度梯度映射函数,结合指数方式融合调整,提升边缘识别和检测精度。
4) 双阈值处理:通过最大类间方差法自动确定最优阈值,从而实现图像的自适应分割与边缘检测。
本文的详细算法步骤见下图1。
Figure 1. Flowchart of the text algorithm
图1. 文算法流程图
3. 实验结果及分析
通过实验对比本文算法的去噪性能和边缘检测的连续性、平滑性,来验证本文算法的实用性和有效性。本文实验程序使用C++语言编写,在Visual Studio 2022环境下运行,使用OpenCV4.10.0版本。
3.1. 定性分析
3.1.1. 无噪声情况下的边缘检测效果对比
为了验证改进的Canny边缘检测方法的优越性,图2中选取了5幅图片,这些图片分别采用了传统的Canny边缘算法、Log算法、文献[15]和本文算法,对不同场景的图片作对比来评估本文算法的性能。从图2可以看出,本文算法在提取图像边缘轮廓方面明显优于其他方法,不仅轮廓更清晰、完整,同时有效地减少了背景干扰的影响。特别是面对复杂背景时鲁棒性和准确性方面也有显著提升。
Figure 2. Comparison of experimental results without noise
图2. 无噪声的实验结果比较
3.1.2. 不同声情况下的边缘检测效果对比
为了验证不同噪声下改进的Canny边缘检测效果,对原始图像分别加入了较低浓度的高斯白噪声、较低浓度特性的椒盐噪声进行处理,在固定空间尺度系数
的条件下,得到图3和图4展示的噪声图像。
Figure 3. Comparison of experimental results for Gaussian noise
图3. 高斯噪声的实验结果比较
Figure 4. Comparison of experimental results for Gaussian noise
图4. 椒盐噪声的实验结果比较
实验结果表明,本文提出的优化算法在处理高斯噪声和椒盐噪声图像时均表现优异,能够有效检测出清晰且连贯的边缘信息,同时具有较强的抗噪声干扰能力,更好地保留了局部纹理特征和边缘轮廓信息。与传统算法相比,本文算法在去噪效果上具有显著提升,尤其在复杂背景情况下,当目标轮廓与噪声混为一体时,传统算法的边缘检测效果往往不尽如人意,而本文算法在边缘细节丰富度、连接性能以及背景与目标对象的分割准确性方面均表现出明显优势。尽管文献[15]中改进的Canny算法,但在噪声干扰下,图像中仍存在较多未完全滤除的噪声点。相比之下,本文算法在减少图像噪声和平滑带来的模糊效应方面表现突出,具有较强的抗干扰能力,边缘连续性和封闭性较好,在边缘定位和图像细节处理方面均表现出色。
3.2. 定量分析
3.2.1. 图像去噪效果评价
为了更直观评价图像去噪效果,本文还将运用信噪比(SNR)、峰值信噪比(PSNR)、以及结构相似度(SSIM),三个评价指标分别对去噪后的图像结果进行评价。SNR值越高表示信号相对于噪声更强,图像更清晰;PSNR值越大表示图像中噪声成分越少,图像的质量越高;当SSIM值趋近于1,表示图像的灰度和梯度值变化越小。计算公式如下:
(23)
(24)
(25)
3.2.2. 边缘连接效果评价
与传统Canny算法相比,本文算法在边缘点总数(A)、4邻域内连通成分数(C)和8邻域内连通成分数(B)的比值(C/A和C/B)方面表现出近似的结果。这表明本文算法不仅保留了传统Canny算法的优秀性能,还能更好地保留图像边缘的局部细节特征,并提升了边缘检测的完整度和连接性。
3.2.3. 算法效能评价
精确率与召回率:通过比较检测出的边缘与真实边缘(通常需要人工标注或使用其他高精度算法作为基准)来计算精确率和召回率。精确率用于评估检测出的边缘中真正边缘所占的比例,召回率则是衡量真实边缘中有多少被成功检测出来的比例。
F1分数:F1分数通过精确率和召回率的调和平均值来全面评价算法的性能。F1分数越高,表明算法在精确率和召回率之间具有更优的平衡效果。
运行时间:通过记录算法在各种不同尺寸和复杂度的图像上的执行时间,以评估其计算效率(表1)。
Table 1. Table of comparison values for test results
表1. 检测结果比对值表格
图像编号 |
精确率 |
召回率 |
F1分数 |
运行时间(ms) |
1 |
0.85 |
0.90 |
0.87 |
30 |
2 |
0.92 |
0.88 |
0.90 |
45 |
3 |
0.78 |
0.95 |
0.85 |
25 |
4 |
0.89 |
0.82 |
0.85 |
50 |
5 |
0.95 |
0.90 |
0.92 |
60 |
4. 结束语
在本文中,针对传统Canny边缘检测算法在处理含噪声图像及需要预设双阈值的问题,提出了一种有效的改进方案。通过引入自适应高斯滤波器对曲度算子进行优化,并结合最大类间方差法与灰度梯度映射函数实现双阈值的自动选择,该方案显著提升了边缘检测的精度和抗噪能力。
定性分析显示,改进的Canny算法在面对噪声干扰时依然能够检测出完整且连续的边缘。定量分析方面,我们全面评估了算法在图像去噪效果、边缘连接性能以及精确率、召回率和F1分数等方面的表现,结果表明其具备良好的泛化能力。然而,部分特定情况下(如图像3),算法在精确率和召回率之间可能需要更好的平衡。此外,随着图像尺寸和复杂度的增加,算法的运行时间会有所提升,但总体上依然保持在可接受的范围内。
根据以上分析,我们可以得出Canny边缘检测算法在大多数情况下能够取得较好的效果,适用于各种图像处理任务。然而,在特定情况下,可能需要调整算法的参数(如高斯滤波器的标准差、双阈值等)以获得更好的性能。这代表未来工作将进一步探索该算法在更广泛图像处理任务中的应用和性能优化。