APP下载

面向大光度变化图像的阈值自适应Canny算子

2022-08-25胡璟懿王敬靖张兰澜刘云飞

机械与电子 2022年8期
关键词:均衡化直方图算子

胡璟懿,匡 尧,余 铮,王敬靖,张兰澜,刘云飞

(1.国网湖北省电力有限公司,湖北 武汉 430077;2.国网湖北省电力有限公司信息通信公司,湖北 武汉 430000)

0 引言

光学字符识别等图像识别类任务对输入图像角度有着严格要求,当输入图像角度大于识别算法允许的最大值时,可能导致算法失效[1]。控制输入图像旋转角度以及对输入图像旋转角度进行几何矫正是解决此类问题的2种常用方法,但前者需要增加额外硬件设施,往往会产生新的成本投入,相对而言,几何矫正仅需在算法层修改即可,方便易行且不需要增加额外成本,因此受到了广泛采纳。透视变换是实现几何矫正的常用算法模型,边缘检测是其中的基础[2-4]。

Canny算子是边缘检测领域一个里程碑式工作[5-8],但Canny算子的高低阈值手动设定非常影响其推广。为了解决阈值设定问题,段军等[9]提出了基于统计滤波的自适应双阈值改进Canny算法;王文豪等[10]采用改进的Otsu算法[11],根据图像梯度自适应生成Canny算子高低阈值;Othman等[12]利用提出的自适应阈值方法将Canny算子用于静态手势分割和识别。然而,面向大光度变化场景的阈值自适应Canny算子尚未被发现。

1 传统Canny算子及其在大光度变化场景中的困境

传统Canny算法包括图像预处理、基于梯度的幅值与方向计算、非极大值抑制、双阈值选取和滞后边界跟踪5部分。其中,图像预处理分为图像灰度化和去噪平滑,图像灰度化是将输入的RGB图像转为灰度图,而去噪平滑则是为了降低图像中噪声对于边缘检测的影响,常用的去噪平滑以高斯滤波为主,其数学表达式为

g(x,y)=Gσ(m,n)·f(x,y)

(1)

f(x,y)为输入图像中坐标为(x,y)处的像素强度值;g(x,y)为经过高斯函数Gσ(m,n)滤波后的输出图像强度值;Gσ(m,n)为以m、n为长宽核半径的高斯滤波函数,数学模型为

(2)

σ为高斯分布标准差。高斯核大小(即m,n)的选择将影响滤波器性能,尺寸越大,滤波器对噪声的敏感度越低,但高斯核尺寸的增加会引起检测边缘的定位误差增加。通过高斯滤波后,新输出图像g(x,y)相比原图像更加平滑。

考虑到图像中的边缘可能指向不同方向,因此Canny算法使用4个滤波器来检测模糊图像中的水平、垂直和对角边缘。边缘检测算子(如Roberts、Prewitt或Sobel)返回水平方向的一阶导数值Gx(x,y)和垂直方向的一阶导数值Gy(x,y),由此可以确定边缘梯度和方向,即

(3)

高斯滤波是对图像平滑的过程,因此必然会引起边缘变宽,从而引入定位误差。为了降低定位误差,使用非极大值抑制来过滤图像中非边缘点,使边缘的宽度尽可能保持为1个像素。非极大值抑制过程可以表述如下:如果1个像素点属于边缘,那么这个像素点在梯度方向上梯度值最大,否则不是边缘,且将其强度值设为0,对应的数学表达式为

(4)

T为阈值,通过将当前像素的梯度强度与沿正负梯度方向上的2个像素进行比较获得。非极大值抑制是一种边缘稀疏技术,应用在边缘检测中可以起到优化边界的作用。

尽管非极大值抑制可以有效减少边界像素点,但由于噪声和颜色变化,部分边缘像素仍然存在。为了解决这些伪响应问题,必须在保留梯度较大像素的同时滤掉梯度较小的边缘像素,Canny算子通过高低阈值来实现上述过程。一般来说,如果边缘像素的梯度值高于高阈值,则标记为强边缘像素;如果边缘像素的梯度值低于高阈值,但高于低阈值,则标记为弱边缘像素;如果一个边缘像素的梯度值低于低阈值,则将其抑制剔除。针对弱边缘像素点,需要进一步采用滞后边界跟踪进行判断。

传统Canny算子的不足在于高低阈值通常由经验根据场景内容确定,设定值大小取决于输入图像,同时又与图像亮度密切相关。本文中,针对相同场景下不同亮度的2幅图像,通过设置相同的高低阈值,以此来展示传统Canny算子在光度变化图像中遭遇的困境,如图1所示。

图1 光度变化对Canny检测结果影响

