《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 測試測量 > 設(shè)計應(yīng)用 > LabVIEW應(yīng)用于實時圖像采集及處理系統(tǒng)
LabVIEW應(yīng)用于實時圖像采集及處理系統(tǒng)
維庫
摘要: 在LabVIEW和NI-IMAQ Vision軟件平臺下,,利用通用圖像采集卡開發(fā)一種圖像實時采集處理虛擬儀器系統(tǒng),。通過調(diào)用動態(tài)鏈接庫驅(qū)動通用圖像采集卡完成圖像采集,,采集圖像的幀速率達(dá)到25幀每秒,。利用NI-IMAQ
Abstract:
Key words :

      1.引言

  美國國家儀器(NI)公司的虛擬儀器開發(fā)平臺LabVIEW,,使用圖形化編程語言編程,,界面友好,,簡單易學(xué),,配套的圖像處理軟件包能提供豐富的圖像處理與分析算法函數(shù),極大地方便了用戶,,使構(gòu)建圖像處理與分析系統(tǒng)容易,、靈活、程序移植性好,,大大縮短了系統(tǒng)開發(fā)周期,。在推出應(yīng)用軟件的基礎(chǔ)上,NI公司又推出了圖像采集卡,,對于NI公司的圖像采集卡,,可以直接使用采集卡自帶的驅(qū)動以及LabVIEW中的DAQ庫直接對端口進(jìn)行操作。

  但由于NI公司的圖像采集卡成本很高,,大多用戶難以接受,,因此硬件平臺往往采用通用圖像采集卡,軟件方面的圖像處理程序仍采用LabVIEW以及視頻處理模塊編寫,。本文正是基于這樣的目的,,提出了一種在LabVIEW環(huán)境下驅(qū)動通用圖像采集卡的方案,在TDS642EVM高速DSP視頻處理板卡的平臺下,,完成實時圖像采集及處理,。

  在圖象處理的工作中主要完成對CCD光電探測器的輻射標(biāo)定。由于探測器在自然環(huán)境下獲取圖像時,,會受到來自大氣干擾,,自身暗電流,熱噪聲等影響,,使CCD像元所輸出信號的數(shù)值量化值與實際探測目標(biāo)輻射亮度之間存在差異,,所以要得到目標(biāo)的精確圖像就必須對探測器進(jìn)行輻射標(biāo)定。

  2.圖像采集卡簡介

  聞亭公司TDS642EVM(簡稱642)多路實時視頻處理板卡是基于DSP TMS320DM642芯片設(shè)計的*估開發(fā)板,。計算能力可達(dá)到4Gips,,板上的視頻接口和視頻編解碼芯片Philips SAA7115H相連,實現(xiàn)實時多路視頻圖像采集功能,支持多種PAL,NTSC和SECAM視頻標(biāo)準(zhǔn)。本系統(tǒng)通過642的PCI接口與主機(jī)進(jìn)行數(shù)據(jù)交換,。PCI支持“即插即用(PnP)”自動配置功能,,使圖像采集板的配置變得更加方便,其一切資源需求的設(shè)置工作在系統(tǒng)初啟時交由BIOS處理,, 無需用戶進(jìn)行繁瑣的開關(guān)與跳線操作,。PCI接口的海量數(shù)據(jù)吞吐,為其完成實時圖像采集和處理提供保證,。

  3.系統(tǒng)組成及工作原理

