王騰騰,趙建勇
(杭州電子科技大學(xué),杭州 310018)
?
視覺傳感與信息處理一體化的圖像處理技術(shù)研究*
王騰騰,趙建勇
(杭州電子科技大學(xué),杭州 310018)
提出了一種通用的圖像預(yù)處理方法,可使嵌入式視覺傳感器與后端開發(fā)系統(tǒng)有效溝通,并可實(shí)現(xiàn)灰度計(jì)算、圖像分割和二值化等基本圖像處理功能,設(shè)計(jì)的變異32位Modbus協(xié)議可為低速端口提供高速圖像傳輸。實(shí)驗(yàn)結(jié)果表明,該方法簡單有效,不僅為嵌入式前端處理提供了良好的預(yù)處理手段,而且為嵌入式智能視覺開發(fā)奠定了基礎(chǔ)。
嵌入式系統(tǒng);圖像預(yù)處理;Modbus;OV7670
近年來出現(xiàn)了將攝像頭和嵌入式信息處理系統(tǒng)融為一體的嵌入式視覺系統(tǒng)[1-2],這種被稱為嵌入式視覺傳感器帶有圖形、圖像處理功能,不僅具有智能圖像處理功能,而且體積小、性價(jià)比高,開始被工業(yè)界重視[3-4],已經(jīng)成為機(jī)械視覺的重要發(fā)展方向。雖然嵌入式視覺傳感器優(yōu)點(diǎn)明顯,但大多仍然是基于二次開發(fā)平臺(tái)、以語言為基礎(chǔ)[5-6]。
本文討論的是新一代基于平臺(tái)開發(fā)的嵌入式視覺傳感器,其特點(diǎn)是能夠?qū)崿F(xiàn)圖可編程、算法可完全重組。而在嵌入式視覺傳感器軟件平臺(tái)開發(fā)前,必須明確圖像源的圖像點(diǎn)陣尺寸、光線與照明等基本信息。針對(duì)這些特征信息,讓嵌入式系統(tǒng)進(jìn)行必要的預(yù)處理(如處理尺寸、對(duì)比度、照度、自動(dòng)預(yù)置、二值化等)。這些算法都不需要編程,但需要構(gòu)造圖像信號(hào)預(yù)處理平臺(tái),實(shí)現(xiàn)開發(fā)平臺(tái)與圖像傳感器的溝通。預(yù)處理的好壞將直接影響到后續(xù)識(shí)別算法組態(tài)的效果[7-11]。目前,在大多數(shù)嵌入式視覺系統(tǒng)中,攝像頭的主要任務(wù)是采集和存儲(chǔ)圖像,圖像放在PC機(jī)上用后端軟件或者各種算法程序進(jìn)行預(yù)處理。而本文提出的預(yù)處理技術(shù),根據(jù)平臺(tái)工程和定制的需求,可實(shí)現(xiàn)源圖像信號(hào)合理的采集,在嵌入式SoC單片機(jī)上進(jìn)行前端處理,彌補(bǔ)了傳統(tǒng)方式下基于語言函數(shù)開發(fā)難度大、靈活性差和可靠性低的不足。
1.1系統(tǒng)組成
嵌入式視覺傳感器與平臺(tái)開發(fā)系統(tǒng)由PC機(jī)(包含平臺(tái)軟件)與嵌入式視覺傳感器(包含攝像頭、攝像接口、嵌入式SoC單片機(jī))組成。PC機(jī)與嵌入式SoC單片機(jī)通過各種通信接口(RS232/485、USB、以太網(wǎng))連接,實(shí)現(xiàn)PC端和嵌入式端的軟件下載、圖像數(shù)據(jù)傳輸、參數(shù)設(shè)置等任務(wù)。本文中的嵌入式視覺傳感器的主要硬件部件包括攝像頭OV7670、FIFO芯片AL422B、中央處理器STM32F103和1 MB容量的SRAM芯片IS62WV51216,系統(tǒng)組成如圖1所示。
圖1 系統(tǒng)組成
圖2 預(yù)處理的工作流程
1.2預(yù)處理內(nèi)容
將系統(tǒng)的預(yù)處理流程分為攝像頭配置和圖像處理這兩部分,如圖2所示。攝像頭配置主要對(duì)鏡頭參數(shù)進(jìn)行調(diào)整(包括飽和度、對(duì)比度、亮度、光照模式、特效等),而圖像處理是對(duì)攝像頭輸出數(shù)據(jù)進(jìn)行處理(包括灰度計(jì)算、圖像分割和二值化)。
在視覺平臺(tái)中用于圖像采集的是CMOS元件,它采集到的原始圖像是彩色圖像,對(duì)其進(jìn)行預(yù)處理以利于后續(xù)的特征信息提取和各種識(shí)別,配置攝像頭參數(shù)可以降低周圍環(huán)境對(duì)圖像畫質(zhì)的影響,獲得清晰圖像,而通過圖像裁剪和處理可以精簡原始圖像中的冗余信息,提取有效特征信息,進(jìn)而提高有用圖像信息的傳輸效率。
1.2.1變量
圖3 外部SRAM的變量映射
在預(yù)處理過程中,將全局變量、臨時(shí)圖像數(shù)據(jù)的安排定義在外部SRAM中,針對(duì)圖像處理分配兩個(gè)緩存區(qū)域:Raw data[]和Out data[],前者存放算法模塊處理前的圖像數(shù)據(jù),后者存放處理后的圖像數(shù)據(jù),如圖3所示。由于采用QVGA模式,RGB565格式,原始數(shù)據(jù)量為320×240×2字節(jié),等于150 KB,此處將每個(gè)緩存大小都設(shè)為160 KB。全局變量包括感興趣區(qū)域參數(shù)、攝像頭配置參數(shù)、圖像標(biāo)記參數(shù)等。
1.2.2攝像參數(shù)配置
對(duì)于圖像傳感器OV7670,用一個(gè)整型數(shù)來表示5種光照模式(0代表自動(dòng),1代表太陽,2代表陰天,3代表辦公室,4代表家里)。用一個(gè)整型數(shù)來表示7種特效(0代表普通模式,1代表負(fù)片,2代表黑白,3代表偏紅色,4代表偏綠色,5代表偏藍(lán)色,6代表復(fù)古)。鏡頭的色度、亮度和對(duì)比度3個(gè)參數(shù)在OV7670中的范圍都為[-2,2],分別用一個(gè)整型數(shù)來表示。為了實(shí)現(xiàn)正數(shù)的歸一化處理,即[-2,2]→[0,4]。攝像頭參數(shù)是通過PC機(jī)軟件界面,向嵌入式系統(tǒng)發(fā)送Modbus讀寫幀,進(jìn)行實(shí)時(shí)調(diào)整的。
1.2.3圖像處理
圖像處理算法存放在STM32F103中的Flash中,在攝像頭輸出的彩色圖像上進(jìn)行處理。
(1) 灰度計(jì)算
對(duì)于彩色圖轉(zhuǎn)換為灰度圖,從RGB到Y(jié)UV空間的Y轉(zhuǎn)換公式如下:
Gray=R×0.299+G×0.587+B×0.114
在實(shí)際應(yīng)用中,為了避免低速的浮點(diǎn)運(yùn)算,通常采用四舍五入去尾法轉(zhuǎn)化成整數(shù)運(yùn)算。但在整數(shù)運(yùn)算中需要用到除法運(yùn)算,移位相比更快。在16位運(yùn)算下,通過比較2~20精度的系數(shù),發(fā)現(xiàn)使用7位精度的移位運(yùn)算速度最快,如下所示:
Gray=(R×38+G×75+B×15)?7
(2) 圖像分割
圖4 ROI的坐標(biāo)表示
通常,一張完整的圖像中,并不是所有的區(qū)域都是有效可用的。如果對(duì)全圖進(jìn)行處理,不僅執(zhí)行速度慢,而且一些不相關(guān)的背景可能會(huì)影響處理結(jié)果。因此,選擇若干個(gè)感興趣區(qū)域(Region Of Interest,ROI)顯得十分必要。以選擇一個(gè)矩形的ROI為例,只需要知道矩形對(duì)角的兩個(gè)坐標(biāo)(x1,y1)和(x2,y2),如圖4所示。
通常在內(nèi)存中,一張圖像ROI的數(shù)據(jù)存儲(chǔ)是不連續(xù)的,因此無法直接從Out data[]數(shù)組中讀取并上傳給PC機(jī)。在嵌入式系統(tǒng)的控制任務(wù)中,需將不連續(xù)的數(shù)據(jù)重組成連續(xù)的數(shù)據(jù)后再上傳,其算法偽代碼如下:
UInt32index=0
For j =y1 to y2 step=1
For i=x1 to x2 step=1
OutBuf [index++] =out_data [width*j+i]
EndFor2
EndFor1
(3) 二值化
二值化的目的是將目標(biāo)物體和背景分開,得到黑白圖。采用自適應(yīng)閾值的Otsu法[12],對(duì)灰度圖像進(jìn)行二值化處理。其基本思想是:根據(jù)灰度大小,使用某一閾值將灰度圖分成目標(biāo)和背景兩類。當(dāng)類間的方差值G最大時(shí),得到的閾值θ就是最優(yōu)二值化的閾值,灰度值大于θ的像素設(shè)為255,小于θ的設(shè)為0。
在[0,L-1]的灰度級(jí)范圍內(nèi),設(shè)t為目標(biāo)C1(灰度值>t)與背景C2(灰度值≤t)的分割閾值,C1和C2的概率和灰度均值分別用u和w表示,灰度總平均為U0,每個(gè)灰度級(jí)的概率為pk。具體公式如下:
圖7 圖像處理的實(shí)驗(yàn)結(jié)果
C1和C2類間方差值的計(jì)算式為:
1.3通信方式
從攝像頭到PC機(jī)的傳輸方式,常用的有3種:串口、以太網(wǎng)和Camera Link。本文以最常用的串口為例,進(jìn)行數(shù)據(jù)傳輸。為了實(shí)現(xiàn)低速端口的高速圖像傳輸,設(shè)計(jì)使用一個(gè)1 MB容量的SRAM芯片作為外部輔助存儲(chǔ)器,存放大數(shù)據(jù)量的圖像信息。針對(duì)Modbus消息幀格式,將寄存器地址和數(shù)量的位數(shù)都定義為32位。其中,數(shù)據(jù)存儲(chǔ)格式采用的是大端模式,即數(shù)據(jù)高位字節(jié)存放在地址的低位上。
以PC機(jī)讀取一個(gè)左上角坐標(biāo)為(x1=0,y1=0)、length為100和width為100的小區(qū)域圖像為例,說明PC機(jī)與嵌入式系統(tǒng)的通信過程,以下分兩步執(zhí)行。
第一步,將區(qū)域信息寫入下位機(jī),以RTU方式發(fā)送寫數(shù)據(jù)幀,如圖5所示。
圖5 以RTU方式寫多個(gè)寄存器數(shù)據(jù)
第二步,讀取圖像數(shù)據(jù)。以RTU方式,采用分幀方式讀圖,每幀長度最大設(shè)為1000字節(jié),如圖6所示。結(jié)尾幀不滿1000字節(jié)的,按實(shí)際大小讀取數(shù)據(jù)。注意,每次寄存器地址要進(jìn)行偏移,需要加上前一次讀取的寄存器數(shù)量。
圖6 以RTU方式讀取數(shù)據(jù)
實(shí)驗(yàn)是在PC端視覺平臺(tái)上完成的,視覺平臺(tái)可以根據(jù)實(shí)際工程需要將圖像算法進(jìn)行重組,并聯(lián)合嵌入式視覺傳感器實(shí)現(xiàn)各個(gè)圖像算法的仿真調(diào)試功能。利用上述中的灰度化、區(qū)域分割和二值化方法對(duì)所采集到的原始圖像進(jìn)行處理。整個(gè)圖像處理程序是使用標(biāo)準(zhǔn)C語言來編寫每個(gè)算法,并通過圖形化的視覺平臺(tái)自動(dòng)生成。實(shí)驗(yàn)仿真的結(jié)果圖像如圖7所示。
根據(jù)1.2節(jié)的討論,先將獲得的彩色圖像進(jìn)行灰度化處理,對(duì)處理結(jié)果再進(jìn)行圖像分割。根據(jù)ROI的對(duì)角坐標(biāo)集,分割成小區(qū)域圖像。此實(shí)驗(yàn)選取的原始圖像分辨率為320×240,而ROI圖像樣本大小為60×50,這使數(shù)據(jù)量大幅度減少,最終使用自適應(yīng)閾值法進(jìn)行二值化處理。從上述實(shí)驗(yàn)圖片可以看出,數(shù)字信息保留較好,圖像特征突出。
一種通用的嵌入式圖像處理系統(tǒng)的預(yù)處理模型,是通過PC機(jī)的RS232接口發(fā)送讀寫幀方式,從而控制攝像頭和設(shè)置感興趣區(qū)域(ROI)。在嵌入式前端,通過組合各種圖像算法將16位RGB彩色大圖處理成新的8位黑白小圖。實(shí)驗(yàn)結(jié)果表明,該預(yù)處理方法具有可行性,數(shù)據(jù)量少,能快速處理實(shí)時(shí)圖像,為后續(xù)各種識(shí)別任務(wù)打下了良好的基礎(chǔ)。
[2] Casares M,Velipasalar S,Pinto A.Light-weight salient foreground detection for embedded smart cameras[J].Computer Vision and Image Understanding,2010,114(11):1223-1237.
[3] 任少斌,李元宗.基于機(jī)器視覺的微小陶瓷基材檢測(cè)系統(tǒng)研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2011,32(9):3240-3242.
[4] 胡明明,喬鐵柱,鄭補(bǔ)祥.基于NI機(jī)器視覺的膠帶縱向撕裂檢測(cè)系統(tǒng)[J].儀表技術(shù)與傳感器,2013(11):41-43.
[5] Zhang G,Pang S.An Embedded Image Processing System Based on Qt[M].Berlin:Springer Berlin Heidelberg,2012:159,361-366.
[6] Jara C A,Candelas F A,Gil P,et al.EJS+EjsRL:An interactive tool for industrial robots simulation,Computer Vision and remote operation[J].Robotics and Autonomous Systems,2011,59(6):389-401.
[7] Rudi A G,Jalili S.Image preprocessing with a parallel optoelectronic processor[J].Computers & Electrical Engineering,2015(46):554-565.
[8] Sajedi H,Jamzad M.BSS:Boosted steganography scheme with cover image preprocessing[J].Expert Systems with Applications,2010,37(12):7703-7710.
[9] Sandoval F,Prieto A,Cabestany J,et al.Traffic Sign Classification by Image Preprocessing and Neural Networks[M].Berlin:Springer Berlin Heidelberg,2007:741-748.
[10] 宋曉東.微平臺(tái)視覺檢測(cè)系統(tǒng)中的圖像預(yù)處理方法研究[J].輕工科技,2015(3):55-56.
[11] 袁小翠,吳祿慎,陳華偉.鋼軌表面缺陷檢測(cè)的圖像預(yù)處理改進(jìn)算法[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2014(5):800-805.
[12] 孫勇,肖勇,方彥軍.基于改進(jìn)自適應(yīng)閾值法的指針儀表圖像預(yù)處理[J].自動(dòng)化與儀表,2014,29(9):5-9.
王騰騰(研究生),主要研究方向?yàn)榍度胧较到y(tǒng)應(yīng)用;趙建勇(高級(jí)實(shí)驗(yàn)師),主要從事嵌入式系統(tǒng)開發(fā)研究。
Image Processing Technology for Integration of Visual Sensing and Information Processing
Wang Tengteng,Zhao Jianyong
(Hangzhou Dianzi University,Hangzhou 310018,China)
A kind of general technique for image preprocessing is proposed,which can realize effective communication between the vision sensor and the background of development system,and also can achieve the basic functions of image processing such as gray calculation,image segmentation and binarization.Besides,the variation of 32-bit Modbus protocol is designed for high-speed image transmission in the low-speed ports.The experimental results demonstrate that this method is simple and efficient,which not only provides a better pretreatment strategy for the embedded front-end processing,but also lays the foundation for the embedded intelligent visual development.
embedded system;image preprocessing;Modbus;OV7670
國家級(jí)-國家高技術(shù)研究發(fā)展計(jì)劃(863計(jì)劃)資助課題(2013AA040302)。
TP391.4
A
(責(zé)任編輯:薛士然2016-02-29)