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