?

基于Cortex-A8的攝像直讀抄表裝置的設計

2019-07-25 01:44武永華許志杰張淑城
物聯網技術 2019年4期
關鍵詞:識別率串口

武永華 許志杰 張淑城

摘 要:針對抄表系統中水表表盤讀數不準的問題,設計基于Cortex-A8的攝像直讀遠傳抄表裝置。該裝置通過四路USB攝像模塊對表盤進行攝像,利用Linux的V4L2對圖像進行采集,OpenCV 完成對圖像的預處理、SVM 完成對數字的識別,裝置最終通過串口RS 232輸出表盤數字提供給后端。通過對裝置的應用表明,圖像識別率較高,設備運行穩定。

關鍵詞:攝像直讀;V4L2;OpenCV;串口;識別率;Cortex-A8

中圖分類號:TP274文獻標識碼:A文章編號:2095-1302(2019)04-00-05

0 引 言

隨著物聯網技術、電子技術、通信技術的發展,各式各樣的新型遠傳抄表系統涌現。目前我國的水表抄收方式主要有傳統的人工抄表方式、現場自動抄表、預付費抄表、遠程有線抄表、遠程無線自動抄表。自動抄表是利用物聯網技術處理表具數據,將采集到的水表字輪數據發送至服務器,進行后續用戶水費計算和其他大數據分析。從技術層面來分,水表抄表技術包括水表計數方式和水表數據遠傳方式。水表計數方式主要有脈沖式遠傳水表[1]和直讀式遠傳水表[2],而直讀式遠傳水表又細分為光電直讀式遠傳水表、攝像直讀遠傳水表、厚膜電阻式遠傳水表。從水表讀數傳輸方式又可分為電力載波[3]、CATV網絡遠程傳輸[4]、GSM/GPRS網絡無線傳輸[5]。目前實現遠程抄表系統的基表大部分是改造現有水表,通過脈沖計數技術實現計量,因而容易受到磁干擾,可靠性低,數據有誤之后的維護工作量大。針對目前抄表裝置的優缺點,本文裝置在原有水表的基礎上設計一種圖像處理技術和嵌入式技術相結合的攝像直讀抄表裝置,所使用的硬件以TI-AM3352[6]為核心,Crotex-A8架構,軟件采用Linux操作系統和ARM-Linux平臺,利用V4L2[7]完成對表盤圖像的采集,OpenCV[8]完成對圖像的處理,SVM[9]完成對數字的識別。針對該抄表方法中對圖像某區域示數的識別問題,采用可靠的識別方式,即使用攝像頭拍攝水表表盤后生成圖片,然后根據表盤中的示數位置,對表盤區域進行分割,接著將圖片進行JPG壓縮后識別圖片中的示數,最后將這個示數通過串口顯示在終端上。

1 攝像直讀抄表裝置硬件原理

基于AM3352微處理器的嵌入式攝像直讀遠程抄表系統將攝像頭固定安裝在儀表上的某個位置,當需要進行抄表時,通過RS 232獲得命令,由AM3352微處理器控制USB模塊選擇對應的攝像頭開啟并進行水表攝像。當任務完成后,AM3352數據采集設備再次關機。此系統可以提供可靠的表盤度數,與儀表的脈沖傳感器結合使用可以有效避免采集誤差,簡化人工校正過程,使得抄表過程更加可視化。本文裝置主要包括電源模塊、RS 232串口、AM3352核心模塊、USB模塊四部分。攝像直讀抄表裝置結構如圖1所示。

2 攝像直讀抄表裝置硬件設計

本文裝置的電源模塊輸入DC 9~24 V,電源模塊主要通過MP1471和MP1498兩個降壓芯片,設計輸出電壓為

3.3 V,電路原理圖如圖2所示。

RS 232串口模塊主要完成電平轉化,采用的主芯片為SP3232,電路原理圖如圖3所示。

USB模塊主要完成四路USB攝像頭選擇一路的功能。所用主芯片為USB2514B,初始化的設定通過I2C完成。電路原理圖如圖4所示。

AM3352核心模塊主要完成四路USB水表圖像的采集、預處理以及表盤數字的識別。其中AM3352微處理運行Linux操作系統和OpenCV,電路方框圖如圖5所示。

3 圖像采集和預處理

3.1 V4L2編程與圖像采集

V4L2是嵌入式Linux系統中關于視頻設備的內核驅動,主要用來采集圖片,對視頻、音頻進行相關操作等,因此V4L2提供了一系列的接口函數,用于視頻捕捉、采集圖片等視頻設備的應用。視頻設備采集流程如圖6所示。

