当前位置: 首页 > 党团工作 >

基于VC++6.0的IEEE1394 CCD应用程序开发

发布时间:2023-05-30 12:30:06 | 来源:网友投稿

文章编号:1006-6268(2009)03-0038-05

摘要:为了在并行共聚焦检测系统中获得超分辨率,对系统中的CCD参数进行配置以及对所拍摄的图像进行处理是至关重要的。论文着重讨论了并行共聚焦系统中,IEEE1394总线CCD数字图像数据的采集和传输机制,并借助于GRAB1394类库对CCD参数进行配置,通过在应用程序中构建CDIB类来实现对采集图像的预处理;同时,论文还详细地叙述了应用软件的设计方法以及关键功能的实现。最后,该系统实现了对CCD参数的控制和图像的处理,从而使拍摄的图像能够满足检测系统的要求,为后续系统实现基于共聚焦层析图片的三维建模,完成被测廓形的可视化测量提供了方便。

关键词:1394总线;电荷耦合器件摄像机;异步传输;等时传输

中图分类号:TP317.4 文献标识码:A

The Development of IEEE1394 CCD Application Software Based on VC++ 6.0

BI Mei-hua,LIU Wen-wen

(School of Instrument Science and Opto-electronics Engineering , Hefei University of Technology, Hefei 230009, China)

Abstract:In order to get an ultra-resolution in parallel confocal system, the image processing is important, so is the parameters configuration of the CCD in the parallel confocal system. The paper focused on digital image acquisition and transfer realization in the parallel confocal system with the IEEE1394 bus CCD, which configures the parameters of the CCD based on the class library of GRAB1394,and through building the CDIB kind to realize image pre-processing; at the same time, the paper described the application software design and the realization of the key functions in detail. Finally, the system realized the control of the CCD parameter and the image processing, so that the recorded image can satisfythe detection system"s request, and made it convenient for the following system to realize the three dimensional modelling based on the sectioning picture of confocal system and visual measurement of measured profile.

Keywords:IEEE-1394-bus;CCD Camera; Asynchronous Transfer;Isochronous Transfer

引 言

在以计算机控制、图像处理以及光电探测等技术为基础的并行共焦系统的探测技术中,要想获得超分辨率,重构被测物体的三维轮廓,实现微廓形的纳米级精度的可视化测量,对CCD接收图像的实时处理是至关重要的。一般CCD输出可以遵循RS-422、RS-644和IEEE1394等数字输出接口标准。其中,RS-422的数据传输速率比较低,不能满足大量图像数据传输的要求;而RS-644在进行传输数据时,必须外加图像采集卡,这样就增加了整个系统的造价。而IEEE1394不仅能够提供高速的数据速率,克服RS-422数据传输速率低的缺点,同时因为在和CCD相连的时候不需要外加图像采集卡,故课题中采用了德国VDS公司的CCD1300QLN,CCD图像信号的输出采用1394接口。

1394总线[1]是一种高速、廉价的串行总线,它基于传输层数据包技术,总线的寻址空间达到64位,其中16位用于标识总线,48位用于表示节点下的存储空间[2]。这种寻址方式使得节点间的通信犹如处理器和存储器之间的通信,消除了主机处理器、内存之间的瓶颈,满足高速通信的需求。1394总线支持节点间的热插拔,极大地增强了总线的灵活性和快速性。1394总线主要应用于数字化的实时高速传输的接口领域,如数字摄像机、DVD、数字电视、游戏机以及高速硬盘等。

1394摄像机的接口是基于DCAM协议工作的。DCAM规范是1394协会于1998年公布的1394数字摄像机规范,它定义了CCD的地址寄存器配置和功能、多种固定视频格式和一个灵活视频格式,以及外部信号功能。其中,DCAM的一个重要特性是将地址寄存器分为两类:查询寄存器和状态控制寄存器[3]。用户通过操作两类寄存器,从而达到对CCD状态进行查询和控制。

1 系统硬件实现

CCD把图像信号转化为电压信号,经过内部VGC(电压增益控制),把微弱信号放大,然后通过1394总线传输出去,送给PC进行处理。其硬件电路图如下。

当物体经过光学系统成像在CCD上时,CCD将把拍摄下来的信息转变为数字图像的形式,然后把该图像信息暂存在1394接口芯片中的内部缓冲器。1394接口根据不同的转发机制,采用FIFO模式,把图像信息以等时数据包的形式通过1394总线传到PC机。由于IEEE1394总线在PC和CCD之间支持双向通信,所以在捕获每帧图像之前,通过软件能较容易的改变摄像机的分辨率、增益、偏移量和曝光时间等参数,并且采用异步传输方式来对这些参数进行传输。

