徐 鵬,曾衛(wèi)明,石玉虎,張雅倩
(上海海事大學(xué) 信息工程學(xué)院,上海 201306)
指針式油位計(jì)作為一種油位測(cè)量?jī)x器,由于其具有價(jià)格便宜、結(jié)構(gòu)簡(jiǎn)單、可靠性高以及能夠準(zhǔn)確顯示油位的讀數(shù)等優(yōu)點(diǎn),在油艙、油庫(kù)等領(lǐng)域應(yīng)用廣泛[1]。目前指針式油位計(jì)讀數(shù)的識(shí)別主要依靠人眼觀測(cè)來(lái)完成,但人工判讀的方法存在一定缺陷,如對(duì)于處在表盤(pán)兩個(gè)刻度線之間的指針,只能靠主觀估計(jì)來(lái)判斷讀數(shù),導(dǎo)致讀數(shù)并不精確[2]。因此,提出一種油位計(jì)讀數(shù)自動(dòng)識(shí)別方法就顯得十分必要。
油位計(jì)的自動(dòng)識(shí)別關(guān)鍵在于尋找油位計(jì)軸心位置和識(shí)別指針位置。在尋找軸心位置方面,Alegria等提出了剪影法[3],該方法需要準(zhǔn)備兩幅油位計(jì)的圖像,一幅正常圖像,一幅缺失指針的圖像,通過(guò)兩幅圖像之差就可以得到指針,再進(jìn)行一些處理就可以得到軸心。這種方法針對(duì)不同的油位計(jì)需要準(zhǔn)備不同的圖像,實(shí)時(shí)性較差。還有一些學(xué)者采用Hough圓變換法[4-6],該方法需要先進(jìn)行邊緣計(jì)算,再對(duì)邊緣上的每個(gè)點(diǎn)進(jìn)行計(jì)算,求出油位計(jì)的圓及圓心。這種方法計(jì)算量大,且依賴于參數(shù)設(shè)置,可能會(huì)檢測(cè)出許多不存在的圓。而在指針位置識(shí)別方面,大量學(xué)者采用Hough變換進(jìn)行表盤(pán)指針的提取[7-8]。該方法需要對(duì)全局像素點(diǎn)進(jìn)行搜索,具有存儲(chǔ)空間大、計(jì)算時(shí)間長(zhǎng)等缺陷[9],且直線檢測(cè)的效果依賴于參數(shù)的設(shè)定,魯棒性不強(qiáng)。Han等提出一種基于改進(jìn)Hough變換的方法[10],該算法首先使用自適應(yīng)的中值濾波、圖像二值化等操作,然后使用Hough變換提取指針直線,但該算法對(duì)于光照強(qiáng)弱不具有魯棒性。
針對(duì)上述問(wèn)題,在尋找油位計(jì)軸心位置方面,根據(jù)油位計(jì)軸心顏色與指針的黑色存在較大的差異,文中提出一種遍歷指針像素的方法來(lái)準(zhǔn)確地求出油位計(jì)軸心位置。同時(shí),在識(shí)別指針位置方面,提出一種改進(jìn)的霍夫變換法來(lái)檢測(cè)指針位置。最后通過(guò)實(shí)驗(yàn)對(duì)算法進(jìn)行驗(yàn)證。
所提算法的總體框架如圖1所示。
圖1 油位計(jì)自動(dòng)讀數(shù)系統(tǒng)框架
為了對(duì)油位計(jì)進(jìn)行自動(dòng)讀數(shù),首先需要對(duì)采集獲得的油位計(jì)圖像進(jìn)行必要的預(yù)處理,主要包括圖像濾波處理、圖像增強(qiáng)處理以及邊緣提取等步驟;其次采用遍歷指針像素的方法識(shí)別出油位計(jì)的軸心位置,再利用改進(jìn)的霍夫變換識(shí)別出指針的位置,然后根據(jù)油位計(jì)起點(diǎn)和終點(diǎn)處為紅色進(jìn)行顏色分割,得到起點(diǎn)和終點(diǎn)的坐標(biāo);最后運(yùn)用角度法計(jì)算出油位計(jì)讀數(shù)并判斷油位狀態(tài)。
經(jīng)攝像頭采集的油位計(jì)圖像易受光照的影響,且在拍攝、傳輸過(guò)程中會(huì)攜帶大量的噪聲[11]。為了后續(xù)油位計(jì)的準(zhǔn)確讀數(shù),需要對(duì)圖像進(jìn)行預(yù)處理,包括同態(tài)濾波、中值濾波、二值化、形態(tài)學(xué)處理等操作。
1.1.1 同態(tài)濾波處理
針對(duì)采集的油位計(jì)圖像易受光照影響,采用同態(tài)濾波器對(duì)弱光照下的油位計(jì)圖像進(jìn)行增強(qiáng)。同態(tài)濾波器是一種依據(jù)圖像照度反射成像模型原理的頻域?yàn)V波算法,該濾波器可以改變圖像灰度范圍和增強(qiáng)圖像的對(duì)比度[12]。文中采用高斯型同態(tài)濾波器H(μ,ν)對(duì)油位計(jì)圖像進(jìn)行濾波處理,增強(qiáng)了弱光照油位計(jì)圖像的亮度,提高了圖像的對(duì)比度。其中高通濾波器H(μ,ν)的計(jì)算公式如下:
(1)
(2)
使用高斯型同態(tài)濾波器處理結(jié)果如圖2(b)所示,對(duì)于攝像頭采集過(guò)程中偏暗的油位計(jì)圖像能起到增亮的效果,同時(shí)也增強(qiáng)了油位計(jì)圖像指針區(qū)域與非指針區(qū)域的對(duì)比度。
1.1.2 二值化與圖像形態(tài)學(xué)處理
因?yàn)橛臀挥?jì)圖像的指針大多是黑色的,而油位計(jì)的其他區(qū)域大都呈現(xiàn)灰色或者白色,所以可以采用閾值法將指針和其他區(qū)域區(qū)分開(kāi)。使用閾值法處理后的二值化圖像f(x,y)表示為:
(3)
二值化后的結(jié)果圖如圖2(c)所示;在二值化后的圖片中,發(fā)現(xiàn)圖像中仍然存在著一些細(xì)小的干擾點(diǎn),文中利用形態(tài)學(xué)中的腐蝕操作進(jìn)行有效去除,結(jié)果如圖2(d)所示。
對(duì)于油位計(jì)軸心的識(shí)別,文中采用遍歷指針像素的方法來(lái)識(shí)別油位計(jì)的軸心??梢园l(fā)現(xiàn)指針軸心的顏色和黑色指針還是存在很大的差異。二值化后的圖像中可以發(fā)現(xiàn)指針被軸心間斷成了兩段,根據(jù)這一特點(diǎn),先對(duì)形態(tài)學(xué)操作后的圖像進(jìn)行輪廓提取操作,可以用兩個(gè)最小外接矩形框框出被間斷的兩段指針,再分別求取這兩個(gè)矩形的質(zhì)心,并求得兩個(gè)質(zhì)點(diǎn)的坐標(biāo)(x1,y1),(x2,y2)。將這兩個(gè)點(diǎn)進(jìn)行連線可以在指針上得到一條直線,根據(jù)這兩個(gè)點(diǎn)可以求得這條直線的斜率k以及截距b,從而可得直線方程:
y=k*x+b
(4)
對(duì)這一條直線上的像素進(jìn)行遍歷,可以根據(jù)RGB來(lái)進(jìn)行判斷,找出直線上第一個(gè)非黑色的點(diǎn)(X1,Y1)和最后一個(gè)非黑色的點(diǎn)(X2,Y2),并記錄下來(lái)。最后對(duì)這兩個(gè)點(diǎn)的坐標(biāo)進(jìn)行求中間點(diǎn)操作,即可得到軸心的坐標(biāo)(X,Y),如圖2(e)所示。
圖2 油位計(jì)圖像指針處理圖
X=(X1+X2)/2
(5)
Y=(Y1+Y2)/2
(6)
指針的位置識(shí)別,大量學(xué)者采用了全局的霍夫變換[8,13]。該方法首先把坐標(biāo)轉(zhuǎn)換到極坐標(biāo)系下,極坐標(biāo)系下一條直線可以表示為:
ρ=xcosθ+ysinθ
(7)
其中,ρ表示原點(diǎn)到直線的距離;θ表示直線垂線的傾斜角度。
然后把圖像邊緣上的每個(gè)點(diǎn)帶入式7進(jìn)行計(jì)算,并將結(jié)果計(jì)入累加器A(ρ,θ)。因?yàn)橥粭l直線上的點(diǎn)具有相同的ρ和θ,所以每計(jì)算出一對(duì)(ρ,θ),則A(ρ,θ)=A(ρ,θ)+1,最后取累加器中最大的值即可得出直線檢測(cè)結(jié)果。該方法需要對(duì)所有的邊緣點(diǎn)進(jìn)行計(jì)算,計(jì)算量大,且容易檢測(cè)很多不存在的直線,對(duì)后續(xù)的指針位置確定以及油位計(jì)讀數(shù)的準(zhǔn)確性產(chǎn)生較大的影響。
文中采用一種改進(jìn)的霍夫變換,首先根據(jù)檢測(cè)指針軸心的先序工作,判斷指針大致所在的位置,并用最小矩形框框出指針?biāo)诘腞OI;再在這個(gè)小范圍內(nèi)進(jìn)行霍夫變換以檢測(cè)指針直線,就可以極大地減少計(jì)算量。其次根據(jù)指針是最長(zhǎng)的這一特點(diǎn),對(duì)檢測(cè)結(jié)果進(jìn)行判斷,僅輸出顯示最長(zhǎng)的那條直線,即檢測(cè)到的指針,如圖2(f)所示。在檢測(cè)到指針后,可以得到直線的兩個(gè)端點(diǎn)的坐標(biāo),然后根據(jù)指針頭部到軸心的距離Lh要大于指針尾部到軸心的距離Le的條件(Lh>Le),得到指針頭部的坐標(biāo)為(P1,P2)。
與傳統(tǒng)霍夫變換相比,該方法通過(guò)對(duì)參數(shù)空間的限定來(lái)減小變換的搜索范圍,大大減少了存儲(chǔ)空間和計(jì)算量,從而提高了計(jì)算速度。
運(yùn)用角度法進(jìn)行油位計(jì)的讀數(shù)[14],油位計(jì)的起點(diǎn)、終點(diǎn)位置的確定相當(dāng)重要。通過(guò)觀察發(fā)現(xiàn),儀表刻度環(huán)上起點(diǎn)、終點(diǎn)處大都有紅色的矩形框,因此通過(guò)顏色分割[15-16]、輪廓面積的方法來(lái)得到起點(diǎn)終點(diǎn)的位置,具體步驟如下:
(1)將圖片由RGB轉(zhuǎn)換到HSV顏色空間;之所以選擇把圖片轉(zhuǎn)換到HSV顏色空間,是因?yàn)镠SV顏色空間更容易表示一種顏色,H值代表的色調(diào)基本上就可以確定某種顏色。
(2)根據(jù)紅色的H值,制作紅色的mask,并用mask與原圖像進(jìn)行betwise_and運(yùn)算得到感興趣區(qū)域圖像,如圖3(a)所示。
(3)得到的感興趣區(qū)域圖像中存在一些細(xì)小的干擾點(diǎn),需要進(jìn)行腐蝕操作,去除非感興趣的干擾點(diǎn),再進(jìn)行膨脹操作擴(kuò)大紅色區(qū)域的邊緣,結(jié)果如圖3(b)所示。
(4)運(yùn)用輪廓法把起點(diǎn)、終點(diǎn)的矩形標(biāo)記出來(lái),并求得矩形的質(zhì)心,則兩個(gè)質(zhì)心的坐標(biāo)對(duì)應(yīng)于起點(diǎn)、終點(diǎn)的位置坐標(biāo)(K1,D1),(K2,D2),結(jié)果在原圖上顯示,如圖3(c)所示。
圖3 油位計(jì)起始及終止位置確定過(guò)程
采用角度法[14]對(duì)指針式油位計(jì)進(jìn)行讀數(shù),根據(jù)前文求出的軸心坐標(biāo)(X,Y),指針位置(P1,P2),起點(diǎn)、終點(diǎn)坐標(biāo)為(K1,D1),(K2,D2)。通過(guò)向量夾角的方法可以求得刻度0和10之間的角度α,則帶刻度的表盤(pán)角度為360-α,油位計(jì)的每一刻度之間的夾角為γ:
γ=(360-α)/10
(8)
再根據(jù)計(jì)算得到的指針頭部坐標(biāo)(P1,P2)和起點(diǎn)、終點(diǎn)的位置(K1,D1),(K2,D2),計(jì)算出指針和0刻度線之間的夾角β,則油位計(jì)的讀數(shù)θ可以按照如下公式計(jì)算:
(9)
為了驗(yàn)證文中算法在不同光照條件下讀數(shù)的有效性,實(shí)驗(yàn)選取了不同光照下的儀表圖像(弱光照、強(qiáng)光照以及正常光照)來(lái)進(jìn)行實(shí)驗(yàn)。儀表圖像如圖4(a)所示,表1為不同光照條件下的讀數(shù)相較于人工讀數(shù)的誤差。
表1 不同光照條件下油位計(jì)讀數(shù)誤差分析
為了說(shuō)明文中讀數(shù)方法的有效性,實(shí)驗(yàn)選取了不同廠家生產(chǎn)的十張油位計(jì)圖像,它們的指針都指向不同的位置,計(jì)算儀表讀數(shù)與人工讀數(shù)之間的相對(duì)誤差以及讀數(shù)所需運(yùn)行時(shí)間;同時(shí)比較了文中讀數(shù)方法與采用全局霍夫變換方法[5-6]的性能。不同儀表識(shí)別結(jié)果如圖4(b)~(e)所示,程序讀數(shù)運(yùn)行時(shí)間和相對(duì)誤差分析見(jiàn)表2。
圖4 不同油位計(jì)的讀數(shù)識(shí)別結(jié)果
序號(hào)人工讀數(shù)文獻(xiàn)[5] 文獻(xiàn)[6]文中算法測(cè)量讀數(shù)相對(duì)誤差/%運(yùn)行時(shí)間/ms測(cè)量讀數(shù)相對(duì)誤差/%運(yùn)行時(shí)間/ms測(cè)量讀數(shù)相對(duì)誤差/%運(yùn)行時(shí)間/msa5.65.83.61505.752.71605.590.2070b0.010.041310800.0.38280850.0430060c3.63.570.831003.551.41203.580.5670d9.69.82.12109.761.72109.6050.0580
從表中數(shù)據(jù)分析可得,文獻(xiàn)[6]算法通過(guò)直方圖計(jì)算最佳閾值來(lái)進(jìn)行二值化預(yù)處理,然后使用霍夫變換檢測(cè)軸心,因?yàn)樵诙祷A(yù)處理時(shí)未考慮到光照條件對(duì)油位計(jì)讀數(shù)的影響,所以對(duì)采集時(shí)光照較暗的油位計(jì)進(jìn)行讀數(shù)誤差較大。文獻(xiàn)[5-6]均采用全局霍夫變換檢測(cè)軸心的方法,該方法依賴于參數(shù)的設(shè)定,檢測(cè)出的圓心位置可能不準(zhǔn)確,從而導(dǎo)致最終的讀數(shù)出現(xiàn)誤差較大。而利用文中算法進(jìn)行油位計(jì)的讀數(shù),在讀數(shù)相對(duì)誤差和讀數(shù)所需時(shí)間上都要優(yōu)于文獻(xiàn)[5-6]中的算法。主要是因?yàn)槲闹兴惴ㄔ趫D像預(yù)處理階段使用了同態(tài)濾波器等,可消除采集時(shí)光照強(qiáng)弱對(duì)于油位計(jì)圖像的影響,提高讀數(shù)的準(zhǔn)確性;提出的遍歷指針像素的方法可以很好地記錄下指針上的突變顏色,從而可以較準(zhǔn)確地檢測(cè)出指針軸心的位置,減少了計(jì)算搜索量;并且使用改進(jìn)的霍夫變換可以大大減少搜索指針位置的時(shí)間,提高程序讀數(shù)效率。
提出了一種改進(jìn)的指針式油位計(jì)讀數(shù)識(shí)別算法。該算法首先對(duì)油位計(jì)圖像進(jìn)行同態(tài)濾波、中值濾波等必要的圖像預(yù)處理操作以消除圖像采集過(guò)程中受到的光照以及噪聲影響,提高算法對(duì)不同光照的適應(yīng)性;然后對(duì)二值化和形態(tài)學(xué)操作處理后的油位計(jì)圖像進(jìn)行指針輪廓的查找,創(chuàng)新性地遍歷指針的顏色,記錄下非黑色區(qū)域的坐標(biāo),從而準(zhǔn)確得到油位計(jì)的軸心;根據(jù)軸心位置,可以大致確定包含油位計(jì)指針的感興趣區(qū)域,并在這個(gè)區(qū)域內(nèi)進(jìn)行霍夫變換來(lái)檢測(cè)指針,避免了對(duì)全局的邊緣點(diǎn)進(jìn)行搜索,大大減少了計(jì)算量和程序運(yùn)行的時(shí)間,提高了查找的準(zhǔn)確率;將油位計(jì)圖像轉(zhuǎn)換到HSV顏色空間下,因?yàn)橛臀挥?jì)起點(diǎn)、終點(diǎn)處為紅色,所以根據(jù)紅色的H值進(jìn)行起點(diǎn)、終點(diǎn)的分割,從而得出油位計(jì)的起點(diǎn)、終點(diǎn)的坐標(biāo)位置;最后根據(jù)角度法可以讀出油位計(jì)的讀數(shù)。實(shí)驗(yàn)結(jié)果表明,該算法具有較高的準(zhǔn)確率,程序運(yùn)行時(shí)間較短,且能夠適應(yīng)多種光照條件,有較高的魯棒性。
未來(lái)將進(jìn)一步研究從多種角度拍攝的油位計(jì)圖像,對(duì)它們進(jìn)行位置的矯正、特征的提取,實(shí)現(xiàn)多角度油位計(jì)圖像的自動(dòng)讀數(shù)識(shí)別。