基于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格式文件。
[!--empirenews.page--]2.4 实现图像采集
根据图像采集卡的工作流程,以下给出实现采集图像的简单代码:
(1)初始化图像卡
2.5 应用程序发布
安装图像卡的设备驱动程序,并确认安装成功,然后将要发布的应用程序安装到相应的工作目录,接好CCD探测器,这样程序就可以运行了。应用程序运行结果如图2所示。
3 应用分析
应用本软件可以分析光束的质量,如横平面上的光强分布,测量光束发散角,M2因子等。
3.1 远场发散角
在激光器光束传输方向加一聚焦透镜,通过CCD探测器在其焦平面上采得激光光斑,记录光强分布,如图2所示。光强分布曲线I(r)上占总功率(能量)η处两点间距离之半即为束宽ω,Pω=ηP总,常用的η值有86.5%,63%等。通过计算机数值图像处理,可快速得到光束的束宽。代入θ=2ω/f,即可求得光束的远场发散角,其中f为透镜的焦距。
3.2 M2因子
采用多点测量双曲线拟合法计算M2因子,可达到较高的精度。按测发散角时测束宽的同样方法,沿传输轴多次测量束宽,其中必须有5次以上位于瑞利尺寸之内。拟合公式为ω2=Az2+Bz+C式中A,B,C为拟合系数,拟合出双曲线的实半轴即为光束的束腰宽度ω0,代入M2因子计算公式即可。通过计算机数值图像处理,可快速得到光束的M2因子。
4 结语
本文给出了在VC++6.O平台上开发图像采集卡应用程序的主要流程和关键技术。依靠内存对数据处理的快速响应,对软件添加了软件触发功能,能连续和单发高速采集脉冲光斑,不会出现漏帧现象。与具有硬件触发功能的图像采集软件相比,软件触发不需要添加硬件触发控制电路,节约成本,可靠性高。