侯忠輝 王 毅 尤 穎
(1.上海市消防局 上海 200051)(2.公安部第三研究所 上海 200031)
指針式儀表的優(yōu)點很多,諸如,結構簡單、方便維護、精度較高、較強的抗干擾性,所以在目前的控制及其測試系統(tǒng)中多采用指針儀表。對指針式儀表來說,它一般都沒有數(shù)據(jù)線接口功能而且若采用肉眼去識別讀數(shù)會受到很多人為因素的影響,因此檢測效率較低并且精確度不高,長時間的人為讀數(shù)會導致視覺疲勞以及誤差的產生;此外有一些場合無法靠人為地去讀數(shù)識別,因此實現(xiàn)對指針式儀表的自動識別具有重要的現(xiàn)實意義。目前,國內外開展了一些針對儀表圖像識別的研究。其中包括文獻[1]提出的指針位置識別算法,它是利用同心圓環(huán)的搜索來確定指針位置并計算其指針角度。這種算法計算固然簡單,但是識別精度不高、受人工影響較大且較難控制,且容易受攝像頭和表盤目標安裝角度的影響導致誤差;另一種是指針識別系統(tǒng)[2],但可靠性不高;此外,還有人提出了基于形態(tài)學的線性目標圖像的處理識別方法[3~4],因過程比較復雜,不利于實際應用。由于本文只需識別滅火器指針所指的不同顏色區(qū)域,故采用基于視覺顏色RGB二值化和霍夫變換識別方法對指針儀表圖像進行識別,過程簡單容易且效果明顯。
首先對采集到的圖片進行預處理,便于后期指針識別的高效性和準確性,如圖1所示。為了提高精度,還要對灰度圖像進行區(qū)域識別,在這里主要采取手動選取的方式進行圖像區(qū)域識別,而后面的圖像處理和識別僅限于該區(qū)域進行。手動選取識別區(qū)域的主要優(yōu)點是降低計算量,從而節(jié)約處理時間。手動選取可在程序中采用人機交互的形式來完成。圖像預處理主要包括圖像灰度化及濾波、圖像RGB二值化、圖像膨脹和細化。
當采集到彩色圖片后,需要對原圖像進行灰度及區(qū)域識別的處理,便于后面部分的處理。濾波的目的是為了去除圖像中的雜點或者噪聲,使得圖片只剩下待識別的指針和其所指區(qū)域。經(jīng)典的濾波方法為線性濾波法,例如鄰域平均法等,而以中值濾波[5]為代表的非線性濾波方法由于在保護圖像邊緣和細節(jié)方面的優(yōu)勢而得到了廣泛的應用,在中值濾波中又以自適應中值濾波在去除噪聲和保存細節(jié)兩方面效果最好。但隨著脈沖噪聲密度的增大,上述濾波器的性能隨之下降,本文采用結合了均值濾波和自適應中值濾波兩者優(yōu)點的改進型自適應中值濾波算法[6]。然后對灰度圖像進行區(qū)域提取,提取出所需要的信息空間。
圖1 圖像的預處理過程
本文處理的是彩色的滅火器儀表圖像,圖像中每個像素是由三個不同的顏色分量R、G、B組成,其中R、G、B分別代紅、綠、藍三個分量的顏色。然后根據(jù)灰度、空間紋理、幾何形狀等特征,將一幅圖像中的目標與背景分離開來,一般用黑白兩種顏色來表示,以便于進一步處理,它是對圖像進行分析和識別的基本前提?;陂撝捣ǖ腞GB二值分割方法是一種常用的圖像分割技術,它利用處于目標和背景內部相鄰像素間的灰度值有較大差異的特點,把原圖像分為目標和背景兩部分,即將圖像轉化成只含“0(黑色)”、“1(白色)”兩個灰度值的黑白圖像,從而將背景和目標區(qū)域分割開來。
膨脹和腐蝕處理在濾波以后,待識別的區(qū)域就只剩下了指針和其所指區(qū)域,但此時的指針在有些地方較模糊,不利于后面的圖像識別處理,所以要運用形態(tài)學中的膨脹運算,將模糊地方的指針重新連接起來。經(jīng)過膨脹之后,指針圖像變得清晰且連續(xù),為后面的圖像處理奠定了基礎。指針經(jīng)過膨脹后,雖然指針清晰了,但指針太粗大,將影響識別的精度,因此要對其進行細化使指針圖像變?yōu)橹本€段[7~8]。經(jīng)過形態(tài)學的膨脹和細化處理后,從而將指針變得連續(xù)清晰,更有利于后續(xù)指針角度的識別[9]。
Hough 變換是一種形狀匹配[10~12]的技術,它的原理是利用兩個坐標點之間的變換來檢測平面內的直線或者其他有規(guī)律的曲線,換一種理解方式,Hough變換是對圖像進行某種形式的坐標變換。它將原圖像中給定形狀的曲線,以及直線上的所有的點都集中到變換空間的某個點上,進而形成峰點。這樣,就把原始圖像中給定的形狀曲線或直線的檢測問題轉化為尋找變換空間中峰點的問題。直線檢測的原理如下:
直線y=kx+b的極坐標形式為
在圖2中,給定了參數(shù)的幾何解釋。其中(θ,ρ)表示一個從原點到線上最近點的向量,這個向量與該直線垂直??紤]一個包含參數(shù)θ和ρ的二維空間,在x,y平面上的任一直線對應了該空間的一個點。因而x,y平面中的任一直線的霍夫曼變換是θ,ρ空間中的一個點。即在圖像空間中共線的點其實是對應于參數(shù)空間共點的線,反之亦然。Hough變換就根據(jù)點線的對偶性進而把在圖像空間中存在的直線檢測問題演變?yōu)槌蓞?shù)空間中存在的點檢測問題,顯然后者的處理要比前者簡單得多,因為只需簡單的累加統(tǒng)計即可實現(xiàn)對邊緣的檢測[13]。它的具體算法是:利用Hough變換將原始圖像中給定直線上的所有的點都集中到變換空間的某個點,從而形成峰值,然后再尋找峰點累加數(shù)的最大值,即可確定出指針所在的直線,即偏轉角度。
圖2 直線的標準表達方法
圖3 表盤坐標系
Hough變換是一種實用的方法,其優(yōu)點之多例如:霍夫變換都適用實線曲線或者虛線曲線、與線寬度的均勻性沒有關系、可同時處理圖像中的多條線時。但它也有缺點,由于標準的Hough變換是一對多的映射,因此需要很大的存儲空間和計算量,判別速度會受到影響。由于一般指針式儀表刻度和指針所包含的直線角度都在一定范圍內,所以只需要對特定范圍內的直線進行變換,這樣可以大大減少運算時間[14~16]。所以本文在標準 Hough 變換算法的基礎上并結合儀表的量程,然后在進行Hough變換時限定角度的搜索范圍,通過設置角度的雙閾值來減少需要計算的像素點,根據(jù)實際的儀表來選取閾值。
在檢測出指針相對于零刻度線,即圖像水平線的角度θ后,通過結合具體的儀表模板,利用角度和指針的線性關系檢測出指針所指的顏色區(qū)域。以滅火器儀表表盤為例,以表盤的圓心為原點建立直角坐標系。圖像空間的坐標系如圖3所示。首先將坐標系由(x,y)下的直角坐標系轉化為(v,u)下的坐標系,使得坐標系的原點在(m,n)處,而此點即為所選取的“圓心”點,而Fx則表示為表盤指針所在的直線,如圖3中的vu坐標系所示。
采用本文提出的算法,在Matlab環(huán)境下,以滅火器指針儀表為例,當儀表指針指向綠色區(qū)域時候,則表示滅火器中氣體充足,可以正常使用,如圖4(a)所示;當儀表指針指向紅色區(qū)域時,表示該滅火器中氣體不足,需要即刻充氣,以免意外發(fā)生,如圖5(a)所示;而當指針指向黃色區(qū)域時候,則表示滅火器中氣體過多。
圖4 滅火器儀表原圖1和經(jīng)處理后的圖像
對識別的原始圖像進行Hough變換判,其中,儀表指針所在的直線用綠線指出,不同顏色區(qū)域界線用灰色直線表示,也可以進行角度識別。圖4(b)和圖5(b)分別表示經(jīng)改進后的霍夫變換處理后的圖像,白色區(qū)域表示指針指向的顏色區(qū)域,即實驗需要識別的顏色區(qū)域。通過對兩組圖像的實驗對比可看出,該方法能夠較精確地識別指針所指顏色區(qū)域,誤差率小并在允許范圍之內,且過程實現(xiàn)簡單,視覺效果很好,很符合實際運用。
圖5 滅火器儀表原圖2和經(jīng)處理后的圖像
本文采用改進的雙閾值Hough變換方法進行指針所指顏色區(qū)域的識別,在指針式儀表的自動讀取中,結合實際的儀表并限定表盤角度搜索范圍,大大提高了檢測指針的速度。通過實驗測試可知,該方法識別精度高、實時性強、適合不同形狀的儀表表盤刻度與角度成線性關系的表盤指針所指顏色區(qū)域的識別。而對于在實際應用中的不同形狀的刻度表盤來說,如圓形、半圓甚至四分之一圓等,都可以運用此方法來進行角度的識別,只需要變動閾值范圍即可。此外,對于一些無法利用人工讀取的情況,如無人飛行器或者航天中的彈載,可以運用該技術通過傳回的圖像來進行地面在線的監(jiān)測,或者還包括一些爐溫監(jiān)控等等。因而在實際工程中,本文改進的算法具有很好的應用前景。本算法的誤差主要來源于攝像鏡頭和表盤目標的安裝角度,所以為了減少識別誤差,安裝過程中應該盡量使攝像鏡頭和表盤目標在同一條直視線上。進一步完善識別算法將是本文接下來的工作,以提高其自動化程度并將手動選取識別區(qū)域改進為全自動識別。