



摘要:本文為了獲取指針式儀表的示數,研究了基于圖像處理的示數自動判讀算法。根據采集到的儀表示數圖像,首先采用預處理增強、降采樣及二值化、旋轉投影指針的方法提取出指針所在的區域;然后選取備選區域并進行二值化處理,在備選區域中定位了針尖的位置;最后對刻度線進行標記和排序,完成了示數判讀。結果表明,測量的214幅圖像中,誤差小于儀表最小分度值5%的讀數占85.05%。本文網絡版地址:http://www.eepw.com.cn/article/274754.htm
關鍵詞:指針式儀表;自動判讀;圖像處理;降采樣;二值化DOI:10.3969/j.issn.1005-5517.2015.5.014
引言
指針式儀表在工業生產中得到了廣泛應用,如何|央速準確讀取儀表的示數是人們關心的問題。使用機械設備進行讀數是一種方便、準確的方法,與之配套使用的圖像處理和示數自動判讀算法是整套設備的核心。國內外很多學者研究了指針式儀表示數自動判讀算法,但研究仍存在一些不足,如:算法不具有普遍性、沒有考慮光線等干擾對判讀結果的影響。因此,本文以某公司使用的指針式壓力儀表為對象,研究了示數自動判讀算法。
1 指針區域提取
1.1 預處理增強
本文使用一臺CCD相機獲取儀表讀數的圖像,由于光線較差時會導致圖像灰暗,因此需要增強灰度值偏低的圖像,步驟為:
(1)計算原圖像整體平均灰度值M。
(2)如果M 以某儀表為例,增強效果如圖1所示,將圖l(b)的圖像定義為I。 1.2 基于降采樣處理的二值化 由于CCD相機采集到的原圖像尺寸較大,采用經過8倍降采樣的金字塔第3級圖像進行圖像降采樣。定義降采樣后的圖像為Ilon=0.6Mlow,計算其灰度均值為Mlon,設置其闕值Thlow。w=0.6Mlow。使用全局二值化方法進行二值化,低于闕值的像素點在二值圖像中賦值為1,得到的二值圖像記為BWlow。對于BWlow,首先去除與圖像邊界連接的連通域,同時將二值圖中間的部分設置為感興趣區域(ROI),然后分別計算剩余連通域的長度,如果該長度低于某一闕值,則將其剔除。根據該思想,與圖l(b)對應的降采樣后的圖像Ilow。w如圖2(a)所示,與Ilow對應的連通域分析結果如圖2(b)所示。 1.3 旋轉投影提取指針 基于圖2(b),得到指針所在區域的步驟為: (1)將圖像左上角設置為原點(o,o),將圖像BWlow繞其中心點c。(w1/2,hl/2)依次逆時針旋轉。 (2)旋轉后將BWr豎直投影,記錄投影曲線的最大值mi,和最大投影點的橫坐標xi。 (3)根據所有mi繪制全局投影曲線上,,找至憶,的最大值點m*=max(m1)以及取得該最大值時的旋轉角度i*和對應的橫坐標xi。 由于指針區域是長條狀,因此只要得出其中一點的坐標,并對寬度加以約束,就可以得到包含指針的區域信息。指針區域關鍵坐標點P相對于Co的坐標為: 在以Co為中心的坐標系中,通過P且與指針區域指向平行的直線斜率k和截距6是:確定直線方程后加入距離約束d,同時構造與圖像Ilow大小一致的模板圖像Im,Im、與此直線距離小于d的像素點設置為感興趣點,所有感興趣點構成了包含指針的條狀區域。根據降采樣的比例因子,將Im放大至原始尺寸,與原圖像I相乘,可以得出包含指針的條狀區域圖像Ip,如圖3所示。 2 針尖區域提取及定位 2.1 備選區域提取 采用豎直的邊緣提取算子提取指針的邊緣信息,提取出豎直邊緣特征后用Otsu_值化得到豎直邊緣的二值圖像BWp,通過水平投影分析找到投影曲線的最大非零區間,可以確定圖像lp的旋轉圖像lp上指針兩端的粗略坐標,進而變換到Ip中,得到指針兩端的坐標。 BWp的水平投影中最大的非零區間對應指針,從該區間的端點向曲線兩側搜索,若發現新的非零區間滿足該區間與最大非零區間的間隔小于闕值ETh。,則將該新區間并入最大非零區間。本文ETh=h/30,設圖像的尺寸是h×w ,H是旋轉圖像Ip的高度。設在BWp中,指針兩端點的坐標是pl(x1,y1)和P2(x2,y2),y1和y2是上述最大非零區間兩端點的坐標,x1是BWp第一行最左端非零點與最右端非零點的橫坐標均值,x2的含義類似。pl(x1,y1)和P2(x2,y2)粗略標記了指針兩端在Bwp和lp中的位置。設原圖像尺寸為6×w,將這麗點的坐標變換到圖像Ip中,得到在原圖I中指針兩端點的粗略坐標pi(xi,yi): 根據p,點的坐標,設置感興趣區域大小為hr×Wr,可以在原圖中得到兩塊備選子區域。以某圖像為例,備選子區域如圖4所示,針尖一定位于兩個子區域中的一個。 2.2 基于LoG算子邊緣檢測的二值化 由于針尖區域內刻度線的邊緣特征明顯,因此采用基于Laplacian ofGuassian(LoG)算子邊緣檢測的二值化處理方法。設原圖像為I(x,y),邊緣檢測后輸出圖像為o(x,y),則:式(6)中參數8的計算公式為: 其中,Int是取整運算:m是模板寬度,取m=min(hr,Wr)/7。通過求取o(x,y)中過零點的軌跡即可得到原圖像的邊緣點,最后的闕值為: 其中,c的取值范圍是0—1,是所有邊緣點灰度值之和,N=是邊緣點的總數。 2.3 備選子區域篩選 對于二值化處理結果,針尖區域包含了針尖和刻度線。本文的針尖區域遠離圖像中心,對于第i個備選區域,定義判斷值Ji口下: 其中,N是二值圖中連通域的數目,是所有連通域面積之和,ca、c1、c2是常數。通過計算兩塊備選區域的判斷值,選擇判斷值較大的區域即可得到針尖所在區域。 2.4 針尖定位 在第2.3節的基礎上,對針尖定位的步驟是: (1)將僅含指針連通域的ROIBW逆時針旋轉角度i*得到ROI,BW,從指針連通域所連接邊界對側的邊界開始搜索,判斷是否出現分叉點。判斷方法是:統計該行所有寬度大于2的非零區間的數目,如果有兩個這樣的區間且距離不小于2,說明存在交叉點。設這一對區間的端點坐標分別是(x1,x2:)和(X3,X4),則交叉點橫坐標為。若逐行搜索至ROIBW高度的一半仍未發現分叉,跳至第(4)步。 (2)根據將ROIBw分為左右兩部分,記為I和r,計算兩部分連通域的面積S1和Sr。如果,則在ROIBW中將面積較小的一側置零,跳轉至第(4)步。 (3)若(2)中條件不滿足,分別計算l和r中連通域面積占該連通域外接矩形框面積的比例R.和Rr,在ROIBW中將比例較小的一側置零。 (4)從指針連通域所連接邊界對側的邊界開始逐行搜索,找到的第一個非零行的行坐標即針尖位置的縱坐標,將該行豎直投影,投影曲線左右兩端非零點的橫坐標均值視為針尖位置的橫坐標。 (5)將ROIBW中的針尖坐標變換到ROIBW,進而得到針尖在原圖像I中的針尖坐標。 3 刻度線標記及讀數 3.1 基于逐步搜索的刻度線標記 定位針尖后,搜索刻度線的步驟為: (1)以ROIBW任一刻度線為起始,其中心點為Ps,刻畫待搜索區域,該區域為傾斜矩形,長和寬分別是ws和hs。 (2)使用基于LoG算子邊緣檢測的二值化方法對搜索區域進行二值化,再由Ps出發,沿過該點且與刻度線垂直的直線方向搜索相鄰的刻度線。 (3)標記搜索到的相鄰刻度線,記錄中心坐標、刻度線長度、與水平軸夾角,更新起始點Ps,刻畫新的待搜索區域繼續搜索。 (4)若沿某方向搜索不到新的刻度線,說明該方向搜索完畢,返回起始刻度線,轉換搜索方向繼續搜索標記至結束。 逐步搜索標記刻度線的實例如圖5所示,矩形框為搜索區域,兩個箭頭表示搜索方向。 3.2 刻度線排序 標記完所有刻度線后設置參考點,并結合已知儀表指針的旋轉方向將刻度線排序。參考點設置方法為:設兩個方向搜索到的末端兩條刻度線中心點分別是P1(x1,y1和p2(x2,y2),參考點坐標可設為,h是原圖像的高度。 3.3 讀數 通過計算針尖位置和參考點連線的斜率,可以確定針尖位于哪兩條刻度線之間,記這兩條刻度線的序號為n1和n2(n2>n1),同時計算針尖到這兩條刻度線所在直線的距離為d1和d2則讀數V的計算方法為: 其中,S是儀表的量程,u是儀表的最小分度值,n是搜索到的刻度線數目。 4 實驗及評價 為了驗證本文方法的準確性,測量了該公司214幅指針式儀表的圖像。定義誤差,其中v是本文算法的讀數,v是肉眼讀數,將判讀結果列于表1。有5幅圖像由于光線太暗,導致無法正確標記刻度線;有85.05%的讀數誤差小于儀表最小分度值的5%,讀數誤差大于儀表最小分度值10%的僅4.20%,證明本文算法的準確率較高。 (1)首先對圖像進行預處理增強,然后對圖像進行降采樣和二值化,之后進行旋轉投影提取出指針所在的區域。 (2)在指針兩端分割出兩塊區域,基于LoG算子邊緣檢測的二值化方法在子區域中篩選出針尖的區域,并對針尖定位。 (3)采用逐步搜索的方法標記刻度線,并對刻度線排序,從而實現示數讀數。 (4)判讀了214幅圖像的讀數,85.05%的讀數誤差小于儀表最小分度值的5%,讀數誤差大于儀表最小分度值10%的僅4.20%,證明本文算法的準確率很高。