孫 洋 孫 林* 夾尚豐 余振軍
1(山東科技大學測繪科學與工程學院 山東 青島 266590)
2(青島星科瑞升信息科技有限公司 山東 青島 266590)
工業上字符印刷缺陷的檢測有著巨大的需求。字符在印刷中容易出現漏印、錯印、遮擋等問題。目前大部分工業產品的檢測主要是依靠人眼檢測,這樣的檢測方法工廠要承擔巨大的人工成本和管理成本,而且檢測的精度和穩定性也難以得到有效的保證。快速、準確、自動檢測印刷字符的缺陷,具有重要意義[1-3]。
隨著工業智能化、自動化水平的提高,圖像處理技術得到了快速的發展,工業上字符缺陷檢測技術也有了很大的提高。
模板匹配技術由于其原理簡單、適應性強,以及處理復雜場景的能力,被廣泛應用于印刷品的缺陷檢測中。模板匹配是使用預先定義的模板來搜索圖像以找到匹配的目標。基于匹配特征的不同,用于匹配的模板可以分為多種類型。首先發展起來的模板匹配算法以灰度特征作為匹配對象。Brown[4]提出了平均絕對差算法,該算法匹配精度高,但運算量大,抗干擾性差。Barnea等[5]提出了序貫相似性檢測算法,該算法通過設置閾值終止計算的策略,有效地減少了算法的處理時間。Zitová等[6]提出了歸一化互相關匹配法,根據模板圖像與目標圖像的互相關值來確定匹配度。該算法抗噪聲干擾能力強,但是受光照影響較大。后來發展起來的模板匹配算法以形狀特征作為匹配對象,通過計算模板圖像與目標圖像形狀相似度來進行匹配。Moravec[7]提出Moravec角點檢測算法,通過計算灰度方差值來提取特征點,該算法計算過程簡單,但誤檢測率高,算法運行速度較慢。Harris等[8]提出Harris角點檢測算法,是對Moravec角點檢測算法進行改進,克服了Moravec角點檢測算法對邊緣的敏感性,提高了算法的穩定性。以及Lowe[9]在1999年提出并在2004年完善總結的Sift角點檢測法,這種算法在圖像發生平移、旋轉、縮放時都具有良好的適應性。但是Moravec、Harris和Sift等該類點特征都存在計算特征點過于復雜、運算速度較慢的問題。
針對上述算法受光照影響大、計算過程復雜等問題,本文提出一種基于邊緣形狀特征匹配的算法,并應用于字符的缺陷檢測。算法首先通過提取最優描述字符的輪廓點,計算輪廓點梯度與待檢測圖像對應點梯度的點乘值作為相似性度量,然后根據字符輪廓點相似度來定位字符缺陷。由于本文采用的相似性度量不受遮擋、混亂、線性與非線性光照變化等情況的影響,所以在光照變化環境下依然可以快速準確地定位字符印刷缺陷。
在圖像中檢測某一特定物體最基本的方法之一是模板匹配法,這種方法如今被廣泛地應用在各類工業檢測系統中,也是一種典型的機器視覺檢測算法,這種方法原理簡單、實現容易,但是該算法的計算量相對較大。因此,在不降低可靠性的情況下,減小計算量是關鍵。本文通過Sobel算子濾波后得到的梯度數據為基礎,根據邊緣連通域長度來確定最優的邊緣分割閾值,通過閾值分割得到字符輪廓點信息,來建立輪廓點匹配模板,以此減少模板中點的數量。由于待檢測圖像中的目標角度是隨機的,因此為了精確定位到目標位置,還應當確定適當的旋轉角度步長。
為了得到模板字符輪廓點的梯度方向向量,首先要得到字符輪廓的邊緣。由于Sobel算子可以得到較為精確的圖像邊緣,因此本文采用Sobel算子來提取圖像的邊緣。該算子包含水平和豎直兩個方向的3×3矩陣的卷積因子,分別與原灰度圖像進行卷積運算可以得到兩個方向的亮度差分近似值。
(1)
(2)
式中:A代表原始灰度圖像;Gx及Gy分別代表經水平和豎直兩個方向邊緣檢測的圖像灰度值。則該點灰度的大小為:
(3)
梯度方向θ為:
(4)
由于Sobel算子得到的圖像邊緣會受到噪聲的影響,因此為了將屬于字符輪廓的邊緣與噪聲或紋理引起的邊緣區分開,本文在Sobel算子提取圖像邊緣的基礎上,進一步在高曲率點分割邊緣區域,根據邊緣平均長度確定邊緣分割閾值。
(5)