3.1.1 獲取攝像頭參數

Linux系統中提供ioctl()函數以及相關參數獲取所使用的USB攝像頭基本信息和支持的采集格式。其獲取的參數信息有采集設備、支持流操作、支持的像素格式等。

3.1.2 設置攝像頭參數

攝像頭像素格式設置為YUYV422,圖像分辨率設置為240×320,使用參數VIDIOC_S_FMT設置攝像頭參數。

3.1.3 攝像頭圖像采集

攝像頭設備初始化后就進行圖片采集。通過參數VIDIOC_REQBUFS和結構體v4l2_requesbuffers申請緩存,接著通過內存映射將緩存信息映射到用戶空間,之后將數據寫入文件生成原始圖片。

3.1.4 圖片格式轉換

生成的原始圖片為YUYV422,為了方便處理圖像,需要先將其轉換為RGB888格式后再轉成壓縮JPG格式圖片。

3.1.5 關閉攝像頭設備

為了較好地管理內存,防止出現系統崩潰的現象,停止圖像采集后,要對內存進行回收。停止采集后通過參數 VIDIOC_STREAMOFF調用 close()函數關閉攝像頭設備文件。

3.2 OpenCV處理圖像

采集到的圖像如圖7所示,使用OpenCV開源計算機視覺庫對圖像進行相關處理。

3.2.1 圖像灰度化

一般對圖像進行灰度化處理的方法有分量法、加權平均法等。本文裝置采用加權平均法對圖像進行灰度化處理,因此使用OpenCV庫中的cvtColor()函數對采集到的圖像進行灰度化處理,處理后的圖像如圖8所示。

3.2.2 圖像去燥

圖像去噪即為減少圖像中的噪聲干擾。常用的圖像去噪方法有均值濾波、中值濾波、高斯濾波等。通過使用相關函數對灰度化處理后的圖像進行三種濾波處理,無法很直觀地看出哪種濾波效果更好,但是經過三種濾波處理后的圖像再經過二值化的處理,發現采用高斯濾波后的圖像二值化處理效果更好,因此本文采用高斯濾波的方法,使用OpenCV庫中的GaussianBlur()函數對灰度化處理好的圖像進行高斯濾波處理,處理后的圖像如圖9所示。

3.2.3 圖像二值化

圖像經過灰度化和二值化處理后,只剩下黑色和白色,即黑白效果,因為數據量降低了,所以后續在對圖像進行處理時,計算量已經沒有之前那么大了。一般對圖像進行二值化的方法有全局閾值法、局部閾值法。為了降低算法復雜度,便于后續輪廓提取處理,采用固定閾值處理,并加入反色處理,因此在本文設計中使用OpenCV庫中的threshold()函數對高斯濾波去噪后的圖像進行二值化處理,處理后的圖像如圖10所示。

3.2.4 圖像腐蝕和膨脹

腐蝕即通過自定義的結構元素掃描全圖像像素,并進行與運算,目的是對二值化處理后圖像中的某些邊界點進行消除。膨脹的目的則是對二值化處理后圖像中的某些邊界進行擴張,即空洞填補,并進行或運算。為了使表盤區域在圖像中顯得更加突出,以及便于對圖像外輪廓進行提取處理,對其進行腐蝕和膨脹處理,使用OpenCV庫中的dilate()函數和erode()函數對二值化后的圖像進行腐蝕和膨脹處理,處理后的圖像如圖11、圖12所示。

3.2.5 圖像輪廓

在圖像識別過程中,查找輪廓是識別區域的前提,先對整個圖像查找所有外部的輪廓并畫出,再進行圖像分割,這時也就能得到所要識別的區域了。使用OpenCV查找輪廓的方法有多種,一般步驟是:灰度化-二值化-腐蝕-膨脹-形態學處理-查找輪廓-繪制輪廓-顯示處理好的圖像。為了后續示數區域的準確分割,本文設計使用OpenCV庫中的findContours()函數進行外輪廓的查找。輪廓查找之后的圖像如圖13所示。

3.2.6 圖像分割

圖像分割通常結合查找圖像輪廓使用。對于本文設計來說,只關心所要識別的區域,將其余區域舍去,因此為了能夠將感興趣的區域分割出來(即示數區域),在圖像外輪廓查找和繪制后,圖像中出現一些紅色的區域,之后對其進行面積判斷,最終得到想要的區域,之后才能對其進行數字識別。圖像分割處理后的結果如圖14所示。

4 表盤字輪讀數識別

4.1 數字識別概述

