魏興凱,蔣 崢,傅呈勛,劉 斌
(1.武漢科技大學(xué) 冶金自動化與檢測技術(shù)教育部工程研究中心,湖北 武漢 430080;2.武漢科技大學(xué) 信息科學(xué)與工程學(xué)院,湖北 武漢 430080;3.湖南湘鋼工程技術(shù)有限公司 智能制造部,湖南 湘潭 411100)
在鋼板的生產(chǎn)過程中,為了規(guī)范信息管理,企業(yè)會將鋼板尺寸和板號等信息噴印在每一塊鋼板上。而鋼鐵企業(yè)更希望采用機器識別技術(shù)以消除人工操作帶來的弊端,其中關(guān)鍵的一步就是鋼板字符圖像的二值化。
二值化是以一定的規(guī)則將灰度圖像分成背景和前景兩個部分,常用的方法有全局閾值法和局部閾值法[1]。其中,全局閾值法簡單快捷,但對光照不均勻、噪聲干擾較大的圖像處理效果不佳[2];局部閾值法通過鄰域像素分布自動調(diào)節(jié)閾值,但速度慢、容易出現(xiàn)偽影和筆畫斷裂現(xiàn)象[3]。
國內(nèi)外不少研究人員對二值化算法進(jìn)行了研究,有了很多的成果。馮炎[4]基于對比度歸一化的方法提出了一種歷史文檔圖像二值化算法。王康維等[5]提出了一種快速二值化方法來解決低亮度下非均勻光照文檔圖片的二值化問題。熊煒等[6]采用增廣路算法求得最優(yōu)二值圖像。盧迪等[7]首先利用四叉樹原理自適應(yīng)劃分區(qū)域,再確定局部閾值。Mustafa等[8]基于局部最大閾值法對Sauvola算法進(jìn)行優(yōu)化改進(jìn);Zemouri等[9]利用k-means聚類將像素映射到前景或背景;Luo Wei等[10]則通過鄰域窗口內(nèi)灰度值的均值、標(biāo)準(zhǔn)差和極值來計算閾值,取得了較好的效果。
以上方法都有各自的特點和優(yōu)勢,但均不適用于本文的光照不均勻、字符拖尾的鋼板噴印圖像。本文針對某鋼企五米板面噴圖像存在的光照不均勻、字符拖尾等問題,提出了一種基于光照影響因子的動態(tài)Niblack算法。
對圖像每個像素點,Niblack算法使用式(1)來計算每個點的灰度閾值
T(x,y)=m(x,y)+a×s(x,y)
(1)
其中,T(x,y)為點(x,y)的灰度閾值,若點(x,y)處的灰度值大于T(x,y),則將其在二值圖像上對應(yīng)位置設(shè)置為白色(灰度值為255),否則將其在二值圖像上對應(yīng)位置設(shè)置為黑色(灰度值為0)。m(x,y)和s(x,y)分別為點(x,y)鄰域內(nèi)所有點的灰度均值和標(biāo)準(zhǔn)差,鄰域窗口大小為w×w(w為根據(jù)經(jīng)驗值進(jìn)行選取),a為以經(jīng)驗值預(yù)先設(shè)定的修正系數(shù),其取值范圍為(0,1)。
Niblack算法的閾值由考察點鄰域的灰度確定,強調(diào)二值化閾值隨區(qū)域變化而動態(tài)調(diào)整,對容易受光源影響的圖像和字符灰度變化較大的圖像,有比較好的適應(yīng)性。但是Niblack算法以式(1)計算考察點的閾值,當(dāng)鄰域窗口內(nèi)像素絕大部分為目標(biāo)(或背景)點,而目標(biāo)(或背景)灰度又不均勻時,大量目標(biāo)點(或背景點)被強行二值化為背景點(或目標(biāo)點),從而易出現(xiàn)筆畫斷裂及偽影現(xiàn)象。同時,Niblack算法通過逐點計算確定閾值,計算量較大,會導(dǎo)致運算速度較慢。
(1)某鋼企五米板面噴圖像的采集過程中,用單個相機采集完整字符區(qū)域圖像。由于字符區(qū)域較寬,使用單個光源且光源位置不理想的情況造成了五米板面噴圖像光照不均勻的問題;其它干擾光照的影響也使得一些背景區(qū)域灰度值接近于目標(biāo)區(qū)域灰度值。具體情況如圖1所示。
圖1 五米板面噴字符圖像
(2)噴印設(shè)備陳舊,造成鋼板表面字符印刷質(zhì)量不穩(wěn)定,字符經(jīng)常出現(xiàn)拖尾現(xiàn)象。拖尾部分的灰度值,小于目標(biāo)區(qū)域的灰度值,但是相對于背景區(qū)域的灰度值又是不可忽略的,在進(jìn)行二值化的時候很容易被判定為目標(biāo)區(qū)域。另外,一些字符的局部印刷淡、光照差,增加了二值化的難度。具體情況如圖2所示。以上的印刷質(zhì)量不穩(wěn)定問題,進(jìn)一步提高了鋼板表面字符識別的難度。
圖2 五米板面噴缺陷
Bolan Su等[11]通過計算水平方向上兩個相鄰的筆畫邊緣像素之間出現(xiàn)頻率最高的像素距離,來估計筆畫寬度。為了保證鄰域窗口能夠完全覆蓋筆畫邊緣像素點,將鄰域窗口的寬和高設(shè)置為稍大于筆畫寬度,本文借鑒Bolan Su等的方法確定鄰域窗口大小。
首先選取20張圖片清晰、字符完整、噪聲少的五米板面噴圖片,并手動選定每張圖片的最優(yōu)閾值進(jìn)行二值化,再以行為單位從上到下對20張二值化圖片進(jìn)行掃描,統(tǒng)計得到兩個相鄰筆畫邊緣像素之間出現(xiàn)頻率最高的像素距離為14,最終確定鄰域窗口大小為15×15像素。
2.3.1 光照強度項的引入
給定圖3中的五米板面噴原圖,采用Niblack算法,修正系數(shù)a取為0.8時,得到圖4中的二值化圖。對比圖3和圖4可知Niblack算法引入了大量噪聲,大量的背景點被誤判為目標(biāo)點。通過嘗試a在(0,1)范圍內(nèi)的不同取值,均不能得到更好的效果。但是,采用Niblack算法,目標(biāo)點被誤判為背景點的情況相對較少,保留了較為完整的字符輪廓。
圖3 五米板面噴原圖
圖4 圖3經(jīng)Niblack算法得到的二值化圖像(a=0.8)
為了增強Niblack算法的二值化效果,使Niblack算法能更好應(yīng)對光照不均勻的情況,在式(1)的閾值公式中引入了一項關(guān)于光照強度的閾值調(diào)節(jié)項,得到了點(x,y)的灰度閾值計算公式,如式(2)所示
T(x,y)=m(x,y)+k1×s(x,y)+k2×d(x,y)
(2)
其中,T(x,y)為點(x,y)的灰度閾值,m(x,y)和s(x,y)分別為點(x,y)鄰域內(nèi)所有點的灰度均值和標(biāo)準(zhǔn)差;d(x,y)為開運算得到的點(x,y)的光照強度;k1、k2為相關(guān)項常系數(shù),取值范圍為(0,1)。
圖像的預(yù)處理中,頂帽算法將原圖像開運算之后的圖像近似看作原圖像的光照分布圖,用原圖像減去其光照分布圖得到了光照均勻的圖像。本文借鑒頂帽算法的思想,通過圖像開運算來近似得到像素點(x,y)的光照強度d(x,y)。鄰域窗口大小設(shè)置與二值化的鄰域窗口大小相同。
采用式(2)中改進(jìn)的閾值公式對圖3進(jìn)行二值化處理,得到圖5。
圖5 圖3經(jīng)改進(jìn)的Niblack算法得到的二值化圖像
(k1=0.2,k2=0.25)
對比圖3、圖4和圖5,可看出,通過在灰度閾值公式中引入光照強度項,降低了二值化圖像噪聲。同時,仍然能保證完整保留的字符輪廓。原因在于改進(jìn)的Niblack算法引入光照強度項d(x,y)明顯減少了背景點的誤判。
光照強度項系數(shù)k2的選取對目標(biāo)點和背景點的誤判率有影響。k2偏大時,背景點的誤判較少,同時目標(biāo)點的誤判較多;k2偏小時,背景點的誤判較多,同時目標(biāo)點的誤判較少。所以,需要選取合適的k2值來進(jìn)一步優(yōu)化二值化效果。
2.3.2k1、k2的動態(tài)調(diào)整
2.3.2.1k1、k2和光照影響因子k的定義
由圖5可知新的閾值公式提升了圖像二值化的效果,但是常數(shù)系數(shù)使得算法適應(yīng)性較差,需要根據(jù)不同圖片的具體情況對k1、k2的值進(jìn)行調(diào)整,使式(2)中的閾值公式能夠適應(yīng)復(fù)雜環(huán)境下的五米板面噴圖像,因此本文引入光照影響因子k,定義如式(3)所示
k=d(x,y)/(g(x,y)+β)(0 (3) 其中,g(x,y)為點(x,y)的灰度值,d(x,y)為開運算得到的點(x,y)的光照強度,β為常數(shù)調(diào)節(jié)因子,避免分母為零。而g(x,y)為[0,255]之間的整數(shù),為了減少對k值的影響,在實際操作中取β=0.01。 并對k1、k2做如式(4)所示的調(diào)整 k1=km,k2=kn (4) 其中,m、n為常數(shù),取值依具體圖片類型而定。 開運算是對圖像先腐蝕再膨脹。以圖6為例,灰色窗口是以p1像素為中心的3×3大小的鄰域窗口。原圖6(a)中,p1-p9處的灰度值分別為g1-g9;腐蝕圖6(b)中,p1-p9處的灰度值分別為gf1-gf9;開運算圖6(c)中,p1處的灰度值為gk1。 對原圖6(a)進(jìn)行腐蝕操作得腐蝕圖6(b)。腐蝕圖6(b)上一個像素點處的灰度值由原圖6(a)上對應(yīng)像素點的鄰域窗口內(nèi)灰度最小值得到,所以有g(shù)f1=min(g1,g2,…,g9)。原圖6(a)中p1的鄰域窗口以及分別以p1的鄰域像素p2-p9為中心的鄰域窗口都包含p1,所以腐蝕圖6(b)上p1-p9處的灰度值gf1-gf9必然小于等于g1,即 圖6 開運算圖例 max(gf1,gf2,…,gf9)≤g1 (5) 對腐蝕圖6(b)進(jìn)行膨脹操作得開運算圖6(c)。開運算圖6(c)上的一個像素點處的灰度值由腐蝕圖6(b)上對應(yīng)像素點的鄰域窗口內(nèi)灰度最大值得到,所以有 gk1=max(gf1,gf2,…,gf9) (6) 綜合式(5)和式(6)可知,gk1≤g1,即開運算得出的像素點的光照強度值小于等于其在原圖中的灰度值。對應(yīng)式(3)可以得到,d(x,y)≤g(x,y),從而保證式(3)中0 2.3.2.2 光照影響因子k定義的合理性分析 當(dāng)鄰域窗口位于背景區(qū),為了減少背景點的誤判,k1、k2應(yīng)取較大值,所以k也應(yīng)該取較大值。當(dāng)鄰域窗口位于字符區(qū),為了減少目標(biāo)點的誤判,k1、k2應(yīng)該取較小值,所以k也應(yīng)該相應(yīng)減小。 在式(3)中,我們定義k=d(x,y)/(g(x,y)+β)。在背景區(qū)時,鄰域窗口內(nèi)像素灰度均勻,所以d(x,y)與g(x,y)相等或相近,此時k接近于1,k1、k2取得較大值,從而保證背景點誤判少;在字符區(qū)時,由于鄰域窗口長和寬都大于字符寬度,以點(x,y)的鄰域像素為中心的鄰域窗口都會包含一部分背景像素,所以腐蝕圖上點(x,y)的鄰域窗口內(nèi)各像素的灰度值與原圖背景灰度值接近,再經(jīng)過膨脹得到的點(x,y)的光照強度d(x,y)也與原圖背景灰度值接近,此時k較小,k1、k2取得較小值,從而保證目標(biāo)點誤判少。 綜上,選擇k=d(x,y)/(g(x,y)+β)為k1、k2的底數(shù),與k1、k2的大小變化需求一致,是合理的。 基于對光照影響因子k和k1、k2的定義,式(2)中的灰度閾值轉(zhuǎn)化為如下形式 T(x,y)=m(x,y)+km×s(x,y)+kn×d(x,y) (7) 其中,k=d(x,y)/(g(x,y)+β)(0 以改進(jìn)的式(7)作為灰度動態(tài)閾值,對圖3進(jìn)行處理得圖7。參數(shù)調(diào)節(jié)過程中,可以先令m=n,然后再調(diào)整m、n的值,使動態(tài)Niblack算法得到更好的二值化效果。通過對m、n的參數(shù)調(diào)試得到,m=n=4時二值化圖效果較好。相對于圖5,圖7的背景點誤判以及目標(biāo)點誤判都明顯減少,從實驗角度驗證了設(shè)計k=d(x,y)/(g(x,y)+β)為k1、k2的底數(shù)的合理性。 圖7 引入光照影響因子的動態(tài)Niblack算法二值化圖 2.3.3 灰度閾值的全局化修正 2.3.3.1 Otsu算法原理 對于一幅圖像,目標(biāo)和背景的分割閾值記作T1,屬于目標(biāo)的像素點數(shù)占整幅圖像的比例記為ω0,其平均灰度μ0;屬于背景的像素點數(shù)占整幅圖像的比例為ω1,其平均灰度為μ1。類間方差記為g,且類間方差如式(8)所示 g=ω0ω1(μ0-μ1)2 (8) 其中,圖像的大小為M×N,圖像中像素的灰度值小于閾值T1的像素個數(shù)記作N0,像素灰度大于閾值T1的像素個數(shù)記作N1,并有ω0=N0/(M×N),ω1=N1/(M×N),N0+N1=M×N。 采用遍歷的方法得到的使類間方差g最大的閾值T1即為Otsu算法得到的分割閾值。 2.3.3.2 閾值全局化修正 本文前述內(nèi)容對Niblack算法的灰度閾值增加了光照強度項,并對各項系數(shù)進(jìn)行了動態(tài)調(diào)整。所做改進(jìn)使得原Niblack算法造成的大量偽目標(biāo)點得到正確的判定,保留了字符的大致樣貌。然而,所采用的是局部二值化方法,不可避免地忽略了圖像局部之間的聯(lián)系,使得字符局部不連貫。而全局二值化算法Otsu在光照不均勻時對光照差的字符區(qū)域二值化效果較差,但是對光照良好的區(qū)域可以有效地保證字符信息連貫。 因此本文利用Otsu中的全局閾值,對式(7)中的灰度閾值進(jìn)行進(jìn)一步修正。先由Otsu得到一個全局閾值T1,對圖像中灰度值大于此閾值的像素使用全局閾值T1進(jìn)行二值化,對于灰度值小于此閾值的像素點使用式(7)中的灰度閾值進(jìn)行二值化,從而得到式(9)中的全局化修正后的動態(tài)Niblack灰度閾值 T(x,y)= (9) 其中,T(x,y)為點(x,y)的灰度閾值,T1為Otsu得到的全局閾值,g(x,y)為點(x,y)的灰度值。其它變量定義與式(3)、式(4)和式(7)中相同。 采用式(9)中的閾值公式,吸取了局部二值化方法和全局二值化方法的長處,降低了光照不均勻的影響,同時提升了字符局部的連貫性。在解決全局閾值分割法亮度分布不均的問題的同時,也能解決局部閾值分割法抗噪聲性能差的問題。 圖8(a)、圖8(b)和圖8(c)分別為對圖3使用Otsu算法的二值化圖、對圖3使用式(7)進(jìn)行二值化的未進(jìn)行全局化修正的動態(tài)Niblack二值化圖和對圖3使用式(9)進(jìn)行二值化的全局化修正的動態(tài)Niblack二值化圖。圖8(a)、圖8(b)、圖8(c)的對比可知,全局化修正的動態(tài)Niblack二值化在光照差的區(qū)域效果遠(yuǎn)好于Otsu算法,局部字符信息也比未進(jìn)行全局化修正的動態(tài)Niblack算法更連貫。 圖8 3種算法的對比 本文的五米板面噴圖像,由于沒有對應(yīng)的標(biāo)定(ground truth,GT)圖像,能比較的性能指標(biāo)少,為了保證實驗的充分性,先測試本文算法在有GT圖像的低質(zhì)量文檔圖像集上的性能,再測試本文算法在五米板面噴圖像上的性能。 選取國際文檔圖像二值化競賽(document image binarization competition,DIBCO)提供的低質(zhì)量文檔圖像集作為測試樣例,包括20張印刷體低質(zhì)量文檔圖像及其對應(yīng)的標(biāo)定(GT)圖像,并采用均方誤差(mean square error,MSE)、峰值信噪比(peak signal to noise ratio,PSNR)、結(jié)構(gòu)相似度(structural similarity,SSIM)3個性能指標(biāo)進(jìn)行算法評估。 其中,MSE表示當(dāng)前圖像X和參考圖像Y的均方誤差,數(shù)值越小表明當(dāng)前圖像質(zhì)量越好;PSNR是一個衡量圖像失真或是噪聲水平的客觀標(biāo)準(zhǔn),數(shù)值越大表示當(dāng)前圖像失真越??;SSIM也是一種全參考的圖像質(zhì)量評價指標(biāo),它分別從亮度、對比度、結(jié)構(gòu)三方面度量圖像相似性,取值范圍為[0, 1],值越大,表示當(dāng)前圖像失真越小。 對于低質(zhì)量文檔圖像集的每張圖片,Niblack算法、Sauvola算法和文獻(xiàn)[10]的算法中的修正系數(shù)都是通過實驗選擇的最優(yōu)值。而對于整個低質(zhì)量文檔圖像集,本文算法中的m、n選定為m=n=1。 表1為各算法的性能評估結(jié)果,可看出本文算法的3個性能指標(biāo)值都好于其它算法。而圖9關(guān)于各算法的低質(zhì)量文檔圖像二值化效果對比也可看出,本文算法引入了最少的噪聲。所以本文算法在低質(zhì)量文檔圖像集上得到的二值化圖像質(zhì)量最好,驗證了本文算法的有效性和適用性。 表1 算法評估的數(shù)值結(jié)果(平均值) 圖9 低質(zhì)量文檔圖像的二值化效果對比 本實驗選取兩張五米板面噴圖像(1號圖像大小為1630×350,如圖10(a)所示;2號圖像大小為1830×350,如圖11(a)所示)分別采用Otsu算法、Niblack算法、Sauvola算法、文獻(xiàn)[10]提出的算法和本文所提出的動態(tài)Niblack方法進(jìn)行實驗對比,實驗在CPU為Intel(R)Core(TM)i5-8300H 2.30 GHz的臺式機上進(jìn)行,編譯軟件為Visual Studio 2013。 圖10 1號五米板面噴圖像的二值化效果對比 圖11 2號五米板面噴圖像的二值化效果對比 由圖10和圖11可以看出,對于字符拖尾,Otsu算法的處理效果明顯,本文算法的效果次之,其它算法的處理效果不夠理想;對于在光照不均勻時處于暗區(qū)的字符,Otsu算法的處理效果極差,本文算法的處理效果最好,其它算法都將暗區(qū)字符清晰呈現(xiàn);對于噪聲,Otsu算法引入噪聲最少,但也丟失了很多字符細(xì)節(jié),Niblack算法引入噪聲最多,但字符細(xì)節(jié)保留較好,本文算法則引入了較少的噪聲,字符細(xì)節(jié)保留較好。 總體來看,Niblack算法表現(xiàn)最差,Sauvola算法和文獻(xiàn)[10]的算法雖然都比Otsu算法和Niblack算法表現(xiàn)好,字符能夠清晰呈現(xiàn),但還是引入了一些零散的噪聲,字符拖尾的處理效果也不夠好;而本文的動態(tài)Niblack算法在字符拖尾和引入噪聲方面的效果稍差于Otsu,但優(yōu)于其它算法,在字符局部細(xì)節(jié)上也比其它更完整,整體表現(xiàn)明顯優(yōu)于其它算法。 在算法花費時間上,由表2可以看出Otsu花費時間極少,文獻(xiàn)[10]花費時間最多,而本文算法的花費時間比Niblack算法和Sauvola多0.1 s左右,是可接受的。 表2 算法花費時間對比 本文主要工作是對五米板面噴圖像進(jìn)行二值化處理。針對五米板面噴圖像的光照不均勻以及印刷造成的拖尾等問題,提出一種基于光照影響因子的動態(tài)Niblack二值化算法。在Niblack算法的基礎(chǔ)上,引入光照強度作為灰度閾值的第三決策項,并為各項定義動態(tài)系數(shù),從而保證背景點和目標(biāo)點的正確判定。另外,利用Otsu算法中的全局閾值對動態(tài)閾值公式進(jìn)行修正,兼顧全局化和局部化二值化方法的優(yōu)勢,增強了二值化方法的抗噪性能。通過與幾種常用算法的對比,本文的算法整體表現(xiàn)好于其它算法,同時計算時間成本也在可接受范圍內(nèi)。本文算法應(yīng)用于企業(yè)實際五米板面噴字符辨識,得到了良好的效果。 本文算法引入光照強度項和光照影響因子以及使用全局閾值對動態(tài)閾值進(jìn)行修正,雖然都是為了增強本文算法性能,但也使得本文算法相對于其它的經(jīng)典二值化算法更為復(fù)雜,處理時間更長;依舊引入了一些噪聲,個別字符的二值化效果相對較差;式(9)中的m和n需要根據(jù)具體的圖片類型確定,有一定的局限性。下一步的研究方向就是使二值化方法擁有Otsu對拖尾的優(yōu)點,又可以將局部光照差的字符區(qū)域正確二值化,同時降低算法的時間復(fù)雜度。3 實驗結(jié)果與分析
3.1 低質(zhì)量文檔圖像實驗
3.2 五米板面噴圖像實驗
4 結(jié)束語