2 应用程序框架

应用程序一般不能直接访问系统的I/O接口,必须通过设备驱动程序来控制硬件的运作。设备驱动程序的编写必须深入到Windows的内核,且需要专用的驱动程序的开发工具(如:DDK),因此编写设备驱动程序十分复杂[4]。为了编程方便,减轻软件开发的难度,系统直接使用由VDS公司提供的GRAB1394类库,通过VC++编程,直接调用GRAB1394库的I/O接口函数,就可以实现对CCD的控制和图像数据传输。图2显示了应用软件与摄像机硬件之间的通讯关系。

其中GRAB1394.DLL是厂家提供的摄像机图像采集与处理库,兼容Microsoft Visual C++ 的MFC类库,它可访问VDS公司的1394摄像机的所有硬件特性。应用程序可以直接调用这些库函数来实现特定的功能。在Visual C++6.0开发环境下,使用MFC创建,建立基于单文档的应用程序,其过程主要包括:

(1)把GRAB1394的库函数文件添加到应用程序的根目录下。文献[5]详细说明了在各种操作系统和编译生成链接库的选项。

(2)建立MFC工程,设置工作目录、链接库。以SDI为例,程序主要功能是CCD的参数控制、显示图像以及图像处理。

(3)程序的初始化。一般地,为了在界面操作中灵活的调用对象的函数,初始化选择在文档类的InitInstance()函数中进行。CGrab1394ClassExp的实例化对象m_pGrab1394是整个应用程序的核心,通过CreateInstance_Grab1394()来创建。对象通过其接口函数m_pGrab1394->Init()进行初始化,从而使程序获得该运行环境对底层通信的支持,屏蔽了底层通信的细节,简化了程序。应用程序获取m_pGrab1394之后,就可以进一步获取对其他函数的操作,从而完成对CCD参数配置和对从CCD获得原始数据进行处理。

(4)消息的捕获与处理。GRAB1394类为用户提供了几种机制实现对抓取后的图像数据的处理,允许采用窗口消息、线程消息和回调函数等方式来处理总线事务。应用程序采用窗口消息机制实现对抓取图像数据的后处理,利用用户定义的内部存储器[6]来接收图像信息,并自定义后处理消息ID。

当存储器数据满的时候,系统通过调用PostProcess()函数将后处理消息放入到线程的等待消息队列中,CWinApp类的函数Run()进行消息循环,检测到该消息,通过消息响应函数OnPostProcess(WPARAM wParam, LPARAM lParam)实现图像数据转换、获取图像数据指针,实现抓取的图像数据的显示,并通过各种图像处理窗口消息实现图像的后续处理。软件建立程序和处理信息的流程图见图3。

3 CCD参数配置与图像处理

由于系统摄取图像的目的是为了实现基于一系列共聚焦层析图片的三维建模,最终实现被测廓形的可视化测量。其中涉及的关键问题之一是根据共聚焦光斑的灰度变化来辨识正焦信息,在此,图像处理方法关系到正焦信息提取的精度;关键问题之二是面对被测廓形表面不同的光学特性,调整摄像机控制参数以获得最利于正焦信息提取的图像质量。因此,摄像机参数控制以及图像显示和处理在该应用程序中作用至关重要。

3.1 CCD参数的配置

应用程序通过调用GRAB1394类库的接口函数来实现CCD参数的配置,主要完成对CCD增益、触发方式以及曝光时间的控制。

增益大小决定了CCD输出信号的放大,对输出信号进行放大可以增加对比度。过高的增益会导致图像杂乱,为了获得相对清晰的图像,必须对CCD的增益进行调节。

在初始化时,摄像机增益在摄像机配置对话框中设置。当需要改变系统增益时,应用程序通过调用函数SetGainState()来实现,由于VDS的CCD1300QLN摄像机增益只有2个等级,所以增益调节只能是图像亮度的整体粗调。

曝光参数会影响CCD成像质量,曝光时间过长,就会产生大片的白色区域[7];曝光时间过短的话,会产生污点现象。同时,为了保证系统对不同被测廓形表面光学质量的适应性,通过软件来实现CCD的曝光时间的控制,从而保证高质量的图像质量。

CCD的曝光时间是和触发模式是相关的,一般情况两者的设置与改变是同时进行的。CCD有3种触发模式:软件触发方式、硬件定时器触发方式和连续触发模式。由于当用户选择连续触发模式时,曝光参数设置无效,故应用采用了后两种触发模式,在用户选择硬件定时器触发时实现参数设置。

应用程序通过调用接口函数SetIodMode()将系统定义的触发方式变量传递给摄像机;同时调用SetIodMode()将设定的曝光时间和曝光周期传递给摄像机,进而实现曝光参数的调节。

