?

基于OpenCV的手持式和面板式數字儀表自動采集系統*

2014-03-14 03:26王家澍姜鳴李上海大學上海市質量監督檢驗技術研究院
上海計量測試 2014年2期
關鍵詞:圖像識別字符顯示屏

王家澍姜 鳴李 宸/ 1. 上海大學,. 上海市質量監督檢驗技術研究院

基于OpenCV的手持式和面板式數字儀表自動采集系統*

王家澍1,2姜 鳴2李 宸2/ 1. 上海大學,2. 上海市質量監督檢驗技術研究院

利用OpenCV計算機視覺庫,通過圖像/視頻感知設備對手持式和面板式數字儀表的顯示區域進行圖像采集,在對圖像幾何校正、自適應閾值二值化等預處理后,使用霍夫變換校正傾斜字體,隨后對圖像先垂直再水平分割,進行圖像歸一化處理,利用七段碼的12個特征值經過訓練構成神經網絡,最終完成對字符的識別。

OpenCV;數字儀表;自動采集系統

0 引言

隨著自動化技術的發展,帶有程控接口的數字儀表已經越來越多地使用于自動校準技術,顯著提高了工作效率和測試準確度。但市場上仍有數量眾多的手持式和面板式儀表,無法由程控接口進行完整的“控、講、聽”操作。通常習慣把計算機稱為“控者”,把能夠發送數據的設備稱為“講者”,把接收數據的設備稱為“聽者”。本文介紹的基于OpenCV圖像識別技術,可解決其中關鍵的“聽”問題,使手持式和面板式儀表的測量值可以由計算機自動獲取。

1 OpenCV簡介

OpenCV是Intel資助的開源計算機視覺庫,具有大量通用的計算機視覺算法,擁有強大的圖像處理功能,實現圖像采集和處理。OpenCV擁有如下優點:

1)主要由一系列C函數和少量C++函數構成,同時也提供對C#、Ruby等語言的支持;

2)使用目的是開發實時應用程序,可在Windows、Linux或MAC OS操作系統間進行移植;

3)獨立于操作系統、硬件和圖形管理器;

4)具有通用的圖像/視頻載入、保存和模塊獲??;

5)具有強大的圖像及矩陣計算能力,提高開發效率和運行可靠性;

6)所有算法都是基于封裝在IPL的動態數據結構,且多數函數對Intel處理器指令代碼進行了優化。

OpenCV在圖像/視頻處理方面突出的優點是在計算機與攝像頭之間提供一個方便的軟件接口,可以采用簡單的函數來實現對攝像頭的驅動和圖像采集,且由于它集成了DirectShow技術,視頻采集時可以達到很高的實時性能。

2 圖像識別流程

本系統在VS 2008平臺下使用C#調用OpenCV庫函數,而能供C#使用的OpenCV庫為Emgu CV。測試的對象為數字多用表。

整個圖像識別過程可以分成圖像捕獲、圖像幾何校正、獲取顯示區域圖像、自適應閥值二值化、圖像垂直校準和圖像識別六個部分。

2.1 圖像的捕獲

通過調用網絡攝像頭的接口程序,在程序中利用OpenCamera()函數打開攝像頭。之后通過調用GetcurrentIamge()函數以BMP格式抓取1幀圖像。由于需要對每個數據進行不確定度評定,所以每一點都要連續采集10個數據,即10幀圖像。經多次實驗確認,從捕獲1幀圖像至完成最終識別用時小于60 ms,所以對一個數值進行10次圖像識別可在1 s內完成。

2.2 圖像幾何校正

數字多用表的顯示屏外有一層塑料材質的保護屏,因此會產生反光現象。如果攝像頭與被校數字多用表的顯示屏成垂直狀態時(如圖1),數字多用表的顯示屏上會有攝像頭的陰影(如圖2),且此陰影重疊在顯示數據上,無法通過濾波或二值化等方法完全去除。通過多次實驗發現,攝像頭只要能與顯示屏有一定的偏差角度,即可解決(見圖3和圖4)。

圖1 垂直采集

圖2 有陰影

圖3 傾斜采集

圖4 無陰影