依次根據所有邊緣梯度值從模板圖像中提取大于該閾值的邊緣經過非極大值抑制,然后在高曲率邊緣點上分割邊緣區域。將得到的字符邊緣label值賦值為0,將背景label值賦值為-1。采用Two-Pass連通區域標記算法[10]對邊緣二值圖像進行處理。該算法是對分割后的邊緣二值圖像進行兩遍掃描來確定連通區域。兩遍掃描規則及步驟如下:
(1) 第一次掃描:從左到右、從上到下進行掃描,當圖像像素label值為0時,則通過該像素的左鄰像素和上鄰像素label值進行判斷。此時存在三種情況:當該像素的左鄰像素和上鄰像素label值均為-1時,則給該像素賦值一個新的label值,label值逐漸遞加;當該像素的左鄰像素和上鄰像素label值有一個不為-1時,則將該位置處的label值賦值給該像素的label值;當該像素的左鄰像素和上鄰像素label值均不為-1時,則選取其中較小的label值賦值給該像素的label值。記錄每個label值不為-1的像素點屬于哪一個連通區域。
第一次掃描過程如圖1所示。

(a) 分割后的邊緣二值圖
(2) 第二次掃描:對于屬于同一連通區域的像素點label值賦值為同屬一個連通區域中最小的label值。完成掃描后,圖像中具有相同label值的像素就組成了同一個連通區域。第二次掃描結果如圖2所示。
經過如上連通區域標記算法來獲取連通域個數,計算邊緣總長度除以連通域的個數得到邊緣平均長度。
(6)
式中:T表示邊緣平均長度;L表示邊緣總長度;N表示連通域的個數。因為通常屬于對象的邊緣段的長度較長,而屬于圖像噪聲或紋理的邊緣段的長度較短,故求取平均長度最大值對應的梯度幅值設為邊緣分割閾值。Sobel算子提取的圖像邊緣及本文通過計算最優邊緣分割閾值分割得到的邊緣經過非極大值抑制得到的字符邊緣示意圖如圖3所示。
根據圖3可以看出Sobel算子由于受到噪聲和紋理的影響,提取的邊緣存在漏提和多提現象。而本文通過計算邊緣連通域長度,確定最優的邊緣分割閾值得到的字符邊緣有效避免了噪聲和紋理的影響,較好地保留了字符邊緣形狀特征,為接下來的邊緣輪廓點匹配提供了有力的支撐。
由于要檢測的圖像中的目標角度是隨機的,因此為了定位到目標的精確位置,應當確定適當的旋轉角度步長。本文根據余弦定理計算距模板中心最遠的輪廓點繞模板中心旋轉角度來求旋轉角度步長。如圖4所示,設點O為模板中心點,點A為最遠輪廓點,點B為點A旋轉后的點,設邊長AB=1,OA=OB=a,由余弦定理求OA與OB夾角φ角。

