姚 洋, 彭道剛, 王志萍
(上海電力大學(xué) 自動(dòng)化工程學(xué)院, 上海 200090)
指針式儀表(比如溫度表、流量表、濕度表、壓力表等)作為一種結(jié)構(gòu)簡單、成本低、安裝方便且可靠性較高的常用測(cè)量儀器,能夠非常直觀地顯示出待測(cè)數(shù)據(jù)的變化,因此被廣泛應(yīng)用于工業(yè)生產(chǎn)、國防軍工等領(lǐng)域[1]。如何更加快速、精確地獲取它們的測(cè)量數(shù)據(jù)是其應(yīng)用領(lǐng)域中亟需解決的問題[2-6]。
在圖像獲取過程中,拍攝角度、儀表位置、污漬及光照不均勻等因素會(huì)導(dǎo)致圖像存在大量噪聲,嚴(yán)重影響儀表讀數(shù)識(shí)別精度[7];且圖像邊緣信息是圖像中的關(guān)鍵信息,對(duì)物體識(shí)別具有重要意義,對(duì)目標(biāo)輪廓及區(qū)域內(nèi)相對(duì)位置的檢測(cè)結(jié)果將直接影響圖像識(shí)別精度。因此,邊緣檢測(cè)技術(shù)是儀表圖像分析領(lǐng)域研究的重點(diǎn)和難點(diǎn)。
傳統(tǒng)的邊緣檢測(cè)算法有Sobel算法、Log算法、Krich算法、Roberts算法等,但其處理效果并不理想[8]。1986年,CANNY J首次提出了Canny邊緣檢測(cè)算法(以下簡稱“Canny算法”),能有效彌補(bǔ)其他傳統(tǒng)邊緣檢測(cè)算法的不足,因此Canny算法被認(rèn)定為邊緣檢測(cè)方法中較好的算法[9]。但其缺點(diǎn)是對(duì)噪聲魯棒性低,檢測(cè)圖像會(huì)多處出現(xiàn)偽邊緣、孤立邊緣點(diǎn)等問題,影響后續(xù)的檢測(cè)精度。
為解決以上問題,本文提出了一種改進(jìn)的Canny算法,采用5×5鄰域計(jì)算各像素點(diǎn)梯度幅值,并通過自動(dòng)選擇最佳雙閾值的方法提高邊緣檢測(cè)精度,再結(jié)合Hough變換技術(shù)進(jìn)行儀表指針位置定位,得到了較好的應(yīng)用效果。
指針式儀表采用圖像預(yù)處理技術(shù)的目的是為了將表盤區(qū)域從復(fù)雜背景中提取出來,從而更加精確地獲得儀表的讀數(shù)。預(yù)處理技術(shù)主要包括:縮放和變換、灰度化、去噪和平滑、膨脹和腐蝕。在對(duì)電廠儀表識(shí)別過程中,本文采用的預(yù)處理操作有灰度化、去噪和平滑。
灰度化能夠減少圖像處理過程中CPU的使用頻率,加快計(jì)算速度,減少計(jì)算時(shí)間。設(shè)R代表紅色像素,G代表綠色像素,B代表藍(lán)色像素,將原圖轉(zhuǎn)換為灰度圖的計(jì)算公式為
(1)
電廠儀表的圖像噪聲多屬于正態(tài)分布。高斯濾波適用于消除正態(tài)分布噪聲。高斯濾波是對(duì)整幅圖像進(jìn)行加權(quán)平均的過程,每一個(gè)像素點(diǎn)的值,都由其本身和鄰域內(nèi)的其他像素值經(jīng)過加權(quán)平均后得到,其濾波結(jié)果直接影響邊緣檢測(cè)效果以及儀表讀數(shù)識(shí)別結(jié)果。
本文以電廠中的壓力表作為測(cè)試對(duì)象,將復(fù)雜環(huán)境下的壓力表根據(jù)圓形模板匹配進(jìn)行剪切保存,并把保存下來的壓力表轉(zhuǎn)化為灰度圖,再采用高斯濾波去除噪聲。圖1為壓力表提取后的灰度圖和高斯濾波圖。由圖1可知,經(jīng)過高斯濾波,儀表讀數(shù)更加易識(shí)別。
圖1 壓力表的灰度圖和高斯濾波圖
傳統(tǒng)Canny算法需要根據(jù)圖像的濾波情況手動(dòng)輸入全局高低閾值,高低閾值的選定對(duì)圖像邊緣處理的效果影響甚大。閾值的選擇需要工程師憑借對(duì)圖像處理的理解及經(jīng)驗(yàn)積累,才能選出大概的高低閾值,且其閾值有可能不是最優(yōu)值。
傳統(tǒng)Canny算法利用2×2鄰域一階偏導(dǎo)的有限差分進(jìn)行圖像平滑后來計(jì)算梯度幅值和梯度方向,用x和y分別標(biāo)識(shí)橫向和縱向,G[i,j],G[i,j+1],G[i+1,j],G[i+1,j+1]分別代表G[i,j]像素的周圍像素點(diǎn),則其方向?qū)?yīng)的偏微分公式為
G[i+1,j+1]-G[i+1,j]}
(2)
G[i+1,j+1]-G[i,j+1]}
(3)
梯度幅值公式為
(4)
梯度方向公式為
(5)
對(duì)圖1(b)采用傳統(tǒng)Canny算法進(jìn)行邊緣檢測(cè)及Hough變換檢測(cè),結(jié)果如圖2所示。
圖2 傳統(tǒng)Canny算法邊緣檢測(cè)及Hough變換檢測(cè)后的壓力表圖像
由圖2可以看出,由于傳統(tǒng)Canny算法設(shè)置的閾值過低,產(chǎn)生了偽邊緣信息,Hough變換檢測(cè)指針時(shí)出現(xiàn)5條直線(其中1條極短,縮小后顯示不明顯),影響Hough變換直線檢測(cè)和圓檢測(cè)的準(zhǔn)確性,產(chǎn)生了誤差。其對(duì)應(yīng)的坐標(biāo)和儀表轉(zhuǎn)動(dòng)軸心的坐標(biāo)顯示在Win32控制臺(tái)上,如圖3所示。
圖3 圓心坐標(biāo)和直線坐標(biāo)
圖3中,[173,177]為檢測(cè)出的儀表轉(zhuǎn)動(dòng)軸心點(diǎn),其他坐標(biāo)為儀表指針檢測(cè)的始終點(diǎn)。為保留靠近指針的2條直線,其他3條直線要去除掉,需依次遍歷Hough直線上的所有點(diǎn),根據(jù)距離圓心最近的直線,保留其中2條直線。
2.2.1 改進(jìn)的梯度幅值計(jì)算方法
本文改進(jìn)了傳統(tǒng)Canny算法的濾波器和高低閾值的人工設(shè)置,將傳統(tǒng)的2×2鄰域增加至5×5鄰域。G[i,j],G[i,j+1],G[i,j+2],G[i+1,j],G[i+1,j+1],G[i+1,j+2],G[i+2,j],G[i+2,j+1],G[i+2,j+2]分別代表圖像像素以G[i,j]為中心的鄰域的像素點(diǎn)。通過計(jì)算0°,45°,90°,135°等8個(gè)方向的一階偏導(dǎo)數(shù)有限差分來確定像素梯度幅值。設(shè)d1,d1是像素中心點(diǎn)G[i,j]與鄰域像素點(diǎn)的差值。算法如下。
x方向偏導(dǎo)數(shù)為
(6)
y方向偏導(dǎo)數(shù)為
(7)
45°方向偏導(dǎo)數(shù)為
(8)
135°方向偏導(dǎo)數(shù)為
(9)
梯度幅值為
(10)
梯度方向?yàn)?/p>
(11)
采用5×5鄰域的濾波器可以對(duì)梯度幅值陣列中的任一像素沿梯度方向進(jìn)行梯度幅值的插值。通過對(duì)傳統(tǒng)Canny算法濾波器的改進(jìn)可以檢測(cè)梯度幅值的極大值點(diǎn),從而有效抑制噪聲干擾。
2.2.2 改進(jìn)的自適應(yīng)雙閾值選擇
在電廠儀表巡檢時(shí),電力巡檢機(jī)器人采用自動(dòng)變焦技術(shù)使儀表圖像變得清晰,并保存清晰圖像。儀表像素部分在圖像像素中所占比例有大小之分:大比例儀表圖像具有邊緣信息少、梯度分布不分散的特點(diǎn);小比例儀表圖像具有邊緣信息豐富、梯度幅度分布分散的特點(diǎn)。傳統(tǒng)Canny算法中高低閾值是固定不變的,采用傳統(tǒng)Canny算法的巡檢機(jī)器人在電廠環(huán)境中得不到應(yīng)用。根據(jù)電廠環(huán)境的特殊情況,本文對(duì)傳統(tǒng)Canny算法進(jìn)行了自適應(yīng)高低閾值的改進(jìn)。
在改進(jìn)自適應(yīng)雙閾值算法中,定義圖像梯度幅度為I[i,j],梯度幅度均值為Iave;Th和Tl分別表示要求的高低閾值;σ表示圖像的標(biāo)準(zhǔn)差,K是它的系數(shù),取值范圍為K∈(1.2,1.6)。將大比例儀表圖像和小比例儀表圖像的自適應(yīng)雙閾值選擇整合為一種算法,該算法過程如下。
(1) 判斷像素梯度幅度I[i,j]是否小于Iave的15%~20%,如果判斷結(jié)果為是,則直接將該像素標(biāo)記為偽邊緣點(diǎn)。
(2) 如果滿足I(i,j)大于Iave的15%~20%,則根據(jù)如下公式可計(jì)算出圖像的高低閾值
(12)
(13)
Th=Iave+Kσ
(14)
(15)
當(dāng)儀表圖像檢測(cè)邊緣信息時(shí),由于邊緣信息比較豐富且梯度幅度比較分散,所以σ的值會(huì)更大。這時(shí)應(yīng)該減小K的值,目的是去除更多的偽邊緣信息;反之,若σ值越小,則應(yīng)增大K值。
本文在VS2015軟件搭載OpenCV3.4庫作為算法實(shí)現(xiàn)的操作平臺(tái),采用改進(jìn)Canny算法檢測(cè)儀表圖像邊緣,并與傳統(tǒng)Canny算法檢測(cè)做對(duì)比測(cè)試。由圖3可以看出,傳統(tǒng)Canny算法檢測(cè)的邊緣信息出現(xiàn)偽邊緣,進(jìn)而Hough檢測(cè)出來的儀表出現(xiàn)了5條指針的直線邊緣,對(duì)儀表識(shí)別出現(xiàn)了誤差。
由于發(fā)電廠中的儀表圖像信息的特點(diǎn)是邊緣信息較少,梯度幅度和平均值都較小,所以將K值設(shè)置為1.5。
由式(12)~式(15)可以推導(dǎo)出改進(jìn)自適應(yīng)雙閾值,不需要人為設(shè)置Canny算法的高低閾值。對(duì)壓力表的灰度圖采用改進(jìn)Canny算法進(jìn)行邊緣檢測(cè)及Hough變換檢測(cè),結(jié)果如圖4所示。
圖4 改進(jìn)Canny算法邊緣檢測(cè)及Hough變換檢測(cè)后的壓力表圖像
由圖4可以看出,改進(jìn)Canny算法提高了儀表的邊緣檢測(cè)精度,使Hough變換檢測(cè)直線和圓邊緣更加準(zhǔn)確。改進(jìn)Canny算法自動(dòng)設(shè)置閾值,且是最優(yōu)閾值與傳統(tǒng)Canny算法相比,縮短了儀表識(shí)別算法的運(yùn)行時(shí)間。改進(jìn)Canny算法保留了原圖像的邊緣,比傳統(tǒng)方法具有更好的邊緣檢測(cè)效果,可應(yīng)用于電力巡檢機(jī)器人平臺(tái)。
電廠中的溫度表經(jīng)過改進(jìn)Canny算法邊緣檢測(cè)及Hough變換檢測(cè)前后的效果圖如圖5所示。由圖5可知,改進(jìn)Canny算法及Hough變換檢測(cè)出來的儀表大致一樣,都是由圓輪廓和指針組成。
圖5 改進(jìn)Canny算法邊緣檢測(cè)及Hough變換檢測(cè)前后的溫度表圖像
在改進(jìn)Canny算法檢測(cè)儀表邊緣信息圖像的基礎(chǔ)上,采用Hough變換是進(jìn)行中心特征點(diǎn)提取最直接的算法。該算法根據(jù)數(shù)學(xué)模型上的參數(shù)空間計(jì)算累積結(jié)果的最大值,檢測(cè)出特定的直線和圓。該過程稱為Hough變換。Hough變換技術(shù)可以有效地抑制圖像中的特征點(diǎn)斷裂現(xiàn)象,同時(shí)也有非常好的容錯(cuò)性和魯棒性。本文采用這種儀表識(shí)別算法來進(jìn)行指針位置定位。
指針儀表識(shí)別算法主要是采用儀表刻度盤上的最大量程和初始量程之間的角度和指針中心線的角度之間的關(guān)系來計(jì)算出指針?biāo)傅膬x表量程讀數(shù)[10]。以Hough圓檢測(cè)出的圓心作為直角坐標(biāo)系的原點(diǎn)建立直角坐標(biāo)系和圖像的空間坐標(biāo)系,假設(shè)儀表的最小和最大量程范圍為(Lmin,Lmax),由之前的Hough圓檢測(cè)出的圓心為原點(diǎn)O,檢測(cè)出的圓心為儀表表盤轉(zhuǎn)動(dòng)的軸心。
(16)
Δφ與ΔφM可分別表示為
(17)
(18)
根據(jù)式(16)~式(18)可以得出,每個(gè)儀表的初始量程和最大量程之間的角度是確定且已知的,檢測(cè)出的儀表指針與儀表初量程刻度之間的夾角φ成為得到儀表數(shù)值的關(guān)鍵所在。根據(jù)儀表指針?biāo)惴ㄗ鴺?biāo)系UV和XY之間的關(guān)系,可以由指針與空間坐標(biāo)系形成的夾角θ得出儀表指針和初始量程刻度之間的夾角φ。
壓力表指針?biāo)惴ㄗ鴺?biāo)系如圖6所示。
圖6 壓力表指針?biāo)惴ㄗ鴺?biāo)系
以Hough圓檢測(cè)的圓心為中心像素點(diǎn)建立直角坐標(biāo)系,并劃分為4個(gè)區(qū)域,表明指針的活動(dòng)范圍。
儀表指針的活動(dòng)區(qū)域如圖7所示。
圖7 儀表指針的活動(dòng)區(qū)域
不同區(qū)域中φ與θ的關(guān)系分析如下。
φ=90°+θ
(19)
φ=90°-θ
(20)
90°-θ=360°-φ
(21)
90°-θ+360°-φ=180°
φ=270°-θ
(22)
通過Hough變換檢測(cè)的儀表指針落在哪個(gè)區(qū)域,根據(jù)式(19)~式(22)推導(dǎo)出儀表指針與X軸負(fù)方向的夾角φ,再根據(jù)對(duì)應(yīng)區(qū)域的公式算出Δφ,最后由式(16)推導(dǎo)出儀表的指針讀數(shù)I。
設(shè)人工讀數(shù)為I0,算法測(cè)量值為I,儀表讀數(shù)的識(shí)別率為R。儀表讀數(shù)識(shí)別率的公式為
(23)
在電廠測(cè)試環(huán)境下,考慮表盤污漬、光照和空氣污染等因素影響,測(cè)試該算法的可行性和穩(wěn)定性。本文對(duì)電廠儀表的50張圖片進(jìn)行了分析,提取了10張圖片作為樣本,分別采用Canny傳統(tǒng)算法、改進(jìn)Canny算法與人工讀數(shù)進(jìn)行比較,結(jié)果如表1所示。根據(jù)式(23)可計(jì)算出改進(jìn)Canny算法所得到的儀表讀數(shù)識(shí)別率可達(dá)95%。
表1 Canny傳統(tǒng)算法、改進(jìn)Canny算法與人工讀數(shù)識(shí)別比較
誤差的主要來源是,在目標(biāo)檢測(cè)過程中,表盤的指針和內(nèi)輪廓會(huì)發(fā)生變形,導(dǎo)致部分刻度間距拉大或者縮小,以至在判讀刻度過程中,如果指針靠近發(fā)生偏移的刻度,讀數(shù)會(huì)偏大或者偏小。另外,在提取儀表讀數(shù)過程中,如果存在較大的干擾光源,會(huì)使圖像增強(qiáng)效果變差,無法完全濾除反光影像,導(dǎo)致后續(xù)表盤部分的提取發(fā)生較大的偏差。
本文在對(duì)傳統(tǒng)Canny算法檢測(cè)邊緣研究的基礎(chǔ)上,提出改進(jìn)Canny算法將改進(jìn)濾波器和改進(jìn)自適應(yīng)閾值選擇算法應(yīng)用于電力巡檢儀表圖像的邊緣檢測(cè)中,通過實(shí)驗(yàn)測(cè)試得到清晰的邊緣檢測(cè)圖像。特別是在不同噪聲環(huán)境下,該算法避免了邊緣信息不足造成的儀表讀數(shù)不精確的問題,提升了儀表讀數(shù)的識(shí)別精度。本文中所建立的改進(jìn)Canny算法邊緣檢測(cè)及Hough變換檢測(cè)方法,經(jīng)實(shí)驗(yàn)測(cè)試穩(wěn)定可靠,儀表讀數(shù)識(shí)別率可達(dá)95%,與人工讀數(shù)的誤差較小。