劉 昶,王玉晗,孫維廣
(沈陽理工大學(xué) 信息科學(xué)與工程學(xué)院,沈陽 110159)
利用光電技術(shù)對卡片打印質(zhì)量進行檢測時,由于客觀條件的限制和人為因素的影響,所拍攝的卡片圖像一般會存在一定程度的傾斜,因此需要事先提取圖像的傾斜角度,將圖像校正后再用于質(zhì)量檢測。
目前文本傾斜角度提取方法有很多,主要包括投影法[1]、Hough變換法[2-5]、基于Fourier變換的方法[6]、最近鄰連通域的方法[7-10]和基于Radon變換的方法[10]等。其中投影法是通過改變投影角度,將圖像中的文字向不同的方向投影,根據(jù)投影圖像的統(tǒng)計特征求得文本的傾斜角度。由于投影法需要向不同方向投影,所以通常計算量較大,時間復(fù)雜度較高[1]。Hough變換是最常用的文本傾斜角度檢測方法,通過對文本在0度到180度之間的所有角度進行Hough變換,用一種啟發(fā)式方法測量每一個角度累加器數(shù)值的變化率,將最大變化率對應(yīng)的角度作為圖像的傾斜角度[3]。文獻[4]在Hough變換的基礎(chǔ)上加了Canny邊緣檢測,降低了Hough變換算法的時間復(fù)雜度,但該方法需要先計算出圖像傾斜的大致范圍?;贔ourier變換的方法是對文本圖像上所有像素點作Fourier變換,利用Fourier變換空間密度最大的特性求得傾斜角度,該方法計算量較大[6]。最近鄰連通域的方法是通過N個連通區(qū)域中心的K個最近鄰點,統(tǒng)計矢量方向的直方圖,以直方圖的峰值作為圖像的傾斜角;但當(dāng)數(shù)據(jù)分布不均勻時,最近鄰點會偏向數(shù)據(jù)密度較大的方向,從而影響聚類結(jié)果[8]。文獻[9]對連通域方法做了改進,利用圖像的紋理特征對投影圖像進行分析,用自適應(yīng)的方法選出只含有文本的區(qū)域,求出區(qū)域中心坐標(biāo),定位文本行后擬合直線求出傾斜角度;該方法檢測速度快,且克服了圖像背景復(fù)雜的影響。文獻[10]先找出圖像子區(qū)域,將子區(qū)域中連通域底邊的中心作為特征點,利用特征點和文本行基線的關(guān)系,將特征點利用最小二乘法擬合出基線的方向,即為圖像傾斜方向;該方法提取傾斜角度速度快、準(zhǔn)確度高?;赗adon變換的方法[11]是利用Radon變換計算文本圖像沿指定方向的投影,把投影看作是二維函數(shù)在某一方向上的線積分,當(dāng)一個角度變化時,得到不同的投影值,計算最大值并得出文本圖像的角度;但該方法精度不高,不適用于對精度要求較高的場合。
卡片中的文本與普通文本相比,一般分為若干個字塊,且每個字塊的長度較短,字塊內(nèi)部密度較高。針對卡片文本的特點,本文提出一種基于DBSCAN(Density-Based Spatial Clustering of Applications with Noise)聚類的傾斜角度提取方法,該方法將圖像中的文本像素點根據(jù)密度進行聚類,然后通過最小二乘擬合直線求出圖像的傾斜角度,將本文方法應(yīng)用于卡片打印質(zhì)量缺陷檢測問題中取得了滿意的結(jié)果。
聚類是按照數(shù)據(jù)集中數(shù)據(jù)間的相似性進行區(qū)分和分類的過程,其分類原則是使同一簇中的數(shù)據(jù)具有盡可能大的相似性,不同簇中的數(shù)據(jù)具有盡可能大的相異性[12],數(shù)據(jù)集可以通過聚類劃分成一系列的子集。假設(shè)文本中的文字為橫版排列,一般情況下字塊間距和行間距均大于字間距,可通過聚類的方法對卡片中的字塊進行聚類。本文提出用DBSCAN聚類方法對灰度圖像中文字像素點聚類。
卡片圖像中文字和背景的灰度值有較大的差異,因此可以設(shè)置閾值將文字和背景區(qū)分開,文字為黑色,背景為白色??梢缘玫綀D像中文字區(qū)域像素點的坐標(biāo)集合P={(x,y)|I(x,y)≤T1},I(x,y)為像素點(x,y)的灰度值,將集合P作為數(shù)據(jù)集。DBSCAN法是一種密度聚類算法[13],該算法將簇定義為密度相連點的最大集合,把具有足夠高密度的區(qū)域劃分為簇;該算法輸入的參數(shù)為數(shù)據(jù)集P、鄰域半徑R和鄰域內(nèi)密度閾值參數(shù)MinPts。DBSCAN算法中距給定數(shù)據(jù)的距離小于R的區(qū)域稱為該數(shù)據(jù)的R鄰域;若R鄰域內(nèi)的數(shù)據(jù)樣本點數(shù)大于等于MinPts,則稱該數(shù)據(jù)為核心;對于數(shù)據(jù)P集中數(shù)據(jù)點pi和pj,若pi在pj的R鄰域內(nèi),并且pi為核心,那么稱pi與pj直接密度可達;給定數(shù)據(jù)集P中一組數(shù)據(jù){p1,p2,…,pn},若pi(i=1,2,…,n-1)到pi+1直接密度可達,則稱p1到pn密度可達。本文應(yīng)用DBSCAN思想對卡片二值圖中的字塊進行聚類,其基本流程如下。
Step1:取數(shù)據(jù)集中一個未被標(biāo)記過的點,查看該點鄰域內(nèi)數(shù)據(jù)點的數(shù)量,若大于等于MinPts,則標(biāo)記該點為核心并形成一個新類,否則標(biāo)記為噪聲;
Step2:查找核心點密度可達的數(shù)據(jù)并合并為一類;
Step3:若數(shù)據(jù)集中所有數(shù)據(jù)均被標(biāo)記且沒有新數(shù)據(jù)加入任何類,則算法結(jié)束;否則轉(zhuǎn)到Step1。
當(dāng)聚類的數(shù)據(jù)集較大時,上述聚類算法的計算時間較長,由于文字在圖像上會形成點簇,因此本文使用降采樣的方法來減少聚類算法的處理時間,降采樣原理如圖1所示。
圖1 降采樣原理圖
設(shè)置每塊的像素尺寸為XW×YW,對原始圖像進行分塊,設(shè)置塊中黑色像素點個數(shù)閾值T2,對降采樣圖像進行二值化;若原始圖像的塊中黑色像素點的個數(shù)大于T2,則將對應(yīng)降采樣圖像中的像素點置“0”為黑色,否則將對應(yīng)降采樣圖像中的像素點置“1”為白色。若原始圖像尺寸為U×V,記降采樣后的圖像尺寸為Sx×Sy,其中,Sx=「U/XW?,Sy=「V/YW?(「·?表示向上取整),降采樣聚類算法流程如下。
Step1:根據(jù)上述原理對圖像做降采樣處理,獲得降采樣圖像;
Step2:利用1.1節(jié)中的聚類算法對降采樣圖像進行聚類,將數(shù)據(jù)分為P1、P2、…、PK,共K類,對應(yīng)的類別記為H1、H2、…、HK;
Step3:根據(jù)聚類結(jié)果對原始圖像進行處理,對于降采樣圖像中的每個像素點(i,j),若其所屬的類別為Hk,則將與該點對應(yīng)的原始圖像塊中的所有黑色像素點的類別也標(biāo)記為Hk。
采用以上方法可提高聚類算法的速度。圖2顯示了應(yīng)用降采樣方法進行聚類的效果。圖2a為原始圖像的二值圖,尺寸為970×355,設(shè)置塊的尺寸為80×4,閾值T2為5。圖2b為橫縱均放大4倍后的降采樣圖。圖2c為針對降采樣圖像進行聚類的結(jié)果,本文算法將數(shù)據(jù)點分成2類,深色和淺色分別表示聚類得到的兩類數(shù)據(jù)。圖2d為最終原始圖像的聚類結(jié)果??梢钥闯霰疚姆椒傻玫綕M意的聚類結(jié)果。
圖2 聚類效果圖
通過上述聚類方法得到的每一類數(shù)據(jù)Pk對應(yīng)卡片文本上的一個字塊,考慮到字塊的長度大于寬度,可將字塊近似看成一條直線,于是字塊中的黑色像素點可看作是該直線的采樣,對于任意一點(xi,yi)∈Pk有
yi=ckxi+bk+εi
(1)
式中:ck和bk分別為對應(yīng)直線的斜率和截距;εi為采樣誤差??紤]到卡片上的字塊是相互平行的,有c1=c2=…=cK,因此公式(1)可改寫為
yi=cxi+bk+εi
(2)
式中c代表所有直線的斜率,可用最小二乘法求得。為減少計算時間,將所有類別按所包含的數(shù)據(jù)點個數(shù)由多到少排序,取前K*個數(shù)據(jù)點較多的類別(對應(yīng)較長的字塊),再求出每一類中列坐標(biāo)相同的數(shù)據(jù)的重心作為對應(yīng)直線的樣本點,以減少樣本點數(shù)量,將重心點代入公式(2)并寫成矩陣形式為
AX=B+ε
(3)
式中X=(cb1…bK*)T,可以求出
X=(ATA)-1(ATB)
(4)
從而獲得c值,對應(yīng)的傾角為卡片上文本的傾角。
為驗證本文提出的卡片圖像傾角提取的聚類算法,選用尺寸為2350×1250的10幅卡片文本圖像,將這10幅圖像利用OpenCV在10度以內(nèi)每間隔一度做一次旋轉(zhuǎn),共生成100幅測試圖像,取數(shù)據(jù)點最多的前3類數(shù)據(jù)求傾斜角度;用C++語言在Visual Studio 2010 環(huán)境下實現(xiàn),測試環(huán)境為:Intel(R)Core(TM)i5 CPU;內(nèi)存6GB;操作系統(tǒng)為Windows7,與文獻[1]中的投影法和文獻[5]中的Hough變換方法作對比,求出每個角度下10幅圖像的平均提取誤差,誤差對比如圖3所示,提取時間和最大誤差的對比結(jié)果如表1所示。
圖3 平均誤差對比圖
傾斜角度檢測方法平均處理時間/秒最大誤差/度本文方法0.710.05投影法29.030.02Hough變換方法0.720.35
從圖3與表1可看出,本文方法和投影法的最大誤差均在0.05度以內(nèi),Hough變換方法雖然可以對文本做傾斜校正,但算法精度不高,而投影法檢測文本傾斜角度精度與本文相近,但耗時較長。綜合評價算法精度與耗時,本文算法取得滿意的結(jié)果。
文獻[4]的方法是目前針對文本傾角提取最快的方法之一,其原理是首先對圖像做邊緣檢測,然后通過邊緣估算出圖像大致的傾斜角度,再在一個較小的角度范圍內(nèi)進行Hough變換求傾角以節(jié)省時間,但該方法不完全適用于卡片文本的傾角提取,因為卡片上每個字塊的橫向文本可能較少,在進行傾角估算時很可能出現(xiàn)嚴(yán)重的偏差而導(dǎo)致傾角提取錯誤。圖4為本文方法與文獻[4]求得直線對比。文獻[4]得到的直線如圖4a所示,為近似垂直方向,顯然是錯誤的;本文得到的直線如圖4b所示,結(jié)果正確,說明本文方法魯棒性較好。
將本文方法應(yīng)用于某卡片打印質(zhì)量缺陷檢測
圖4 本文方法與文獻[4]求得直線對比
系統(tǒng)中,在缺陷檢測之前首先需要對待檢測圖像做文本傾斜校正。系統(tǒng)中圖像采集選用Basler acA1600-20gm工業(yè)相機,配12mm定焦鏡頭,拍照時圖像尺寸設(shè)置為1628×1236像素,缺陷檢測步驟如下。
(1)對待檢測卡片拍照獲得待檢測圖像,并進行畸變校正;
(2)應(yīng)用本文方法對畸變校正后的圖像進行傾角提取,根據(jù)提取結(jié)果用雙三次插值方法[14]做旋轉(zhuǎn)校正處理,再對校正后的圖像做二值化處理;
(3)從與卡片對應(yīng)的Excel數(shù)據(jù)文件導(dǎo)出字符尺寸相同的圖像作為標(biāo)準(zhǔn)模板;
(4)用模板匹配的方法將模板圖像與校正后的二值圖像最大程度對齊,然后通過圖像差分的方法找到圖像中的缺陷。
圖5為校正后圖像與結(jié)果圖像。圖5a為相機畸變校正后的圖像,其中每個文字的尺寸為50×50像素,字間距為5個像素,行間距為27個像素,可以看出校正后圖像存在一定傾斜。
設(shè)置區(qū)分文字與背景的閾值T1為40,降采樣塊的尺寸為80×4,降采樣圖像二值化閾值T2為5,降采樣圖像聚類鄰域半徑R為1,鄰域內(nèi)密度閾值參數(shù)MinPts為2,用于計算類別的數(shù)量K*為3。求出傾斜角度后,以圖像中心為旋轉(zhuǎn)中心對圖像做旋轉(zhuǎn),傾斜校正后的二值圖像如圖5b所示,已將圖像中的文字方向校正成水平。從Excel導(dǎo)出的模板圖像如圖5c所示。傾斜校正后的二值圖像與模板圖像的差分圖像如圖5d所示。將圖5d中圖像作局部放大,效果如圖6所示??梢钥闯?,由于本文算法對原始卡片的傾角進行了高精度提取,使得后續(xù)的傾斜校正與差分過程取得理想的結(jié)果。從圖6c的差分圖像可以看出,黑色像素在無缺陷區(qū)域分布稀疏,在有缺陷區(qū)域分布密集,后續(xù)可以通過統(tǒng)計黑色像素點的密度有效識別出缺陷區(qū)域。
圖5 校正后圖像與結(jié)果圖像
圖6 實驗結(jié)果局部放大圖
提出一種基于DBSCAN聚類的卡片文本圖像傾角提取方法,將足夠長的文字近似看成一條直線,利用文本行間距大于字間距的性質(zhì)對字塊聚類;通過降采樣方法提高算法處理速度,對同一類別數(shù)據(jù)在列方向求重心,將重心看成對應(yīng)直線的樣本點,通過最小二乘法擬合直線求出卡片圖像的傾斜角度。實驗證明該方法精度較高,適用于卡片打印質(zhì)量缺陷檢測等應(yīng)用中的文本傾斜角度提取。