?

基于Hough變換的指針式鐘表自動識別算法

2022-08-01 05:56姚河花才旦多杰祝小蘭
青海大學學報 2022年4期
關鍵詞:自動識別讀數指針

姚河花,田 玉,才旦多杰,祝小蘭

(青海大學計算機技術與應用系,青海 西寧 810016)

直線檢測是圖像處理的一個關鍵步驟,被廣泛應用于車道檢查、工業儀表識別、工業生產等領域[1-4]。隨著計算機技術的發展,利用計算機代替人工完成指針式儀表的讀數越來越重要。鐘表是計時裝置,同時也是測量和指示時間的精細儀器,在某些生產生活背景下,需要對指針式鐘表進行讀數。指針式儀表自動讀數識別常用的算法有差影法[5]、基于區域生長的方法[6]及基于Hough變換的算法等[7-11]。吳東潞等[7]利用Hough變換的原理提取出表盤上的圓弧特征,李娜等[8]對提取的像素點進行雙閾值Hough變換直線檢測。Hough變換的檢測方法被廣泛應用于直線及圓的檢測,該算法具有抗噪聲干擾及對曲線間斷不敏感的特性。本文結合Hough變換的原理提出一種基于Hough變換的指針式鐘表示數自動識別方法,通過Hough變換確定表盤位置,繼而完成表盤圖像的切割,利用Hough變換檢測表盤中的直線,從而確定指針的位置,最后根據指針的傾斜角與圖像空間坐標的關系,進一步確定鐘表的讀數。

1 Hough變換原理及應用

1.1 Hough基本原理

Hough既可以用來檢測圓,也可以檢測直線。Hough變換的基本原理是將空間坐標系上的點投影到參數空間中,通過觀察參數空間里曲線交點的情況來判斷要提取特征的方程。

1.2 Hough變換檢測直線

在極坐標系ρ-θ中,對于平面上的一個點(x,y)來說,通過該點的直線集可表示為ρ=xcosθ+ysinθ,所有(r,θ)連在一起可連成一條正弦曲線。過不同點的正弦曲線若有交點,那么這些點就可連成一條直線。計算過每一個交點的直線數,設置一個峰值,只要大于該峰值即可判斷這些點構成了一條線段,從而得出線段方程(圖1)。

圖1 直角坐標到極坐標的轉換Fig.1 Conversion from rectangular coordinates to polar coordinates

1.3 Hough變換檢測圓

Hough變換檢測圓的基本原理是將圖像空間轉換到參數空間。在圖像空間中,假設圓心坐標為(a,b),半徑為r,則圓的一般方程為:

(x-a)2+(y-b)2=r2

(1)

參數空間中圓心為(x,y),半徑為r的圓的方程為:

(a-x)2+(b-y)2=r2

(2)

公式(2)將圖像空間的圓轉換為參數空間中的一個圓錐面,即圖像空間中確定的半徑為r的圓,圓周上的所有像素點在參數空間中對應為r相同,a、b不同的一系列圓錐的集合(圖2),則同一圓周上的像素點對應于參數空間中的圓錐面必相交于一點[12]。

圖2 原圖像空間與Hough變換參數空間對應圖Fig.2 Corresponding diagram between the original image space and Hough space

2 指針式鐘表示數自動識別算法設計

指針式鐘表基于Hough變換的指針式鐘表示數自動識別算法流程見圖3。

圖3 指針式鐘表示數自動讀取流程Fig.3 Automatic pointer clock reading process

2.1 圖像預處理

一般情況下,通過攝像機等采集到的圖像多為彩色圖像,將彩色圖像轉換為灰度圖像,可以加快圖像的計算速度,減少計算量。本文采用加權灰度平均化進行灰度轉換[13],計算方法如公式(3):

f(i,j)=0.299*R(i,j)+0.587*G(i,j)+0.114*B(i,j)

(3)

式中:R(i,j)、G(i,j)和B(i,j)分別表示圖像(i,j)處R(紅)、G(綠)和B(藍)3個通道顏色分量對應的值。

對灰度化后的圖像進行二值化,二值化的閾值通過最大類間方差(也稱為Otsu法或大律法)算法[14]計算得到,該算法是利用圖像的像素灰度分布直方圖,并在最小二乘法的理論基礎上推導出來的一種自適應的閾值,處理效果見圖4。

圖4 原圖與處理圖對比Fig.4 Comparison of original and processing images

2.2 邊緣檢測

邊緣是圖像局部亮度變化最明顯的部分,是圖像分割、特征提取、目標識別等領域的重要依據,常用的邊緣檢測算子為Roberts算子、Prewitt算子、Sobel算子和Canny算子等。為了比較上述4種算子的邊緣檢測效果,利用MATLAB工具箱對其進行仿真,仿真實驗結果見圖5。

圖5 各類表盤邊緣檢測效果對比圖Fig.5 Comparison of edge detection effects of various dials

從仿真結果可以看出,Canny算子能夠檢測到更多的邊緣信息,對細節信息保留得更好,但存在較多的冗余邊緣信息。而Prewitt算子和Roberts算子、Sobel算子相比較Roberts算子能夠對噪聲起到平滑作用,因Sobel算子存在權重,所以比Prewitt算子的定位精度更高[13]。因此,本文選用Sobel算子進行邊緣檢測。

2.3 Hough變換表盤特征提取

對使用Sobel算子邊緣檢測后獲得的圖像應用Hough變換進行表盤特征提取。用Hough變換檢測出圓的圓心,圓心坐標為(c1,c2),半徑為r,I(i,j)為圖像中像素點的灰度值。根據公式(4)將圖像中大于半徑的部分設置為白色,只保留Hough變換檢測的圓以內的部分,結果見圖6。

