基于DS-4004HC圖像采集卡的二次開發(fā)新技術(shù)
1 圖像卡概述
1.1 DS-4004HC卡的技術(shù)參數(shù)及功耗
視頻輸入接口:BNC插座;視頻輸入阻抗:75Ω;視頻輸入幅度:Vp-p=1.O V;每個芯片功耗:1.9 W左右;整塊卡功耗:<3.5 W;采集幀率范圍:1~25幀/s(PAL),1~30幀/s(NTSC)。
1.2 圖像采集卡的工作原理及流程
CCD探測器輸出的模擬視頻圖像經(jīng)多路切換器、解碼器、A/D變換器,將數(shù)字化的圖像數(shù)據(jù)送到數(shù)據(jù)緩沖器。經(jīng)裁剪、比例壓縮及數(shù)據(jù)格式轉(zhuǎn)換后,由內(nèi)部控制圖形覆蓋與數(shù)據(jù)傳輸,數(shù)據(jù)傳輸目標(biāo)位置(顯存或計算機(jī)內(nèi)存)由軟件確定。
圖像采集卡進(jìn)行圖像采集的工作流程如圖1所示。
一般情況下,圖像卡的開始操作和初始化參數(shù)設(shè)置最好在用戶應(yīng)用程序初始化中完成,圖像卡的結(jié)束操作應(yīng)在應(yīng)用程序退出前執(zhí)行。圖像卡采集圖像數(shù)據(jù),不占用計算機(jī)CPU時間,支持圖像的實時處理。采集圖像到屏幕和采集圖像到內(nèi)存的操作不能同時進(jìn)行,即同一時刻圖像卡只能采集圖像到屏幕,或者到內(nèi)存。
1.3 采集卡的應(yīng)用接口函數(shù)
??低旸S-4000HC采集卡SDK接口庫提供了應(yīng)用功能模塊。包括對圖像采集卡的控制,采集圖像到屏幕或內(nèi)存,錯誤處理,采集圖像到屏幕控制,采集圖像到內(nèi)存控制,數(shù)據(jù)傳遞等功能。提供的文件如表1所示。
2 用VC++6.0實現(xiàn)對圖像的采集
應(yīng)用接口庫支持VC++,VB等32位編程開發(fā)工具進(jìn)行二次開發(fā)。本系統(tǒng)選用的是VC++6.0編程工具。
2.1 創(chuàng)建應(yīng)用程序
用VC++6.0工具創(chuàng)建一個基于MFC的基本對話框應(yīng)用程序——圖像采集,把SDK接口庫提供的4個文件拷貝到應(yīng)用程序所在目錄下。在程序中包含相關(guān)的頭文件(.h),并將引入鏈接庫文件(.lib)加入到工程文件中,供編譯程序在鏈接時使用。添加所要實現(xiàn)的功能控件,最終讓圖像在程序界面中實時顯示。
2.2 程序的初始化及參數(shù)設(shè)置
在采集圖像前必須對圖像卡進(jìn)行參數(shù)設(shè)置,才能使圖像采集卡正常工作,以下給出了DS-4004HC卡中的參數(shù)設(shè)置接口:
(1)設(shè)置圖像卡視頻信號制式,包括PAL制和NTSC制。在設(shè)置制式時,圖像卡視頻輸入/輸出窗口的大小和視頻信號的行正程起始點(diǎn),場正程起始行,也要做相應(yīng)的調(diào)整。函數(shù)原型如下:
int_stdcall SetDefauhVideoStandard(VideoStan-dard_t VideoStandard);
參數(shù)VideoStandard_t VideoStandard為視頻制式,默認(rèn)為PAL,成功返回0。
(2)設(shè)置視頻的預(yù)覽模式。函數(shù)原型如下:
int_stdcall SetPreviewOverlayMode(BOOLbTrue);
參數(shù)BOOL bTrue表示是否設(shè)置Overlay預(yù)覽方式,返回值為0表示顯卡支持板卡的Overlay預(yù)覽方式。
(3)設(shè)置圖像卡的視頻信號源路,DS-4004HC有4路通道。
(4)設(shè)置視頻信號輸入位置。函數(shù)原型如下:
int_stdcall SetlnputVideoPosition(HANDLEhChannelHandle,UINT x,UINT y);
參數(shù)HANDLE hChannelHandle為通道句柄,(x,y)為系統(tǒng)處理圖像的左上角在CCD輸入的原始圖像中的坐標(biāo),x,y必須設(shè)置為2的整倍數(shù),默認(rèn)值為(2,8)。函數(shù)調(diào)用成功返回0。
(5)設(shè)置通道分辨率格式。函數(shù)原型如下:
int_ stdcall SetEncoderPictureFormat(HANDLEhChannel Handle,PietureFormat_t PictureFormat);
參數(shù)HANDLE hChannelHandle為通道句柄,Pic-tureFormat t PictureFormat為編碼圖像分辨率格式(4CIF,DCIF,2CIF,CIF,QCIF),成功返回0。
(6)設(shè)置碼流的最大比特率及碼流的控制模式。函數(shù)原型如下:
int_stdcall SetupBitrateControl (HANDLEhChannelHandle,ULONG MaxBps);
用以設(shè)置編碼的最大比特率,函數(shù)int_stdcallSetupBitrateControl(HANDLE hChannelHandle,Bitr-ateControlType_t bre)用以設(shè)置碼流控制方式。參數(shù)HANDLE hChannelHandle為通道句柄,ULONGMaxBps為最大比特率,BitrateControlType_t brc為碼流控制方式,分為變碼率(brVBR)和恒定碼率(brCBR)兩種方式。MaxBps設(shè)為0時碼流控制無效,設(shè)為其他某值時,當(dāng)編碼碼流超過該值,DSP會自動調(diào)整編碼參數(shù)不會超過此最大比特率,低于該值,DSP不進(jìn)行干涉。Brc設(shè)為brVBR時,MaxBps將作為上限,由DSP自動控制碼率,一般會自動回落到最低狀態(tài),能最大程度降低帶寬和存儲空間;設(shè)為brCBR時,以MaxBps作為恒定輸出碼率,存儲容量可根據(jù)設(shè)定碼率大小進(jìn)行估算。兩函數(shù)配合使用,成功均返回0。
(7)設(shè)置圖像的質(zhì)量。函數(shù)原型如下:
int_stdeall SetDefaultQuant(HANDLE hChan-nelHandle,int IQuantVal,int PQuantVal,int BQua-ntVal);
用以設(shè)置圖像質(zhì)量,參數(shù)int IQuantVal,int PQua-ntVal,int BQuantVal分別為I,P,B幀量化系數(shù),量化系數(shù)越小質(zhì)量越高,系統(tǒng)默認(rèn)值為18,18,23。
(8)設(shè)置編碼幀結(jié)構(gòu)、幀率。函數(shù)原型如下:
int_stdcall SetIBPMode(HANDLE hChannel-Handle,int KeyFrameIntervals,int BFrames,intPFrames,int FrameRate);參數(shù)int KeyFrameIntervals為關(guān)鍵幀間隔;intBFrames,int PFrames分別為B,P幀數(shù)量;int Fram-eRate為幀率。
2.3 觸發(fā)功能的設(shè)計
圖像采集軟件具備方便的觸發(fā)功能及操作方法是十分重要的。目前,有觸發(fā)功能的圖像采集卡多數(shù)采用外觸發(fā)模式,亦稱硬件觸發(fā)。外觸發(fā)使用外加信號作為觸發(fā)信號,外加信號從外觸發(fā)輸入端輸入。由于被測信號沒有用作觸發(fā)信號,所以外觸發(fā)信號與被測信號間應(yīng)具有周期性的關(guān)系,并且要確保外觸發(fā)信號與被測信號同步。這樣就需要添加硬件觸發(fā)電路對外觸發(fā)信號進(jìn)行控制,但是觸發(fā)電路的設(shè)計和開發(fā)都需要花費(fèi)一定的成本。
DS-4004HC采集卡本身沒有觸發(fā)功能。為了實現(xiàn)穩(wěn)定高速的采集圖像,應(yīng)用于如高速激光脈沖圖像的采集,本系統(tǒng)添加了內(nèi)觸發(fā)模式。內(nèi)觸發(fā)模式是使用被測信號作為觸發(fā)信號。由于觸發(fā)信號本身是被測信號的一部分,符合周期及同步關(guān)系,故可以實現(xiàn)精確的采集圖像信號。本系統(tǒng)采用軟件方式實現(xiàn)內(nèi)觸發(fā)功能,亦可稱為軟件觸發(fā)。具體實現(xiàn)方式為利用函數(shù)GetOrigi-nalImage()把圖像數(shù)據(jù)采集到動態(tài)開辟的內(nèi)存塊中,判斷圖像數(shù)據(jù)的峰值是否超過采集前設(shè)置的觸發(fā)值,一旦峰值超過設(shè)定的觸發(fā)值,信號即被觸發(fā)、保存,否則即被下一幀數(shù)據(jù)覆蓋。實驗所測脈沖激光器頻率小于采集卡采集幀率(25幀/s),采用的CCD探測器COHU-4812的幀率(大于30幀/s)大于激光器頻率。由于內(nèi)存中的數(shù)據(jù)處理速度很快,實驗表明,本系統(tǒng)能實現(xiàn)激光脈沖光斑圖像的高速采集,不會出現(xiàn)漏幀現(xiàn)象。采集完設(shè)定幀數(shù)后,可根據(jù)需要把數(shù)據(jù)導(dǎo)出為bmp或jPeg格式文件。
2.4 實現(xiàn)圖像采集
根據(jù)圖像采集卡的工作流程,以下給出實現(xiàn)采集圖像的簡單代碼:
(1)初始化圖像卡
2.5 應(yīng)用程序發(fā)布
安裝圖像卡的設(shè)備驅(qū)動程序,并確認(rèn)安裝成功,然后將要發(fā)布的應(yīng)用程序安裝到相應(yīng)的工作目錄,接好CCD探測器,這樣程序就可以運(yùn)行了。應(yīng)用程序運(yùn)行結(jié)果如圖2所示。
3 應(yīng)用分析
應(yīng)用本軟件可以分析光束的質(zhì)量,如橫平面上的光強(qiáng)分布,測量光束發(fā)散角,M2因子等。
3.1 遠(yuǎn)場發(fā)散角
在激光器光束傳輸方向加一聚焦透鏡,通過CCD探測器在其焦平面上采得激光光斑,記錄光強(qiáng)分布,如圖2所示。光強(qiáng)分布曲線I(r)上占總功率(能量)η處兩點(diǎn)間距離之半即為束寬ω,Pω=ηP總,常用的η值有86.5%,63%等。通過計算機(jī)數(shù)值圖像處理,可快速得到光束的束寬。代入θ=2ω/f,即可求得光束的遠(yuǎn)場發(fā)散角,其中f為透鏡的焦距。
3.2 M2因子
采用多點(diǎn)測量雙曲線擬合法計算M2因子,可達(dá)到較高的精度。按測發(fā)散角時測束寬的同樣方法,沿傳輸軸多次測量束寬,其中必須有5次以上位于瑞利尺寸之內(nèi)。擬合公式為ω2=Az2+Bz+C式中A,B,C為擬合系數(shù),擬合出雙曲線的實半軸即為光束的束腰寬度ω0,代入M2因子計算公式即可。通過計算機(jī)數(shù)值圖像處理,可快速得到光束的M2因子。
4 結(jié)語
本文給出了在VC++6.O平臺上開發(fā)圖像采集卡應(yīng)用程序的主要流程和關(guān)鍵技術(shù)。依靠內(nèi)存對數(shù)據(jù)處理的快速響應(yīng),對軟件添加了軟件觸發(fā)功能,能連續(xù)和單發(fā)高速采集脈沖光斑,不會出現(xiàn)漏幀現(xiàn)象。與具有硬件觸發(fā)功能的圖像采集軟件相比,軟件觸發(fā)不需要添加硬件觸發(fā)控制電路,節(jié)約成本,可靠性高。