图1a能够获得较为完整的发票左侧边缘像素,而图1b则在该区域出现了断裂和缺失。2幅场景相同图像采用设置完全相同的算子进行边缘检测,获得的结果却不同,这说明光照对Canny算子具有非常直接的影响。为了解决光照对Canny算子的影响,本文提出一系列改进优化措施。

2 阈值自适应Canny检测方法

本节提出了一种大光度变化图像的预处理方法,基于该方法可以获得适合于Canny算子进行边缘检测的图像;此外,提出了一种高低阈值自适应设定方法,以解决传统Canny算子中固定阈值受光照影响而失效问题。

2.1 大光度变化图像处理

传统Canny算子并未考虑光照变化影响,因此也没有设计专门针对光照的预处理方法,但随着Canny算子在实际工程中的广泛应用,光照成为无法回避的问题。目前,常用的光照处理方法包括直方图均衡化[13]、伽马矫正[14]、低光照图像增强[15]以及多尺度Retinex[16]模型。直方图均衡化是最基础同时也是应用最广泛的图像增强算法之一,它可以有效改善图像质量,其变换过程表示为

sk=HHist(rk)

(5)

rk为输入图像的灰度像素值;sk为经过直方图变换后图像的灰度像素值;HHist(·)为直方图均衡化函数,该函数可以表示为

(6)

L为灰度级数,对于8位灰度图,L=256;M、N为输入图像的像素尺寸;nk为图像中灰度值为rk的像素总个数。

伽马矫正相对于直方图均衡化形式较为简单,但其优势在于可以普遍作用于所有输入图像,而不用担心对于高质量图像产生影响,其数学表达式为

(7)

c为常系数;γ为伽马系数;Iin、Iout分别为输入图像和经过伽马变换后的输出图像。

本文中涉及的低光照图像增强采用了去雾算法来减少光照影响,整个过程由3部分组成,分别为图像逆转、逆转后图像采用去雾算法增强以及逆转增强后图像。最后是多尺度Retinex模型,其核心是Retinex理论,即将输入图像分离为光照分量和反射分量,其中的反射分量主要为结构信息,数学模型为

Iin=L(x,y)×R(x,y)

(8)

对式(8)两端进行对数变换,然后再对其低通滤波,去除较为平滑的光照分量,仅保留结构信息,最后反变换获得输出图像。

然而,在实验过程中发现,上述几种方法均无法获得预期结果,因此,在这里对传统预处理方法进行了一定改进,提出了一种复合图像预处理方法,其数学模型为

(9)

式(9)的物理意义可以表述为:首先对输入图像进行直方图均衡化,直方图均衡化后输出的图像再进行伽马矫正,以获得不同光度变化情况下亮度较为均衡且平滑的图像。

2.2 基于区域分割的阈值自适应方法

基于区域分割的阈值自适应方法的基础是自适应阈值的二值化,因为二值化过程中必然产生边界。本文中,选取大津法[17]来获得所选择区域的阈值,大津法的表达式为

(10)

ni为灰度值为i的像素点数量;N为所选择区域的总像素点数量。获取某一区域的二值化阈值k*仅仅是自适应阈值选择的第1步,除此之外还需要对输入图像进行区域分割,以获得多个细分区域的自适应阈值。区域分割方式如图2所示。

图2 输入图像的区域分割方式

将1幅图像进行多次分割,并对每次分割后的区域使用大津法计算分割区域阈值,将该阈值设定为高阈值,并取高阈值的1/3作为低阈值,其表达式为

(11)

(12)

将上述阈值应用到Canny算子的高低阈值设定中,以实现Canny算法的阈值自适应。

3 实验结果及分析

Canny算子作为重要的边缘检测算法,因其优异性能而被广泛接受。但Canny算法在处理大光度变化图像方面存在欠缺,准确来说,是因为其固定阈值无法适应图像光照的变化而引起边缘检测失效。针对这一问题,本文提出了阈值自适应Canny算子,并进行实验对其性能加以验证。

3.1 面向大光度变化图像的预处理方法对比分析

针对图像光照的预处理方法目前主要包括直方图均衡化、伽马矫正、低光照图像增强以及多尺度Retinex算法。将这几类算法针对不同光照情况下的票据进行了对比和分析,其结果如图3所示。图3a~图3d为正常光照图像分别经过直方图均衡化、伽马矫正、低光照增强和多尺度Retinex处理;图3e~图3h为低光照图像分别经过直方图均衡化、伽马矫正、低光照增强和多尺度Retinex处理。

图3 面向不同光度变化图像的预处理结果对比

观察预处理后的图像发现其存在如下现象:

a.直方图均衡化后的图像具有更加优异的边界特性,但会引入更多噪声,且亮度分布不均匀。

