摘要:為實現(xiàn)攝像機采集的電梯主板數(shù)碼管字符圖像的識別,研究一種針對數(shù)碼管字符圖像自動識別的方法。數(shù)碼管圖像經(jīng)過預(yù)處理,包括圖像灰度化、圖像降噪、圖像二值化等,并對圖像進行字符定位和分割,最后采用穿線識別法對字符進行識別,可有效提高電梯故障識別率。實驗結(jié)果表明,穿線識別法對數(shù)碼管字符識別正確率高、效率高、實時性好。
關(guān)鍵詞:圖像處理;字符識別;穿線識別法;OpenCV
中圖分類號:TP391.41文獻標(biāo)志碼:A文章編號:1009-9492(2021)11-0196-03
Character Recognition of Digital Tube Based on OpenCV
Ye Na
(Heyuan Technician Institute, Heyuan, Guangdong 517000, China)
Abstract: In order to realize the recognition of digital tube character image of elevator mainboard collected by camera, a method for automaticrecognition of digital tube character image was studied. The digital tube image was preprocessed, including image graying, image noisereduction, image binarization, etc., and the character positioning and segmentation of the image were carried out. Finally, the characterrecognition method was used to identify the characters, which could effectively improve the recognition rate of elevator fault. The experimentalresults show that the threading recognition method has high accuracy, high efficiency and good real-time performance.
Key words: image processing; character recognition; threading recognition; OpenCV
0 引言
數(shù)碼管是一種顯示器件,可以通過對數(shù)碼管不同的管腳進行驅(qū)動使其發(fā)光,從而顯示數(shù)碼管能夠顯示的字符。由于數(shù)碼管使用簡單,價格便宜,在一些設(shè)備上得到了廣泛的應(yīng)用[1]。電梯主板上的數(shù)碼管,其中一個作用就是用來顯示電梯發(fā)生故障時的故障代碼。由于電梯屬于特種設(shè)備,國家對特種設(shè)備的安全有嚴(yán)格的要求,為了獲取故障信息,直接改造電梯的主控系統(tǒng)并不可行,而且不同品牌的電梯有自己的保護系統(tǒng),接口不對外開放,為此,本文設(shè)計采用攝像頭獲取數(shù)碼管圖像信息的方法來獲取電梯的故障信息。利用數(shù)字圖像處理技術(shù)和識別技術(shù),可實現(xiàn)數(shù)碼管顯示字符的自動識別[2-4],可以提高故障檢測率,同時也能確保故障檢測的準(zhǔn)確率,提高電梯運行安全系數(shù)。本文利用計算機視覺庫函數(shù) OpenCV和 C++編程語言[5],通過單片機仿真板模擬顯示電梯主板上的七段數(shù)碼管顯示數(shù)字的配合使用,實現(xiàn)對數(shù)碼管字符的處理與識別,其流程主要包括圖像的預(yù)處理、字符定位與分割、字符識別3個過程。
1 圖像預(yù)處理
通過攝像頭采集的圖像一般輸出為彩色圖像,并且?guī)в性肼暤雀蓴_信息,如果對采集的圖像不經(jīng)過預(yù)處理,直接進行 RGB 三通道的圖像信息進行處理,由于圖像的畸變、噪聲、色彩差異等因素的影響,對字符識別的準(zhǔn)確率有極大的影響,容易出現(xiàn)識別準(zhǔn)確率低,數(shù)據(jù)誤報率高等問題。因此,在進行數(shù)碼管字符識別之前,需要對圖像進行預(yù)處理,消除畸變和噪聲,降低識別的難度,提高識別的準(zhǔn)確率。圖像預(yù)處理流程如圖1所示。
1.1 圖像采集
攝像機是采集圖像的關(guān)鍵,其成像好壞直接影響到后續(xù)字符識別的結(jié)果。本設(shè)計中,選擇的是工業(yè)攝像頭,像素為300萬,曝光時間可以控制,同時匹配定焦鏡頭,帶有 USB接口可以用來與計算機連接,可以利用 OpenCV直接讀取攝像頭的圖像信息。
1.2 圖像灰度化
將彩色圖像轉(zhuǎn)換成灰度圖像的過程稱之為圖像灰度化[6]。由于攝像頭采集的彩色圖像均使用 RGB 色彩空間進行描述。在 RGB 色彩空間中,像素的顏色由 R 、G、B 三個分量共同決定,每個分量的取值范圍為0~255,這樣一個像素點可以有(256×256×256)種顏色變化范圍[7],而灰度圖像中,一個像素點的變化范圍為256種,處理的數(shù)據(jù)量大大減小,所以要進行圖像灰度化。圖像灰度化的處理方法主要有3種,分別是最大值法、平均值法和加權(quán)平均值法。本設(shè)計采用加權(quán)平均值法實現(xiàn)圖像灰度轉(zhuǎn)換,即利用下式進行處理:
對彩色圖像的每一個像素應(yīng)用式(1) 進行轉(zhuǎn)換,即可將彩色圖像轉(zhuǎn)換成灰度圖像。如圖2~3所示。
圖3灰度圖 Figure.3 Grayscale image
1.3 圖像校正
由于相機和鏡頭存在幾何畸變,為后續(xù)的處理帶來了一定的困難,所以,在進行圖像處理之前,需要對圖像進行畸變校正,也就是圖像校正。圖像校正過程主要處理的是由相機和鏡頭本身所帶來的圖像的幾何畸變。本文通過張正友平面標(biāo)定算法,完成相機和鏡頭的標(biāo)定,得到了相機的內(nèi)參數(shù)矩陣和畸變參數(shù)。通過對圖像進行逆變換,可以得到圖像的畸變校正結(jié)果。
1.4 圖像降噪
將噪聲圖像中的各種噪聲去除或減弱的過程稱之為圖像降噪。由于攝像頭的感光器件 CMOS或 CCD的制造工藝的限制,圖像采集過程中,會受到噪聲的干擾,使得對原圖的處理與分析造成影響,所以必須對圖像進行降噪處理。常用的圖像降噪方法有均值濾波、中值濾波等算法[8]。
實驗證明,采用中值濾波處理有更好的處理效果,能夠有效地對圖像進行降噪,并保持圖像邊緣足夠清晰,不引入過多的模糊效果。因此本文選擇使用中值濾波算法對經(jīng)過幾何校正之后的圖像進行降噪處理。其圖像降噪處理結(jié)果如圖4~5所示。
1.5 圖像二值化
圖像主要是由前景(圖案)和背景組成。圖像二值化處理就是將前景從背景中分割出來。經(jīng)過二值化后,圖像由原來的由256個值表示的灰度圖轉(zhuǎn)成只有0和255兩個亮度值的黑白圖像。分割圖像前景和背景的的具體方法是要設(shè)定一個閾值,超過設(shè)定閾值的像素為前景,低于設(shè)定閾值的像素為背景。選擇不同的閾值,將會得到不同二值化效果的圖像,因此,圖像二值化關(guān)鍵的一步是選擇一個合適的閾值。常用的選擇灰度閾值的方法有固定閾值法、最大類間方差法(大津算法,又稱 OT- SU算法)、實驗法、直方圖法、最小誤差法等。
通過多次實驗發(fā)現(xiàn),使用 OTSU 法進行二值化時,能夠根據(jù)圖像的亮度自適應(yīng)的選擇閾值,將目標(biāo)從背景區(qū)域中分離出來[9-10]。因此本文采用 OTSU法進行圖像二值化。二值化處理前后圖像對比如圖6~7所示。
2 字符識別
2.1 字符定位
攝像頭拍攝時,可能將非字符區(qū)域一起進行成像,而非字符區(qū)域并不是本文研究的重點,本文研究的是數(shù)碼管字符在圖像上的成像結(jié)果并將其識別為顯示的字符。所以,為了消除非字符區(qū)域的影響,需要首先對字符進行定位。
字符定位分為粗定位和精確定位,首先通過粗定位確定字符的大概位置,然后通過精確定位得出字符所在的確切位置,為下一步字符分割做好準(zhǔn)備。利用人工分割、投影法分別對字符圖像進行粗定位和精確定位后,得到的圖像如圖8所示,大框是粗定位區(qū)域,小框為精確定位區(qū)域。
2.2 字符分割與歸一化
圖像經(jīng)過字符精確定位之后,還是一張帶有多個字符的圖像,需要對字符進行分割才能進行識別。字符精確定位后,可以得到字符區(qū)域的水平方向起始位置和截止位置、垂直方向起始位置和截止位置。將精確定位后的字符區(qū)域進行 Y方向投影,可以得到一條 Y方向字符有效像素數(shù)目的曲線[11]。該曲線上,有效像素大于0的位置表示該位置是字符筆畫覆蓋的區(qū)域,有效像素等于0的位置表示該位置不處于字符筆畫上。因此,可以用有效像素的上升沿作為字符開始的標(biāo)志,以下降沿作為字符結(jié)束的標(biāo)志。
因此,可以得到字符的分割圖如圖9所示。圖中小線框表示字符分割的結(jié)果。從圖中可以看出,每一個小線框內(nèi),有且僅有一個字符??梢詫⒎指罱Y(jié)果進行歸一化處理,得到可以進行識別的字符。
由于攝像頭與數(shù)碼管位置間的差別,以及數(shù)碼管尺寸的不同,會造成數(shù)碼管在成像時尺寸大小不一致,為了消除模板和待識別字符位置和尺寸上的偏差,需要把字符顯示圖像移動、旋轉(zhuǎn)、縮放或者變換到規(guī)定的位置和尺寸上,這一過程稱為圖像歸一化處理[12-13]。歸一化處理不會改變圖像的對比度,可以保護圖像不受幾何變換的影響,能夠找出圖像中的那些不變量,從而可知這些圖像原來就是一樣的或者是一個系列的。本文中,對字符圖像做的歸一化操作是指將分割之后不同大小的字符圖像,通過線性變換縮放到指定的尺寸,為后續(xù)字符識別提供基礎(chǔ)。
2.3 字符識別方法
圖像字符識別的方法有多種。穿線法字符識別算法是一種基于識別字符的結(jié)構(gòu)信息的算法[14]。算法的原理是根據(jù)七段數(shù)碼管的特征來進行識別的,對于七段式數(shù)碼管的字符具有較好的識別結(jié)果。
七段數(shù)碼管顯示的筆段如圖10所示,數(shù)碼管顯示的每個字符最多由7個筆段構(gòu)成,每個筆段只有橫和豎兩類,包括3橫4豎,而且相同的筆段尺寸一致。
基于七段式數(shù)碼管的以上特點,本文采用穿線識別算法。該算法步驟[15-16]如下:
(1) 將數(shù)碼管顯示的字符按垂直方向平均分成3個節(jié);
(2) 對每一節(jié),取水平中心的一列,按照自上而下的方向?qū)@一節(jié)進行掃描,由于經(jīng)過二值化之后筆畫區(qū)域值為255,所以,如果掃描過程中遇到255的值,可以認(rèn)為存在筆段,將之記為“1”,否則記為“0”;
(3) 將字符上下平分成2小塊,再將每一個小塊左右平分,于是一個字符被平分成4小塊;
(4)對每一小塊,取垂直中心的一行按照自左向右的掃描,如果掃描過程遇到255的值,則認(rèn)為這一小塊存在筆段,將對應(yīng)的筆段記為“1”,否則記為“0”
(5)通過以上4步,可以確定3橫4豎共7個筆段的狀態(tài)編碼,再通過查找編碼與字符的對照表,即可判斷當(dāng)前數(shù)碼管顯示的字符內(nèi)容。
其中,第 5 步需要使用七段式數(shù)碼管字符編碼模版。在實際使用時,為了便于理解,一般只使用七段式數(shù)碼管顯示 0~9 共 10 個數(shù)字和部分大寫字母。表 1 所示為部分字符在七段式數(shù)碼管中顯示時,數(shù)碼管的字符編碼。
3 實驗結(jié)果分析
本設(shè)計以 VS2016+OpenCV3.4 作為開發(fā)環(huán)境,單片機仿真板數(shù)碼管顯示字符作為圖像來源,對數(shù)碼管顯示的字符進行識別。本實驗選取了840張圖像作為實驗樣本,其識別率和識別速度如表2所示。
4 結(jié)束語
本文通過利用C++編程語言和OpenCV實現(xiàn)對七段數(shù)碼管式電梯主板故障信息字符的自動識別,具有較高的識別正確率和識別速度,同時識別的實時性較好。將這一方法應(yīng)用于電梯故障碼圖像采集識別系統(tǒng)中,能大大提高電梯的安全運行系數(shù),具有較好的市場前景。
參考文獻:
[1] 郭爽.數(shù)碼管數(shù)字儀表自動識別方法的研究[J].通信技術(shù),2012,45(8):91-93.
[2] 何瑤,陳湘萍.基于OpenCV的人臉檢測系統(tǒng)設(shè)計[J].新型工業(yè)化,2018,8(6):83-89.
[3] 王華鍵,王一智,董蕓含,等.基于OpenCV的變電站監(jiān)控視頻智能分析[J]. 新型工業(yè)化,2016(8) :31-40.
[4] 李前汭,于力革.基于ARM Cortex-A9字符識別系統(tǒng)設(shè)計[J].計算機系統(tǒng)應(yīng)用,2018(9):256-261.
[5] 毛星云.OpenCV3編程入門[M]. 北京:電子工業(yè)出版社, 2015.
[6] 韋星,馬智愚.一種基于OpenCV的彩色圖像濾波算法設(shè)計[J].電子科學(xué)技術(shù),2017(4):91-95.
[7] 宋森森,賈振紅,楊杰.結(jié)合Ostu閾值法的最小生成樹圖像分割算法[J].計算機工程與應(yīng)用,2019,55(9):178-183.
[8] 王曉鵬.基于OpenCV的圖像處理濾波算法研究[J].現(xiàn)代工業(yè)經(jīng)濟和信息化,2018,8(6):61-62.
[9] 卓磊,周律,楊麗紅.基于穿線法的計算器數(shù)字識別[J].軟件工程,2018,21(12):1-3.
[10] Gashti M Z. A modified model based on flower pollination algo?rithm and K-Nearest neighbor for diagnosing diseases[J]. Inter?national Islamic University Malaysia Engineering Journal,2018,19(1).
[11] 曾科,高潮,扶新,等. 多參數(shù)數(shù)顯儀表的自動識別方法研究[J].中國測試, 2018, 44(12):122-128.
[12] 王小麗. 基于 OPENCV 的身份證圖像信息提取研究與實現(xiàn)[D].蘇州:蘇州大學(xué),2016.
[13] 楊偉.車載采集城市街景圖像的超分辨率重建[D].成都:西華大學(xué),2017.
[14] 卓磊,周律,楊麗紅.基于穿線法的計算器數(shù)字識別[J].軟件工程,2018,21(12):1-3.
[15] 劉丹,穆林麗,余曉鍔. 一種七段數(shù)碼管式醫(yī)用儀表的自動識別方法[J]. 科學(xué)技術(shù)與工程, 2010,10(16):4037-4039.
[16] 魏雄. 基于OpenCV的車牌識別系統(tǒng)中車牌定位的實現(xiàn)[J].電子世界, 2019(3):113-115.
作者簡介:葉娜(1981-),女,廣東河源人,大學(xué)本科,高級講師,研究領(lǐng)域為電氣自動控制技術(shù)。
(編輯:王智圣)