陳從平, 王 欽, 姚 威
(常州大學(xué) 機(jī)械工程學(xué)院,江蘇 常州 213164)
指針式儀表因其結(jié)構(gòu)簡單,成本低,抗電磁干擾能力強(qiáng)和讀數(shù)變化趨勢直觀等特點(diǎn),廣泛應(yīng)用于工業(yè)控制、汽車船舶等領(lǐng)域[1],但因無法直接將其顯示的數(shù)值轉(zhuǎn)化為電信號輸出,無法遠(yuǎn)程讀取信號,主要靠人工現(xiàn)場讀數(shù),給抄表、控制等造成不便。隨著計(jì)算機(jī)視覺在工業(yè)領(lǐng)域的普及應(yīng)用,使得基于機(jī)器視覺的儀表自動讀數(shù)方法日益增多[2,3]。
目前,對指針式儀表自動讀數(shù)的方法通常包括指針和儀表讀數(shù)識別。指針識別主要包括:減影法、最小二乘法、Hough直線變換法、中心投影法及綜合應(yīng)用[4~7]。如張冀等人[4]采用最小灰度相減法從兩張背景相同的圖像中提取到儀表指針,并通過Hough變換計(jì)算指針角度,該方法對儀表盤在相機(jī)視場中的相對位置有較為嚴(yán)格的要求;Liu S G等人[5]經(jīng)小波變換提取指針點(diǎn)集合后,使用最小二乘法擬合指針直線,該方法與中心投影法只在指針頭部與刻度線不相交的情況下具有較高精度;陳彬等人[6]提出將圖像向指針轉(zhuǎn)動中心進(jìn)行投影檢測指針位置,需要人工標(biāo)定指針轉(zhuǎn)動中心;李偉等人[7]提出結(jié)合Hough圓檢測和Para空間均值圓心的方法確定指針轉(zhuǎn)動中心,然后用中心投影法檢測指針位置,消除了人工標(biāo)定工作,適用于具有圓弧特征的儀表。儀表讀數(shù)識別主要包括角度法、距離法。如Yue X F等人[8]提出通過測量指針在零刻度線和結(jié)束刻度線之間的角度比例計(jì)算儀表讀數(shù),該方法需要人工設(shè)定量程;喻漢等人[9]提出了檢測所有的刻度線后,通過測量指針在相鄰刻度線之間的距離比例計(jì)算儀表讀數(shù),該方法改善了讀數(shù)精度,仍需要人為設(shè)定刻度值。
上述方法雖已取得一定成果,但依然存在不足,例如對儀表盤與相機(jī)間相對位置有嚴(yán)格要求,降低了方法的通用性并使操作不便,或要求儀表盤必需有弧形特征,或需要人工預(yù)先指定表盤的刻度值或量程,上述局限使得相關(guān)方法的適應(yīng)性變差。
本文提出了一種指針式儀表自動讀數(shù)算法,首先,利用刻度線指向指針轉(zhuǎn)動中心這一特征求取其轉(zhuǎn)動中心,并定位部分刻度線;然后,綜合運(yùn)用向轉(zhuǎn)動中心投影,細(xì)化和線段檢測等方法識別指針;接著,根據(jù)已定位的刻度線和外接最小矩形方法識別完整的刻度線;最后,利用神經(jīng)網(wǎng)絡(luò)識別刻度值。實(shí)驗(yàn)表明,該算法可以有效地識別指針,刻度線和刻度值,并實(shí)現(xiàn)準(zhǔn)確讀數(shù)。
對刻度線兩兩求交點(diǎn),然后取重合率高的點(diǎn)集求均值來定位指針的轉(zhuǎn)動中心,該中心和刻度線外沿端點(diǎn)所構(gòu)成的扇形區(qū)域,即為后續(xù)處理的儀表區(qū)域。
首先,采用自適應(yīng)二值化的方法對圖像前景與背景進(jìn)行分離,然后通過FLD(fast line detector)算法[10]對圖像中前景內(nèi)容進(jìn)行線段檢測??潭染€應(yīng)檢測出兩條相鄰線段,對檢測出的每條線段與其最近的線段從長度、傾斜角、線段間距離上進(jìn)行比較和約束進(jìn)而匹配成對,有
(1)
圖1 儀表區(qū)定位結(jié)果
將指針、刻度線和刻度值所在的環(huán)形分布空間變換成水平分布空間,從而將角度問題轉(zhuǎn)換成距離問題,在進(jìn)行指針和刻度線識別時(shí)只需計(jì)算出其橫坐標(biāo)即可,同時(shí)水平分布也有利于指針、刻度線和刻度值的定位和識別。
以Po為基準(zhǔn),將環(huán)形分布的儀表區(qū)水平展開,如圖2所示。記儀表區(qū)的點(diǎn)原坐標(biāo)為G(x,y),水平展開后對應(yīng)的坐標(biāo)點(diǎn)為W(x′,y′),有
(2)
式中Rin,Rout分別為圓環(huán)內(nèi)外半徑,drho,θ為(x,y)與轉(zhuǎn)動中心的距離和角度,T為閾值。
小兒腹股溝斜疝是小兒外科常見病之一,多見于早產(chǎn)兒,男性患兒較多[1-2]主要病因是腹膜鞘狀突未閉合,主要治療方法是疝囊高位結(jié)扎術(shù),腹腔鏡下疝囊高位結(jié)扎術(shù)在許多醫(yī)院取得了滿意的療效,表現(xiàn)出明顯的優(yōu)勢。本研究回顧分析255例小兒腹股溝斜疝患兒的臨床資料,旨在探討腹腔鏡疝囊高位結(jié)扎術(shù)治療小兒腹股溝斜疝臨床應(yīng)用效果及價(jià)值?,F(xiàn)總結(jié)報(bào)告如下。
圖2 空間變換
根據(jù)儀表指針形狀和分布特征,提出結(jié)合投影、細(xì)化和線段檢測方法對指針進(jìn)行定位和其中心線的求解。形狀特征:指針呈對稱結(jié)構(gòu),尺寸相比刻度線大;分布特征:指針指向圓心。
首先,經(jīng)空間變換之后,根據(jù)分布特征對二值化后的圖2垂直投影,按列統(tǒng)計(jì)白色像素個數(shù),結(jié)果如圖3(a)所示,其峰值區(qū)域即為指針?biāo)趨^(qū)域;然后,因指針會和刻度線相交,導(dǎo)致峰值偏離指針中心線,故峰值位置并不代表指針的精確位置,還需根據(jù)峰值坐標(biāo)搜索出靠近圖像底部的輪廓為指針區(qū)域,結(jié)果如圖3(b)所示;由于空間變換后圖像的還原度受指針轉(zhuǎn)動中心精度的影響,越靠近中心的位置形變越大,為保證指針求解精度,再將指針區(qū)域還原成環(huán)形分布中的樣式;最后,根據(jù)形狀特征,經(jīng)細(xì)化處理后,用Hough算法檢測線段,取最長線段為求解的指針中心線,這樣盡可能保留了指針信息,弱化了與指針相交的圖案信息。
將指針中心線在刻度線附近的點(diǎn)轉(zhuǎn)換成水平分布空間的點(diǎn)。首先計(jì)算出該線段和儀表區(qū)外圓的交點(diǎn),然后根據(jù)式(2)將交點(diǎn)轉(zhuǎn)換成水平分布空間中的點(diǎn),視其橫坐標(biāo)為指針位置,如圖3(c)所示。
圖3 指針識別結(jié)果
由于儀表區(qū)定位中的線段檢測往往對短刻度線會造成漏檢,導(dǎo)致無法檢測出所有的刻度線,故還需對刻度線進(jìn)行重識別。首先,根據(jù)儀表區(qū)定位時(shí)獲得的刻度線位置,再根據(jù)刻度線形狀和分布特征,采用刻度線輪廓的最小外接矩形特征對刻度線進(jìn)行識別。形狀特征:刻度線呈矩形狀,有少數(shù)的主刻度線是大、小矩形的組合,其應(yīng)符合一定的寬高比;分布特征:刻度線由環(huán)形分布經(jīng)空間變換呈水平分布,其方向垂直向下,相鄰刻度線在水平方向存在很高的重合率。
如圖4所示,選取一條圖1中已確定的刻度線,將其最小外接矩形作為起始框,根據(jù)式(3)分別向左右搜索符合條件的矩形框,認(rèn)定為刻度線所在矩形框,遇到不符合的矩形框則停止該方向搜索,搜索完成后對矩形框從左到右依次排序,最后視矩形框中心橫坐標(biāo)為刻度線位置
(3)
式中Yp={y1,y2,y3,…,yn}為上一個符合的矩形框縱坐標(biāo)集合,Yn為下一個矩形框的縱坐標(biāo)集合,a,h和w分別為矩形框的旋轉(zhuǎn)角度、高度和寬度,Thw,Ta和Ti分別為上述三個參數(shù)的閾值。
圖4 刻度線搜索
將所有刻度線識別后,依據(jù)長度特征進(jìn)行自動分類。首先,將刻度線根據(jù)長度由長到短排序,每一類刻度線都將劃分在自己的區(qū)間里;然后,按照順序使相鄰刻度線長度作除運(yùn)算,若大于長度變化閾值,則刻度線已進(jìn)入下一級刻度線區(qū)間,直至遍歷完所有的刻度線;最終將刻度線分為3類(長/中/短)。一般閾值的選取相對固定,只是為了彌補(bǔ)精度上的誤差。該法針對根據(jù)單一特征對刻度線進(jìn)行分類,相比K-means聚類方法無需指定分類數(shù)量,運(yùn)算量更少。
根據(jù)刻度值分布特征定位刻度值輪廓,然后通過神經(jīng)網(wǎng)絡(luò)LeNet—5識別刻度值。因?yàn)榭潭戎档姆植贾饕谥骺潭染€上方或下方,故利用主刻度線定位刻度值。考慮到匹配的刻度值是由幾個數(shù)字組合而成,采用膨脹對數(shù)字融合。首先,防止膨脹使得刻度值與指針和刻度線融合,先將圖像中的刻度線和指針背景化,然后形態(tài)學(xué)膨脹將獨(dú)立的數(shù)字融合成刻度值輪廓。接著,利用面積過濾掉過小和過大的輪廓,如噪點(diǎn)和儀表外輪廓等。搜索出包含主刻度線橫坐標(biāo)的輪廓,計(jì)算出主刻度線中點(diǎn)與各個輪廓中心的距離D={d1,d2,d3,…,dn},將Dmin的刻度值輪廓匹配主刻度線。定位結(jié)果如圖5所示。
圖5 刻度值定位
由于空間變換使得刻度值產(chǎn)生旋轉(zhuǎn),所以首先將定位到的刻度值輪廓根據(jù)式(2)反求角度,進(jìn)而旋轉(zhuǎn)擺正;然后,采用搜索連通域分割出刻度值輪廓中單個數(shù)字,依次將單個數(shù)字圖像送入訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)模型進(jìn)行識別;最后,根據(jù)單個數(shù)字所在坐標(biāo)組合成刻度值,賦值主刻度線,再根據(jù)主刻度線之間下一級刻度線數(shù)量,平均分配刻度值,若還有下下一級則重復(fù)執(zhí)行上述步驟。至此,完整的刻度線信息識別完成。
儀表的示數(shù)計(jì)算根據(jù)指針位置和其相鄰刻度線信息,計(jì)算出指針在相鄰刻度線中的相對位置所對應(yīng)的值。式(4)為儀表示數(shù)Avalue計(jì)算式
(4)
式中f(p),f(i)和f(i+1)分別為指針及指針相鄰的刻度線位置,v(i),v(i+1)為指針相鄰的左、右刻度值。
實(shí)驗(yàn)采用的是量程為0~400 A,最小刻度單位為5 A的電流表和量程為0~200 ℃,最小刻度單位為5 ℃的溫度表。平臺為Windows 10(處理器為酷睿i5,內(nèi)存為4 GB),開發(fā)環(huán)境為Visual Studio 2017,視覺庫為OpenCV。
2.2.1 實(shí)驗(yàn)效果圖
本次實(shí)驗(yàn)對象選擇了方形儀表和圓形儀表,其中方形儀表沒有弧形特征?;诒疚脑O(shè)計(jì)的儀表自動讀數(shù)算法,識別效果如圖6。
圖6 實(shí)驗(yàn)結(jié)果
由圖6(b)可見,指針轉(zhuǎn)動中心和刻度線定位準(zhǔn)確,滿足后續(xù)算法需求。由圖6(c)可見,指針橫坐標(biāo)定位準(zhǔn)確。由圖6(d)可以看出,刻度線橫坐標(biāo)定位準(zhǔn)確。由圖6(e)可以看出,刻度值,定位準(zhǔn)確,識別準(zhǔn)確?;趫D6(f)識別結(jié)果可知,本文提出的算法可實(shí)現(xiàn)儀表的自動讀數(shù)。
2.2.2 實(shí)時(shí)性與準(zhǔn)確性
為驗(yàn)證本文算法的實(shí)時(shí)性與準(zhǔn)確性,并考慮拍攝時(shí)儀表在相機(jī)視場中因相對位置不同可能造成的對讀數(shù)精度的影響,對儀表在同一示數(shù)下分別從兩個不同相對位置進(jìn)行拍攝,后改變儀表示數(shù),重復(fù)上述操作共5次,經(jīng)軟件自動讀數(shù)后結(jié)果整理如表1所示。
表1 讀數(shù)結(jié)果
由表1可知,使用本文提出的算法對指針式儀表自動讀數(shù),其結(jié)果與人工讀數(shù)相差較小,最大誤差不超過1.06 %,其中位置一相對誤差普遍低于位置二,但兩者之間相差不大,最大誤差為0.87 %,可知該算法對相機(jī)與儀表相對位置無嚴(yán)格要求。另外,單張圖像處理時(shí)間穩(wěn)定保持在0.23 s左右,實(shí)時(shí)性較好。
本文以無弧形特征的指針式儀表為例,設(shè)計(jì)了自動讀數(shù)算法。首先利用刻度線指向指針轉(zhuǎn)動中心特性,提出了一種儀表區(qū)定位法;結(jié)合投影、細(xì)化和Hough變換處理改善了在水平分布空間中指針定位精度;根據(jù)刻度線形狀和分布特征對其定位、分類;隨后根據(jù)主刻度線和刻度值分布關(guān)系,定位刻度值輪廓,然后由神經(jīng)網(wǎng)絡(luò)LeNet—5識別;最后,根據(jù)指針在相鄰刻度線中的相對位置計(jì)算儀表示數(shù)。經(jīng)過實(shí)驗(yàn)和誤差分析驗(yàn)證了本文提出的算法對無弧形特征的指針式儀表自動讀數(shù)的準(zhǔn)確性和實(shí)時(shí)性,滿足實(shí)際的應(yīng)用。