b.伽马矫正后2幅图像的差异变得非常小,图像异常平滑,但票据左侧边界变得模糊,当使用Canny算法进行边缘检测时,会出现边缘断裂问题。

c.低光照增强后的图像整体感觉较好,但如果细致观察,会发现票据与背景灰度值被拉近,特别是在票据的四周边缘处。

d.经过多尺度Retinex算法处理处理后的原始图像严重失真。

基于上述观察现象,发现任意单一方法都无法获得理想结果,而所谓理想结果是指针对正常光照图像和低光照图像输入图像,经过处理后获得亮度近似且光滑的输出图像。本文通过对上述4种预处理方法的进一步分析,发现直方图均衡化和伽马矫正的组合能够实现优势互补。直方图均衡化可以提高图像的对比度,让票据边界更加明显,而伽马矫正则可以解决直方图均衡化引起的光照不均匀和噪声问题,二者结合后的处理效果如图4所示。图4a为正常光照下的结果;图4b为低光照下的结果。

图4 经过直方图均衡化和伽马矫正后的图像

正常光照图像和低光照图像经过处理后,图像亮度非常接近,这对于后续的阈值自适应计算非常有利,因此,对于原始输入图像进行上述预处理非常有意义。

3.2 改进前后Canny算子的性能对比分析

获得较好质量的图像后,便可以利用本文提出的自适应阈值Canny算法提取票据边缘信息。将采用2组实验来验证本文所提出方法的优越性,第1组是改进前后的Canny算子效果对比,如图5所示。图5a为固定阈值下提取的正常光照图像边缘;图5b为改进Canny算子提取的正常光照图像边缘;图5c为固定阈值下提取的低光照图像边缘;图5d为改进Canny算子提取的低光照图像边缘。其中图5a和图5c采用了相同的高低阈值,但图5c中出现了提取边缘不完整现象,如图5c框选区域所示。图5b和图5d采用了本文提出的自适应阈值,很显然,提取的边缘效果非常完整。

图5 改进前后Canny算子边缘检测结果对比

此外,对改进后的自适应阈值Canny算法与其他同类型边缘检测算法进行了对比实验,对比方法主要为标准的Laplacian算子[18]和Sobel算子[19],实验结果如图6所示。图6a为自适应阈值Canny算子提取正常光照边缘;图6b为Laplacian算子提取正常光照边缘;图6c为Sobel算子提取正常光照边缘;图6d为自适应阈值Canny算子提取低光照边缘;图6e为Laplacian算子提取低光照边缘;图6f为Sobel算子提取低光照边缘。

图6 不同边缘检测算子检测结果对比

由图6可知,Laplacian算子边缘提取能力远弱于改进的自适应Canny算子;而Sobel算子在提取边缘的同时会产生大量噪点,同时,提取的边缘强度相对于背景而言相对较弱,难以产生有效区分。

3.3 基于自适应Canny算子的票据透视变换

提取边缘的目的是为了对图像进行透视变换,以获得具有正确旋转方向的检测图像,因此检验提取边缘是否有效的最终评判标准便是图像透视变换后的结果,图7为正常光照和低光照下的2幅图像,在经过本文所提出的预处理和阈值自适应Canny检测后,最终获得的透视变换结果。其中,图7a为正常光照图像;图7b为正常光照下经过透视变换后输出图像;图7c为低光照图像;图7d为低光照下经过透视变换后输出图像。由图7可知,基于本文提出的方法,不论是针对正常光照图像还是低光照图像,均能够取得较好的变换效果。

图7 不同光度变化情况下的最终透视变换结果

4 结束语

提出了一种改进的阈值自适应Canny边缘检测算法,以解决大光度变化图像的透视变换问题。为了实现上述过程,本文提出两方面改进:一方面是结合直方图均衡化和伽马矫正实现不同光度图像的预处理,使其能够获得前景和背景清晰且较为光滑的图像;另一方面是针对处理后的图像提出了一种自适应阈值获取方法,其中主要使用了多区域分割和大津阈值分割法,从而获得了所选择区域的二值化阈值,并将获得的阈值经过计算后作为Canny的高低阈值。本文的方法可以较好地提取图像边缘,实验验证了其可行性,且可以基于提取的边缘进行透视变换,获得矫正后的票据图像。

猜你喜欢

均衡化直方图算子
与由分数阶Laplace算子生成的热半群相关的微分变换算子的有界性
符合差分隐私的流数据统计直方图发布
基于FPGA的直方图均衡图像增强算法设计及实现
Domestication or Foreignization:A Cultural Choice
用直方图控制画面影调
QK空间上的叠加算子
中考频数分布直方图题型展示
基础教育均衡化的实施对于现阶段教育发展的重要性
EDIUS 5.1音量均衡化