圖1. 圖像采集及實時處理系統(tǒng)框圖

  圖像采集的過程也就是圖像采集板卡對來自CCD的標(biāo)準(zhǔn)視頻信號(PAL制式)進(jìn)行模數(shù)轉(zhuǎn)換的過程,將量化后的數(shù)據(jù)通過PCI總線傳入計算機(jī)內(nèi)存,然后通過編制的應(yīng)用程序讀取顯示,。

  如圖1所示, 彩色CCD相機(jī)輸出的視頻模擬信號經(jīng)解碼器SAA7115轉(zhuǎn)換為數(shù)字信號并輸入到642芯片中, 642將處理好的實時數(shù)字圖像信號輸出到編碼器, 由編碼器將數(shù)字信號轉(zhuǎn)化為標(biāo)準(zhǔn)的PAL制式Y(jié)CbCr視頻信號輸出到LCD上, 與此同時, 輸出的Y-Cb-Cr格式數(shù)字視頻信號經(jīng)過視頻端口的內(nèi)部FIFO緩沖后,,由642通過EDMA將數(shù)據(jù)傳送到片外同步動態(tài)存儲器芯片SDRAM中,其中包括四組數(shù)據(jù),,分別是Sem_標(biāo)志變量(8bit);Y: Cb: Cr(4:1:1)圖像信號:Y(720*574*8bit)數(shù)組,,Cb(360*287*8bit)數(shù)組,Cr(360*287*8bit)數(shù)組,,分別存儲在SDRAM中的0x80003804,,0x8102E000,0x81092E80,,0x810AC280地址,,以供應(yīng)用程序使用。

  視頻采集應(yīng)用程序由LabVIEW編制完成,。在需要進(jìn)行圖像采集時,,LabVIEW發(fā)送讀取SDRAM中存儲的YCbCr格式圖像數(shù)據(jù)的請求,642獲得請求后,,開始采集圖像并將采集到的YCbCr數(shù)值存儲到相應(yīng)的內(nèi)存地址,,在642完成整一幀的圖像采集之后,將SDRAM中的標(biāo)志變量Sem設(shè)定為0,,LabVIEW在這個過程中循環(huán)讀取標(biāo)志變量的值,,當(dāng)為0時,則從SDRAM中獲得圖像數(shù)據(jù),,也就是Y,, Cb, Cr三個數(shù)組的數(shù)據(jù),,然后將其轉(zhuǎn)化為LabVIEW能夠顯示的標(biāo)準(zhǔn)RGB格式輸出該圖像,。

  4.圖像采集及圖像處理

  4.1調(diào)用動態(tài)鏈接庫驅(qū)動圖像采集卡

  NI公司針對自己生產(chǎn)的圖像采集卡附帶有卡的驅(qū)動和管理程序,對于普通的I/O卡,,還不能直接被LabVIEW所應(yīng)用,,必須采取其他方法。LabVIEW提供了4種調(diào)用外部程序代碼的途徑:端口直接操作,、調(diào)用庫函數(shù)節(jié)點(Call Library Function Node即CLFN)調(diào)用DLL(Dynamic Link Library動態(tài)連接庫),、使用CIN(Code Interface Node,外部代碼節(jié)點),調(diào)用Active X控件,。其中端口直接操作,,利用PortIn.Vi和PortOut.vi功能,此法應(yīng)用簡單,,但無法實現(xiàn)較復(fù)雜的接口功能,。而采用動態(tài)鏈接庫,,可以根據(jù)具體需要編寫適當(dāng)?shù)某绦颍`活利用LabVIEW的各項功能,。較其余三種具有明顯的優(yōu)勢,。用戶可以調(diào)用Windows標(biāo)準(zhǔn)的動態(tài)連接庫(DLL),也可以調(diào)用用戶自己編制的DLL,,實現(xiàn)LabVIEW與硬件的連接,。

  建立一個DLL需要的文件有:①h函數(shù)聲明文件(可選,可包含在c源文件里);②c源文件(必需);③def模塊定義文件(如果是使用標(biāo)準(zhǔn)調(diào)用或函數(shù)輸出必需添加關(guān)鍵字__declspec (dllexport) 函數(shù)名),。H文件的作用是聲明DLL要實現(xiàn)的函數(shù)原型,供DLL編譯使用,,同時還提供應(yīng)用程序編譯使用,。C文件是實現(xiàn)具體文件的源文件,它有一個入口點函數(shù),,在DLL被初次調(diào)用的運(yùn)行,,做一些初始化工作。一般情況下,,用戶無須做什么初始化工作,,只需保留入口點函數(shù)框架即可。def文件是DLL項目中比較特殊的文件,,它用來定義該DLL項目將輸出哪些函數(shù),,只有該文件列出的函數(shù)才能被應(yīng)用函數(shù)調(diào)用。要輸出的函數(shù)名列在該文件EXPORTS關(guān)鍵字下面,。

  本系統(tǒng)在LabVIEW平臺下調(diào)用動態(tài)鏈接庫實現(xiàn)圖像數(shù)據(jù)的采集主要分為五步:1.初始化并打開設(shè)備(DM642圖像采集卡); 2.讀取標(biāo)志信號位,,看是否初始化為默認(rèn)值3.寫入標(biāo)志信號位,進(jìn)行圖像數(shù)據(jù)采集;4.對SDRAM中所存儲的圖像數(shù)據(jù)進(jìn)行讀取;5.關(guān)閉句柄并釋放端口資源,。主要調(diào)用動態(tài)鏈接庫sd_pci64.dll的目標(biāo)函數(shù)有PCI64_Open,,PCI64_MemRead32和PCI64_Close,函數(shù)功能如下表所示:

  函數(shù)的具體參數(shù)如下:

 ?、貾CI64_API INT32 PCI64_Open( int BoardNum, PCI64_HANDLE * pHndl );

  BoardNum板口號(0-3),,* pHndl 返回句柄的無符號指針,當(dāng)返回值為0時,,表示打開端口成功,,非0時,表示失敗,。

 ?、赑CI64_API INT32 PCI64_MemRead32( PCI64_HANDLE Hndl, UINT32 Taddr, UINT32 Count , UINT32 * pData );

  獲取由PCI64_Open傳遞的句柄指針,對目標(biāo)地址存儲的數(shù)據(jù)進(jìn)行讀取,,需注意的是目標(biāo)地址的尋址空間在4M之內(nèi),,必須初始化一個所需目標(biāo)數(shù)據(jù)大小的無符號32位數(shù)組空間,。同樣返回值為0時,表示成功,,非0表示失敗,。

  ③PCI64_API INT32 PCI64_Close( PCI64_HANDLE Hndl );

  需要注意的是,,在每次調(diào)用PCI64_MemRead32完成讀取后,,都要將端口關(guān)閉,釋放地址空間,。

  具體的調(diào)用過程如下:首先在新建的VI的Block Diagram中,,F(xiàn)unction> Advanced子菜單中添加Call Library Function Node控件,然后對其進(jìn)行配置,添加該節(jié)點后進(jìn)行配置的對話框如下圖2所示:

圖2調(diào)用CLFN配置框圖

  分別對DLLs文件名稱及存放路徑,,函數(shù)調(diào)用方式,,需要調(diào)用的目標(biāo)函數(shù)的名稱,參數(shù)個數(shù),,每個參數(shù)的類型,,數(shù)據(jù)類型及返回值類型進(jìn)行設(shè)置。設(shè)置完成后單擊“OK”返回LabVIEW 的設(shè)計面板(diagram)中,。此時,,Call Library Function已經(jīng)根據(jù)剛才配置好的參數(shù)個數(shù)和類型設(shè)置好了輸人輸出端口,和其它的LabVIEW節(jié)點圖標(biāo)一樣,,只需要將其對應(yīng)的參數(shù)連線即可,。

  程序調(diào)用sd_pci64.dll的目標(biāo)函數(shù)PCI64_Open,PCI64_MemRead32和PCI64_Close完成對指定地址空間0x8102E000化為十進(jìn)制21*49280,,103320大小的數(shù)據(jù)讀取,,最后將讀取的數(shù)據(jù)存儲在無符號32位pData數(shù)組里面。

  在LabVIEW中利用CLFN節(jié)點可以較容易地實現(xiàn)訪問動態(tài)連接庫(DLL),。由于DLL是一個外部模塊,,提高了程序的開發(fā)效率,而且在購買普通數(shù)據(jù)采集卡的時候,,廠商一般會給用戶提供動態(tài)連接庫(DLL),,所以研究在LabVIEW平臺下通過調(diào)用動態(tài)鏈接庫功能來驅(qū)動普通圖像采集卡實現(xiàn)圖像采集的方法,成為值得推廣的方法,,具有重要意義,。

  4.2 CCD圖象標(biāo)定

  完成CCD圖像數(shù)據(jù)的標(biāo)定,數(shù)字圖象處理是該標(biāo)定過程的關(guān)鍵,,NI公司提供的圖象處理模塊IMAQ Vision為LabVIEW平臺提供了完整的圖像處理函數(shù)庫,,如各類邊緣檢測算子、自動閾值處理、各種形態(tài)學(xué)算法,、濾波器,、FFT等,該庫包含大量當(dāng)前證明成功的理論算法,,使用戶無需專業(yè)編程經(jīng)驗,,即可迅速開發(fā)完成優(yōu)秀的、適合本專業(yè)的圖像處理與分析系統(tǒng),。

  在本系統(tǒng)中,,對CCD光電探測器相對輻射定標(biāo)的步驟如下:分別在標(biāo)準(zhǔn)光源照射和普通定標(biāo)環(huán)境下各采集10幅圖像,經(jīng)過自動閾值處理和二值化,,消除暗電流熱噪聲等因素的影響,,取處理完得到的10幅圖像的均值作為主標(biāo)準(zhǔn)圖像和主參考圖像。對圖像上每個像素的灰度值,,通過比對校正,,完成CCD像元的不均勻響應(yīng)校正,求出各自的標(biāo)定系數(shù),,繪出灰度直方圖。具體程序的前面板如圖3所示:


圖3 程序前面板

  5.結(jié)論

  本文使用TDS642EVM圖像采集卡在LabVIEW平臺上開發(fā)出一個穩(wěn)定可靠,、經(jīng)濟(jì)靈活的實時圖像采集及處理系統(tǒng),。通過調(diào)用動態(tài)鏈接庫,驅(qū)動圖像采集卡完成圖像采集;利用NI-IMAQ Vision提供的強(qiáng)大的圖像處理功能通過實時圖像處理完成對CCD光電探測器的輻射標(biāo)定,。LabVIEW的開放性,高度的編程靈活性和良好的界面,使高級復(fù)雜的應(yīng)用開發(fā)變得簡單;動態(tài)鏈接庫機(jī)制使LabVIEW在對通用圖像采集卡的支持上有了一個通用可行的途徑,。

  本文作者創(chuàng)新點:設(shè)計一種在LabVIEW平臺完成對普通圖像采集卡的實時圖像采集及光電探測器的輻射標(biāo)定系統(tǒng)。


 

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。