胡璟懿,匡 堯,余 錚,王敬靖,張?zhí)m瀾,劉云飛
(1.國網(wǎng)湖北省電力有限公司,湖北 武漢 430077;2.國網(wǎng)湖北省電力有限公司信息通信公司,湖北 武漢 430000)
光學(xué)字符識別等圖像識別類任務(wù)對輸入圖像角度有著嚴(yán)格要求,當(dāng)輸入圖像角度大于識別算法允許的最大值時,可能導(dǎo)致算法失效[1]??刂戚斎雸D像旋轉(zhuǎn)角度以及對輸入圖像旋轉(zhuǎn)角度進(jìn)行幾何矯正是解決此類問題的2種常用方法,但前者需要增加額外硬件設(shè)施,往往會產(chǎn)生新的成本投入,相對而言,幾何矯正僅需在算法層修改即可,方便易行且不需要增加額外成本,因此受到了廣泛采納。透視變換是實現(xiàn)幾何矯正的常用算法模型,邊緣檢測是其中的基礎(chǔ)[2-4]。
Canny算子是邊緣檢測領(lǐng)域一個里程碑式工作[5-8],但Canny算子的高低閾值手動設(shè)定非常影響其推廣。為了解決閾值設(shè)定問題,段軍等[9]提出了基于統(tǒng)計濾波的自適應(yīng)雙閾值改進(jìn)Canny算法;王文豪等[10]采用改進(jìn)的Otsu算法[11],根據(jù)圖像梯度自適應(yīng)生成Canny算子高低閾值;Othman等[12]利用提出的自適應(yīng)閾值方法將Canny算子用于靜態(tài)手勢分割和識別。然而,面向大光度變化場景的閾值自適應(yīng)Canny算子尚未被發(fā)現(xiàn)。
傳統(tǒng)Canny算法包括圖像預(yù)處理、基于梯度的幅值與方向計算、非極大值抑制、雙閾值選取和滯后邊界跟蹤5部分。其中,圖像預(yù)處理分為圖像灰度化和去噪平滑,圖像灰度化是將輸入的RGB圖像轉(zhuǎn)為灰度圖,而去噪平滑則是為了降低圖像中噪聲對于邊緣檢測的影響,常用的去噪平滑以高斯濾波為主,其數(shù)學(xué)表達(dá)式為
g(x,y)=Gσ(m,n)·f(x,y)
(1)
f(x,y)為輸入圖像中坐標(biāo)為(x,y)處的像素強(qiáng)度值;g(x,y)為經(jīng)過高斯函數(shù)Gσ(m,n)濾波后的輸出圖像強(qiáng)度值;Gσ(m,n)為以m、n為長寬核半徑的高斯濾波函數(shù),數(shù)學(xué)模型為
(2)
σ為高斯分布標(biāo)準(zhǔn)差。高斯核大小(即m,n)的選擇將影響濾波器性能,尺寸越大,濾波器對噪聲的敏感度越低,但高斯核尺寸的增加會引起檢測邊緣的定位誤差增加。通過高斯濾波后,新輸出圖像g(x,y)相比原圖像更加平滑。
考慮到圖像中的邊緣可能指向不同方向,因此Canny算法使用4個濾波器來檢測模糊圖像中的水平、垂直和對角邊緣。邊緣檢測算子(如Roberts、Prewitt或Sobel)返回水平方向的一階導(dǎo)數(shù)值Gx(x,y)和垂直方向的一階導(dǎo)數(shù)值Gy(x,y),由此可以確定邊緣梯度和方向,即
(3)
高斯濾波是對圖像平滑的過程,因此必然會引起邊緣變寬,從而引入定位誤差。為了降低定位誤差,使用非極大值抑制來過濾圖像中非邊緣點,使邊緣的寬度盡可能保持為1個像素。非極大值抑制過程可以表述如下:如果1個像素點屬于邊緣,那么這個像素點在梯度方向上梯度值最大,否則不是邊緣,且將其強(qiáng)度值設(shè)為0,對應(yīng)的數(shù)學(xué)表達(dá)式為
(4)
T為閾值,通過將當(dāng)前像素的梯度強(qiáng)度與沿正負(fù)梯度方向上的2個像素進(jìn)行比較獲得。非極大值抑制是一種邊緣稀疏技術(shù),應(yīng)用在邊緣檢測中可以起到優(yōu)化邊界的作用。
盡管非極大值抑制可以有效減少邊界像素點,但由于噪聲和顏色變化,部分邊緣像素仍然存在。為了解決這些偽響應(yīng)問題,必須在保留梯度較大像素的同時濾掉梯度較小的邊緣像素,Canny算子通過高低閾值來實現(xiàn)上述過程。一般來說,如果邊緣像素的梯度值高于高閾值,則標(biāo)記為強(qiáng)邊緣像素;如果邊緣像素的梯度值低于高閾值,但高于低閾值,則標(biāo)記為弱邊緣像素;如果一個邊緣像素的梯度值低于低閾值,則將其抑制剔除。針對弱邊緣像素點,需要進(jìn)一步采用滯后邊界跟蹤進(jìn)行判斷。
傳統(tǒng)Canny算子的不足在于高低閾值通常由經(jīng)驗根據(jù)場景內(nèi)容確定,設(shè)定值大小取決于輸入圖像,同時又與圖像亮度密切相關(guān)。本文中,針對相同場景下不同亮度的2幅圖像,通過設(shè)置相同的高低閾值,以此來展示傳統(tǒng)Canny算子在光度變化圖像中遭遇的困境,如圖1所示。
圖1 光度變化對Canny檢測結(jié)果影響
圖1a能夠獲得較為完整的發(fā)票左側(cè)邊緣像素,而圖1b則在該區(qū)域出現(xiàn)了斷裂和缺失。2幅場景相同圖像采用設(shè)置完全相同的算子進(jìn)行邊緣檢測,獲得的結(jié)果卻不同,這說明光照對Canny算子具有非常直接的影響。為了解決光照對Canny算子的影響,本文提出一系列改進(jìn)優(yōu)化措施。
本節(jié)提出了一種大光度變化圖像的預(yù)處理方法,基于該方法可以獲得適合于Canny算子進(jìn)行邊緣檢測的圖像;此外,提出了一種高低閾值自適應(yīng)設(shè)定方法,以解決傳統(tǒng)Canny算子中固定閾值受光照影響而失效問題。
傳統(tǒng)Canny算子并未考慮光照變化影響,因此也沒有設(shè)計專門針對光照的預(yù)處理方法,但隨著Canny算子在實際工程中的廣泛應(yīng)用,光照成為無法回避的問題。目前,常用的光照處理方法包括直方圖均衡化[13]、伽馬矯正[14]、低光照圖像增強(qiáng)[15]以及多尺度Retinex[16]模型。直方圖均衡化是最基礎(chǔ)同時也是應(yīng)用最廣泛的圖像增強(qiáng)算法之一,它可以有效改善圖像質(zhì)量,其變換過程表示為
sk=HHist(rk)
(5)
rk為輸入圖像的灰度像素值;sk為經(jīng)過直方圖變換后圖像的灰度像素值;HHist(·)為直方圖均衡化函數(shù),該函數(shù)可以表示為
(6)
L為灰度級數(shù),對于8位灰度圖,L=256;M、N為輸入圖像的像素尺寸;nk為圖像中灰度值為rk的像素總個數(shù)。
伽馬矯正相對于直方圖均衡化形式較為簡單,但其優(yōu)勢在于可以普遍作用于所有輸入圖像,而不用擔(dān)心對于高質(zhì)量圖像產(chǎn)生影響,其數(shù)學(xué)表達(dá)式為
(7)
c為常系數(shù);γ為伽馬系數(shù);Iin、Iout分別為輸入圖像和經(jīng)過伽馬變換后的輸出圖像。
本文中涉及的低光照圖像增強(qiáng)采用了去霧算法來減少光照影響,整個過程由3部分組成,分別為圖像逆轉(zhuǎn)、逆轉(zhuǎn)后圖像采用去霧算法增強(qiáng)以及逆轉(zhuǎn)增強(qiáng)后圖像。最后是多尺度Retinex模型,其核心是Retinex理論,即將輸入圖像分離為光照分量和反射分量,其中的反射分量主要為結(jié)構(gòu)信息,數(shù)學(xué)模型為
Iin=L(x,y)×R(x,y)
(8)
對式(8)兩端進(jìn)行對數(shù)變換,然后再對其低通濾波,去除較為平滑的光照分量,僅保留結(jié)構(gòu)信息,最后反變換獲得輸出圖像。
然而,在實驗過程中發(fā)現(xiàn),上述幾種方法均無法獲得預(yù)期結(jié)果,因此,在這里對傳統(tǒng)預(yù)處理方法進(jìn)行了一定改進(jìn),提出了一種復(fù)合圖像預(yù)處理方法,其數(shù)學(xué)模型為
(9)
式(9)的物理意義可以表述為:首先對輸入圖像進(jìn)行直方圖均衡化,直方圖均衡化后輸出的圖像再進(jìn)行伽馬矯正,以獲得不同光度變化情況下亮度較為均衡且平滑的圖像。
基于區(qū)域分割的閾值自適應(yīng)方法的基礎(chǔ)是自適應(yīng)閾值的二值化,因為二值化過程中必然產(chǎn)生邊界。本文中,選取大津法[17]來獲得所選擇區(qū)域的閾值,大津法的表達(dá)式為
(10)
ni為灰度值為i的像素點數(shù)量;N為所選擇區(qū)域的總像素點數(shù)量。獲取某一區(qū)域的二值化閾值k*僅僅是自適應(yīng)閾值選擇的第1步,除此之外還需要對輸入圖像進(jìn)行區(qū)域分割,以獲得多個細(xì)分區(qū)域的自適應(yīng)閾值。區(qū)域分割方式如圖2所示。
圖2 輸入圖像的區(qū)域分割方式
將1幅圖像進(jìn)行多次分割,并對每次分割后的區(qū)域使用大津法計算分割區(qū)域閾值,將該閾值設(shè)定為高閾值,并取高閾值的1/3作為低閾值,其表達(dá)式為
(11)
(12)
將上述閾值應(yīng)用到Canny算子的高低閾值設(shè)定中,以實現(xiàn)Canny算法的閾值自適應(yīng)。
Canny算子作為重要的邊緣檢測算法,因其優(yōu)異性能而被廣泛接受。但Canny算法在處理大光度變化圖像方面存在欠缺,準(zhǔn)確來說,是因為其固定閾值無法適應(yīng)圖像光照的變化而引起邊緣檢測失效。針對這一問題,本文提出了閾值自適應(yīng)Canny算子,并進(jìn)行實驗對其性能加以驗證。
針對圖像光照的預(yù)處理方法目前主要包括直方圖均衡化、伽馬矯正、低光照圖像增強(qiáng)以及多尺度Retinex算法。將這幾類算法針對不同光照情況下的票據(jù)進(jìn)行了對比和分析,其結(jié)果如圖3所示。圖3a~圖3d為正常光照圖像分別經(jīng)過直方圖均衡化、伽馬矯正、低光照增強(qiáng)和多尺度Retinex處理;圖3e~圖3h為低光照圖像分別經(jīng)過直方圖均衡化、伽馬矯正、低光照增強(qiáng)和多尺度Retinex處理。
圖3 面向不同光度變化圖像的預(yù)處理結(jié)果對比
觀察預(yù)處理后的圖像發(fā)現(xiàn)其存在如下現(xiàn)象:
a.直方圖均衡化后的圖像具有更加優(yōu)異的邊界特性,但會引入更多噪聲,且亮度分布不均勻。
b.伽馬矯正后2幅圖像的差異變得非常小,圖像異常平滑,但票據(jù)左側(cè)邊界變得模糊,當(dāng)使用Canny算法進(jìn)行邊緣檢測時,會出現(xiàn)邊緣斷裂問題。
c.低光照增強(qiáng)后的圖像整體感覺較好,但如果細(xì)致觀察,會發(fā)現(xiàn)票據(jù)與背景灰度值被拉近,特別是在票據(jù)的四周邊緣處。
d.經(jīng)過多尺度Retinex算法處理處理后的原始圖像嚴(yán)重失真。
基于上述觀察現(xiàn)象,發(fā)現(xiàn)任意單一方法都無法獲得理想結(jié)果,而所謂理想結(jié)果是指針對正常光照圖像和低光照圖像輸入圖像,經(jīng)過處理后獲得亮度近似且光滑的輸出圖像。本文通過對上述4種預(yù)處理方法的進(jìn)一步分析,發(fā)現(xiàn)直方圖均衡化和伽馬矯正的組合能夠?qū)崿F(xiàn)優(yōu)勢互補(bǔ)。直方圖均衡化可以提高圖像的對比度,讓票據(jù)邊界更加明顯,而伽馬矯正則可以解決直方圖均衡化引起的光照不均勻和噪聲問題,二者結(jié)合后的處理效果如圖4所示。圖4a為正常光照下的結(jié)果;圖4b為低光照下的結(jié)果。
圖4 經(jīng)過直方圖均衡化和伽馬矯正后的圖像
正常光照圖像和低光照圖像經(jīng)過處理后,圖像亮度非常接近,這對于后續(xù)的閾值自適應(yīng)計算非常有利,因此,對于原始輸入圖像進(jìn)行上述預(yù)處理非常有意義。
獲得較好質(zhì)量的圖像后,便可以利用本文提出的自適應(yīng)閾值Canny算法提取票據(jù)邊緣信息。將采用2組實驗來驗證本文所提出方法的優(yōu)越性,第1組是改進(jìn)前后的Canny算子效果對比,如圖5所示。圖5a為固定閾值下提取的正常光照圖像邊緣;圖5b為改進(jìn)Canny算子提取的正常光照圖像邊緣;圖5c為固定閾值下提取的低光照圖像邊緣;圖5d為改進(jìn)Canny算子提取的低光照圖像邊緣。其中圖5a和圖5c采用了相同的高低閾值,但圖5c中出現(xiàn)了提取邊緣不完整現(xiàn)象,如圖5c框選區(qū)域所示。圖5b和圖5d采用了本文提出的自適應(yīng)閾值,很顯然,提取的邊緣效果非常完整。
圖5 改進(jìn)前后Canny算子邊緣檢測結(jié)果對比
此外,對改進(jìn)后的自適應(yīng)閾值Canny算法與其他同類型邊緣檢測算法進(jìn)行了對比實驗,對比方法主要為標(biāo)準(zhǔn)的Laplacian算子[18]和Sobel算子[19],實驗結(jié)果如圖6所示。圖6a為自適應(yīng)閾值Canny算子提取正常光照邊緣;圖6b為Laplacian算子提取正常光照邊緣;圖6c為Sobel算子提取正常光照邊緣;圖6d為自適應(yīng)閾值Canny算子提取低光照邊緣;圖6e為Laplacian算子提取低光照邊緣;圖6f為Sobel算子提取低光照邊緣。
圖6 不同邊緣檢測算子檢測結(jié)果對比
由圖6可知,Laplacian算子邊緣提取能力遠(yuǎn)弱于改進(jìn)的自適應(yīng)Canny算子;而Sobel算子在提取邊緣的同時會產(chǎn)生大量噪點,同時,提取的邊緣強(qiáng)度相對于背景而言相對較弱,難以產(chǎn)生有效區(qū)分。
提取邊緣的目的是為了對圖像進(jìn)行透視變換,以獲得具有正確旋轉(zhuǎn)方向的檢測圖像,因此檢驗提取邊緣是否有效的最終評判標(biāo)準(zhǔn)便是圖像透視變換后的結(jié)果,圖7為正常光照和低光照下的2幅圖像,在經(jīng)過本文所提出的預(yù)處理和閾值自適應(yīng)Canny檢測后,最終獲得的透視變換結(jié)果。其中,圖7a為正常光照圖像;圖7b為正常光照下經(jīng)過透視變換后輸出圖像;圖7c為低光照圖像;圖7d為低光照下經(jīng)過透視變換后輸出圖像。由圖7可知,基于本文提出的方法,不論是針對正常光照圖像還是低光照圖像,均能夠取得較好的變換效果。
圖7 不同光度變化情況下的最終透視變換結(jié)果
提出了一種改進(jìn)的閾值自適應(yīng)Canny邊緣檢測算法,以解決大光度變化圖像的透視變換問題。為了實現(xiàn)上述過程,本文提出兩方面改進(jìn):一方面是結(jié)合直方圖均衡化和伽馬矯正實現(xiàn)不同光度圖像的預(yù)處理,使其能夠獲得前景和背景清晰且較為光滑的圖像;另一方面是針對處理后的圖像提出了一種自適應(yīng)閾值獲取方法,其中主要使用了多區(qū)域分割和大津閾值分割法,從而獲得了所選擇區(qū)域的二值化閾值,并將獲得的閾值經(jīng)過計算后作為Canny的高低閾值。本文的方法可以較好地提取圖像邊緣,實驗驗證了其可行性,且可以基于提取的邊緣進(jìn)行透視變換,獲得矯正后的票據(jù)圖像。