梁宏希 汪仁煌 李寧 李逸樂 朱穎
(廣東工業大學自動化學院)
在對原始圖像預處理的基礎上獲得清晰的二值圖,是儀表自動讀數系統進行后續處理的保證。我國儀表自動讀數、檢定系統的研究始于近幾年,但由于儀表自身及其使用環境的復雜性,到目前為止投入實際工業應用的案例還不多,主要原因之一是儀表自動化系統的光源處理難度較大。如果直接在儀表盤正面加以光照,必然會在保護罩上產生大面積的反光區域,導致信息丟失;若光源在儀表盤側面或上方接近處,則容易造成圖片亮度不均勻和陰影顏色較深,影響處理效果。目前普遍采用的照明方法是在較遠處的上方或側面采用單個或多個大面積光源,以保證圖片亮度不會過低。這種情況下陰影顏色較淺,不會嚴重反光,但容易造成亮度不均勻。除了光源的位置,儀表盤玻璃罩對光線的折射也會使儀表圖片產生局部的亮度不均勻區域。
同態濾波是一種比較常用的光照補償方法,可以對亮度不均的圖像進行校正[1]。但對于普遍的圖像二值化閾值計算方法,需要在同態濾波效果的好壞與閾值計算精確性間作出取舍。在同態濾波參數取值比較極端時,會造成圖片亮度范圍的嚴重壓縮,導致大多數閾值算法二值化的結果產生偏差。
本文針對儀表盤和極端參數下同態濾波后圖像的特點,提出了一種針對儀表圖像的二值化方法。該方法首先使用基于Sobel算子的邊緣檢測法,檢測出圖像的邊緣線,再通過統計邊緣線相鄰點像素值的方法獲得閾值。運用Matlab中對本文方法和大津法[2]、迭代法進行仿真,說明該方法的可行性、有效性和穩定性。
對于大多數的原始儀表圖片,亮度補償是預處理的必須步驟。同態濾波是一種在頻域中同時將圖像亮度范圍進行壓縮和將圖像對比度進行增強的方法[3]。其原理是將像素的灰度看作由照射分量和反射分量兩種因素共同作用的結果,其中照射分量反映圖像的內容。通過分別處理照度和反射率對像元灰度值的影響,達到揭示陰影區細節特征的目的。由于照射分量相對變化很小,可看作是圖像的低頻成份,而反射分量則是高頻成份。同態濾波的過程如下:

其中, S (x ,y)表示原始圖像; T (x ,y)表示處理后的圖像;Log代表對數運算;DFT代表傅立葉變換;IDFT代表傅立葉逆變換;Exp代表指數運算;代表濾波器,使用不同的濾波器可以獲得不同的濾波結果。
使用同態濾波器需要對其參數進行設定,3個參數分別為高頻增益 Rh、低頻增益 Rl和截止頻率D。由于本文使用的Sobel算子對噪聲不敏感,截止頻率D對結果影響不大。當時,會產生減少低頻和增強高頻的效果,使動態范圍壓縮和對比度增強。在高、低頻增益之差變小時,濾波效果增強,優點是可以獲得亮度比較均勻的圖片,但同時具有亮度范圍壓縮比較明顯的缺點,此時一般閾值計算方法的結果容易發生偏差。
本文對圖片進行二值化前,先進行同態濾波處理,使用Butterworth濾波器進行頻域濾波,3個參數分別為
儀表盤圖像具有前景與背景比例懸殊,一般只有黑白二色(指針可能有彩色)的特點。一般閾值計算方法涉及圖片中所有像素點的灰度值,當圖片的前景和背景分離不夠清晰時,由于前景所占比例極少(絕大多數情況下少于10%),錯誤地從屬于背景的灰度區間中找出閾值。同樣,在圖像亮度范圍小的情況下,背景部分數據對結果的權重過大,屢屢導致最終計算結果出錯。
使用邊緣檢測的閾值計算方法對儀表盤二值化是基于其邊緣線比較明顯的特性。此計算方法并沒有對全圖的像素灰度值進行計算,僅僅使用了邊緣檢測算子所檢測出來的屬于邊緣點及其相鄰點的信息,保證了儀表盤圖像二值化結果的有效性。
在邊緣檢測中有多種邊緣模板,包括Roberts算子、Sobel算子、Canny算子、Prewitt算子、Kirsch算子、LOG算子等。其中,Sobel算子有平滑噪聲的作用,能提供較為精確的邊緣方向信息;Canny算子搜索邊緣線比Sobel算子完整,但由于計算時考慮了大量無效邊緣,影響最終結果的精確性。基于邊緣的二值化閾值計算,由于不需要把所有邊緣搜索出來,且考慮到儀表盤自帶的玻璃罩容易造成圖像噪點,本文用采Sobel算子進行邊緣檢測。
Sobel算子在求梯度前,首先進行鄰域平均或加權平均,然后再進行微分,這樣可抑制噪聲。水平和垂直的Sobel算子分別為[4]:

