張彥鐸,陳 馳,于寶成,王春梅
(1.武漢工程大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院,湖北 武漢 430074;2.智能機(jī)器人湖北省重點(diǎn)實(shí)驗(yàn)室,湖北 武漢 430074)
在圖像采集系統(tǒng)中,處理的實(shí)時(shí)性是系統(tǒng)的核心所在.在傳統(tǒng)的圖像采集系統(tǒng)中,通常采用“攝像機(jī)-圖像卡-計(jì)算機(jī)”的系統(tǒng)設(shè)計(jì)方式,在圖像算法方面通過計(jì)算機(jī)軟件實(shí)現(xiàn),這在低速、單傳感器的圖像采集時(shí)能滿足實(shí)際應(yīng)用.然而在高速圖像采集系統(tǒng)中,高速攝像機(jī)幀頻通常能達(dá)到100~200幀/秒(Frame Per Second,以下簡(jiǎn)稱:fps),基于多傳感器的視覺測(cè)試系統(tǒng)中,受到傳感器串行工作方式、輸入輸出端口(Input/Output,以下簡(jiǎn)稱:I/O)傳輸速度以及全部算法僅能由軟件實(shí)現(xiàn)等諸多方面的限制,使得系統(tǒng)實(shí)時(shí)性很難得到保證[1].因此,需要研制一種既能實(shí)時(shí)采集高速的圖像數(shù)據(jù),又能實(shí)時(shí)將采集得到的數(shù)據(jù)傳遞給計(jì)算機(jī)進(jìn)行處理的專用的圖像采集系統(tǒng).
在本系統(tǒng)中,使用面向儀器系統(tǒng)的外設(shè)部件互連標(biāo)準(zhǔn)(Peripheral Component Interconnect,以下簡(jiǎn)稱:PCI)擴(kuò)展平臺(tái)(PCI Extensions For Instrumentation,以下簡(jiǎn)稱:PXI)將采集得到的低電壓差分信號(hào)(Low-Voltage Differential Signaling,以下簡(jiǎn)稱:LVDS)交給在LabVIEW編譯環(huán)境實(shí)現(xiàn)的上位機(jī)進(jìn)行處理.LVDS是為了克服傳統(tǒng)電平方式傳輸帶寬高、碼率數(shù)據(jù)功耗大、抗電磁干擾能力弱而研制出的一種數(shù)字視頻信號(hào)傳輸方式.采用LVDS輸出接口的視頻信號(hào)在差分印制電路板 (Printed Circuit Board,以下簡(jiǎn)稱:PCB)線纜或平衡電纜上可以以幾百兆位/秒(Million Bits Per Second,以下簡(jiǎn)稱:Mbps)的速率傳輸.LVDS是采用極低的電壓擺幅高速差動(dòng)傳輸數(shù)據(jù),它使得信號(hào)能在差分PCB線纜或平衡電纜上以幾百M(fèi)bps的速率傳輸,可實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)與點(diǎn)對(duì)多點(diǎn)的連接,具有低功耗、低誤碼率、低串?dāng)_和低輻射等特點(diǎn).LVDS在對(duì)信號(hào)完整性、低抖動(dòng)即共模特性要求較高的系統(tǒng)中得到越來越廣泛的應(yīng)用[2].LabVIEW是一種使用圖像化編程方式的虛擬儀器軟件開發(fā)環(huán)境.它采用數(shù)據(jù)流編程方式,以圖表表示函數(shù),以連線表示數(shù)據(jù)流,測(cè)試測(cè)量是LabVIEW最核心的應(yīng)用領(lǐng)域,也是LabVIEW相比于其他編程語言的優(yōu)勢(shì)所在.LabVIEW廣泛的被工業(yè)界、學(xué)術(shù)界和研究實(shí)驗(yàn)室所采用,視為一種標(biāo)準(zhǔn)的數(shù)據(jù)采集和儀器控制軟件[3].
系統(tǒng)總體設(shè)計(jì)結(jié)構(gòu)如圖1所示,該測(cè)試系統(tǒng)以工控機(jī)為控制平臺(tái),內(nèi)嵌有測(cè)試軟件,通過測(cè)試軟件控制整個(gè)系統(tǒng)的工作.被測(cè)產(chǎn)品通過直流穩(wěn)壓電源供電工作,數(shù)模(Analog/Digital,以下簡(jiǎn)稱:A/D)采集模塊用來采集被測(cè)產(chǎn)品工作時(shí)的電流值和電壓值,并通過PXI總線將采集值上傳到工控機(jī)的測(cè)試軟件中,同時(shí)被測(cè)產(chǎn)品會(huì)發(fā)送帶有特定協(xié)議的多路并行的LVDS信號(hào),圖像調(diào)理模塊用來將采集得到的LVDS信號(hào)按照協(xié)議標(biāo)準(zhǔn)調(diào)理成為單路串行LVDS信號(hào).圖像采集模塊采集調(diào)理LVDS信號(hào),并通過PXI總線將采集的信號(hào)上傳給工控機(jī),供測(cè)試軟件分析和處理.
圖1 系統(tǒng)總體設(shè)計(jì)圖Fig.1 Overall design of the system
在對(duì)標(biāo)準(zhǔn)化儀器或通用規(guī)范進(jìn)行硬件接口設(shè)計(jì)時(shí),通常采用的是購買市場(chǎng)上通用的標(biāo)準(zhǔn)設(shè)備,購買標(biāo)準(zhǔn)設(shè)備有穩(wěn)定性好、精度高、擴(kuò)展性強(qiáng)、節(jié)約開發(fā)周期和成本等諸多優(yōu)點(diǎn).在對(duì)非標(biāo)準(zhǔn)儀器進(jìn)行接口設(shè)計(jì)時(shí),則需根據(jù)設(shè)備自身接口定義自行開發(fā)研制.
工控機(jī)采用的是凌華(ADLINK)的PXI-2508的機(jī)箱搭配PXI-3950的主控器,采用這種配置的工控機(jī)具有性能強(qiáng)、體積小、重量輕且方便攜帶等諸多優(yōu)點(diǎn),是一種專門為工業(yè)數(shù)據(jù)采集和自動(dòng)化應(yīng)用而量身定制的工控機(jī)配置.
A/D采集模塊選用的是ADLINK PXI-2020采集卡,該采集卡提供8通道模擬輸入通道,分辨率為16位,可以滿足對(duì)被測(cè)產(chǎn)品電流電壓實(shí)時(shí)監(jiān)控的需求.
圖像采集模塊采用的NI PXI-1428圖像采集卡進(jìn)行圖像信號(hào)采集,PXI-1428可通過LVDS接口接收數(shù)碼攝像機(jī)或其它兼容圖像采集設(shè)備的數(shù)據(jù),可以捕捉高速、高分辨率的大型數(shù)字圖像.該設(shè)備可以在40MHz采樣時(shí)鐘下以16位數(shù)據(jù)寬度采集數(shù)據(jù),總采集速率高達(dá)80兆字節(jié)每秒(Million Byte Per Second,以下簡(jiǎn)稱:MB/s).16兆字節(jié)(Million Byte,以下稱簡(jiǎn):MB)的板載內(nèi)存為板卡上的圖像提供了緩存,便于采集大型圖像并持續(xù)進(jìn)行實(shí)時(shí)采集.PXI-1428卡的緩存支持80 MB/s的數(shù)據(jù)輸入和133MB/s的PXI總線吞吐率,因此圖像采集、存儲(chǔ)都能滿足系統(tǒng)要求.
本系統(tǒng)中,被測(cè)產(chǎn)品的圖像數(shù)據(jù)采用的是并行多通道輸出,每一路通道上的數(shù)據(jù)都采用標(biāo)準(zhǔn)的LVDS信號(hào)格式進(jìn)行傳輸,因此根據(jù)實(shí)際情況研制圖像調(diào)理模塊將多路圖像信號(hào)調(diào)理成為可以供圖像采集卡采集的單路圖像信號(hào).系統(tǒng)硬件總體設(shè)計(jì)如圖2所示.
圖2 系統(tǒng)硬件總體設(shè)計(jì)Fig.2 Overall design of the system hardware
在多通道高速數(shù)據(jù)采集過程中,由于采集的數(shù)據(jù)量大、速度快,若采用在上位機(jī)對(duì)各個(gè)信號(hào)進(jìn)行處理會(huì)增加軟件工作負(fù)擔(dān),而導(dǎo)致系統(tǒng)實(shí)時(shí)性無法保證,因此需要研制專用硬件電路將多路信號(hào)實(shí)時(shí)轉(zhuǎn)換成單路信號(hào)供上位機(jī)使用.現(xiàn)場(chǎng)可編程門陣列(Field-Programmable Gate Array,以下簡(jiǎn)稱:FPGA),全部的控制邏輯都由硬件實(shí)現(xiàn),因此能有效地應(yīng)用在多通道高速圖像數(shù)據(jù)采集處理中[4-5],圖像調(diào)理卡的總體設(shè)計(jì)如圖3所示.
圖3 圖像調(diào)理卡總體設(shè)計(jì)(虛線內(nèi))Fig.3 Overall design of image processing card(dashed line)
同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器(Synchronous Dynamic Random Access Memory,以下簡(jiǎn)稱:SDRAM)采用的是HYNIX公司的HYM72V64636BT8,該芯片容量為32M×8bit×4bank.FPGA采用的是由Xilinx公司生產(chǎn)的Spartan-6,該芯片采用低功耗的45nm制作工藝,含有150000個(gè)邏輯單元.電源采用的是 MP1482,50MHz的晶振,F(xiàn)PGA邏輯圖如圖4所示.
圖4 FPGA邏輯圖Fig.4 Logic diagram of FPGA
FPGA硬件資源進(jìn)行如下分配:
①地址編譯:完成地址的編碼和譯碼;
②數(shù)據(jù)緩沖:完成輸入數(shù)據(jù)到SDRAM得數(shù)據(jù)緩沖;
③鎖相環(huán)(Phase Locked Loop,PLL):用于完成時(shí)鐘管理;
④調(diào)理電路:通過硬件編程語言實(shí)現(xiàn)的邏輯電路,用于將多路信號(hào)合并成單路信號(hào);
⑤刷新/仲裁:SDRAM 工作時(shí)鐘為100 MHz,需要在64ms內(nèi)刷新8192行數(shù)據(jù),刷新電路用于刷新計(jì)時(shí),完成計(jì)時(shí)后向仲裁電路發(fā)送請(qǐng)求用于向SDRAM發(fā)送刷新命令.
本系統(tǒng)中共有三路傳感器信號(hào),其中DA信號(hào)用作幀同步信號(hào),DB信號(hào)用作圖像信號(hào),DC信號(hào)用作字同步信號(hào),CLK1為50MHz時(shí)鐘,CLK2是倍頻后的時(shí)鐘,為100MHz,EN為數(shù)據(jù)有效信號(hào).在本系統(tǒng)中,幀同步信號(hào)DA每幀出現(xiàn)一次,使用上升沿觸發(fā);DC每個(gè)字出現(xiàn)一次,也使用上升沿觸發(fā).當(dāng)EN信號(hào)有效時(shí),F(xiàn)PGA對(duì)數(shù)據(jù)進(jìn)行接收和處理,將DA、DB、DC三路信號(hào)調(diào)理成為一路信號(hào),并將該信號(hào)寫入到SDRAM緩存中.接收信號(hào)的時(shí)序圖如圖5所示.
圖5 信號(hào)時(shí)序圖Fig.5 Timing diagram of signal
采集系統(tǒng)軟件總體設(shè)計(jì)如圖6所示.系統(tǒng)軟件由兩部分組成,第一部分用于實(shí)現(xiàn)圖像的實(shí)時(shí)采集、處理和存儲(chǔ)功能,采集圖像數(shù)據(jù),并經(jīng)過一系列處理提供給用戶觀察,同時(shí)將采集得到的數(shù)據(jù)進(jìn)行保存;第二部分用于實(shí)現(xiàn)事后回放功能,提供用戶詳細(xì)觀察采集數(shù)據(jù)的功能.
圖6 系統(tǒng)軟件總體設(shè)計(jì)圖Fig.6 Overall design of the system software
圖像經(jīng)過PXI總線送到計(jì)算機(jī)內(nèi)存中,經(jīng)過一系列處理后將數(shù)據(jù)導(dǎo)到顯示器上提供給客戶實(shí)時(shí)觀察,并將該數(shù)據(jù)轉(zhuǎn)移到硬盤中進(jìn)行存儲(chǔ),在這個(gè)過程中,共涉及到了三個(gè)線程.因此采用“生產(chǎn)者/消費(fèi)者”結(jié)構(gòu),“生產(chǎn)者/消費(fèi)者”結(jié)構(gòu)是多線程編程中一種最常見的設(shè)計(jì)模式.從軟件的角度看,生產(chǎn)者是數(shù)據(jù)的提供方,消費(fèi)者是數(shù)據(jù)的消費(fèi)方,生產(chǎn)者和消費(fèi)者之間存在一個(gè)數(shù)據(jù)緩存區(qū),大小一般固定,當(dāng)生產(chǎn)過剩而消費(fèi)不足時(shí),緩存區(qū)的空間將被耗盡,此時(shí)生產(chǎn)者必須停止生產(chǎn)直到緩存區(qū)出現(xiàn)剩余空間.同理,當(dāng)消費(fèi)能力大于生產(chǎn)能力時(shí),緩存區(qū)內(nèi)的數(shù)據(jù)會(huì)逐漸減少,直到緩存區(qū)內(nèi)再無數(shù)據(jù)可用,此時(shí),消費(fèi)者處于等待狀態(tài)[6-7].在此圖像采集線程作為生產(chǎn)者,而圖像處理線程和圖像存儲(chǔ)線程作為消費(fèi)者.
3.2.1 數(shù)據(jù)采集 圖像采集卡將采集得到的圖像數(shù)據(jù)放入先入先出(First Input First Output,F(xiàn)IFO)緩存區(qū)中,然后驅(qū)動(dòng)程序通過PXI總線將圖像卡緩存中的數(shù)據(jù)送到計(jì)算機(jī)內(nèi)存中.使用LabVIEW進(jìn)行采集的步驟如下所示:
①調(diào)用IMAQ Init.vi完成圖像采集卡的初始化工作;
②調(diào)用IMAQ Grab Setup.vi初始化連續(xù)采集過程;
③調(diào)用IMAQ Create.vi創(chuàng)建圖像數(shù)據(jù)緩沖區(qū);
④調(diào)用IMAQ Grab Acquire.vi快速采集圖像數(shù)據(jù);
⑤調(diào)用IMAQ Close.vi關(guān)閉占用的圖像采集板卡;
⑥調(diào)用IMAQ Dispose.vi釋放占用的圖像數(shù)據(jù)緩沖區(qū).
采集程序的程序流程圖如圖7所示.
圖7 采集程序流程圖Fig.7 Flow char of acquisition program
當(dāng)圖像采集速度非常高時(shí),可以適當(dāng)?shù)膶⒁粋€(gè)大的緩存區(qū)劃分成若干個(gè)小的緩存區(qū),采集得到的數(shù)據(jù)分步式寫入緩存區(qū)或從緩存區(qū)中讀出,如圖8所示,這樣就可以有效地預(yù)防緩沖區(qū)中的圖像數(shù)據(jù)還沒有被處理干凈的情況下就被新的圖像數(shù)據(jù)覆蓋.
圖8 分步緩存寫入/讀出Fig.8 Cache read/write step by step
3.2.2 數(shù)據(jù)處理 應(yīng)用程序建立兩個(gè)線程分別來實(shí)現(xiàn)數(shù)據(jù)從圖像卡到內(nèi)存的操作和數(shù)據(jù)由內(nèi)存到顯示器顯示的操作.兩個(gè)線程以低耦合的方式運(yùn)作,最大限度地調(diào)動(dòng)了中央處理器(Central Processing Unit,CPU)和內(nèi)存的執(zhí)行效率,實(shí)現(xiàn)了實(shí)時(shí)的采集、處理功能.LabVIEW以其特有的自動(dòng)多線程的編程特點(diǎn),可以合理的分配兩個(gè)線程之間的時(shí)間片,實(shí)現(xiàn)兩個(gè)線程并發(fā)進(jìn)行.采集線程用來接收?qǐng)D像采集卡采集得到的數(shù)據(jù),采用乒乓讀寫方式[8],將該數(shù)據(jù)送到處理進(jìn)程和存儲(chǔ)進(jìn)程中去,在此線程中設(shè)置兩個(gè)數(shù)據(jù)緩沖區(qū)(Buffer,以下簡(jiǎn)稱:BUF)BUF1和BUF2,當(dāng)一個(gè)緩沖區(qū)緩沖從圖像采集卡接受的數(shù)據(jù)時(shí),另一個(gè)緩沖區(qū)將采集得到的圖像數(shù)據(jù)輸出到處理和存儲(chǔ)線程中,如圖9所示.
圖9 乒乓讀寫Fig.9 Table tennis to read and write
數(shù)據(jù)采集時(shí),在幀同步信號(hào)為高時(shí),將采集得到的數(shù)據(jù)寫入緩存BUF1中,與此同時(shí),將緩存BUF2中的數(shù)據(jù)讀出,并將該數(shù)據(jù)流處理和存儲(chǔ)線程.在幀同步信號(hào)為低時(shí),將采集得到的數(shù)據(jù)寫入緩存BUF2中,與此同時(shí),將緩存BUF1中的數(shù)據(jù)讀出,并將該數(shù)據(jù)流處理和存儲(chǔ)線程.通過這種乒乓讀寫方式實(shí)現(xiàn)數(shù)據(jù)流的無縫緩存.
處理線程用于將采集得到的圖像數(shù)據(jù)進(jìn)行分析和顯示,考慮到計(jì)算機(jī)運(yùn)行的效率以及人類視覺的滯留時(shí)間,需要選擇適當(dāng)幀數(shù)用于顯示和觀察,通常設(shè)置為25~30Hz.
3.2.3 數(shù)據(jù)存儲(chǔ) 數(shù)據(jù)存儲(chǔ)線程用來實(shí)現(xiàn)數(shù)據(jù)由內(nèi)存到硬盤存儲(chǔ)的操作,考慮到硬盤的讀寫速度和每次寫操作完成的時(shí)間,在此線程中開辟一個(gè)能存儲(chǔ)100幀圖像的緩存區(qū),讓每次寫操作完成100幀數(shù)據(jù)的存儲(chǔ).
沒有經(jīng)過任何處理的圖像數(shù)據(jù)通常特別巨大,而提供給應(yīng)用程序的內(nèi)存的容量卻是有限的,因此需要合理分配內(nèi)存資源.
應(yīng)用程序在此建立兩個(gè)線程分別完成數(shù)據(jù)的顯示和加載,顯示線程將所需數(shù)據(jù)從內(nèi)存中取出后并加以分析和顯示.加載線程主要實(shí)現(xiàn)內(nèi)存的管理,該線程將下一時(shí)刻內(nèi)存中所需數(shù)據(jù)從硬盤中取出,并將使用過的數(shù)據(jù)從內(nèi)存中清空,在此采用塊加載,每次加載100幀數(shù)據(jù),這樣可以有效地提高程序的運(yùn)行效率.
該系統(tǒng)中使用的高速攝像機(jī)的幀頻為100 fps,圖像分辨率為128×128×16位,圖像的采集、存儲(chǔ)速度約為26Mbps,連續(xù)存儲(chǔ)時(shí)間不低于2h,工控機(jī)為酷睿雙核T7500,1024吉字節(jié)(Gigabyte,GB)硬盤,2GB內(nèi)存,圖像采集卡為 NI PXI-1428.操作系統(tǒng)為微軟XP SP3,采集時(shí)的頻率不能低于100fps,回放時(shí)能夠以100fps的頻率連續(xù)播放存儲(chǔ)兩小時(shí)以上的圖像數(shù)據(jù).
經(jīng)過實(shí)驗(yàn)證明,在2個(gè)小時(shí)的采集存儲(chǔ)中,采集得到的圖像清晰穩(wěn)定,沒有出現(xiàn)丟幀現(xiàn)象,采集的幀頻穩(wěn)定在100fps.在此采集過程中CPU的占用率穩(wěn)定在40%以下,內(nèi)存使用率低于35%,基于LabVIEW的LVDS高速圖像采集系統(tǒng)完全可以滿足速度為26Mbps的圖像采集要求,并且還為更加高速的圖像采集提供了可能.
本文在對(duì)LabVIEW編譯環(huán)境下的基于PXI平臺(tái)的圖像采集系統(tǒng)的基本工作原理做了一個(gè)基本的介紹,并講述了如何使用LabVIEW編程語言實(shí)現(xiàn)高速圖像數(shù)據(jù)的采集和處理.經(jīng)過實(shí)際的反復(fù)測(cè)試,證明采用LabVIEW的編程環(huán)境,不僅使得編程效率大幅提升,而且實(shí)現(xiàn)了穩(wěn)定的高速圖像采集和處理功能,使得該系統(tǒng)不僅實(shí)現(xiàn)了預(yù)期的效果,并且還有進(jìn)一步挖掘其潛力的空間.
[1]黃立勝,劉月花.遙感數(shù)據(jù)的高速實(shí)時(shí)記錄器[J].遙感學(xué)報(bào),2003,7(1):19-25.HUANG Li-sheng,LIU Yue-h(huán)ua.A High-Speed Real-Time Digital Recorder Based on Personal Computer[J].Journal of Remote Sensing,2003,7(1):19-25.(in Chinese)
[2]王勝,王新宇.LVDS技術(shù)及其在高速系統(tǒng)中的應(yīng)用[J].遙測(cè)遙控,2005,26(4):41-46.Wang Sheng,Wang Xinyu.LVDS and It's Application in High Speed System [J].Telemetry &Telecontrol,2005,26(4):41-46.(in Chinese)
[3]陳煜.一種專用光機(jī)組件測(cè)控系統(tǒng)的設(shè)計(jì)與開發(fā)[D].武漢:武漢工程大學(xué),2011.CHEN Yu.The Design and Development of a Special Ray Machine Components Control System[D].Wuhan:Wuhan Institute of Technology,2011.(in Chinese)
[4]侯朝勇,胡學(xué)浩,庒童.基于FPGA的多路同步實(shí)時(shí)數(shù)據(jù)采集系統(tǒng)[J].電子技術(shù)應(yīng)用,2009,35(10):103-105,108.HOU Chao Yong,HU Xue Hao,ZHUANG Tong.Multi-channel synchronal real-time data acquisition system based on FPGA[J].Application of Electronic Technique,2009,35(10):103-105,108.(in Chinese)
[5]胡宏平,胡兵.基于FPGA的雙口RAM在信號(hào)采集中的應(yīng)用[J].微計(jì)算機(jī)信息,2007,23(7-2):223-224,229.HU HONGPING,HU BING.Application of Dualport RAM Based on FPGA in the Signal Acquisition[J].Microcomputer Information,2007,23(7-2):223-224,229.(in Chinese)
[6]雷晏瑤,李智.基于生產(chǎn)者/消費(fèi)者的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].機(jī)械,2011,38(9):39-43.LEI Yan-yao,LI Zhi.Design of data acquisition system based on producer/consumer[J].Machinery,2011,38(9):39-43.(in Chinese)
[7]張秀娟.生產(chǎn)者-消費(fèi)者采集建模與行為分析方法研究[J].微電子學(xué)與計(jì)算機(jī),2004,21(5):97-100.Zhang Xiu-juan.Modeling and Behavior Analysis for Producer-Consumer System[J].Microelectronics &Computer,2004,21(5):97-100.(in Chinese)
[8]Hennessy J L,Patterson D A.Computer Architecture: A Quantitative Approach [M].San Francisco:Morgan Kaufmann Publishers,1996.