圖4 旋轉步長確定示意圖
(7)
φ角為可保證模板旋轉前后所對應的角度。為了避免匹配不上,旋轉角度步長不宜設置過大,以模板輪廓圖最遠輪廓點距離模板中心點連線旋轉2個像素對應的角度φ作為旋轉步長。
在求得最佳邊緣輪廓分割閾值后,利用得到的輪廓點坐標位置和歸一化后的梯度方向向量制作模板,模板轉換成由一系列字符輪廓點Pi=(Xi,Yi)T,i=1,2,…,n構成,對應于每個點求得歸一化后的梯度方向向量di=(ti,ui)T。對于搜索圖像使用Sobel算子濾波計算出每個點(X,Y)歸一化后的梯度方向向量ex,y=(vx,y,wx,y)T。
在搜索圖上遍歷,根據模板字符輪廓點相對重心的位置,采取模板輪廓點和搜索圖邊緣點向量轉換成單位向量后進行匹配。光照變化雖然會影響邊緣點梯度大小,但是不會改變梯度的方向。
相似度量函數為:
(8)
在搜索圖上每一個點上遍歷完以后,根據搜索圖上匹配度最大的點確定字符所在位置。
由于遍歷整幅搜索圖來尋找目標耗時較多,雖然本文在搜索圖上遍歷過程中,只計算模板輪廓點和搜索圖相對應位置點的匹配度,已經大大減少了計算量,但是當搜索圖像較大時,計算量依舊很大,因此為了進一步加快算法處理速度,減少計算量。本文采取提前結束非可能目標位置的計算并結合圖像金字塔的策略。
由于在搜索圖字符以外區域匹配度得分較低,因此可以采取一定的策略,在非目標點提前結束計算,進行下一個位置處的匹配。這樣可以有效加快算法處理速度,減少遍歷過程中的計算量,從而使算法達到工業檢測中的實時性要求。根據相似性度量函數,我們可以得到相似度量的部分和公式為:
(9)
因為向量di和ex,y是歸一化后的梯度方向向量,所以由公式可知,前j項的和小于j/n,那么剩余n-j項的和小于(n-j)/n=1-j/n,所以當部分和滿足Sj Sj 式中:f=(1-gSmin)/(1-Smin),在這里,Smin設置為0.7,g設置為0.75。 采取設置閾值終止計算的策略可以減少算法運行時間,但是這并不會改變算法的復雜度。其算法的復雜度為O(whn),其中:w和h是搜索圖像的寬和高;n是模板中點的數量。因此采用由粗到精的搜索策略可以有效降低算法的復雜度,即通過降低圖像的分辨率得到一個大概的位置,再在高分辨率下得到精確位置。圖像金字塔可以通過下采樣獲得一幅圖像一系列高分辨率和低分辨率圖像的集合。 圖像金字塔是一個圖像序列。一幅圖像金字塔是對原始圖像進行濾波,從而得到一系列不同尺度的影像,按照分辨率的大小根據金字塔形狀進行排列。本文采用的是Gaussian金字塔。是通過對待處理圖像梯次下采樣獲得一系列圖像的集合,金字塔的底部是待處理圖像的高分辨率表示,金字塔的頂部是待處理圖像的低分辨率表示。以Lena圖像為例的Gaussian金字塔圖像序列如圖5所示。 圖5 Lena圖像的Gaussian金字塔圖像序列 本文根據邊緣輪廓點的數量設置閾值來確定金字塔層數[12]。根據大量樣本測試,對于大多數字符而言,當其圖像金字塔在某層輪廓點數在100個左右,再高一層則小于此值時,字符圖像在該層仍有較完整的輪廓特征點,我們就將該層定為圖像金字塔最高層。 表1 輪廓點匹配度 圖6 搜索圖原圖 模板字符經閾值分割以后,得到的邊緣輪廓點個數總共為1 558個,在搜索圖上匹配到目標位置后,匹配到的字符輪廓點中,匹配度大于等于0.75的,占了100%,匹配度小于0.75的,占了0%,說明本文采用閾值分割得到的邊緣輪廓點進行匹配的算法匹配效果良好。 在輪廓匹配之后,每個輪廓點都有一個得分。在缺陷提取的過程中,采用粗篩選和精篩選相結合的方式來尋找缺陷點,基于缺陷點填充求最小外接矩形的方法來提取缺陷,具體流程如下所述。 (1) 粗篩選:將搜索圖字符輪廓點得分大于等于0.75的點剔除,將得分小于0.75的點保留。 (2) 精篩選:考慮到噪點的影響,經過粗篩選得到的輪廓點可能不是真正的缺陷點,因此需要進一步篩選。考慮到噪點一般是孤立存在的,故在粗篩選得到的點的12×12區域進行遍歷,如果該區域有超過19個得分小于0.75的點,則認為該點是真正的缺陷點。 (3) 基于缺陷點填充:在得到真正的缺陷點以后,因為缺陷點是離散存在的,不方便確定缺陷邊界坐標。因此為了定位字符缺陷所在的區域,將缺陷點周圍12×12區域內灰度值填充為255,其他位置灰度值設置為0。然后尋找二值圖輪廓所在最小外接矩形,即為字符缺陷區域。 圖7為常見的印刷品缺陷中漏印情況,白色方框標識區域為采集圖像過程中,亮度發生變化。采用差影法會對缺陷造成誤判。這主要是因為,差影法是將待檢測圖像與模板圖像配準后進行剪影操作,最后可以根據檢測結果圖像灰度值不為0的點判斷為缺陷點。其數學表達式為: 圖7 印刷品缺陷圖像實例 r(i,j)=|f(i,j)-g(i,j)| (10) 式中:f(i,j)為模板圖像像素點(i,j)的灰度值;g(i,j)為搜索圖像的目標區域像素點(i,j)的灰度值;r(i,j)為模板圖像和搜索圖像相減后的灰度值。 圖8為差影法和本文算法對印刷品缺陷圖像檢測出的缺陷點個數曲線圖,其中橫坐標表示缺陷圖像列坐標,縱坐標表示缺陷點個數。 可以看出,差影法雖然在字符漏印區域檢測到的缺陷點比較集中,個數也比較多,但是在圖像第100列到第200列光照變化區域檢測出的缺陷區域也比較集中,并且檢測出的缺陷點個數較多,均大于50個。從圖9(a)可以看出差影法因采集圖像光照發生變化,對缺陷造成誤判,把光照變化區域檢測為缺陷,導致檢測失敗。 (a) 差影法 (b) 本文算法 本文算法對印刷品缺陷圖像檢測出來的缺陷主要集中在字符漏印區域,還有幾列在圖像第100列到第200列光照變化區域,但是由于這幾列是離散存在的,并且缺陷點個數均小于10,因此可以通過精確篩選給去除。從圖9(b)可以清晰地看出本文算法在采集圖像光照發生變化時可以正確地檢測到缺陷,并準確地標記缺陷區域,沒有因采集圖像光照發生變化而導致檢測失敗,說明本文算法在復雜光照條件下對印刷品缺陷檢測精度要優于差影法。 為了測試算法的穩定性,測試當待檢測印刷圖像出現典型的漏印、遮擋等缺陷在旋轉、線性光照變化、非線性光照變化下,算法檢測缺陷的效果。 圖10(a)、圖10(d)、圖10(g)是三組標準印刷圖像,圖10(b)、圖10(e)、圖10(h)為這三組標準印刷圖像出現字符漏印時,在旋轉、線性光照變化、非線性光照變化下的圖像,圖10(c)、圖10(f)、圖10(i)為這三組標準印刷圖像出現字符遮擋時,在旋轉、線性光照變化、非線性光照變化下的圖像。可以看出當待檢測印刷圖像出現典型的漏印、遮擋等缺陷在旋轉、線性光照變化、非線性光照變化下,仍然可以準確定位字符缺陷。 (a) (b) (c) 為了測試算法在采集不同角度的圖像下算法的準確率,選取180組光照發生變化的印刷品圖像,分為三組,每組60幅,旋轉角度范圍分別在(0°,60°)、(60°,120°)、(120°,180°),每組圖像無缺陷和有缺陷印刷品各30幅。 為了驗證本文算法在復雜光照下,采集的旋轉不同角度的圖像進行測試的效果,可由真正率(Pse)、真負率(Psp)和準確率(Pac)進行評價,分別定義為: (11) (12) (13) 式中:Pse為有缺陷圖像識別的準確率;Psp為無缺陷圖像識別的準確率;Pac為旋轉不同角度下印刷品缺陷總的準確率;PT為有缺陷圖像被正確識別的數量;NF為有缺陷圖像被錯誤識別的數量;PF為無缺陷圖像被錯誤識別的數量;NT為無缺陷圖像被正確識別的數量。 缺陷檢測實驗后得到的混合矩陣見表2。根據表2中的檢測結果以及式(11)-式(13),可以得到真正率、真負率和準確率,結果見表3。 表2 復雜光照下旋轉不同角度的印刷品缺陷 表3 復雜光照下旋轉不同角度的印刷品缺陷 由表3可知在采集不同角度的圖像下無缺陷的圖像被錯誤識別為有缺陷圖像的數量為0,真負率達到100%,真正率達到93%以上,準確率達到96%以上,說明本文算法在復雜光照條件下匹配效果良好,并且基于缺陷點填充求最小外接矩形的方法進行缺陷檢測是可行的。在表2中,有5幅有缺陷的圖像被判斷錯誤,這是由于本文對缺陷進行檢測是基于字符輪廓點匹配度進行判斷,而這5幅圖像的缺陷是在字符輪廓內部,所以導致檢測失敗。 工業檢測一般要達到實時性要求,因此對算法的處理時間要求比較高,一般要求能達到毫秒級別。實驗測試計算機處理器為Inter Core i5-9500 3.00 GHz,8 GB內存,在Windows 10環境下,用VS2010+OpenCV編程實現。其中模板圖像大小為309 pixel×64 pixel,隨機采集100幅測試圖像,測試圖像大小均為1 024 pixel×768 pixel。本文對本文算法與經典的歸一化互相關系數匹配算法、基于形狀模板匹配算法[13-17]進行比較,結果如表4所示。 表4 算法匹配時間 單位:ms 可以看出本文算法匹配速度可以達到毫秒級別,能滿足工業檢測的實時性要求,并且本文算法在匹配耗時上要少于經典的歸一化互相關系數匹配算法和基于形狀模板匹配算法,從平均匹配時間上來看大概是歸一化互相關系數匹配算法的1/6,基于形狀模板匹配算法的1/3。 本文提出一種適用于工業檢測的基于邊緣形狀特征的字符缺陷檢測算法。由于本文采用的相似性度量不受遮擋、混亂、線性光照變化、非線性光照變化等情況的影響,所以在復雜光照條件下依然可以準確地定位到目標位置。在定位到目標位置后,根據輪廓點的匹配度來尋找缺陷點,基于缺陷點填充求最小外接矩形的方法來提取缺陷,可以有效避免由于光照的變化,影響對缺陷的判斷。由于本文采用圖像金字塔算法和通過閾值判斷提前結束的搜索策略,可以滿足工業檢測實時性要求。 本文算法存在著對個別字符內部缺陷檢測效果不理想的情況,在下一階段,根據字符輪廓判斷輪廓內部的缺陷是研究的重點。3.2 圖像金字塔

4 實驗結果與分析
4.1 輪廓匹配



4.2 缺陷檢測


4.3 算法性能測試




5 結 語