孫順遠,魏志濤
(1.輕工過程先進控制教育部重點實驗室,江蘇無錫 214122;2.江南大學(xué)物聯(lián)網(wǎng)工程學(xué)院,江蘇無錫 214122)
在實際工業(yè)生產(chǎn)中,常伴有高溫、復(fù)雜電磁干擾、腐蝕等環(huán)境因素,而指針式儀表因為結(jié)構(gòu)簡單、抗電磁干擾能力強、成本低、精度高、使用壽命長、可靠性高等特點能夠適應(yīng)各種復(fù)雜狀況,被應(yīng)用于礦場、航空、電力監(jiān)測等領(lǐng)域[1]。目前,大部分傳統(tǒng)制造業(yè)工廠仍采用指針式儀表來監(jiān)測設(shè)備參數(shù),依靠人工判別儀表示數(shù)。在儀表較多的情況下,采用人眼識別易受主觀因素的影響導(dǎo)致檢測效率低且精確度波動大,容易導(dǎo)致安全事故的發(fā)生[2-3]。隨著機器視覺的快速發(fā)展,大量圖像處理算法的提出為計算機代替人工監(jiān)控儀表提供了理論可能和技術(shù)支撐。
針對指針式儀表示數(shù)識別問題,研究人員進行了大量的研究。文獻[4-6]分別通過同態(tài)高通濾波器、局部像素不均勻因子模型、迭代最大類間方差算法提高指針區(qū)域視覺顯著性,解決光照對儀表識別的影響;文獻[7]提出基于輪廓擬合與徑向分割的算法,通過分析指針的像素特性,實現(xiàn)儀表盤內(nèi)指針的提??;文獻[8-9]利用卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練儀表數(shù)據(jù)模型,能夠在復(fù)雜環(huán)境下檢測和捕獲儀表面板區(qū)域,讀取和預(yù)測特征圖像,實現(xiàn)儀表自動識別;文獻[10]提出了基于對稱度的二值化閾值確定方法和改進的隨機樣本一致性算法,有效地解決了指針陰影和背景圖像干擾問題;文獻[11]基于直線橢圓檢測器(ELSD)結(jié)合K-means聚類算法得到刻度線與指針位置,減少了對模板圖像和人工標(biāo)定的依賴。上述各種算法針對特定的環(huán)境做出適應(yīng)性的修改,提高了抗干擾能力,但相應(yīng)的對機器運算性能也提出較高的要求。
本文針對傳統(tǒng)檢測算法調(diào)節(jié)復(fù)雜、魯棒性較差以及改進算法對機器運算處理性能要求高的缺點,基于輪廓提取和最小二乘法,提出一種適用于刻度線與弧線不相連的指針式儀表自動讀數(shù)算法,解決識別過程中儀表大小、位置變化以及拍攝角度不理想對讀數(shù)識別的影響,而且識別算法不受儀表外形輪廓的影響,具備一定的適用性。
基于輪廓提取和最小二乘法的指針式儀表讀數(shù)識別方法主要由預(yù)處理、表盤區(qū)域檢測、儀表指針檢測和儀表示數(shù)計算組成。算法整體流程如圖1所示。
圖1 算法整體流程
圖像采集過程中相機光感矩陣會受到自身噪聲、不良照明及過高工作溫度的影響,導(dǎo)致儀表圖像中包含大量高斯噪聲。為去除或抑制圖像包含的噪聲,可以通過二維高斯濾波器進行平滑濾波,單個像素點濾波后的灰度值可以通過式(1)得到。
F(xi,yi)=I(x,y)G(x,y,δ)
(1)
式中:I(x,y)為中心像素點為(xi,yi)的鄰域灰度值模板;G(x,y,δ)為高斯濾波器模板;F(xi,yi)為濾波后中心像素點的灰度值。
在實際環(huán)境中,儀表盤可能處于非均勻光照的狀態(tài),出現(xiàn)局部位置亮度過高或過低的情況,使用全局二值化分割容易造成信息缺失。為解決此問題,本文采用局部均值閾值化,通過圖像像素鄰域塊的分布特征來自適應(yīng)確定區(qū)域的二值化閾值?;叶戎底兓瘎×业膮^(qū)域(過亮或過暗),自適應(yīng)閾值方法能夠自動調(diào)高或降低閾值,使圖像信息能夠較完整保留下來。
經(jīng)高斯濾波和局部二值化處理后的圖像已經(jīng)去除大部分干擾噪聲,但圖像中仍存在孤立的小點與連通域間虛假的連接。為消除這2種影響因素,同時盡量避免有效信息的缺失,本文采用開運算對二值圖像做進一步處理,保留原圖中大部分細節(jié),方便后續(xù)處理。
輪廓提取[12]通過對圖像進行邊界檢測,利用邊緣點連接的層次差別,提取出具有相同數(shù)結(jié)構(gòu)特征的區(qū)域點集。將經(jīng)過預(yù)處理的儀表圖像進行輪廓檢測,獲取儀表盤的所有輪廓邊緣信息,輪廓檢測結(jié)果如圖2所示。從輪廓圖可以看出,除儀表外輪廓外,外界干擾物體以及儀表盤內(nèi)部刻度線、指針等輪廓同樣被檢測出來,表盤內(nèi)部的輪廓線包含在儀表的外輪廓中,與外輪廓互不干擾,對儀表盤位置檢測的影響較小,而外部環(huán)境中的干擾輪廓可能與表盤外輪廓相互粘連,在識別時容易造成輪廓誤檢,不利于后續(xù)擬合。
圖2 輪廓檢測圖
直接采用檢測到的外輪廓作為儀表盤顯示區(qū)域會造成截取區(qū)域中包含大量背景干擾,加大數(shù)據(jù)計算量和有效信息的篩選難度。為有效截取儀表顯示區(qū)域,本文將內(nèi)嵌輪廓作為表盤候選區(qū)域,篩選流程如圖3所示。
圖3 儀表顯示輪廓篩選流程
檢測出的輪廓擁有等級,根據(jù)輪廓是否包含子級即可得出是否包含子輪廓。由于儀表盤內(nèi)部包含的信息要比外界背景多,可以認(rèn)為備選次級父輪廓中包含的子輪廓數(shù)量越多,成為表盤顯示區(qū)域的可能性就越高。根據(jù)這一特征,檢測和統(tǒng)計所有相對面積較大的備選次級父輪廓內(nèi)的子輪廓數(shù)量,選取含有最多子輪廓的輪廓區(qū)域作為表盤區(qū)域。
獲取的表盤候選區(qū)域輪廓如圖4(a)所示,篩選后截取的表盤區(qū)域如圖4(b)所示。
(a)備選區(qū)域
由于分割出的儀表圖像的分割閾值和輪廓與拍攝圖片存在差異,需要對截取的表盤區(qū)域重新進行閾值分割、形態(tài)學(xué)運算,利用輪廓檢測算法重新檢測表盤區(qū)域中的所有輪廓并保存為輪廓集C1。
根據(jù)刻度線是獨立存在的一條實線,在進行輪廓檢測時檢測到的輪廓不包含子輪廓的特點,檢測輪廓集C1中所有輪廓的內(nèi)嵌等級,去除包含子輪廓的輪廓以及低于刻度線輪廓等級的輪廓得到輪廓集C2。
為進一步排除輪廓集C2中的干擾輪廓,將刻度線的幾何特征作為篩選標(biāo)準(zhǔn)。根據(jù)式(2),不滿足條件的輪廓將被去除,剩余輪廓組成輪廓集C3。
|wci/hci|≤T,ci∈C2
(2)
式中:ci為包含于C2輪廓集中的輪廓;w為輪廓的寬度;h為輪廓的高度;T為設(shè)定閾值。
選擇輪廓集C3中輪廓的幾何中心點作為刻度線實際所在位置,需要注意的是,由于大刻度線的中心點與小刻度線不在同一個擬合橢圓上,需要將大刻度線剔除。
由于篩選出的表盤輪廓不一定為圓形輪廓(例如方形儀表),需要對儀表進行橢圓擬合。最小二乘法橢圓擬合是較常用的橢圓擬合方法,通過計算測量誤差的平方和,從測量值中求出一組最可靠的解。本文采用隨機最小二乘法進行橢圓擬合[13],根據(jù)刻度線中心點的分布特點,選取一部分樣本點進行擬合,添加約束條件限制擬合結(jié)果增加擬合可信度。具體過程如下:
(1)輸入檢測到的所有線段中心點的集合P(已編號),初始化匹配點個數(shù)n、最大匹配點個數(shù)nmax、距離閾值dp以及匹配點集合M;
(2)從中心點集合P中隨機選取6個(根據(jù)樣本點總數(shù)合理選取)互不相同的樣本點;
(3)利用最小二乘法擬合出橢圓的一般式方程:
F(x,y)=x2+Axy+By2+Cx+Dy+E=0
(3)
(4)逐次計算樣本點到橢圓的歐氏距離,如果小于閾值dp,匹配點個數(shù)加1,對于匹配點集合M:
M={(xi,yi)∈P|fd(xi,yi)≤dp}
(4)
(5)若匹配點個數(shù)大于nmax,則令nmax=n,否則重復(fù)步驟2~4;
(6)若nmax與樣本點總數(shù)比值超過規(guī)定閾值或到達迭代次數(shù),則輸出最佳擬合橢圓以及匹配點集合M,否則重復(fù)步驟2~5直至到達迭代次數(shù)。
隨機最小二乘橢圓擬合算法擬合結(jié)果如圖5所示。圖中可見擬合橢圓經(jīng)過所有刻度線,符合擬合要求。
圖5 表盤橢圓擬合結(jié)果
由橢圓擬合結(jié)果得到的儀表盤中心點所在位置,可以獲取指針?biāo)趨^(qū)域。如圖6(a)所示,指針式儀表的指針具有近似等腰三角形的特征,而且指針中心線經(jīng)過轉(zhuǎn)動圓心。因此,傳統(tǒng)方法通過提取指針中心線所在的直線方程定位指針?biāo)谖恢?。但實際擬合過程中,橢圓圓點與指針圓心重合的概率較小,采用上述方法會隨橢圓原點的擬合精度不同程度偏離實際中心線。如圖6(b)所示,這樣擬合出來的直線用于示數(shù)計算會增大讀數(shù)誤差。由于指針儀表的指針較粗,在直線檢測時會檢測出2條較長且相交的直線,而這兩條直線的交點即為指針的端點。取這兩條直線的角平分線(銳角)作為指針?biāo)诘闹本€方程可以有效避免上述問題。
圖6 指針的幾何特征和檢測偏差
本文提出基于EDLines直線檢測算法[14]的指針定位方法,相較于傳統(tǒng)霍夫變換直線檢測算法[15]直線檢測速度更快,直線誤檢率更低,具體步驟如下:
(1)根據(jù)獲取的擬合橢圓以及儀表輪廓,截取包含儀表指針的區(qū)域。為減少直線檢測的運算量,本文截取擬合橢圓半徑(長軸與短軸)3/4長度的表盤顯示圖像區(qū)域作為檢測對象。
(2)利用EDLines算法檢測截取區(qū)域內(nèi)包含的直線,編號并保存。
(3)計算所有直線到擬合橢圓圓心的距離di,設(shè)定閾值u,若滿足di
(4)計算符合指針條件的檢測直線長度,并將直線按照從長到短的規(guī)則排序。
(5)尋找直線中相對長度最長,與橢圓圓心的距離相近且長度相近的2條直線作為指針的邊緣直線。
(6)求取2條直線的角平分線,獲取指針中心線所在的直線方程。
根據(jù)刻度線輪廓與擬合橢圓相交的特點對3.3節(jié)中得到的輪廓集C3進行篩選,獲取與圓弧相交的刻度線輪廓。排除匹配點集合M對應(yīng)的小刻度線輪廓,剩余相交的輪廓即為大刻度線輪廓。因為大刻度線的中心點與小刻度線的中心點不在同一橢圓弧上,所以不能直接采用大刻度線的中心點作為儀表的刻度點。根據(jù)刻度線所在的直線穿越圓弧的特點,將大刻度線的中心點與圓弧中心建立直線段,求取直線方程與擬合橢圓的交點,此交點即為大刻度線所在的位置點。
若刻度線所在的直線方程為
Aix+Bix+Ci=0
(5)
結(jié)合3.4節(jié)求取的擬合橢圓方程(3),將2個方程聯(lián)立求解獲得直線與橢圓的2個交點。計算2個交點與大刻度線中心點的距離,舍棄距離較遠的交點,剩下的點則為刻度點,將保留下的刻度點保存到匹配點集合M中。
儀表盤的起始區(qū)域一般位于左半平面,并且起始刻度位于左下方,根據(jù)這一特點,可以確定刻度線的起始位置。在確定起始刻度點后,根據(jù)刻度點在圓弧上分布的特點對所有刻度點進行排序,構(gòu)建出刻度點坐標(biāo)分布圖。對刻度點進行排序的算法流程圖如圖7所示。
圖7 刻度線排序流程圖
首先根據(jù)刻度點的橫坐標(biāo)xi與橢圓中心(xo,yo)的位置關(guān)系將刻度點劃分到左右平面,對左右平面中的刻度點按縱坐標(biāo)y值大小進行排序;確定起始刻度的位置并將其編號設(shè)為0,依次計算相鄰2個刻度點所對應(yīng)的圓心角角度θi;在所有圓心角角度中找出閾值占比最高的角度θMd,并將其作為刻度點之間的平均圓心角;從起始刻度開始,計算圓心角θi與θMd的差值,若兩者對應(yīng)的圓心角角度差小于T,則將該刻度點標(biāo)記為下一刻度線所在位置,若2個刻度點間的角度相差較大,則2個刻度點之間有刻度線未檢測出來,根據(jù)角度的比值關(guān)系計算缺失刻度線的個數(shù),采用線性插值的方法補全缺失刻度點;依次計算相鄰刻度點角度的比值關(guān)系,對刻度點進行編號賦值,直至下一刻度點為終止刻度點時結(jié)束。
根據(jù)4.1節(jié)獲取的指針位置方程與4.3節(jié)構(gòu)建的刻度點坐標(biāo)分布圖,對儀表進行讀數(shù)識別。相較傳統(tǒng)算法利用指針旋轉(zhuǎn)角度信息作為計算結(jié)果標(biāo)準(zhǔn),為減小擬合橢圓離心率引起的讀數(shù)誤差,本文通過指針直線與刻度點的位置關(guān)系來獲取表盤示數(shù)。如圖8所示,s1與s2為相鄰的2個刻度點,2個刻度點之間的連線為l2;d1與d2分別為刻度點s1、s2到指針?biāo)谥本€l1的距離;兩刻度點間的連線l2與指針直線l1相交于點p;(x1,y1)是指針直線與指針邊緣相交的后端點。首先,計算指針與擬合橢圓的交點,根據(jù)刻度點與交點都位于橢圓上的特點,求取交點上下相鄰的2個刻度點。
圖8 讀數(shù)計算示意圖
從圖中可以看出,通過計算p到其中任意一個刻度點的距離,得到此距離與刻度點連線l2長度的比例,即可得到指針在2個刻度間的準(zhǔn)確位置。由于刻度點與直線構(gòu)成的2個三角形為相似三角形,上述比值可以轉(zhuǎn)化為d1與d2的比值。最后利用式(6)獲取指針代表的刻度。
(6)
為驗證上述算法的有效性,本文實驗在Windows 10(處理器為AMD Ryzen 7 4800H CPU 2.90 GHz,內(nèi)存為8 GB)操作系統(tǒng)下使用Visual Studio 2015作為開發(fā)平臺,采用OpenCV4.4.0庫對儀表圖像進行處理,針對表盤目標(biāo)區(qū)域檢測以及儀表自動讀數(shù)設(shè)計多種條件下的測試實驗。儀表圖像由工業(yè)相機拍攝實驗環(huán)境下的真實儀表獲得。
目前,大多數(shù)表盤區(qū)域檢測算法對儀表圖片進行識別時要求儀表處于圖像正中且距離合適的位置,而在實際應(yīng)用場景中,儀表或相機的位置可能發(fā)生變化。因此本文針對不同形狀的儀表以及相同形狀不同大小、不同位置的儀表,使用真實場景下的儀表圖片進行實驗,獲取的儀表圖像如圖9(a)所示。
(a)原圖像
由圖9(b)的實驗檢測結(jié)果可見,在存在背景干擾的環(huán)境下,表盤區(qū)域檢測算法能夠準(zhǔn)確識別出表盤的位置,而且當(dāng)儀表位置、大小發(fā)生變化時檢測到的表盤區(qū)域仍然可以精準(zhǔn)貼合儀表的邊界。
當(dāng)拍攝距離超出一定范圍時,由于拍攝到的儀表在圖像中過小,表盤內(nèi)部信息不能有效提取,即使在表盤檢測階段能夠識別出表盤位置,但由于缺少后續(xù)步驟所需關(guān)鍵信息,最終會導(dǎo)致示數(shù)計算出錯。
為測試示數(shù)識別算法對外界環(huán)境的抗干擾性,設(shè)計了不同狀態(tài)下儀表的測試實驗。實驗采用的指針式儀表為工業(yè)生產(chǎn)中實際使用的儀表,儀表為Y-100型壓力儀表。
工業(yè)用儀表在實際使用中經(jīng)常處于工況比較惡劣的環(huán)境,表盤表面會吸附灰塵、油污、水珠等污垢,對指針識別造成困難。此外,由于相機安裝不到位造成的儀表圖像畸變也會對儀表自動讀數(shù)產(chǎn)生干擾。本文實驗通過拍攝表盤外殼存在水珠、光照過暗以及鏡面模糊的實際表盤驗證儀表示數(shù)識別算法的抗干擾性,拍攝結(jié)果分別如圖10(a)~圖10(c)所示。
從橢圓擬合和指針識別結(jié)果圖10(d)~圖10(f)可以看出,3種不同環(huán)境下的儀表圖片擬合的刻度橢圓和識別的指針位置都比較準(zhǔn)確。在暗光條件下,雖然有些刻度線未被檢測出來,但在刻度點排序時可以通過插值的方式抵消缺失刻度線問題的影響。
(a)表盤存在水珠 (b)光照過暗 (c)暗光下鏡面模糊
由于儀表安裝位置、相機位置變動等因素的影響,相機未能正對儀表盤,導(dǎo)致拍攝到的儀表圖片存在傾斜角度,儀表圖像發(fā)生畸變,對儀表示數(shù)識別產(chǎn)生影響。
圖11(a)為模擬相機與儀表存在傾角情況下拍攝的圖片。由圖11(b)識別結(jié)果可以看出,刻度擬合為離心率較大的橢圓,傳統(tǒng)識別方法不能直接使用這樣的圖像進行示數(shù)識別,通常利用透視變換法對原圖像進行矯正后才能用于識別。由于本文采用刻度點與指針的相對距離作為識別標(biāo)準(zhǔn),因此只要刻度盤與指針能夠準(zhǔn)確定位,示數(shù)計算誤差就可以控制在允許范圍之內(nèi)。根據(jù)抗干擾實驗結(jié)果可以看出,該算法具備一定的應(yīng)對常見干擾的能力。
(a)傾斜拍攝儀表圖片
為驗證識別算法的識別精度,利用工業(yè)相機拍攝不同測試條件下的同種儀表不同示數(shù)的儀表圖片各20張,共120張圖片進行讀數(shù)識別,并計算每張圖片的引用誤差與絕對誤差。記錄每種測試條件下人工讀數(shù)與算法識別結(jié)果的最大和最小引用誤差值以及平均引用誤差,數(shù)據(jù)記錄如表1所示。
表1 不同條件下儀表示數(shù)識別結(jié)果
分析表1的實驗數(shù)據(jù),最大引用誤差出現(xiàn)在相機存在傾角的條件下,并且偏差值要明顯高于其他條件下的最大引用誤差,這是由于相機視線與刻度線不垂直造成的視差。而在鏡面模糊的情況下,刻度線的定位精度比正常條件下稍差,導(dǎo)致總體識別誤差要高于正常情況。但本算法識別的最大絕對誤差小于0.003,而且算法的最大識別用時為68.91 ms,能夠滿足指針式儀表自動讀數(shù)的精度和實時的要求。
在表盤區(qū)域檢測方面,本文提出的基于儀表輪廓的表盤顯示區(qū)域?qū)ふ宜惴梢詰?yīng)用在多種類型的表盤,在適當(dāng)距離上不受表盤輪廓外形和大小變化影響。在讀數(shù)識別方面,采用刻度點到指針直線的距離比值取代傳統(tǒng)方法中指針轉(zhuǎn)動角度作為表盤示數(shù)的計算準(zhǔn)則,在一定程度上解決了因拍攝角度不理想引起的讀數(shù)誤差。