這兩個Sobel算子分別對應偏導數:

由于Sobel算子是濾波算子的形式,提取邊緣時可利用快速卷積函數。
獲得邊緣后,用邊緣信息計算閾值的步驟[5]:
1)對每個邊緣點的相鄰像素值進行比較。比較后取灰度值最大的像素點,判斷其是否為邊緣點,若不是則歸入高閾值點的集合 Sh;取灰度值最小的像素點,判斷其是否為邊緣點,若不是則歸入低閾值點的集合 Sl。儀表盤上主要的有效區域(刻度線)極少出現水平線,為了減少計算量,僅選取目標像素點左右相鄰的兩個像素點;
4)以TH為閾值對原圖進行二值化。
儀表盤圖像的前景、背景權重取值不同,對結果影響很大。由于原圖中前景所占比例極少,前景權重取0.9或以上才能取得比較好的結果。為了減少計算量,可以直接取前景權重為1,并在計算時不統計背景像素。
運用 Matlab對本文方法進行仿真,并與傳統的二值化方法進行比較。測試環境為Intel Core i5m 2.3 GHz,內存為1.5 GB,Windows xp sp3,Matlab 6.5。
圖1(a)為已有的舊圖片;圖1(b)、圖1(c)是白天室內拍攝所得,并沒有對儀表加裝專用光源。其中圖1(a)的弧形黑色區域會對各種閾值算法造成嚴重干擾;圖1(b)的光源主要為日光燈,位于儀表的正右上方,所以圖像整體呈左暗右亮;圖1(c)的光源是從斜后方照射過來的自然光,因而有一定的反射分量,在中央偏下的位置又因攝像頭的遮擋產生了一塊較暗的區域。

圖1 原始圖像

圖2 對原圖使用大津法獲得的二值圖

圖3 同態濾波圖

圖4 同態濾波后使用大津法獲得的二值圖

圖5 同態濾波后使用本文方法獲得的二值圖
由圖2 、圖4與圖5的對比中可以看出:
1)在原圖亮度均勻性比較好的情況下,直接對原圖進行二值化和使用本文方法的二值化結果相近;
2)同態濾波具有較好的亮度均衡效果;
3)大津法使用本文參數的同態濾波后的圖進行閾值計算時結果偏差比較大;
4)在亮度不均衡時,使用大津法未能獲得足夠清晰的二值圖,而本文的方法都能獲得比較穩定、清晰的結果。
表1是圖1的3幅圖像在Matlab中的仿真數據。

表1 Matlab仿真數據
本文提出了一種基于Sobel算子邊緣檢測的圖像二值化閾值計算方法。實驗結果表明,在儀表圖像二值化應用場合,與一些傳統的閾值算法比較,本文的方法具有較好的穩定性,能獲得更清晰的二值圖。計算時間雖然略長于大津法,但比迭代法短。程序運算時間主要消耗在時間復雜度為 O (n)的邊緣檢測上,因此總運算時間與圖片像素基本成正比。
[1]郭貴法,汪仁煌,王歡.改進的同態濾波在指針式儀表圖像預處理中的應用[J].廣東工業大學學報,2009,26(3):57-59.
[2]劉勝利,賈傳熒,馬鯤.一種儀表圖像整體閾值分割方法[J].計量技術,2003,10:5-7,14.
[3]韓文靜.基于ZDPCA和多分類器融合的人臉識別[D].青島:山東科技大學,2009.
[4]邢軍.基于 Sobel算子數字圖像的邊緣檢測[J].微機發展,2005,15(9):48-49,52.
[5]韓琳,傅勇,盛翊智.基于邊緣算子的車牌圖像二值化方法[J].計算機與數字工程,2007,35(1):94-96.