3.2 图像显示和处理

应用程序采用构建位图类类以位图的形式实现图像的显示,并通过构建位图类的成员函数来完成图像的处理。

DIB(设备无关位图)是Windows的一种位图类型,它主要用于保存图像以及图像处理中图像数据的存取。应用程序通过构建CDIB类,把图像信息从内存中读出来,并且以位图形式进行显示,通过够构建CDIB类的显示函数Paint(HDC hDC, LPRECT lpDCRect,LPRECTlpDIBRect)来实现图像数据的显示。

CCD拍摄的图像数据通过用户定义UWM_POST_PROCESS消息通知系统,由函数OnPostProcess(WPARAM wParam, LPARAM lParam)来实现图像数据的抓取。将处理好的数据存入内存,启用函数pDoc->UpdateAllViews()触发WM_PAINT消息,在OnDraw(CDC* pDC)函数中调用pDib->Paint(pDC->m_hDC,&rcDest, &rcDIB)函数进行图像显示。图像显示流程图如图4:

在图像的采集过程中,由于共聚焦系统的光路的点扩散函数以及本身存在畸变,同时CCD图像信号在进行传输和量化过程中也会产生各种噪声,则通过CCD获得图像难以直接进行正焦信息提取,需要对图像信息进行处理,提高图像的质量。在该应用程序中将设置多种图像处理,例如滤波、特征提取和点扩散函数的反卷积等,其中还包括亮度和对比度的改善[8]。

图像的亮度和对比度的调整,主要是通过改变图像的灰度值来实现的,即为拉伸像素的灰度值。本程序利用了灰度值的线性变换的算法来实现亮度和对比度的调整,通过在CDIB类构建函数UpdataImage(BOOL inv, int alf, double blt)来实现。

改变像素的灰度值一般是直接修改存储器中图像数据灰度数据的内容,这种方法对像素的处理是内存存储单元的大小为单位,处理速度比较慢。本应用对像素的灰度变化操作是通过修改调色板的内容来实现的,通过这种方法,只要对调色板中的256个单元进行处理即可,显示效果和前一种相同,但速度极快。同时显示存储器中的原始数据并没有改变。

4 程序运行结果

下图程序运行结果,从图5(a)与图5(b)的对比可以看到,用户通过界面自己调整曝光时间,从而获得不同拍摄背景。由图5(c)和图5(d)的对比可以得到,在设置不同的亮度和对比度时,同样能够获得预想的结果。

参考文献

[1]张大朴,王晓,张大为.IEEE1394协议及接口设计[M].西安:西安电子科技大学出版社. 2004.1.

[2] 胡云. 对IEEE 1394总线技术的研究[J]. 科学技术与工程, 2007, 3(7): 299-302.

[3]闫龙, 赵正旭, 周以齐. 基于CCD的立体视觉测量系统精度分析与结构设计研究[J]. 仪器仪表学报. 2008, 2(29): 400-403.

[4]赵义先, 宋申民, 陈兴林等. 基于IEEE 1394总线的图像采集处理系统实现[J]. 2006, 13: 110-113.

[5]IEEE-1394 Plug-on-Module for VDS-Vosskü

hlern digital Cameras[M].2005.

[6] 韩天宝, 王军政, 沈伟.基于WINDOWS CE.NET的1394摄像机驱动程序开发[J].微计算机信息, 2006.22(10): 204-207.

[7]汪国有, 何虎, 文华均. IEEE1394设备的WDM驱动程序设计[J],计算机测量与控制. 2006.14(12): 1739-1741.

[8] Grab1394 Reference Manual[M].2005.

作者简介:毕美华(1981-),女,山东济宁市人,硕士研究生,主要研究方向为测量软件开发及图象处理,E-mail:bmhgod@163.com。

推荐访问:程序开发 VC IEEE1394 CCD

本文标题:基于VC++6.0的IEEE1394 CCD应用程序开发
链接地址:http://www.ylwt22.com/dangtuangongzuo/2023/0530/258704.html

版权声明:
1.十号范文网的资料来自互联网以及用户的投稿,用于非商业性学习目的免费阅览。
2.《基于VC++6.0的IEEE1394 CCD应用程序开发》一文的著作权归原作者所有,仅供学习参考,转载或引用时请保留版权信息。
3.如果本网所转载内容不慎侵犯了您的权益,请联系我们,我们将会及时删除。

十号范文网 |
Copyright © 2018-2024 十号范文网 Inc. All Rights Reserved.十号范文网 版权所有
本站部分资源和信息来源于互联网,如有侵犯您的权益,请尽快联系我们进行处理,谢谢!备案号:粤ICP备18086540号