王光興, 李洪祚, 黃 勇, 楊 帆
(1.長(zhǎng)春理工大學(xué)電子信息工程學(xué)院,吉林長(zhǎng)春 130022;2.吉林省博安消防設(shè)備有限公司,吉林長(zhǎng)春 130022)
機(jī)器視覺(jué)就是用機(jī)器代替人眼來(lái)做測(cè)量和判斷。機(jī)器視覺(jué)系統(tǒng)是指通過(guò)機(jī)器視覺(jué)產(chǎn)品(即圖像攝取裝置,分CMOS和CCD兩種)將被攝取目標(biāo)轉(zhuǎn)換成圖像信號(hào),傳送給專用的圖像處理系統(tǒng),根據(jù)像素分布和亮度、顏色等信息,轉(zhuǎn)變成數(shù)字化信號(hào);圖像系統(tǒng)對(duì)這些信號(hào)進(jìn)行各種運(yùn)算來(lái)抽取目標(biāo)特征,進(jìn)而根據(jù)判別的結(jié)果來(lái)控制現(xiàn)場(chǎng)的設(shè)備動(dòng)作。文中將MT9V034這種幀曝光圖像傳感器作為機(jī)器視覺(jué)的傳感器,通過(guò)DSP對(duì)采集的圖像進(jìn)行分析和處理,完成對(duì)背景光源的亮度和傳感器電子快門時(shí)間的控制,設(shè)計(jì)出一款背景光源亮度可調(diào)的工業(yè)化智能相機(jī)為貼片機(jī)服務(wù)。
系統(tǒng)整體結(jié)構(gòu)框圖如圖1所示。
圖1 系統(tǒng)整體結(jié)構(gòu)框圖
主控芯片采用DSP28335,該芯片沒(méi)有獨(dú)立的圖像采集接口,不能與CMOS圖像傳感器無(wú)縫連接。在CMOS圖像傳感器和DSP直接加了一個(gè)FIFO芯片,此FIFO芯片內(nèi)存非常大,可以將一幀圖像完整地存在內(nèi)部。SRAM作為圖像存儲(chǔ)芯片,CPLD與CY7C68013A相連作為圖像的傳輸芯片,將圖像數(shù)據(jù)經(jīng)過(guò)USB總線傳至上位機(jī)。CY7V68013A是一款集成SIE收發(fā)器的USB協(xié)議芯片,內(nèi)置51內(nèi)核接口簡(jiǎn)單,數(shù)據(jù)傳輸速度快。DSP28335具有內(nèi)部PWM模塊,可以進(jìn)行光源的控制。通過(guò)不同的占空比,使光源的亮度可調(diào)。
CMOS圖像傳感器選用MT9V034——一款36 W像素的幀曝光圖像傳感器。幀曝光圖像傳感器在曝光的時(shí)候采取整幀曝光,同一時(shí)間將整個(gè)傳感器暴露出來(lái),在對(duì)運(yùn)行中的物體進(jìn)行采集的時(shí)候,不會(huì)發(fā)生形變。CMOS圖像傳感器輸出的圖像數(shù)據(jù)包括:幀同步信號(hào)、行同步信號(hào)、像素輸出時(shí)鐘、圖像數(shù)據(jù)。幀同步信號(hào)標(biāo)志著一幀圖像的開(kāi)始和結(jié)束;行同步信號(hào)標(biāo)志著一幀中一行圖像的開(kāi)始和結(jié)束;加上像素輸出時(shí)鐘的約束,即可以將圖像完美地表示出來(lái)。
AL422B是內(nèi)存為3 Mbits的雙口FIFO芯片,可以存放393 216*8 bits數(shù)據(jù)。圖像傳感器設(shè)置為輸出尺寸640*480*8 bits=307 200*8 bits,可以清晰地看出在AL422B芯片內(nèi)部正好可以存上完整的一幀圖像。MT9V034寄存器配置引腳與DSP相連,使得DSP可以完成對(duì)MT9V034內(nèi)部寄存器的配置工作,配置總線采用IIC總線。MT9V034傳感器的幀同步信號(hào)(FRAME_VALID)連接DSP并在DSP配置引腳的時(shí)候配置成下降沿中斷觸發(fā)模式,檢測(cè)幀頭幀尾功能。MT9V034的行有效信號(hào)(LINE_VALID)與DSP一個(gè)普通IO與非后控制AL422B的寫使能。MT9V034的數(shù)據(jù)輸出引腳和時(shí)鐘引腳與AL422B相連,在DSP的控制下將圖像數(shù)據(jù)傳輸?shù)紸L422B中,做圖像的緩存工作。
DSP28335內(nèi)部存在一個(gè)DMA控制器,直接存儲(chǔ)訪問(wèn)(DMA)模塊是在不需要CPU仲裁的情況下提供的一種在外設(shè)和內(nèi)存之間傳遞數(shù)據(jù)的硬件辦法。DMA技術(shù)可以在后臺(tái)完成數(shù)據(jù)傳輸,減輕CPU的工作量,對(duì)于DSP28335這樣的沒(méi)有視頻接口的DSP芯片的圖像采集和圖像傳輸工作有很大的幫助。根據(jù)DSP內(nèi)部的DMA控制器的時(shí)序要求,需要將FIFO芯片AL422B連接在地址和數(shù)據(jù)總線上。AL422B在DSP地址總線上的編碼為0x200000。
高速可讀寫存儲(chǔ)器SRAM作為圖像的存儲(chǔ)芯片,型號(hào)為IS61LV51216,DSP的外設(shè)接口可以與此SRAM芯片無(wú)縫連接,地址分配為0x100000~0x17FFFF。
USB芯片使用 Cpress公司的CY7C68013A,此USB芯片內(nèi)部含有一個(gè)51內(nèi)核,通過(guò)對(duì)內(nèi)部固件程序的編寫,可以使CY7C68013A工作在SLAVE_FIFO模式,使用非常簡(jiǎn)單,Cpress公司提供基本的固件程序模塊,僅需要簡(jiǎn)單修改即可。在與上位機(jī)連接時(shí),Cpress公司同時(shí)提供了可以正常使用的驅(qū)動(dòng)程序,大大簡(jiǎn)化了DSP與上位機(jī)通過(guò)USB總線連接的方法[1]。
DSP的數(shù)據(jù)總線同時(shí)與CY7C68013A和CPLD相連,地址總線XA8~XA11與CPLD相連,進(jìn)行部分地址的編碼。當(dāng)CY7C68013A的FIFO中存到2 KB數(shù)據(jù)時(shí),CY7C68013A將此數(shù)據(jù)包打包發(fā)往上位機(jī)。CY7C68013A的FIFO狀態(tài)引腳與CPLD相連,并可以通過(guò)總線傳到DSP內(nèi)部,完成對(duì)FIFO狀態(tài)的監(jiān)控。當(dāng)DSP檢測(cè)到FIFO為非滿時(shí),啟動(dòng)下一次傳輸,繼續(xù)向FIFO中寫入數(shù)據(jù)。由于USB發(fā)送數(shù)據(jù)比DSP向FIFO中發(fā)送數(shù)據(jù)快,所以,這樣既可以加快傳輸速度又避免了出錯(cuò)[2]。
LM3410為L(zhǎng)ED驅(qū)動(dòng)芯片,最大輸出電流為2.8 A。工作時(shí)外圍電路非常簡(jiǎn)單,而且芯片具有反饋引腳,在芯片內(nèi)部可以完成自動(dòng)控制功能。LM3410芯片和其外圍電路構(gòu)成一個(gè)升壓斬波電路。在DIMM引腳處接占空比可調(diào)的PWM信號(hào),就可以完成對(duì)背景光源的控制。LM3410光源驅(qū)動(dòng)芯片外圍電路如圖2所示。
圖2 LM3410光源驅(qū)動(dòng)芯片外圍電路
整個(gè)系統(tǒng)的軟件分為4個(gè)部分,USB芯片固件程序、DSP程序、CPLD程序和上位機(jī)程序。USB芯片的固件程序使USB芯片CY7C68013A運(yùn)行在SLAVE_FIFO模式,USB芯片負(fù)責(zé)完成上位機(jī)和DSP芯片的數(shù)據(jù)交流工作;DSP程序是整個(gè)系統(tǒng)的核心,負(fù)責(zé)采集圖像、處理圖像、傳輸圖像以及背景光源的控制等工作;CPLD程序負(fù)責(zé)將DSP系統(tǒng)的地址擴(kuò)展以便DSP連接USB芯片;上位機(jī)程序使用Lab View軟件,負(fù)責(zé)向DSP芯片發(fā)送指令以及顯示圖像數(shù)據(jù)[3]。
通過(guò)對(duì)USB芯片CY7C68013A固件程序的編寫,使此芯片工作在異步SLAVE_FIFO模式。當(dāng)FIFO內(nèi)數(shù)據(jù)到達(dá)2 KB時(shí),由內(nèi)置的51內(nèi)核將圖像數(shù)據(jù)打包通過(guò)USB總線發(fā)送到上位機(jī)。下面為3個(gè)比較重要的寄存器配置,這3條程序位置在void TD_Init(void)函數(shù)中。
DSP作為整個(gè)系統(tǒng)的核心模塊,啟動(dòng)后DSP一直等待上位機(jī)發(fā)來(lái)的指令。如果上位機(jī)發(fā)送來(lái)的指令是快速模式的話,DSP會(huì)直接采集圖像然后傳給上位機(jī)。如果為慢速模式時(shí),DSP會(huì)依據(jù)具體指令對(duì)光源亮度和電子快門時(shí)間進(jìn)行設(shè)定,再進(jìn)行圖像采集、圖像處理和圖像傳輸?shù)裙ぷ鳌3绦蛘w流程如圖3所示。
圖3 整體軟件流程
3.2.1 圖像采集程序
圖像傳感器的配置使用IIC總線,DSP通過(guò)IIC總線完成圖像傳感器的配置工作[4]。圖像采集部分按數(shù)據(jù)流向分為兩個(gè)階段:第一階段圖像數(shù)據(jù)流由CMOS圖像傳感器到FIFO芯片;第二階段圖像數(shù)據(jù)流由FIFO芯片到SRAM中。
第一階段,利用下降沿檢測(cè)中斷檢測(cè)圖像傳感器的幀同步信號(hào),DSP連接在與非門的引腳輸出高電平。在CMOS傳感器行同步信號(hào)的限制下,圖像數(shù)據(jù)流入FIFO芯片中。當(dāng)再次檢測(cè)到下降沿時(shí),標(biāo)志著圖像數(shù)據(jù)的幀尾標(biāo)志,關(guān)閉流向FIFO的數(shù)據(jù)通道,到此第一階段完成。第二階段,利用DMA控制器將FIFO芯片地址(0x200000)的數(shù)據(jù)傳輸?shù)絊RAM芯片地址(0x100000)中,完成圖像數(shù)據(jù)流向SRAM中。至此完成圖像數(shù)據(jù)采集工作,圖像數(shù)據(jù)由圖像傳感器到達(dá)SRAM中。
3.2.2 圖像傳輸和圖像處理程序
圖像處理部分由很多個(gè)圖像處理子函數(shù)組成[5],還可以根據(jù)個(gè)人需要再次添加圖像處理函數(shù),在SRAM中可以存3幀圖像數(shù)據(jù),在進(jìn)行圖像處理時(shí)可以作為圖像數(shù)據(jù)的緩存。
圖像傳輸部分同樣是由DMA模塊控制的,由DMA控制器將存在SRAM中的圖像數(shù)據(jù)發(fā)送到CY7C68013A芯片內(nèi)部的FIFO中,再由CY7C68013A芯片打包發(fā)送到上位機(jī)。由于圖像數(shù)據(jù)量特別大且CY7C68013A片內(nèi)的FIFO尺寸問(wèn)題,所以圖像傳輸時(shí)需要經(jīng)過(guò)很多次DMA傳輸。其傳輸子函數(shù)如下:
3.2.3 DSP發(fā)送的占空比可調(diào)的PWM
DSP28335內(nèi)部具有一個(gè)強(qiáng)大的PWM模塊,可以完成很多功能,這里僅用到它的很簡(jiǎn)單的功能,發(fā)送一個(gè)占空比可調(diào)的方波。EPwm5Regs.TBPRD寄存器設(shè)置方波的周期,EPwm5Regs.CMPA.half.CMPA寄存器設(shè)置方波的占空比,通過(guò)設(shè)置不同的值來(lái)調(diào)整方波的占空比。
NI-VISA(Virtual Instrument Software Architecture)是美國(guó)國(guó)家儀器公司開(kāi)發(fā)的一種用來(lái)與各種儀器總線進(jìn)行通信的高級(jí)應(yīng)用編程接口[6]。在Lab View上使用NI-VISA進(jìn)行USB通信時(shí),使用USB RAW設(shè)備,USB RAW設(shè)備是指除了明確符合USB TMC規(guī)格的儀器之外的任何USB設(shè)備,通信時(shí)需要進(jìn)行配置。通過(guò)查詢USB設(shè)備的PID和VID的數(shù)值,建立驅(qū)動(dòng)程序。之后即可以很方便使用PID和VID的值,在Lab View程序中調(diào)用這個(gè)USB設(shè)備。
上位機(jī)通過(guò)USB總線與DSP系統(tǒng)連接在一起,通過(guò)發(fā)送不同的數(shù)據(jù)指令,完成多種功能[7]。
USB指令格式(共66 bits)見(jiàn)表1。
表2 PDO1通信參數(shù)設(shè)置
傳輸?shù)暮竺婢哂蠧RC16的32位數(shù)據(jù)校驗(yàn)區(qū),保證數(shù)據(jù)的可靠傳輸。
MODE:0為慢速圖像采集模式,在圖像采集時(shí)可以進(jìn)行背景光源的控制,電子快門的控制以及進(jìn)行一些圖像處理功能;1為高速圖像采集模式,DSP接到此命令以后僅進(jìn)行圖像采集,然后立即將圖像數(shù)據(jù)上傳到上位機(jī),其它位的數(shù)值均被忽略;
LED:LED的值為0時(shí),背景光源采集自動(dòng)控制,首先進(jìn)行一次圖像采集,然后對(duì)此圖像進(jìn)行判斷,根據(jù)判斷的結(jié)果調(diào)整光源亮度;LED的值為1時(shí),LEDVALUE的值有效,根據(jù)此值調(diào)整光源亮度;
LEDVALUE:當(dāng)LED為1時(shí),有效。其值為PWM的占空比,即亮度程度。范圍在10~90之內(nèi),代表10%~90%;
SHUTTER:當(dāng)SHUTTER為0時(shí),自動(dòng)控制圖像傳感器的電子快門時(shí)間;為1時(shí),根據(jù)S_VALUE的值,手動(dòng)設(shè)置電子快門時(shí)間;
S_VALUE:圖像傳感器的電子快門時(shí)間;范圍在10~32 765之內(nèi);
PROCESS:為1時(shí),圖像采集以后進(jìn)行圖像處理,進(jìn)行何種圖像處理功能由P_TYPE確定;為0時(shí),不進(jìn)行任何圖像處理;
P_TYPE:圖像處理類型;
SEND:為1時(shí),圖像通過(guò)USB數(shù)據(jù)總線發(fā)送到上位機(jī);為0時(shí),不發(fā)送。
硬件連接圖及實(shí)驗(yàn)平臺(tái)如圖4所示。
圖4 實(shí)物圖
系統(tǒng)通過(guò)總線隔離和地址譯碼,只使用簡(jiǎn)單的雙口FIFO芯片AL422B接入DSP,僅占用DSP少量軟件開(kāi)銷和總線資源就完成圖像數(shù)據(jù)的采集。與采用視頻接口芯片、外圍FIFO和CPLD/FPGA等方案相比[8],很大程度上降低了系統(tǒng)成本,縮短了開(kāi)發(fā)周期,對(duì)系統(tǒng)總線的占用卻并沒(méi)有增加。利用CY7C68013A大大簡(jiǎn)化了DSP與上位機(jī)通過(guò)USB總線連接的方法;利用LM3410可使工作時(shí)外圍電路非常簡(jiǎn)單并完成對(duì)背景光源的控制,減少系統(tǒng)中斷次數(shù),優(yōu)化系統(tǒng)性能,能夠?qū)D像處理的結(jié)果直觀地顯示出來(lái)。與其它DSP系統(tǒng)相比,本系統(tǒng)具有處理速度快、接口簡(jiǎn)單、成本低、能實(shí)時(shí)顯示的特點(diǎn),適用于視覺(jué)導(dǎo)航、視頻實(shí)時(shí)處理等要求高速處理圖像以及有實(shí)時(shí)演示要求的場(chǎng)合。
[1] 王文杰.USB2_0加密接口芯片的設(shè)計(jì)及其FPGA驗(yàn)證[D]:[碩士學(xué)位論文].長(zhǎng)沙:中南大學(xué),2008.
[2] 趙彥全.基于FX2的數(shù)據(jù)源設(shè)計(jì)與USB2_0高速傳輸探討[D]:[碩士學(xué)位論文].北京:中國(guó)科學(xué)院電子學(xué)研究所,2006.
[3] 段雷.基于DSP+FPGA的圖像處理電路板硬件設(shè)計(jì)[D]:[碩士學(xué)位論文].成都:西南交通大學(xué),2008.
[4] 何維.一種高速數(shù)據(jù)采集及存儲(chǔ)系統(tǒng)的研究[D]:[碩士學(xué)位論文].西安:西北工業(yè)大學(xué),2007.
[5] 岡薩雷斯.數(shù)字圖像處理[M].2版.北京:電子工業(yè)出版社,2004:59-98.
[6] 余志榮,楊莉.基于NI-VISA與Lab VIEW的USB接口應(yīng)用設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2007(1):66-69.
[7] 楊樂(lè)平,李海濤,趙勇,等.Lab VIEW高級(jí)程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2003:37-44.
[8] 閆豐.一種基于FPGA的實(shí)時(shí)圖像處理系統(tǒng)[J].長(zhǎng)春工業(yè)大學(xué)學(xué)報(bào):自然科學(xué)版,2003,24(4):50-52.