但是新的問題也由此產生。正因為攝像頭與顯示屏有了夾角,所以由攝像頭捕獲的圖像從原有的長方形變成了梯形,產生圖像失真(見圖5)。而該梯形失真將直接導致小數點區域的錯誤分割。

圖5 梯形失真

針對這一情況,需要對圖像進行如下處理:先通過比較圖像中顯示屏上下兩條邊的長度差,得到需要校正的像素點及方向;再利用圖像插值算法把梯形圖像還原為原來的長方形。即通過GetPerspective Transform()對應點列表計算變換矩陣。它形成的是四個點的數組,方便把源圖像的四個角映射到目標圖像上。然后利用WarpPerspective()函數實現最終的矩陣變換。

2.3 獲取顯示區域圖像

攝像頭獲取的圖像要比數字多用表的顯示屏大,因此需先在圖像中對顯示屏區域進行定位,才能進行下一步的圖像處理。由于目前數字多用表的顯示屏多采用單色液晶屏幕,其底色、顯示色及邊框產生的陰影在平面圖像中區分度不高。而且為方便人工觀察,有些型號的數字多用表把顯示字體做得非常大,基本撐滿了整個顯示屏高度,使得攝像頭獲取的圖像中,顯示字體已經和邊框連接在一起,這對單個字符區域的勾勒和劃分帶來極大困難。為使系統能更好對顯示屏區域進行定位,需要在系統測試之前先獲取一幅數字多用表關機狀態圖像。此時,顯示屏上只有單色液晶屏幕的底色,且顏色比較一致,這樣就能使系統自動定位其顯示屏區域,并能很好地保證定位區域的最大化,防止顯示屏區域被錯誤劃分。

2.4 自適應閥值二值化

攝像頭獲取的圖像信息是彩色的,每個像素點由R、G、B(即紅色、綠色和藍色)三個分量組成。直接采用彩色圖像處理會大大增加系統的計算量,很難達到實時、快速識別的目的。YUV是編譯顏色空間的種類,其中Y表示明亮度,U表示色度,V表示濃度。Y分量物理意義是點的亮度,反映亮度等級。

依據RGB三原色和YUV顏色空間的變化關系,建立如下公式:

如果把不同深度的顏色作為一色的話,灰度圖像就不止黑白兩色。通常使用的灰度圖由256種不同灰度級組成。當然,對轉換后的灰度圖像還需進行去噪濾波處理,從而對圖像進行局部增強,改善圖像的灰度比。

二值化后的圖像具有存儲空間小、處理速度快等優點。而且用二值化的圖像比灰度化的圖像具有更好的相關性能和去噪作用。在圖像的符號匹配方面,二值化比灰度化更適合用符號來表達。在進行二值化前,還需要對圖像有一定的預處理,之后再對直方圖選取合適的閾值。

系統采用自適應閾值二值化方法。因為全局二值化是設定一個全局的閾值T,然后根據T將圖像的數據分成大于T和小于T的像素群。這種方法簡單實用,但在表現圖像細節方面存在很大缺陷。而局部二值化是按照一定的規則將整幅圖像劃分為N個窗口,對這N個窗口中的每一個窗口再按照一個統一的閾值T′將該窗口內的像素劃分為兩部分,再進行二值化處理。T′是沒有經過合理運算得到,一般是取該窗口的平局值。這就導致在每一個窗口內仍然出現的是全局二值化的缺陷。而自適應閾值二值化是把閾值本身作為一個變量。閾值T(X,Y)在每個像素點都不同,通過計算像素點周圍的b×b區域的加權平均,然后減去一個常數來得到自適應閾值。在程序中使用以下命令來實現。

Image<Gray, Byte> smoothed = image. ThresholdAdaptive(new Gray(255),

Emgu.CV.CvEnum.ADAPTIVE_THRESHOLD _TYPE.CV_ADAPTIVE_THRESH_MEAN_C,

Emgu.CV.CvEnum.THRESH.CV_THRESH_ BINARY, 41, new Gray(7));

其中CV_ADAPTIVE_THRESH_MEAN_C是對區域的所有像素平均加權,CV_THRESH_BINARY則是閾值類型。

