胡秀軍,于鳳芹
(江南大學(xué)物聯(lián)網(wǎng)工程學(xué)院,江蘇無錫 214122)
指針式儀表因其結(jié)構(gòu)簡單、維護方便、成本低、抗干擾性強等特點,被廣泛應(yīng)用于日常生活和工業(yè)現(xiàn)場。傳統(tǒng)的儀表讀數(shù)識別方式多為人眼識別,易受人眼分辨能力和視覺疲勞等主觀因素影響、識別效率低且在環(huán)境惡劣的高危場合不適宜采用人工判讀。
隨著計算機視覺和物聯(lián)網(wǎng)技術(shù)的發(fā)展,基于圖像處理的指針式儀表示數(shù)的識別成為必要。但儀表讀數(shù)識別算法如何適用于不同的光照和天氣情況成為必須解決的問題。文獻[1]通過設(shè)計高斯同態(tài)濾波器對儀表圖像進行預(yù)處理,降低光照變化、指針陰影對算法的影響。文獻[2]提出基于視覺顯著性的指針式儀表讀數(shù)識別算法,利用圖像區(qū)域的對比度、空間關(guān)系、中心先驗性等視覺顯著信息檢測儀表圖像指針區(qū)域,并利用無向圖排序算法優(yōu)化,抑制背景干擾。文獻[3]針對儀表反光的現(xiàn)象,利用輪廓特征對幾何圖形進行擬合,以某一固定特征為參考位置,根據(jù)位置關(guān)系讀取示數(shù)。文獻[4]提出迭代最大類間方差算法提取不同光照條件下的指針區(qū)域。文獻[5]通過局部自適應(yīng)二值化消除光照影響。文獻[6]針對非均勻光照下的儀表讀數(shù)提出一種基于掃描線處理的快速讀數(shù)方法。文獻[7]提出了一種基于空間變換的指針式儀表讀數(shù)識別算法,通過綜合運用減影法、中心投影法和圖像形態(tài)學(xué)對指針進行識別,采用圖像空間變換的技術(shù),將圓弧空間轉(zhuǎn)換為矩形空間,通過提取指針尖端與鄰近刻度線之間的相對位置關(guān)系來獲得讀數(shù),減少光照對指針和刻度線識別的影響。文獻[8]提出基于最大穩(wěn)定極值區(qū)域提取指針區(qū)域的算法,通過三尺度高斯函數(shù)提取光照分量,構(gòu)造二維伽馬函數(shù)自動地調(diào)整圖像反光區(qū)域或過暗區(qū)域的亮度,通過最大穩(wěn)定極值區(qū)域的2次穩(wěn)定區(qū)域檢測能夠提取不同光照條件下的指針區(qū)域。文獻[9]提出基于概率霍夫變換的指針儀表去影算法,能夠在存在干擾光源的情況下正確判別指針、去除干擾陰影。
在采集儀表圖像時,由于光照和拍攝角度的影響,儀表的讀數(shù)識別經(jīng)常會受到光照、指針陰影等因素的干擾,導(dǎo)致指針區(qū)域的提取和指針中心線的定位不能取得滿意的結(jié)果。針對此問題,提出具有單參數(shù)的指數(shù)型同態(tài)濾波與全局對比度處理的儀表讀數(shù)識別方法,首先設(shè)計單參數(shù)指數(shù)型同態(tài)濾波器,增強儀表圖像對光照變化的適應(yīng)性。然后通過設(shè)計基于全局對比度的圖像增強算法,抑制儀表盤背景區(qū)域,突出表盤信息區(qū)域。最后通過二值化、連通域處理、形態(tài)學(xué)處理提取指針區(qū)域,并通過細化處理和累計概率霍夫變換定位指針中心線,獲取指針的偏轉(zhuǎn)角度,完成儀表讀數(shù)識別。
同態(tài)濾波是將頻率過濾與灰度變換結(jié)合起來的圖像處理方法,以圖像的照度-反射模型為基礎(chǔ),通過壓縮圖像亮度范圍和增強對比度的方法來改善圖像的視覺質(zhì)量。
利用指數(shù)型高通濾波函數(shù)來逼近同態(tài)濾波函數(shù)可形成對應(yīng)的指數(shù)型同態(tài)濾波,其高通濾波函數(shù)表達式為
H(u,v)=e-[D0/D(u,v)]n
(1)
指數(shù)高通濾波器高低頻率的過度比較光滑,處理過的圖像沒有明顯的振鈴現(xiàn)象。指數(shù)型高通濾波函數(shù)乘以高頻增益rh,再加上低頻增益r1后,得到式(2):
H(u,v)=rh·e-[D0/D(u,v)]n+r1
(2)
針對式(2)修改可得到進一步優(yōu)化后的指數(shù)型高通濾波函數(shù),先將指數(shù)高通濾波函數(shù)變?yōu)橹笖?shù)低通濾波函數(shù),由于低通濾波傳遞函數(shù)波形圖跟高通濾波傳遞函數(shù)的波形圖相反,所以用1減去低通濾波傳遞函數(shù),同時,用高頻增益減去低頻增益。c為銳化系數(shù),可以進一步加強圖像對比度,n取2。優(yōu)化后得到式(3):
H(u,v)=(rh-r1)·(1-e-c[D0/D(u,v)]2)+r1
(3)
由于優(yōu)化后的指數(shù)型同態(tài)濾波器參數(shù)較多,且對不同的圖像參數(shù)值不同,需要經(jīng)過大量的實驗才能得到最優(yōu)效果。為了減少參數(shù)的影響,同時在不影響濾波效果的情況下,引入S型曲線的指數(shù)函數(shù):
(4)
由于該指數(shù)函數(shù)的曲線與同態(tài)濾波器的剖面結(jié)構(gòu)近似,因此,設(shè)計了單參數(shù)指數(shù)型同態(tài)濾波器,其傳遞函數(shù)為
H(u,v)=1/(1+e1-KD(u,v))
(5)
在式(5)所示的傳遞函數(shù)中,只需對參數(shù)K進行控制,就可以得到最佳的濾波效果。
為了降低光照、指針陰影對儀表讀數(shù)的影響,將儀表圖像從RGB顏色空間轉(zhuǎn)換到HSV顏色空間,對HSV顏色模型進行三通道分離,保持色調(diào)和飽和度不變,提取圖像的亮度分量,利用該單參數(shù)指數(shù)型同態(tài)濾波對亮度分量進行光照補償,并將HSV圖像還原為RGB圖像。
為進一步增大表盤信息區(qū)域與表盤背景區(qū)域的對比度,提出基于全局對比度的圖像增強算法,抑制背景區(qū)域,突出信息區(qū)域。該算法通過圖像的灰度直方圖統(tǒng)計出同一灰度級像素點的數(shù)目,得到該灰度級像素點在圖像中出現(xiàn)的頻率f,設(shè)圖像中某一像素點Pk,計算該像素點與圖像中其他所有像素點的距離度量Dis(Pk)。
Dis(Pk)=‖Pk-P1‖+‖Pk-P2‖+…+‖Pk-PN‖
(6)
式中N為像素點的數(shù)目。
若Pk的灰度值為Gm,即Pk=Gm,m表示該像素點的灰度級,m∈[0,255],則式(6)可重構(gòu)為式(7):
Dis(Gm)=f0‖Gm-G0‖+f1‖Gm-G1‖+…+fn‖Gm-Gn‖
(7)
式中fn為灰度級為n的像素點在圖像中的出現(xiàn)的頻率。
將同一灰度級m的像素點與其他所有灰度級像素點的灰度度量定義為Gray(Gm),計算公式由式(7)整合所得,如式(8)所示:
(8)
將同一灰度級像素的灰度度量作為該灰度級上所有像素點的灰度值,得到重新歸一化后的圖像。
通過Otsu分割算法對圖像進行二值化處理,結(jié)合連通域處理[10]提取指針區(qū)域,然后用形態(tài)學(xué)孔洞填充[11]。去除指針區(qū)域的細小孔洞。由于指針具有上端細、下端粗的特點,為了后續(xù)精確定位指針,需要對指針區(qū)域進行細化處理獲取其骨架,其中改進的Zhang細化算法[12]具有快速并行、細化后的曲線保持連通性和無毛刺等特點,因此本文采用該算法來細化指針,獲得指針骨架后,采用累計概率霍夫變換[8]。檢測指針直線,并獲取指針的偏轉(zhuǎn)角度。
構(gòu)建坐標系,計算儀表讀數(shù)。如圖1所示,以表盤轉(zhuǎn)動軸心O為原點建立直角坐標系XY,l為指針直線段。
根據(jù)檢測到的指針直線得到指針的偏轉(zhuǎn)角度,利用角度法[13]計算出儀表的讀數(shù),計算公式如式(9)所示:
(9)
式中:γ(∠AOB)為指針的偏轉(zhuǎn)角度;β(∠COB)為最小刻度線與Y軸的夾角;max與min分別為儀表最大刻度值與最小刻度值。
步驟1:制作儀表模板。獲取儀表軸心位置、最大刻度值、最小刻度值以及最大刻度線與最小刻度線相交的夾角,建立模板庫。
步驟2:輸入待測圖像,使用透視變換算法對該圖像進行校正。
步驟3:獲取儀表圖像的有效信息圖。
步驟4:將圖像從RGB轉(zhuǎn)換到HSV空間。
步驟5:保持圖像的色調(diào)(H)、飽和度(S)不變,提取圖像的亮度分量(V)圖。
步驟6:利用單參數(shù)指數(shù)型同態(tài)濾波對亮度分量圖進行處理。
步驟7:將HSV圖像還原為RGB圖像。
步驟8:對步驟7所得圖像進行灰度化處理。
步驟9:得到步驟8處理后圖像的灰度直方圖,統(tǒng)計灰度級為n的像素點的頻率fn。
步驟10:通過式(8)以及步驟9中的fn計算圖像中每個灰度級像素點與其他所有灰度級像素點的灰度度量。
步驟11:將步驟10計算得到的灰度度量作為圖像新的灰度值,歸一化圖像。
步驟12:采用Otsu算法對步驟11的圖像進行二值化處理。
步驟13:對步驟12所得圖像進行連通域處理,提取指針區(qū)域。
步驟14:對步驟13所得圖像進行形態(tài)學(xué)孔洞填充操作。
步驟15:對步驟14所得圖像進行細化處理,獲取指針骨架。
步驟16:采用累計概率霍夫變換檢測指針直線,獲取其偏轉(zhuǎn)角度。
步驟17:通過式(9)計算儀表讀數(shù)并輸出,算法結(jié)束。
儀表讀數(shù)識別算法流程圖如圖2所示。
本實驗的運行環(huán)境為Windows10 64位操作系統(tǒng),Ryzen5處理器,8 GB內(nèi)存,Visual Studio 2017和OpenCV作為軟件開發(fā)環(huán)境。
選取低照度、高照度以及照度不均的儀表圖像為實驗對象,以圖像的信息熵、峰值信噪比作為圖像質(zhì)量檢驗指標,來客觀評價傳統(tǒng)的指數(shù)型同態(tài)濾波與本文單參數(shù)指數(shù)型同態(tài)濾波算法的實驗效果。信息熵是圖像信息量的度量,信息熵越大,圖像所含信息越多,圖像包含的細節(jié)越豐富;峰值信噪比表示圖像信號最大可能功率與噪聲功率的比值,峰值信噪比越大,圖像保真程度越高。濾波器的參數(shù)設(shè)置以及檢驗指標如表1。
由表1數(shù)據(jù)可知,本文設(shè)計的單參數(shù)指數(shù)型同態(tài)濾波器控制參數(shù)明顯減少,可以更快實現(xiàn)對濾波器的控制,且處理后的圖像信息熵、峰值信噪比略高于原算法,可以有效增強圖像細節(jié),對圖像具有較好的處理效果。此外,本文根據(jù)大量實驗得到參數(shù)K的取值范圍在[0.025,0.035]之間。
表1 儀表讀數(shù)實驗結(jié)果
本文將Otsu算法、文獻[1]、文獻[5]及本文所提方法進行對比實驗,如圖3~圖6所示。經(jīng)分析可知,只有在正常光照下,Otsu算法才能較好地分割出指針區(qū)域,光照過暗、光照過亮以及光照不均勻時均不能取得較好的分割效果;從圖4(c)、圖6(c)可看出文獻[1]算法在光照過暗或光照不均勻的條件下,對儀表圖像的分割效果不理想。從文獻[5]算法分割的結(jié)果圖可知,不同光照條件下,該算法可取得較好的分割效果,但保留的干擾信息太多,為后續(xù)提取指針區(qū)域增加了難度。從本文算法分割的結(jié)果圖可知,本文算法能夠減少表盤區(qū)域干擾,抑制背景區(qū)域,突出信息區(qū)域,降低了提取指針區(qū)域的難度,也說明了本文算法能夠適應(yīng)各種光照條件,對光照有較好的魯棒性。
經(jīng)實驗分析,可將指針陰影類型大致分為3種,如圖7所示,第一種類型指針與指針陰影之間的夾角較大,經(jīng)Otsu算法分割后得到雙指針,如圖7(b)所示;第二種類型指針與陰影之間的夾角較小,經(jīng)Otsu算法分割后得到的指針比實際的指針粗,如圖7(g)所示,造成定位的指針中心線不準確;第三種類型指針陰影并不太明顯,但由于灰度值較高,經(jīng)Otsu算法分割后,得到的指針中僅含有部分指針陰影,如圖7(l)所示。前兩種類型若不能去除指針陰影,將造成指針中心線產(chǎn)生偏差,導(dǎo)致讀數(shù)誤差較大,第三種類型對指針中心線定位的結(jié)果影響并不大,但若提取的指針區(qū)域中含較多的干擾,如字符、污漬等,就會對指針中心線定位產(chǎn)生一定影響。本文就指針區(qū)域的分割與Otsu算法、文獻[1]和文獻[5]中的3種算法進行了對比仿真實驗。由仿真實驗結(jié)果可以看出,本文算法相較于Otsu算法、文獻[1]和文獻[5]算法能夠更好地去除不同類型的指針陰影,有效地分割出指針區(qū)域。
本實驗采集50張不同類型、不同讀數(shù)的儀表圖片作為實驗樣本進行實驗。將其中10組的人工讀數(shù)與本文算法的讀數(shù)結(jié)果進行對比,實驗結(jié)果如表2所示。
表2 儀表讀數(shù)實驗結(jié)果
由表2可知,使用本文算法對各刻度均勻的指針式儀表進行讀數(shù),其結(jié)果與參考讀數(shù)相差不大,總體的正確率達到了95%以上,能夠滿足儀表讀數(shù)識別的實際需求??梢?,本文設(shè)計的指針式儀表讀數(shù)自動識別算法是可行的。
針對光照變化、指針陰影等干擾影響因素導(dǎo)致儀表指針無法提取、儀表讀數(shù)識別誤差較大的問題。本文提出一種具有單參數(shù)指數(shù)型同態(tài)濾波與全局對比度處理的儀表讀數(shù)方法,使用單參數(shù)指數(shù)型同態(tài)濾波較大程度消除光照和指針陰影的干擾,并通過全局對比度的圖像增強算法突出表盤信息區(qū)域,結(jié)合Otsu算法解決了不同光照條件下和存在指針陰影的儀表圖像中指針區(qū)域的提取,實現(xiàn)指針中心線的精確定位。仿真實驗結(jié)果表明,所提算法能夠適應(yīng)不同光照條件下指針區(qū)域的提取,同時能夠消除指針陰影的影響,且讀數(shù)識別的正確率達到95%以上。