齊淑雯,陳愛軍,劉 磊
(中國計量大學(xué) 計量測試工程學(xué)院,浙江 杭州 310018)
汽車儀表盤是駕駛員在駕駛過程中獲得汽車信息的重要渠道,通過儀表盤的信息顯示,駕駛員可以判斷當(dāng)下的汽車運行狀況和汽車部件的安全狀況,儀表盤是否顯示準(zhǔn)確關(guān)系著汽車駕駛的安全性和可靠性[1]。因此,準(zhǔn)確快速地對儀表盤信息進(jìn)行識別具有重要意義。
當(dāng)前,很多學(xué)者對于儀表盤指針讀數(shù)進(jìn)行了研究。對于指針的識別,秦善培提出使用Hough變換提取儀表指針?biāo)谥本€,然后利用角度轉(zhuǎn)換法換算出指針刻度[2];孫晶晶提出基于最小距離法與中心點校正相結(jié)合的直線提取方法來提取指針直線,并選擇用角度法換算出指針讀數(shù)[3]。但Hough變換中需要手動設(shè)置累加平面的閾值參數(shù),因此無法實現(xiàn)自適應(yīng),還經(jīng)常會出現(xiàn)細(xì)化出的直線有多于一條的情況,而且由于Hough變換是將整個圖像像素數(shù)據(jù)一起運算,故在處理速度上相對較慢[4]。
目前使用較為廣泛的直線提取方法是基于ZS細(xì)化的基礎(chǔ)上進(jìn)行的[5]。牟少敏等人對ZS快速并行細(xì)化算法進(jìn)行了改進(jìn),將8鄰域進(jìn)行二進(jìn)制編碼,從而刪除ZS細(xì)化中出現(xiàn)冗余和分叉的像素點[6];陳樹等則在初步細(xì)化的基礎(chǔ)上采用四連通域模板和構(gòu)造保留模板實現(xiàn)徹底細(xì)化和直線連通[7]。然而上述方法都采用某一特定的模板進(jìn)行匹配細(xì)化,不能覆蓋可能出現(xiàn)的情況,且運算過程復(fù)雜,無法解決直線細(xì)化過程中重復(fù)出現(xiàn)的分叉和像素冗余的問題。
為了解決現(xiàn)有方法存在的問題,今提出一種基于ZS細(xì)化改進(jìn)算法的汽車儀表盤指針讀數(shù)方法。首先運用顏色空間轉(zhuǎn)換的方法,將儀表盤圖像從RGB空間轉(zhuǎn)換至YUV空間,提取U分量得到指針區(qū)域圖像;然后針對上述ZS細(xì)化算法存在的不足,對ZS細(xì)化算法進(jìn)行改進(jìn),基于不同的搜索方法和方向判別方法,得到需要保留的像素點;最后將所有的像素點在新建的背景圖像中輸出,得到最終細(xì)化完全的直線,對該直線進(jìn)行最小二乘擬合,并計算出指針讀數(shù)。
為了減少后期的算法難度,需要對原圖像進(jìn)行指針區(qū)域提取,流程圖如圖1。
圖1 指針提取程序框圖Figure 1 Block diagram of pointer extraction
首先采用張氏算法[8]標(biāo)定相機(jī),然后對圖像進(jìn)行校正,所得的儀表盤圖像如圖2,在圖像處理過程中,RGB模型是一種傳統(tǒng)的顏色信息表達(dá)方式,但對于該儀表盤而言,通過傳統(tǒng)的提取紅色分量的方法來得到指針區(qū)域圖像[9],圖像中紅色刻度以及指針區(qū)域會存在噪點以及毛刺的問題,所以采用顏色空間轉(zhuǎn)換的方法。
圖2 儀表盤圖像Figure 2 Dashboard image
YUV空間是將亮度參數(shù)和色度參數(shù)分開表示,這樣的操作有利于提取該圖像的色度分量。針對此儀表盤,可采取提取U分量來提取指針區(qū)域,RGB與YUV的轉(zhuǎn)換公式如式(1):
(1)
由圖2可以看出,指針區(qū)域的面積明顯大于其余區(qū)域。首先將提取到的U分量圖像采用Otsu方法進(jìn)行圖像二值化,其次獲取二值圖像中每個輪廓的面積以及最小外接矩形的伸長比,最后根據(jù)面積和伸長比的閾值判斷條件,得到只含有指針連通域的圖像。
由于儀表盤的形狀比較特殊,在固定時會存在一定的傾斜,此時需要對儀表盤圖像進(jìn)行傾斜校正。
首先采用在YUV顏色空間中提取U分量的方法提取部分紅色主刻度,其次利用大津法對原圖像進(jìn)行二值化,再提取剩余的主刻度,然后將主刻度圖像在背景圖中復(fù)原得到完整的刻度圖像,提取刻度區(qū)域的最小外接矩形的中心點,采任意三點擬合圓得到圓心[10],并對得到的圓心進(jìn)行加權(quán)平均,得到該度盤的圓心點坐標(biāo)(x,y),計算50 km/h處刻度與圖像坐標(biāo)系y軸的夾角α,以圓心(x,y)為旋轉(zhuǎn)中心,將原圖像順時針旋轉(zhuǎn)α角度,完成圖像擺正,如圖3。
圖3 擺正的儀表盤圖像Figure 3 Corrected dashboard image
由于ZS細(xì)化算法有著保持直線原始形狀的特性,所以指針連通域外圍輪廓上微小的變化都會在細(xì)化過程中影響細(xì)化的結(jié)果,比如細(xì)小的凸起會在最終細(xì)化結(jié)果中出現(xiàn)分叉的現(xiàn)象。
利用形態(tài)學(xué)閉運算[11]對指針連通域圖像進(jìn)行處理,可以彌合較窄的間斷和細(xì)長的溝壑,消除細(xì)小的孔洞,填補輪廓線中的斷裂。本文采用的結(jié)構(gòu)元素形狀為矩形,尺寸大小為5×5。
ZS快速并行細(xì)化算法的原理[12]如下:首先尋找以邊界點為中心的8鄰域,記中心點為P1,其鄰域的8個點順時針繞中心點分別記為P2,P3,…,P9,如圖4。
圖4 8鄰域系統(tǒng)
Figure 4 8 Neighborhood System
將二值圖像中的目標(biāo)點標(biāo)記為1,背景點標(biāo)記為0,然后刪除滿足公式(2)或公式(3)的點,將刪除過程構(gòu)成一次迭代,直到刪除所有滿足條件的點,剩余點組成的圖像便是ZS細(xì)化的結(jié)果圖像。
(2)
(3)
式(2)~(3)中:N(P1)為P1的8鄰域中不為零的點的個數(shù);S(P1)為以P2,P3,…;P9為序時這些點的值從0到1變化的次數(shù)。
ZS快速并行細(xì)化算法具有一定的局限性,如果圖像的外圍輪廓存在細(xì)微的變化,在細(xì)化過程中會出現(xiàn)像素冗余、分叉等,這種現(xiàn)象無法避免,所以采用改進(jìn)算法對ZS算法細(xì)化結(jié)束得到的初始細(xì)化圖像進(jìn)行優(yōu)化:采取先斜線再十字的搜索方法進(jìn)行逐點細(xì)化,按照與被搜索像素點相鄰的點的方向,判斷該像素點是否應(yīng)該保留,直到將所有像素點遍歷,此時直線徹底細(xì)化完成。
本文提出的改進(jìn)細(xì)化算法可分五步進(jìn)行:
1)首先找到細(xì)化的起點,以二值圖像中直線的左上角為搜索起點,逐行逐列尋找連通域中首個像素值不為0的點。設(shè)該像素點P0為細(xì)化起點,按順時針方向定義像素點P0的8鄰域內(nèi)方向序號,具體編號為1至8,如圖5。在該點的8鄰域內(nèi)按先斜線后十字的順序(首先尋找1、3、5、7位置上是否存在值為1的像素點,如果沒有,則尋找2、4、6、8位置上值為1的像素點)搜索相鄰像素點P1,確定兩個相鄰像素點間的方向Dir0,再將像素點P0取反,并將P0點的位置信息保存。將像素點P1作為新的細(xì)化起點,在像素點P1的8鄰域內(nèi)按先斜線后十字的順序搜索是否存在相鄰像素點P2,若存在像素點P2,則確定兩個相鄰像素點之間的方向Dir1。
1238P04765
圖5 8鄰域系統(tǒng)
Figure 5 8-neighborhood system
2)判斷Dir1與Dir0兩方向間的差值,如果滿足式(4),則確定像素點P2相對于像素點P0的象限方位,若Dir1屬于相應(yīng)的方向范圍內(nèi),則將像素點P1作為起始像素P0,并將像素點P1位置信息保存,如圖6。
0≤Dir1-Dir0≤1。
(4)
圖6 判別條件1示意圖Figure 6 Discrimination condition 1
若存在“T”字型特殊情況,則優(yōu)先處理,以當(dāng)前像素點P2作為搜索起點,確定像素點P2的8鄰域內(nèi)1、2、3、6方向上的像素值;若像素點P2規(guī)定方向上的像素值都為1,則將像素點P1作為起始像素點P0,并將像素點P1位置信息保存。若像素點P2規(guī)定四個方向上的像素值并不都為1,則將當(dāng)前P2像素值置為0,如圖7。
圖7 “T”字型示意圖Figure 7 ‘T’font schematic diagram
3)如果滿足式(5),則將像素點P2作為新的搜索起點,確定像素點P2相對于像素點P0象限方位Dir1,若Dir1滿足規(guī)定的像素方向范圍,則在像素點P2的8鄰域內(nèi)按先斜線后十字的順序搜索是否存在不屬于P1的8鄰域內(nèi)相鄰像素點P3,確定相鄰像素點P2與P3間的方向Dir2,如果滿足公式(6),則將像素點P1作為新的起始像素點P0,并將像素點P1的位置信息保存,如圖8。
-1≤Dir1-Dir0<0,
(5)
|Dir2-Dir0|<2。
(6)
圖8 判別條件2示意圖Figure 8 Discrimination condition 2
4)如果滿足公式(7),以當(dāng)前像素點P3為新的搜索起點,在像素點P3的8鄰域內(nèi)按先斜線后十字的順序搜索是否存在相鄰且不是P2的像素點P4;如存在像素點P4,則確定相鄰像素點P3與P4間的像素方位Dir3。如果滿足公式(8),則將像素點P1作為起始像素點P0,并將像素點P1位置信息保存,如圖9。
|Dir2-Dir0|≥2,
(7)
Dir3-Dir1=0或|Dir3-Dir0|≤1。
(8)
圖9 判別條件3示意圖Figure 9 Discrimination condition 3
如果滿足公式(9),則存在“一”字型特殊情況,則轉(zhuǎn)入處理“一”字型特殊情況算法,以當(dāng)前搜索點P4作為搜索起點,判斷是否存在相鄰且不屬于P4的8鄰域內(nèi)像素點P5;若存在相鄰像素點P5,則確定P5與P4間的象限方位Dir4。如果滿足公式(10),則將像素點P1作為起始像素點P0,并將像素點P1位置信息保存,如圖10。
Dir3-Dir2=0,
(9)
Dir4-Dir1=0或|Dir4-Dir0|≤1。
(10)
圖10 “一”字型示意圖Figure 10 ‘一’ font schematic diagram
5)逐個對圖像中的像素點進(jìn)行判斷,若已遍歷完,則將所有保存的點的位置坐標(biāo)信息在新建的背景圖像中輸出;若未遍歷完,則將上述步驟2)、3)、4)繼續(xù)迭代,直到所有的像素點已經(jīng)遍歷完。
利用最小二乘法對完全細(xì)化的指針圖像中的點進(jìn)行直線擬合,得到擬合方程:y=kx+b,通過式(11)計算得到車速s。
(11)
式(11)中,(x,y)為汽車儀表盤度盤的圓心坐標(biāo),(x1,y1)是該線段的中點坐標(biāo)。
本文的操作環(huán)境為Win10 64位操作系統(tǒng)VS2010開發(fā)環(huán)境、內(nèi)存8 GB、CPU 2.8 GHz。在相同的環(huán)境下,將采集到的原始圖像運用ZS細(xì)化原始算法和優(yōu)化算法進(jìn)行提取直線,如圖11。將圖像進(jìn)行局部放大,如圖12。
實驗結(jié)果表明,ZS細(xì)化會存在細(xì)化不徹底的現(xiàn)象:像素冗余和毛刺分叉。本文提出的改進(jìn)優(yōu)化算法能夠完全去除毛刺分叉以及像素點冗余,從而達(dá)到單像素。該算法在保持ZS并行細(xì)化算法的優(yōu)異運算速度的基礎(chǔ)上,提高了直線細(xì)化的準(zhǔn)確度。
圖11 細(xì)化算法結(jié)果圖Figure 11 Refine algorithm result images
圖12 局部放大圖Figure 12 Enlarged view
為了驗證算法對汽車儀表盤讀數(shù)精度的影響,采用角度校驗[13]的方法,人為控制指針指向10、30、50、80等標(biāo)準(zhǔn)車速值的位置,通過表1兩種算法的誤差對比數(shù)據(jù)可以看出,優(yōu)化算法的平均相對誤差降低了0.55%。
表1 兩種算法的誤差對比結(jié)果Table 1 Comparison of errors between the two algorithms
本文對汽車儀表盤的指針讀數(shù)方法進(jìn)行了研究,提出了基于ZS細(xì)化的改進(jìn)算法并進(jìn)行實驗驗證,結(jié)論如下。
1)運用機(jī)器視覺技術(shù)對汽車儀表盤指針進(jìn)行讀數(shù),采用面陣CCD相機(jī)采集圖像,降低了圖像預(yù)處理的難度,預(yù)處理過程中通過圖像擺正的方法提高了直線讀數(shù)的準(zhǔn)確度。
2)提出了一種新的ZS細(xì)化改進(jìn)算法,不僅保持了指針的固有形狀特征,而且有效改善了ZS快速并行細(xì)化算法中存在局部像素冗余、細(xì)化直線存在分叉的問題。
3)本文提出的改進(jìn)算法提高了直線識別的準(zhǔn)確度,其平均相對誤差降低了0.55%。