2.5 圖像垂直校準

由于目前使用的數字多用表型號各異,其顯示數字的形式也不盡相同。有些顯示數字是完全垂直的,而有些顯示數字向右稍微傾斜一點,這就影響了對小數點位置判斷的準確率,從而又影響到對后繼數字的識別。為此,需要對這個圖像進行垂直化校準。實現方法是找出數字中的豎線,計算出該豎線和水平線的角度,對圖像進行相應的角度旋轉,從而保證處理后圖像中每個數字都是完全垂直。圖6所示的四位數字都以同一角度向左傾斜。

圖6 字體傾斜

利用霍夫變換進行檢測,其主要優點在于受噪聲和曲線間斷影響較小。在已知曲線形狀條件下,霍夫變換實際上是利用分散的邊緣點進行曲線逼近。其基本理論是二值圖像中的任何點都可能是一些候選直線集合的一部分。本系統先用HoughLines()函數得到與線段垂直的極坐標形式的線段圖,隨后使用GetExteriorAngleDegree()函數求得各線段的傾斜角度,并判斷該夾角是否大于60°。如果大于60°,則求出這些線段的平均傾角,并作為判斷是否進行修正依據。若要修正,則先調用GetPerspectiveTransform()函數計算出變換矩陣,再調用WarpPerspective()函數對圖像進行變換,從而達到圖像垂直校準的目的。使用霍夫變換的函數如下:

LineSegment2D[][] lines = smoothed. HoughLines(new Gray(50), new Gray(200), 1.0, 3.14 / 180, 50, 50.0, 10.0)

這條語句首先利用Canny算子定義了兩個上下限閾值,它可以對圖像進行提邊,以降低后續霍夫變換的計算量。然后設定像素分辨力和弧度分辨力,其次是設定構成線段的直線像素點的累計個數和最短線段的像素點數,最后給出線段分離間距,如果小于給定值,仍然可判定為一條線段。

2.6 圖像的識別

要識別整個圖像,需先對圖像中的每個數字進行單個識別。如果被檢數字多用表的顯示數字清晰正確,利用七段碼的四個特征數據就能很好地識別。但遇到筆劃有殘缺時,就有可能造成誤判。本系統引入神經網絡,除了要考慮七段碼的四個特征外,同時還考慮了八個圖像區域中的黑點成份,從而減少斷筆造成對識別正確性的影響。系統對每個型號的數字多用表都增加了訓練這一步驟,對經過訓練的字符圖像進行匹配識別,按匹配度最大原則,決定其唯一字符。沒有經過訓練的數字多用表,由于其八個圖像區的特征點未經學習,所以通過神經網絡的預測值會比較低,可信度變差,只能用七段碼的四個特征數據來判斷。

無論對數字多用表進行訓練與否,都先要對圖像進行垂直和水平分割,再對圖像進行歸一化處理,采用提取特征向量方法,利用七段碼的特征數據來進行識別,從而保證識別過程中的準確性與快速性。2.6.1 垂直和水平分割

基本方法是對二值化后的圖像統計橫豎亮點個數,然后先垂直投影分割,再進行水平投影分割。利用函數公式:

其中:p(x,y)為x,y點處的灰度值,m為整個矩形框垂直方向的像素點數量。

用字符之間間隔的特點,對字符圖像先進行垂直投影,相鄰字符之間間隔的投影值正好處于f(x)的波谷處,此處就為字符分割位置。同時,為了區分同一縱向但不同高度的字符,比如“1”和小數點,需要再進行水平投影。利用水平投影,可以得到f(y),找到相應的波谷進行水平方向分割。兩者結合,就可以得到單個字符的區域圖像。

2.6.2 圖像歸一化

為使圖像可抵抗幾何變換影響,還需找出圖像中的不變量,從而得知這些圖像原本就是一樣的或者是一個系列的,在完成字符分割后還要把圖像歸一化成32×16二值圖像。把整個歸一化后的字符區域全部像素作為特征,在圖7中把由虛線構成的8個網格作為8個特征數據,再加上A、B、C、D四線組成的“井字線”測得的線段數,總計形成了12個特征數據。

