周硯文,龐悅,尹航,任斌
基于圖像處理的內(nèi)阻儀液晶數(shù)字識(shí)別系統(tǒng)設(shè)計(jì)
周硯文,龐悅,尹航,任斌
(陜西重型汽車有限公司,陜西 西安 710200)
為了實(shí)現(xiàn)對(duì)內(nèi)阻儀表液晶數(shù)字的自動(dòng)識(shí)別,使用攝像頭和計(jì)算機(jī)搭建了圖像采集的硬件系統(tǒng)?;赑ython和OpenCV設(shè)計(jì)圖像識(shí)別軟件,采用的模板匹配的算法對(duì)圖像中的液晶字符進(jìn)行了識(shí)別。試驗(yàn)結(jié)果表明,該系統(tǒng)識(shí)別液晶數(shù)字能達(dá)到98%以上,滿足設(shè)計(jì)要求。
圖像處理;Python;OpenCV
某試驗(yàn)中需要使用液晶數(shù)字內(nèi)阻儀以一定的采樣頻率,連續(xù)24小時(shí)對(duì)樣品的內(nèi)阻進(jìn)行測(cè)量并記錄結(jié)果。由于該內(nèi)阻儀無(wú)數(shù)采記錄功能,因此只能采用人工讀數(shù)和手工記錄結(jié)果,如果在該條件下開(kāi)展連續(xù)24小時(shí)不間斷測(cè)量,其實(shí)施可行性較低。因此實(shí)現(xiàn)內(nèi)阻儀數(shù)字的自動(dòng)讀取和記錄是很有必要的。
對(duì)該內(nèi)阻儀的測(cè)量過(guò)程分析后,開(kāi)發(fā)了圖像數(shù)字采集和識(shí)別系統(tǒng)。使用攝像頭和計(jì)算機(jī)搭建了圖像數(shù)據(jù)采集的硬件系統(tǒng),對(duì)內(nèi)阻儀顯示的測(cè)量結(jié)果進(jìn)行圖像采集;基于Python和OpenCV開(kāi)發(fā)了圖像采集控制和液晶數(shù)字識(shí)別軟件,實(shí)現(xiàn)圖像采集和數(shù)字識(shí)別。系統(tǒng)工作時(shí),控制攝像頭定時(shí)對(duì)內(nèi)阻儀顯示數(shù)字結(jié)果采集,再將圖像中的液晶數(shù)字識(shí)別和記錄,從而實(shí)現(xiàn)自動(dòng)測(cè)量的效果。其系統(tǒng)流程圖如圖1所示。
圖1 系統(tǒng)流程圖
系統(tǒng)硬件部分示意圖如圖2所示。硬件系統(tǒng)主要由500萬(wàn)像素?cái)z像頭、計(jì)算機(jī)、支架和內(nèi)阻儀組成。首先將攝像頭安裝于支架并將其固定在桌面上,隨后將內(nèi)阻儀放置在桌面上并使內(nèi)阻儀面板始終處于攝像頭視場(chǎng)范圍內(nèi),接著調(diào)節(jié)攝像頭位置和焦距,保證攝像頭在采集過(guò)程中能完全采集到內(nèi)阻儀面板的圖像,最后計(jì)算機(jī)可通過(guò)軟件控制攝像頭實(shí)現(xiàn)定時(shí)圖像采集以及開(kāi)展后續(xù)相關(guān)圖像處理工作。
圖2 系統(tǒng)硬件部分示意圖
圖像采集過(guò)程中要注意以下幾點(diǎn):
(1)光照均勻,防止外部光線干擾后期圖像處理;
(2)攝像頭與內(nèi)阻儀相對(duì)位置保持固定,每張圖像中液晶數(shù)字字段出現(xiàn)的區(qū)域位置相同;
(3)對(duì)內(nèi)阻儀自檢時(shí)的液晶字符全點(diǎn)亮狀態(tài)進(jìn)行采集,將其存為模板圖像,用于后期數(shù)字識(shí)別中的模板匹配。
采用Python和OpenCV對(duì)所采集圖像進(jìn)行處理,實(shí)現(xiàn)數(shù)字識(shí)別和記錄。程序通過(guò)模板圖像裁剪、圖像濾波和二值化、特征點(diǎn)確認(rèn)、模板匹配、圖像分析等步驟,實(shí)現(xiàn)數(shù)字識(shí)別的效果[1-2]。
在內(nèi)阻儀啟動(dòng)和自檢過(guò)程中,其面板的液晶數(shù)字會(huì)被全部點(diǎn)亮,此時(shí)通過(guò)軟件控制攝像頭將面板當(dāng)前圖像進(jìn)行采集,作為模板圖像供后期處理,如圖3所示。
圖3 內(nèi)阻儀啟動(dòng)自檢圖像及特征區(qū)域勾選
模板圖像采集完成后需進(jìn)一步處理,將其特征點(diǎn)提取出來(lái)。通過(guò)Python編程打開(kāi)模板圖像后,使用OpenCV中鼠標(biāo)選擇功能,勾選將要識(shí)別數(shù)字的區(qū)域,如圖3所示。區(qū)域選擇確定后,程序?qū)^(qū)域坐標(biāo)保存并將當(dāng)前區(qū)域裁剪出來(lái),用于后期實(shí)際測(cè)量圖像的裁剪處理[2]。
3.3.1中值濾波
選擇數(shù)字識(shí)別區(qū)域后,使用OpenCV中相關(guān)命令對(duì)其進(jìn)行圖像濾波和二值化處理[2]。圖像采集中的噪聲一般由攝像頭傳感器引入,因此使用中值濾波效果較好[3]。其原始圖像和處理后圖像對(duì)比效果如圖4所示。
圖4 原圖(下圖左)和中值濾波(下圖右)對(duì)比
3.3.2圖像二值化
濾波后對(duì)其灰度圖進(jìn)行分析。由圖5的灰度分析可見(jiàn),圖中有兩個(gè)明顯的峰值,適用于用大津法二值化處理[3]。二值化處理后的模板圖像效果圖6所示。
圖5 灰度圖
圖6 二值化效果
模板圖像二值化后,液晶點(diǎn)亮字段的灰度為0,未點(diǎn)亮字段灰度為255。使用OpenCV中的鼠標(biāo)點(diǎn)擊功能,將數(shù)字由高位到低位進(jìn)行特征點(diǎn)點(diǎn)擊,通過(guò)點(diǎn)擊將各點(diǎn)坐標(biāo)保存。每個(gè)數(shù)字內(nèi)部的點(diǎn)擊順序按數(shù)碼管字段定義格式順序進(jìn)行,即各段a、b、c、d、e、f、g和小數(shù)點(diǎn)位dp。點(diǎn)擊位置一般選取字段中間特征明顯處,如圖7所示。
圖7 數(shù)碼管點(diǎn)擊順序示意圖
數(shù)碼管中各字段亮暗的狀態(tài)組合后能表示實(shí)際顯示的數(shù)字。比如數(shù)字0顯示時(shí),除了g和dp未點(diǎn)亮(灰度為255)外,其他字段均點(diǎn)亮(灰度為0),因此基于以上原理可將實(shí)際數(shù)字與字段亮暗狀態(tài)對(duì)應(yīng)關(guān)系列在表1中,即0表示該處灰度為0(該段已點(diǎn)亮),255表示該處灰度為255(該段未點(diǎn)亮),這樣即可建立字段亮暗狀態(tài)與實(shí)際顯示數(shù)字的關(guān)聯(lián)列表模板,用于后期查表編程。
表1 數(shù)碼管字段表格
實(shí)際數(shù)字?jǐn)?shù)碼管字段狀態(tài) abcdefgdp 0000000255255 125500255255255255255 200255002550255 300002552550255 42550025525500255 502550025500255 6025500000255 7000255255255255255 80000000255 9000025500255 dp2552552552552552552550
在完成模板圖像采樣、裁剪及分析后,程序通過(guò)循環(huán)對(duì)后續(xù)采集的實(shí)際內(nèi)阻圖像進(jìn)行識(shí)別。
(1)對(duì)內(nèi)阻儀實(shí)際測(cè)量結(jié)果進(jìn)行圖像采集。采集后按模板圖像中的選擇區(qū)域坐標(biāo)進(jìn)行裁剪、中值濾波和二值化;
(2)對(duì)處理后的圖像進(jìn)行數(shù)字識(shí)別。以圖6中板圖像的液晶數(shù)字中各字段的位置坐標(biāo)為基礎(chǔ),對(duì)裁剪后圖像進(jìn)行模板匹配。通過(guò)各液晶字段特征點(diǎn)坐標(biāo),對(duì)實(shí)際內(nèi)阻圖像中每一位數(shù)字的字段進(jìn)行分析,其中灰度為0判定為該液晶字段為點(diǎn)亮狀態(tài),灰度為255判定該液晶字段未點(diǎn)亮。得到各字段的亮暗狀態(tài)后根據(jù)表1進(jìn)行查表匹配,完成一位數(shù)字及小數(shù)點(diǎn)的識(shí)別;
(3)圖像中的數(shù)字識(shí)別完成后,使用Python中相關(guān)文件操作命令將結(jié)果保存于計(jì)算機(jī)[4];
(4)重復(fù)(1),進(jìn)行下一次內(nèi)阻儀測(cè)量的圖像采集;
(5)全部采集工作完成后,程序結(jié)束退出。
按以上方法搭建圖像處理系統(tǒng)并開(kāi)展了內(nèi)阻測(cè)量結(jié)果的圖像采集識(shí)別。如下圖所示,某次內(nèi)阻儀測(cè)量完成后,其面板圖像采集及裁剪效果如圖8所示,中值濾波和二值化處理結(jié)果如圖9所示。在圖像完成處理后,通過(guò)模板匹配識(shí)別其數(shù)字為“604.1”后將結(jié)果保存??傮w識(shí)別結(jié)果顯示,內(nèi)阻儀的數(shù)字及小數(shù)點(diǎn)位識(shí)別率能達(dá)到98%以上,圖11展示了部分圖像識(shí)別的結(jié)果。
圖8 某次內(nèi)阻儀測(cè)量結(jié)果
圖9 中值濾波圖像
圖10 二值化處理圖像
圖11 部分圖像的識(shí)別結(jié)果
在硬件設(shè)計(jì)方面,該系統(tǒng)能夠通過(guò)計(jì)算機(jī)控制攝像頭以一定的采樣頻率對(duì)內(nèi)阻儀測(cè)量結(jié)果開(kāi)展連續(xù)圖像采集;在軟件設(shè)計(jì)方面,該系統(tǒng)能夠通過(guò)模板匹配算法對(duì)采集圖像進(jìn)行數(shù)字識(shí)別,識(shí)別率在98%以上。試驗(yàn)結(jié)果表明,該系統(tǒng)使用效果良好且提高了工作效率,能夠滿足設(shè)計(jì)要求。
[1] Magnus Lie Hetland,司維,曾軍崴. Python基礎(chǔ)教程[M].北京:人民郵電出版社,2014.
[2] 布拉德斯基,克勒,于仕琪,等.學(xué)習(xí)OpenCV:中文版[M].北京:清華大學(xué)出版社,2009.
[3] RafaelC.Gonzalez, RichardE.Woods, StevenL.Eddins.數(shù)字圖像處理(MATLAB版)[M].北京:電子工業(yè)出版社,2005.
[4] Ivan Idris. Python數(shù)據(jù)分析基礎(chǔ)教程[M].北京:人民郵電出版社, 2014.
LCD Digits of Resistance Meter Recognition System Design Using Image Processing
ZHOU Yanwen, PANG Yue, YIN Hang, REN Bin
( Shaanxi Heavy Duty Automobile Co., Ltd., Shaanxi Xi'an 710200 )
In order to implement automatic recognition on LCD digits of resistance meter, image acquisition system was built with camera and computer. Recognition software is developed using Python and OpenCV and LCD digits are identified based on template match algorithm. Result shows that at least 98% of digits can be read by this system and design requirement is achieved.
Image processing;Python;OpenCV
A
1671-7988(2021)24-81-03
U462.1
A
1671-7988(2021)24-81-03
CLC NO.:U462.1
周硯文,就職于陜西重型汽車有限公司。
10.16638/j.cnki.1671-7988.2021.022.021