芶小珊
(成都大學(xué) 計(jì)算機(jī)學(xué)院,四川 成都 610000)
對(duì)圖像進(jìn)行二值化處理實(shí)際上就是將數(shù)字圖像轉(zhuǎn)化為二值黑白像素的矩陣,并將圖像從背景中分離,方便后期的圖像邊緣提取,為接下來(lái)的其他圖像處理打下基礎(chǔ)。大多數(shù)情況下,圖像上的像素點(diǎn)灰度值設(shè)置為0或255,而二值化處理的關(guān)鍵是需要通過(guò)合適的閾值實(shí)現(xiàn)背景的分割,對(duì)圖像完成二值化處理后,數(shù)據(jù)量減少則圖像的輪廓逐漸顯現(xiàn),更加方便后期的圖像處理。
圖像的二值化處理最常用的算法是圖像閾值分割算法。該算法處理方法簡(jiǎn)單,通過(guò)閾值分割后的圖形清晰,在所待處理的圖像中,將圖像中的關(guān)鍵部分進(jìn)行目標(biāo)區(qū)域劃分,將冗余的部分設(shè)定為背景區(qū)域。二值化處理的核心是選擇一個(gè)最佳閾值,對(duì)比像素點(diǎn)與閾值,根據(jù)結(jié)果對(duì)圖像進(jìn)行劃分,將其劃分為目標(biāo)與背景區(qū)域。二值化處理的目的是保證圖像在不失真的前提下舍棄冗余信息,其關(guān)鍵點(diǎn)就在于閾值的選擇。閾值分割實(shí)際上就是將圖像上所有的像素點(diǎn)進(jìn)行比較,在像素點(diǎn)上選取一個(gè)閾值T,根據(jù)閾值T判斷圖像信息,并將圖像進(jìn)行區(qū)域劃分[1],公式為:
(1)
f(i,j)表示原圖像像素;b(i,j)表示二值化算法處理后的圖像;T表示閾值。
當(dāng)前,圖像閾值選取的算法上百種,以最常用的閾值法——Ostu算法為例進(jìn)行條碼圖像的二值化處理。
使用手持設(shè)備采集到的圖像容易出現(xiàn)光照不均的情況,如光線(xiàn)較暗影響整體灰度值;光照不足影響局部灰度值;遮擋容易出現(xiàn)陰影。此類(lèi)現(xiàn)象均屬于光照不均,影響圖像進(jìn)行目標(biāo)和背景區(qū)域的劃分,影響閾值的選取,一旦選取閾值容易導(dǎo)致分割后出現(xiàn)大量陰影,影響識(shí)別過(guò)程。一種方法是可以采用直方圖均衡化、線(xiàn)性對(duì)比度拉伸等方法增加圖像的亮度,但是此方法需要調(diào)節(jié)比例系數(shù);另一種方法就是采用Ostu閾值選取,不需要調(diào)節(jié)參數(shù),缺陷是算法運(yùn)行時(shí)間長(zhǎng)容易出現(xiàn)邊界效應(yīng)。
Ostu算法又名最大類(lèi)間方差法[2],其原理為:根據(jù)圖像的灰度特性對(duì)圖像進(jìn)行目標(biāo)與背景分割,如果類(lèi)間方差越大說(shuō)明分割的背景差別越大;如果背景被劃分為前背景,類(lèi)間方差變小。因此,類(lèi)間方差越大說(shuō)明錯(cuò)分概率越小。取最佳閾值為T(mén),類(lèi)間方差值為g,得到圖像總的平均灰度值:
μ=ω0μ0+ω1μ1
(2)
ω0表示像素占比;μ0表示平均灰度;ω1表示背景占比;μ1表示平均灰度值。
類(lèi)間方差公式為:
g=ω0(μ0-μ)2+ω1(μ1-μ)2
g=ω0×ω1×(μ0-μ1)2
(3)
當(dāng)g越大,說(shuō)明目標(biāo)與背景之間的像素越大,劃分錯(cuò)誤的概率越低;g最大時(shí)選取的T值為最佳分割閾值。
圖像定位即在圖像中找到目標(biāo)圖像位置并進(jìn)行提取,在數(shù)字圖像處理過(guò)程中,定位的準(zhǔn)確性關(guān)系到圖像的識(shí)別[3]。Canny算子邊緣檢測(cè)與Sobel算子、Roberts算子相比適用范圍更廣,主要檢測(cè)圖像周?chē)幕叶认袼厥欠翊嬖谖蓓斪兓?,將特征的邊緣連接成完整的像素邊界。利用Canny算子進(jìn)行多級(jí)邊緣檢測(cè),檢測(cè)條碼的邊緣特征。處理步驟為:
首先,計(jì)算梯度幅值和方向,利用一階偏導(dǎo)數(shù)的有限差分,表示濾波器的兩個(gè)一階偏導(dǎo),用x和y表示圖像的像素點(diǎn),得到圖像的幅度與方向,公式為:
(4)
θ(x,y)=arctan(Gx(x,y)/Gy(x,y))
(5)
Gx(x,y)和Gy(x,y)表示一階偏導(dǎo);M(x,y)表示邊緣強(qiáng)度;θ(x,y)表示邊緣方向角。
其次,采用非極大值抑制算法對(duì)梯度幅度進(jìn)行處理,因?yàn)閳D像的邊緣需要通過(guò)全局梯度獲取,需要采取梯度最大的點(diǎn)取得。
最后,利用雙閾值法檢測(cè)并連接邊緣。
條碼圖像在采集過(guò)程中由于人為因素難免會(huì)發(fā)生變化,如傾斜、變形等,得到的條碼圖像會(huì)發(fā)生一定角度的傾斜,增加后期條碼圖像的識(shí)別難度。因此,對(duì)條碼進(jìn)行傾斜校正與定位極為重要。圖像局部特性出現(xiàn)灰度值突變、顏色突變以及紋理突變等,都屬于圖像邊緣的正常特征,圖像的邊緣可以顯示出圖像的大體輪廓,圖像作為多個(gè)像素點(diǎn)組成的個(gè)體,用矩陣表示像素點(diǎn)的位置,就是圖像的像素矩陣。圖像的邊緣信息獲取在圖像處理過(guò)程中極為重要,二值化處理?xiàng)l碼圖像時(shí),光照的影響極大,而圖像的邊緣不易受到光照的影響,二者之間有本質(zhì)區(qū)別。因此,進(jìn)行二值化處理圖像時(shí),光照往往影響圖像的獲取效果。在進(jìn)行圖像分析時(shí),圖像的邊緣檢測(cè)是獲取圖像信息的重要基礎(chǔ)。因此,邊緣檢測(cè)對(duì)于條碼的解碼十分重要[4]。
Hough變換通過(guò)全局特性將邊緣像素連接為封閉區(qū)域,將原始圖像中的曲線(xiàn)轉(zhuǎn)換為參數(shù)空間中的峰值,原始圖像中的坐標(biāo)需要滿(mǎn)足方程式:y=mx+n,其中,m表示直線(xiàn)斜率,n表示截距。
根據(jù)公式可得,圖像空間的點(diǎn)對(duì)應(yīng)參數(shù)空間的直線(xiàn),如果圖像空間中多出一條直線(xiàn),則參數(shù)空間中的多條直線(xiàn)相交于一點(diǎn),如圖1所示,XY表示圖像空間,MN表示參數(shù)空間。
圖1 圖像空間與參數(shù)空間點(diǎn)線(xiàn)對(duì)偶
利用Hough變換中的4條直線(xiàn),得到圖像的傾斜角度,完成旋轉(zhuǎn)圖像,根據(jù)圖像的旋轉(zhuǎn),以圖像中心為原點(diǎn),順時(shí)針?lè)较蜻M(jìn)行旋轉(zhuǎn)得到最終圖像,如圖2所示。坐標(biāo)經(jīng)過(guò)旋轉(zhuǎn)得到,l表示距離,θ表示夾角。
圖2 圖像旋轉(zhuǎn)
在數(shù)字圖像處理技術(shù)的基礎(chǔ)上,對(duì)二值化算法進(jìn)行改進(jìn),使用改進(jìn)后的二值化算法進(jìn)行條碼圖像處理,并針對(duì)校正提出更好的處理算法。預(yù)處理作為圖像識(shí)別系統(tǒng)中的重要一環(huán),預(yù)處理的過(guò)程要遵守如下程序:(1)對(duì)條碼圖像進(jìn)行灰度化處理;(2)對(duì)灰度化處理后的圖像進(jìn)行自適應(yīng)濾波處理;(3)隨后對(duì)圖像進(jìn)行二值化處理,利用改進(jìn)后的算法進(jìn)行背景區(qū)域分離;(4)對(duì)圖像進(jìn)行邊緣檢測(cè);(5)最后進(jìn)行透視變換,識(shí)別圖像信息。整個(gè)識(shí)別流程如圖3所示。
圖3 條碼圖像識(shí)別流程
實(shí)驗(yàn)條件的好壞對(duì)條碼的識(shí)別過(guò)程有很大的影響,采集圖像的設(shè)備越好,則圖像處理的效果越好。常見(jiàn)的實(shí)驗(yàn)條件中,硬件設(shè)備有:計(jì)算機(jī)(Intel Core i5-3230M CPU、Win7系統(tǒng))、華為手機(jī)、打印機(jī)(HP 300),軟件環(huán)境是Visual Studio(2012版本,C語(yǔ)言)、Matlab(R2014a),另外還需要采集二維碼圖像、打印樣張(A4紙)。
2.3.1 去噪
首先對(duì)條碼圖像進(jìn)行灰度化處理,將采集的圖像帶入公式(6),使用加權(quán)平均法對(duì)圖像進(jìn)行灰度化處理[5],根據(jù)人眼對(duì)光線(xiàn)的敏感度,對(duì)分量(紅綠藍(lán))進(jìn)行加權(quán)平均值處理,得到穩(wěn)定的灰度圖像。
Gray=0.30R+0.59G+0.11B
(6)
然后對(duì)圖像進(jìn)行自適應(yīng)濾波噪聲處理,將經(jīng)過(guò)灰度化處理的圖像設(shè)為P,選取窗口fxy=3使用濾波窗口進(jìn)行處理,對(duì)灰度圖像P的像素進(jìn)行排序,判斷最大值、中間值以及最小值之間的關(guān)系是否滿(mǎn)足條件,并判斷當(dāng)前窗口中獲取的中間值是否噪聲點(diǎn),如果是,增大窗口,直到找到非噪聲點(diǎn)的值;判斷中間值是否噪聲點(diǎn),如果是,根據(jù)判斷的結(jié)果,輸出非噪聲點(diǎn)的中間值。
最后判斷圖像中的噪聲點(diǎn)是否通過(guò)自適應(yīng)中值濾波算法得到的灰度值,經(jīng)過(guò)處理后得到去噪效果更好的條碼圖像。
2.3.2 光照不均
對(duì)圖像進(jìn)行自適應(yīng)濾波去噪后,對(duì)圖像進(jìn)行二值化處理,因?yàn)椴杉降膱D像容易受到光照環(huán)境影響,造成光照不均,影響二維碼的識(shí)別,傳統(tǒng)的Ostu在獲取閾值時(shí)會(huì)出現(xiàn)邊界效應(yīng),而且獲取的時(shí)間較久。基于此,針對(duì)傳統(tǒng)的Ostu算法提出一種基于形態(tài)學(xué)的改進(jìn)Ostu算法,該方法結(jié)合形態(tài)運(yùn)算進(jìn)行分子塊的Ostu處理。
首先對(duì)圖像進(jìn)行灰度化處理,再進(jìn)行自適應(yīng)中值濾波去噪處理,利用改進(jìn)的方法,對(duì)條碼進(jìn)行分塊處理;將劃分的各個(gè)區(qū)域進(jìn)行Ostu閾值分割處理,并根據(jù)圖像的原分割位置對(duì)圖像進(jìn)行組合處理;經(jīng)過(guò)組合的圖像在數(shù)字形態(tài)學(xué)閉運(yùn)算方法下完成邊緣細(xì)化,消除邊界效應(yīng),得到最終的圖像。
改進(jìn)后的Ostu不會(huì)因?yàn)榉謮K導(dǎo)致像素出現(xiàn)不連續(xù)性,也不會(huì)發(fā)生邊界效應(yīng),減少了圖像重新組合的時(shí)間,改進(jìn)后的Ostu閾值分割,仍然存在邊界效應(yīng),需要通過(guò)形態(tài)學(xué)閉運(yùn)算,對(duì)光照不均圖像進(jìn)行處理,對(duì)圖像進(jìn)行閉運(yùn)算處理,得到最終的處理圖像,改進(jìn)后的Ostu算法會(huì)在邊界產(chǎn)生干擾點(diǎn),與形態(tài)學(xué)閉運(yùn)算相結(jié)合,可以很好地消除邊界效應(yīng)。
2.3.3 畸變圖像
完成光照不均的二值化處理后,需要對(duì)畸變圖像進(jìn)行校正,通過(guò)Canny算法,對(duì)條碼圖像進(jìn)行邊緣輪廓的提取,再利用Hough檢測(cè)邊緣直線(xiàn),獲取點(diǎn)的位置和坐標(biāo)?;儓D像定位校正步驟為:(1)對(duì)經(jīng)過(guò)二值化處理的圖像進(jìn)行Canny算法檢測(cè);(2)對(duì)二值化處理的圖像進(jìn)行Hough變換,通過(guò)圖像數(shù)組的坐標(biāo)獲取變換的角度與半徑的值;(3)利用Hough變換,在參數(shù)空間中找到相交的點(diǎn),檢測(cè)圖像空間的最長(zhǎng)直線(xiàn);(4)檢測(cè)4條線(xiàn)后獲取圖像的角點(diǎn),得到畸變校正后的圖像;(5)通過(guò)雙線(xiàn)性插值運(yùn)算對(duì)校正圖像的點(diǎn)做雙線(xiàn)性插值運(yùn)算,得到最終圖像。
使用手機(jī)端拍攝圖像樣本進(jìn)行對(duì)去噪、光照不均、畸變圖像等測(cè)試,并對(duì)圖片進(jìn)行實(shí)驗(yàn)結(jié)果分析,傳統(tǒng)算法與改進(jìn)后的算法在譯碼個(gè)數(shù)與準(zhǔn)確率方面的比較結(jié)果如表1所示。
表1 圖像識(shí)別結(jié)果
根據(jù)圖像的識(shí)別結(jié)果,當(dāng)去噪的污染較大時(shí),利用改進(jìn)后的算法對(duì)二維碼進(jìn)行解碼可以得到的圖片識(shí)別準(zhǔn)確率為90%;對(duì)于光照不均的圖像,利用改進(jìn)后的算法可以提高識(shí)別率,當(dāng)分辨率較低時(shí),如果背景較為復(fù)雜將會(huì)影響譯碼率,因此譯碼率為90%;當(dāng)圖像發(fā)生畸變時(shí),改進(jìn)后的算法準(zhǔn)確率達(dá)到87.5%,如果采集到的圖像失真嚴(yán)重,無(wú)法準(zhǔn)確獲取圖像位置時(shí),容易造成原圖無(wú)法識(shí)別的情況。從識(shí)別的結(jié)果可以得到,經(jīng)過(guò)改進(jìn)后的Ostu算法可以在一定程度上提高條碼的識(shí)別率,具有一定的使用價(jià)值。
綜上所述,在結(jié)合去噪污染、光照不均以及畸變圖像等圖像背景下,基于數(shù)字圖像處理技術(shù)和條碼編碼技術(shù),對(duì)二維碼的圖像識(shí)別問(wèn)題進(jìn)行了討論,其主要目的就是提高條碼的識(shí)別有效率。針對(duì)去噪問(wèn)題,利用加權(quán)平均法對(duì)圖像進(jìn)行灰度化處理,利用自適應(yīng)中值濾波解決噪聲;由于圖像受到光照不均的影響,當(dāng)圖像在進(jìn)行閾值分割后,容易出現(xiàn)黑塊,影響圖像的準(zhǔn)確定位,利用改進(jìn)后的Ostu算法,將圖像分割為4子塊,結(jié)合形態(tài)學(xué)閉運(yùn)算,消除邊界效應(yīng);當(dāng)圖像發(fā)生畸變時(shí),利用Canny算子與Hough變換對(duì)圖像進(jìn)行定位處理。最后,對(duì)識(shí)別的結(jié)果進(jìn)行比較,完成了條碼圖像的識(shí)別。