






摘 要: 為了實現指針式儀表的自動讀數,提出了一種基于Halcon的極坐標變換、BP神經網絡、形態學處理、幾何計算相結合的方法。該方法考慮了儀表的圓心特征,對于各種不同的指針儀表,僅僅依賴儀表的圖像信息,檢測精度較高。實驗證明該方法簡單快捷,且有利于提高效率和精確度。
關鍵詞: 指針式儀表; 極坐標變換; BP神經網絡; 形態學處理
中圖分類號: TN911.73?34 文獻標識碼: A 文章編號: 1004?373X(2016)17?0016?04
0 引 言
指針式儀表因具有價格便宜、結構和維護簡單等諸多優點被廣泛應用于很多領域,如工業領域和實驗領域。對于指針式儀表的讀數,傳統的方法是通過目測完成,勞動強度大,受人為因素影響大,容易產生誤差,存在可靠性差的隱患,并且效率低 [1]。
指針的提取是指針式儀表自動讀數的關鍵,目前指針提取有以下幾種常用方法:基于圖像形態骨架細化和改進的Hough變換的方法[2]、模板匹配的方法[3]、基于收斂映射CM?Hough變換的方法[4]、基于減影和Hough變換的方法[5]等。實踐表明,以上每種方法都有其優缺點。例如模板匹配的方法具有較強的抗干擾性能,但過程復雜;Hough變換的方法受噪聲和曲線間斷的影響較小,但Hough變換的計算量大,提取參數受空間量化間隔的制約。
本文采用基于Halcon的機器視覺技術,實現圖像的自動采集、處理、識別以及顯示讀數,解決目前人工判讀的不足[6],且可以應用到各類指針式儀表的讀數中。
1 指針式儀表讀數系統
指針式儀表讀數系統在德國MVTec公司研發的圖像處理軟件平臺Halcon上實現,此軟件以最新科技為基礎,提供功能強大的視覺算法開發包,包含有1 100個以上的獨立函數,具有快速、全面、精確、魯棒性等特點,應用領域幾乎沒有限制,涵蓋醫學、遙感探測、監控及工業上的各類自動化檢測。
系統算法流程為:首先采集圖像并對圖像進行一系列處理,提取指針后根據公式計算獲取讀數,包括圖像采集、圖像預處理、極坐標變換、儀表刻度線的獲取、BP神經網絡最大值字符識別、指針定位、幾何計算等部分,如圖1所示。
2 指針式儀表圖像的處理
采集圖像后,首先根據指針在RGB顏色模式中R通道的紋理特征進行一次閾值分割,得到儀表的中心坐標;通過極坐標變換把圓型儀表盤轉換成矩形;然后根據region的行、列、面積特征獲取刻度線位置;為實現儀表自動讀數,需先經過BP神經網絡識別出儀表的最大值;然后經過形態學處理獲得指針位置;最后根據公式計算得到表盤的讀數,并將結果顯示在屏幕上。
2.1 圖像采集
適當的光源照明設計,使圖像中的目標、背景信息得到最佳分離,可大大降低圖像處理算法分割、識別的難度,提高系統的定位、測量精度,所以光源對圖像的質量影響很大。相機作為機器視覺系統中的核心部件,對于系統的重要性是不言而喻的。在選擇好光源和相機類型、位置后,調用Halcon軟件中的算子read_image()加載已獲取的圖像,采集的圖像如圖2(a)所示。
2.2 圖像預處理
采集的圖像指針是紅色的,在RGB顏色模式中,R通道中指針的灰度值明顯大于其他通道,調用算子decompose3()把彩色圖像轉化為3個單通道的R,G,B圖像,R通道圖像如圖2(b)所示。對R通道圖像進行圖像增強,突出圖像中的感興趣區域,增強感興趣區域與背景的對比度,使圖像比原始圖像更加適合處理,然后根據R通道的紋理特征,經全局閾值分割得到儀表盤的region,如圖2(c)所示。
2.3 極坐標變換
Halcon中調用極坐標變換算子polar_trans_image_ext()把圓形儀表刻度線轉化為水平方向[7?8],然后經過形態學處理獲取指針,彌補Hough變換計算時間長、占用內存大的缺陷。
直角坐標系與極坐標系之間的互換公式為:
[ρ2=x2+y2tanθ=yx,x≠0] (1)
極點與直角坐標系重合是互換公式的前提條件之一,故首先要進行坐標平移、翻轉,然后將直角坐標系中圓心為原點、半徑為[R]的圓,變換到極坐標系中[r=R]的一條直線,實現圓形轉化成水平方向,極坐標變換原理如圖3(a)所示。
圖3(a)中,[O]為同心圓的圓心,[θ]為內圓上點的極角,[ρ]為內圓上點的極徑。點[A]與點[B]之間的極角不同,但由于在同一個圓內,所以兩者之間的極徑是一樣的,故點[A]與點[B]在極坐標系中位于同一條直線上。
閾值分割后的region是一個整體的region,使用算子connection()進行連通域操作,把整個region中不同的連通域化為單個的region,然后就可以對單個的region進行操作;根據面積特征,提取包含儀表刻度線的最小外圓;然后獲取最小外圓的圓心坐標和半徑,即儀表盤的圓心坐標和半徑;把獲得的圓心坐標和半徑作為polar_trans_image_ext()算子的參數,使之僅僅依賴儀表的圖像信息,以適用于各種不同的指針儀表。
調用算子polar_trans_image_ext()時,輸出圖像左上角像素總是對應于由開始半徑和開始角度決定的輸入圖像的點。類似地,輸出圖像右下角像素總是對應于由最終半徑和最終角度決定的輸入圖像的點。一般情況下都是進行正方向(逆時針)的極坐標變換,變換后的圖像數字位于刻度線上邊,本文中進行順時針方向的變換,使刻度線位于數字上邊,如圖3(b)所示。
2.4 儀表刻度線的獲取
從圖像3(b)可以看出,圖像光照不均勻。為更好地提取刻度線、最大值和指針,應使用動態閾值算子var_threshold(),否則字符周圍會出現光暈;計算區域的連通域后,根據區域的面積、行、列特征,提取刻度線;調用區域排列算子,根據從左至右按列排序的方法對刻度線依次排序,使左邊第一個刻度線的索引值為1;計算排序后刻度線的數量,選出第一個刻度線作為一個region,然后再獲取該region的中心坐標[(R1,C1),]同理獲取最后一個刻度線的中心坐標[(R2,C2),]閾值后的region和提取的刻度線分別如圖4(a),4(b)所示。
2.5 儀表最大值字符的識別
不同的儀表最大刻度值是不同的,為實現非人工輸入最大值,識別儀表最大值是非常有必要的。極坐標變換后的region區域大,為減少運行時間,先創建一個與坐標軸平行的長方形,位置為刻度線從0到最大值的區域;然后調用算子intersection()計算長方形和經過極坐標變換后區域的交叉區域,處理后得到的region如圖5(a)所示;最后再根據面積、行、列特征,獲得最大值所在區域,如圖5(b)所示。
2.5.1 字符校正與分割
雖然利用極坐標變換把圓形儀表盤變換成水平方向,但獲得的最大值不是水平方向的,需要先使其校正到水平位置。
(1) 使用算子union1()獲得最大值區域的并值,然后獲得該區域的中心坐標[(R3,C3)。]
(2) 仿射變換是一種簡單的變換,它的變換包括平移、旋轉、伸縮變換。旋轉變換為物體上的各點繞一固定點沿圓周路徑作轉動,原理圖如圖5(c)所示。
在圖5(c)中,點[(x,y)]旋轉到[(x,y)]的旋轉角度為[ψ,]其中:
[x=rcos ψy=rsinψ] (2)
[x=rcos (ψ+θ)y=rsin(ψ+θ)] (3)
(3) 把字符分割成不同的區域,然后通過對面積和高度進行過濾得到只包含字符的區域;最后調用sort_region()算子排列分割出的單個字符,如圖5(d)所示。
圖5 字符校正與分割過程的圖像
2.5.2 BP神經網絡字符識別
Halcon中有多種字體的字符庫,但有時直接利用已有庫識別字符,識別率和預期有差別,所以要對分割出的字符進行訓練,這里使用三層BP神經網絡[9?11]的識別算法。
BP神經網絡是一種按誤差逆傳播算法訓練的多層前饋網絡,包含信息的正向傳播和誤差的反向傳播兩個學習過程,由輸入層、隱層和輸出層組成,結構如圖6所示。
圖6 BP神經網絡結構
將分割后大小不一的字符統一成6×8大小的圖像進行訓練,輸入層節點個數是訓練字符提取的字符特征的數目,所以輸入神經元為48個。隱層神經元個數一般為輸入神經元個數的2倍,由實驗得隱層神經元個數為98時效果最好,輸出神經元個數為1。
Halcon字符識別的過程如下:
(1) 在for循環內,先對圖像進行預處理,再調用算子append_ocr_trainf()訓練樣本文件,然后添加到訓練文件中;
(2) 由算子creat_ ocr_class_mlp()創建分類文件,使用trainf_ocr_class_mlp()算子訓練已創建的訓練文件;
(3) 調用算子write_ ocr_class_mlp()寫入分類器;
(4) 用算子read_ocr_class_mlp()調出創建好的分類器;再用do_ocr_multi_class_mlp()算子根據字符的特征進行字符分類,并將類返還到字符數組中;
(5) 把識別出來的單個字符通過算子tuple_number()變換成數字,按公式賦值給變量MaxValue,公式為:
MaxValue:=Number1*100+Number2*10+Number3 (4)
式中:Number1為識別出的第一個字符,即最大值的百位;Number2,Number3分別為識別出的第二個、第三個字符。
2.6 指針的定位
數學形態學作為一種有效的圖像處理工具,可以從圖像中提取出表達和描繪區域形狀的有用圖像分量,如邊界、骨架和凸殼等[12]。開運算是先腐蝕后膨脹的過程,具有消除小物體,分離物體和平滑較大物體邊界的作用,其定義為:
[A°B=(A?B)⊕B] (5)
式(5)表示所有完全被[A]容納的[B]的平移的并集。
使用開運算算子opening_circle()獲得有指針關鍵部分的region,再根據面積特征提取合適的指針區域,如圖7所示。再使用算子smallest_circle()獲取指針的中心[(R4,C4)。]
2.7 幾何計算
指針到第一條刻度線的距離與刻度線的總長度的比值乘以刻度最大值得到的數值即為指針的讀數,幾何表達式為:
[S=MaxValue*C4-C1C2-C1] (6)
式中:[S]為指針的讀數;MaxValue為該指針式儀表的最大刻度值;[C1]為左邊第一條刻度線的列坐標;[C2]為最后第一條刻度線的列坐標;[C4]為指針所在位置的列坐標。識別出的數字顯示在原圖中,如圖8所示。
圖7 指針關鍵部分的region 圖8 表盤讀數
3 結 語
指針式儀表的自動讀數系統應滿足實時性和準確性的要求,本文利用機器視覺軟件Halcon對采集到的不同刻度值的儀表圖像進行處理,平均每0.348 s識別一幅圖像,讀數誤差小于1%。實驗結果表明該方法檢測精度較高,實時性令人滿意。該系統可以大大提高產品的讀數效率,同時節約勞動力成本,系統節能,安全穩定,具有很好的擴展性和適應性,可廣泛應用于各類指針式儀表的讀數中,具有很大的市場價值和應用前景。
參考文獻
[1] 宋人杰,趙立亞.Hough變換的改進及其在電廠指針式儀表自動識別中的應用[J].東北電力大學學報,2011(3):42?46.
[2] 李盛陽,葉梧,馮穗利.基于Hough變換的視覺識別方法在儀表自動檢測中的應用研究[J].科學技術與工程,2005(2):82?85.
[3] SABLATNIG R, HANSEN C. Machine vision for automatic ca?libration of analog display instruments [J]. Machine vision applications in industrial inspection, 1995(2423): 356?366.
[4] 張永強,邸金紅,馬鵬閣.基于機器視覺的汽車儀表盤指針檢測[J].計算機測量與控制,2015(6):1922?1924.
[5] 晁陽.基于特征識別的指針式儀表自動識別研究[D].濟南:山東大學,2008.
[6] 袁勇.基于機器視覺的轎車儀表自動校驗技術與系統開發[D].上海:上海交通大學,2008.
[7] 邵蕊.指針式儀表識別方法的研究[D].沈陽:沈陽工業大學,2009.
[8] 黃劍航.基于HALCON的圓環區域字符識別實現[J].現代計算機(專版),2010(7):58?60.
[9] 張銀蘋,葛廣英.基于HALCON的車牌識別研究[J].現代電子技術,2014,37(16):92?95.
[10] 肖???,葛廣英,姚坤,等.基于HALCON的噴碼字符識別技術的研究與實現[J].現代電子技術,2015,38(15):95?98.
[11] 朱正禮.基于三層BP神經網絡的字符識別系統的實現[J].現代計算機,2006(10):93?95.
[12] GONZALEZ R C, WOODS R E. Digital image processing [M]. 3rd ed. Upper Saddle River: Prentice Hall, 2011.