圖7 歸一化的二值圖像

2.6.3 神經網絡

利用OpenCV提供的神經網絡/多層感知器對特征數據進行訓練。本系統采用的神經網絡有一個輸入層、三個隱層和一個輸出層。其中每個隱層各有36個結點,輸入層有12個結點,對應歸一化后形成的12個特征值,輸出層則對應識別的結果。整個訓練過程由ANNMLPTrain()函數來完成,它生成的神經網絡數據可保存在XML格式的文件中,需要時可用ANNMLPLoad()函數將其調入。

字符識別就是將采集的特征數據經過神經網絡/感知器進行預測的過程,其中調用了ANNMPLPredict()函數。感知器根據訓練樣本得出的神經網絡對特征數據運算后,會按匹配的相似度輸出一組結果。在此結果中找出相似度最高的作為可能的結果。本方案中設定相似度大于95%才能認為可識別。

2.7 圖像識別流程

通過上述六大步驟,被校數字多用表的顯示數值可由計算機正確識別,圖8描述了整個圖像識別的流程。

圖8 圖像識別流程圖

3 測試結果

本文研究內容已在無通信口數字多用表泛用型智能化計量輔助裝置中得以應用。該套裝置是以計算機為控制和操作中心,利用標準多功能源作為程控信號輸出,經過網絡攝像機采集數字多用表的測量值后,通過計算機對采集到的圖像信息進行處理與識別,得到實測數值(圖9)。網絡攝像機和圖像處理系統就是前文所講的“聽”。在對各類數字多用表顯示字符的特征值進行學習后,該套裝置的圖像識別率可達100%。該套裝置使用環境對光照度無特殊要求,一般照度大于10 lx就能正常工作。

通過對手持式數字多用表17B的電壓參數進行測試,得到表1數據,并與人工測試數據相比較,兩者具有較好的一致性。

圖9 系統實物圖

表1 FLUKE17電壓參數測試值

4 結語

圖像識別技術可以把先前無法自動獲取測量數值的障礙得以解決,除了已經能夠對手持式或面板式數字儀表開展日常工作的自動校準外,下一步將在此基礎上對指針式儀表和遠距離測試進行深入的探索。

[1] 白福忠. 視覺測量技術基礎[M]. 北京:電子工業出版社,2013.

[2] Gary Bradski, Adrian Kaehler. 學習OpenCV(中文版) [M]. 北京:清華大學出版社,2009.

[3] 晁越,李中健,黃士飛. OpenCV圖像處理編程研究[J]. 電子設計工程,2013,21(10):175-177.

[4] 方玫. OpenCV技術在數字圖像處理中的應用[J]. 北京教育學院學報(自然科學版),2011, 6(1): 7-11.

[5] 鐘亮平,汪偉. 基于CCD和神經網絡的LCD數顯字符采集與識別[J]. 現代電子技術,2008(1): 164-165.

Auto acquisition system in portable and digital panel meter based on OpenCV

Wang Jiashu1,2,Jiang Ming2,Li Chen2
(1. Shanghai University;2. Shanghai Institute of Quality Inspection and Technical Research)

For the purpose of accomplishing the character recognition, the following steps are to be taken: First, an image/video sensing device is used to acquire the image in the reading area of a portable and digital panel meter based on OpenCV Computer Vision. After geometry correction, adaptive thresholding and pre-processing of the image, Hough Transform is applied to correct the sloping font before splitting up the image vertically then horizontally to realize the image normalization. At last, train the 12 eigenvalues of the seven-segment code to constitute the neural network to ultimately realize the character recognition.

OpenCV;digital meter;auto acquisition system

* 國家質檢總局科技計劃項目(2012QK285)

猜你喜歡
圖像識別字符顯示屏
一塊布就是一個顯示屏?
字符代表幾
一種USB接口字符液晶控制器設計
基于Resnet-50的貓狗圖像識別
高速公路圖像識別技術應用探討
HBM電子稱與西門子S7-200系列PLC自由口通訊
蒼蠅迷戀顯示屏
消失的殖民村莊和神秘字符
圖像識別在物聯網上的應用
圖像識別在水質檢測中的應用
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合