圖6 Hough變換濾除圓盤外效果圖Fig.6 Effects of Hough transform after removing the disc

(4)

2.4 鐘表指針位置獲取

提取指針特征是鐘表時刻識別最關鍵的一步。對于鐘表圖片而言,秒針最長,分針次之,時針最短。利用Hough變換檢測直線的原理,檢測圖片中的直線,檢測到線的同時得到線段的兩個端點,通過端點坐標值計算線段的長度,對線段按長度進行排序,最長的直線對應秒針,次長的直線為分針,分別計算圓心到第3長、第4長兩條直線的距離(檢測到的直線端點不一定落在圓心處),距離較短的直線對應時針,圖7為通過Hough變換檢測指針示意圖。

圖7 指針位置定位圖Fig.7 Pointer position

2.5 指針識別示值與讀數計算

指針式鐘表讀數自動識別的核心是確定一個精確度較高且適用性較強的儀表讀數自動識別的計算方法,本文采用角度法[11-12]實現示數的自動計算。以Hough變換檢測出的圓心O作為直角坐標系的原點建立直角坐標系和圖像的空間坐標系。MATLAB中默認的圖像空間坐標系原點在左上角,x軸水平向下為正方向,y軸水平向右為正方向。在傳統坐標系中,x軸水平向右為正方向,y軸水平向上為正方向。而在鐘表圖片中,通常以指針與12點刻度線的夾角作為讀數依據,為了方便計算,本文以3點方向作為讀數的基準方向,所建坐標系如圖8所示。

圖8 鐘表指針坐標系Fig.8 Coordinate system of clock pointer

從圖8可以看出,坐標系將整個表盤分成4個象限。根據Hough變換檢測直線時得到的端點坐標可以計算直線的斜率及傾斜角,假設直線的端點坐標為A(p1x,p1y)、B(p2x,p2y),其中B(p2x,p2y)為兩端點中距離圓心較遠的點,直線斜率及傾斜角的計算公式如下:

(5)

α=arctan (k)

(6)

式中:k為直線在x-y直角坐標系的斜率,α為直線與x軸正方向的夾角(α∈[-90°,90°]),則指針與3點刻度線的夾角θ(θ∈[0°,180°])可由公式(7)計算得出。

(7)

當B(p2x,p2y)落在X-Y坐標系的坐標軸上時,θ的取值如公式(8)所示:

(8)

根據公式(7)得到指針與3點刻度線的夾角θ后,進行讀數。時針每30°為一個區間范圍,分針和秒針每6°為一個區間范圍,讀數公式如下:

(9)

(10)

(11)

式中:T1、T2、T3分別為秒針、分針、時針的讀數。

由于標準時間的格式為XX:XX:XX,當計算得到T1、T2中的某個值為個位數時,在前面空位補0。

3 實驗結果與分析

常見的鐘表主要包括羅馬數字刻度鐘表、阿拉伯數字刻度鐘表及無數字刻度鐘表。為了驗證各類鐘表的識別準確性,分別采集以上3類鐘表的圖片構成樣本數據集。樣本數據集共包括3類鐘表圖片200張,其中羅馬數字刻度鐘表和阿拉伯數字刻度鐘表圖片各70張,無數字刻度鐘表圖片60張。為了方便處理,將采集到的圖片統一歸一化為230×230,選取的鐘表圖片無傾斜、不均勻縮放等情況。

圖9 樣本數據集圖片Fig.9 Images of samples

在Window 10[處理器為Intel(R)]Core(TM)i7-8586U CPU 1.8 GHZ,內存8 GB系統下使用MATLAB 2016 a對鐘表圖像進行處理。實驗證明,通過Hough變換能夠進行簡單鐘表圖片的基本讀數,選取其中10張圖片進行測試,測試結果見表1。

表1 指針示數識別結果分析Tab.1 Analysis of recognition results of pointer indication

從表1可以看出,指針示數對阿拉伯數字刻度鐘表和無數字刻度鐘表均能夠較正確地識別,由于只考慮了指針的長度特征,導致部分圖片的秒針和分針容易混淆;羅馬數字刻度鐘表由于受羅馬數字刻度的影響,識別率較低。

4 討論與結論

Hough變換多用于指針式儀表的自動識別[2,7-11],許麗等[15]經過分析指針轉動和圖像特性,提出了基于Hough變換的指針角度識別;姚洋等[16]對Canny檢測算子進行改進,結合Hough變換進行儀表圖像的識別。本文首次提出基于Hough變換的指針式鐘表示數的自動識別算法,借助二值化、邊緣檢測等數字圖像處理的知識完成指針式鐘表的預處理,之后應用Hough變換檢測圓和直線的原理提取表盤特征和指針,根據指針的長度和斜率確定指針所在的位置和象限,以3點方向為基準,確定指針的示數。實驗證明本文的算法能較準確地識別鐘表圖片示數,但對于羅馬數字刻度鐘表、二值針鐘表、表盤光照不均勻及表盤傾斜等情況下的識別效果有待進一步研究。

猜你喜歡
自動識別讀數指針
基于數據挖掘的船舶航跡自動識別系統
基于VR技術的X射線圖像安檢危險品自動識別
“0”的讀法和要領
垂懸指針檢測與防御方法*
關于游標卡尺讀數問題易錯點的剖析
船舶自動識別系統對船舶救助的影響
一種基于卷積神經網絡的人臉表情自動識別方法
為什么表的指針都按照順時針方向轉動
儀器工作原理決定了儀器的讀數規則
淺析C語言指針
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合