數字識別包含在模式識別領域中,其結果是將某些物體上的數字進行識別,識別方法有多種,如結構特征識別法、模板匹配識別法、神經網絡識別法。這些識別算法各有優缺點,選擇具體的算法時主要考慮計算復雜度、算法成功識別率、硬件平臺匹配性。本文設計采用機器學習+向量機(SVM)的方法實現數字識別,然后通過文件操作將結果保存并顯示在遠程終端上。

4.2 數字識別

支持向量機能夠解決一些模式識別中的問題。SVM是對機器進行訓練的一種方法,效果較好,可以應用于分類數據。本文設計使用SVM分類器對數據進行訓練,生成XML文件,通過SVM分類器對XML文件進行讀取,進而識別圖像中的數字。

通過攝像頭采集水表圖像,使用JPEG庫中的壓縮算法生成JEP格式的圖片,然后對此圖片進行灰度化、高斯去噪、二值化、腐蝕、膨脹處理,接著查找圖像的外輪廓并繪制出來,圖像中會出現一些紅色矩形區域,對這些區域進行面積判斷,找到示數區域對應的紅色矩形區域,保存這個紅色矩形區域的4個頂點坐標,之后通過這幾個坐標將示數區域分割出來,并對其進行矯正,就得到所要的區域。接著將其保存,識別數字。識別數字的過程中要先將先前使用分類器訓練好的數據保存為XML格式的文件進行加載,后進行數字區域的分離,將每個數字所在的位置區域分出來,保存后進行灰度化處理,調整圖片大小,改變矩陣的行列數、通道數,進行矩陣數據類型轉換,識別數字。識別過程中如果碰到數字不全的情況,將數字不全的都以0處理。識別完成之后,將識別的結果在遠程終端上顯示出來,同時通過文件操作函數保存結果并生成txt文件??傮w識別流程如圖15所示,識別結果如圖16所示。

5 結 語

本文將嵌入式系統和圖像處理技術相結合,并且在Ti-AM3352開發板上實現攝像直讀水表的讀數識別。在拍攝圖片中,采用V4L2編程進行攝像頭的相關操作,使用JPEG庫對圖片進行轉換,完成圖像采集。在圖像處理過程中,利用OpenCV開源代碼和SVM把數字識別出來、顯示,并保存在文本中。測試結果表明,該系統保證了系統的可靠性和可擴展性,系統工作穩定,硬件成本低,施工簡單,抄表成功率99%以上,具有廣闊的市場和應用前景。

參 考 文 獻

[1]張興華.基于圖像識別的智能抄表系統研究與實現[D]. 哈爾濱:哈爾濱理工大學,2012.

[2]陳澤.基于ARM-Linux控制器的小區智能家居管理系統的設計與實現[D].北京:華北電力大學,2017.

[3]徐偉,王斌,姜元建.低壓電力線載波通信技術在用電信息采集系統中的應用[J].電測與儀表,2010(2):57-59.

[4]張亞彬.同軸電纜特性及在CATV信號傳輸中的應用[J].中國新技術新產品,2009(3):19-20.

[5]任亞軍,趙明,朱文革,等.基于GPRS的水表遠程抄表系統設計[J].儀器儀表用戶,2015,22(2):7-9.

[6]程昌南.ARM Cortex-A8硬件設計DIY[M].北京:北京航空航天大學出版社,2012.

[7]甘勤操,陳西曲.基于V4L2的嵌入式視頻監控系統的研究[J].武漢輕工業大學學報,2014,33(1):61-64.

[8]孟祥興,宋宇飛,顧橋磊.基于OpenCV和嵌入式的工業圖像檢測系統[J].物聯網技術,2018,8(10):106-107.

[9]李良榮,榮耀祖,顧平,等.基于SVM的車牌識別技術研究[J].貴州大學學報,2018,35(5):48-53.

[10]甘英俊,胡天翔,沈海濤,等.基于機器視覺的汽車牌照識別[J].機械制造與自動化,2009(2):97-101.

猜你喜歡
識別率串口
淺談AB PLC串口跟RFID傳感器的通訊應用
基于類圖像處理與向量化的大數據腳本攻擊智能檢測
基于真耳分析的助聽器配戴者言語可懂度指數與言語識別率的關系
提升高速公路MTC二次抓拍車牌識別率方案研究
高速公路機電日常維護中車牌識別率分析系統的應用
USB接口的多串口數據并行接收方法探索
基于藍牙串口適配器的GPS接收機與AutoCAD的實時無線通信
基于并行控制的FPGA多串口拓展實現
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合