14.2.2 用MATLAB采集实验图像实例

14.2.2 用MATLAB采集实验图像实例

以一个科研用CCD相机为例,详细介绍使用MATLAB驱动相机采集图像的全过程。

(1)硬件与环境准备

所使用的数字相机为德国Basler A641 f工业CCD相机,分辨率为1 624× 1 236像素,满分辨率下帧率为15 fps,相机如图14-11所示。

首先,需要在电脑上安装相机的驱动程序,如图14-12所示。相机驱动程序安装完成后,通过数据线将相机连接到电脑上,之后启动相机自带的预览软件,查看相机是否连接成功,如图14-13所示。

图14-11 Basler A641 f工业CCD相机及Computar镜头

图14-12 在电脑上安装相机自带驱动

在确认相机已经连接成功后,安装用于驱动MATLAB控制相机的适配器软件。本节相机数据传输方式为1394a(火线),因此安装的适配器软件名称为1394camera645.exe(读者可以到以下网站上自行下载:http://www.cs.cmu.edu/~iwan/1394/index.html),如图14-14所示。

图14-13 使用相机自带软件查看相机是否连接成功

软件安装结束后,桌面上会自动生成一个快捷方式(1394Camera Demo)。读者可以双击该快捷方式,打开此软件,查看相机是否连接成功,如图14-15所示。

图14-14 在电脑上安装适配器软件

图14-15 使用适配器软件查看相机是否连接成功

确定软件安装正确且相机连接成功后,就已经可以使用MATLAB来控制相机了。

(2)图像采集

在图像采集之前,先要建立采集对象,并对采集对象进行参数设置。在设置完成后,就可以实现图像采集和处理了。本例中,将图像采集和处理用一个采集调用函数实现。采集对象每成功采集一幅图像,就会调用一次该函数。该函数可按要求生成含时间信息的字符串,并以该字符串为文件名将图像存储。

在此函数中,传递了一个参数event,包含了函数调用中各种参数和数据,例如函数调用的时间(即图像采集的时间)。前已述及,测量中必须确知每幅图像的记录时间,以便和其他被测物理量在时间轴上对齐,本例即给出了使用event获知图像采集时间的方法。

此外,函数中还用到了一个命令—peekdata。该命令可以从相机已采集的数据中拿到最近一次采集的图像数据到workspace中。

具体实现的程序范例如下:

(3)使用GUI完成相机控制和图像的采集

前面的例子可以完成图像采集,但在实际应用中还存在一些不方便的地方。事实上,可以按照本书第6章介绍的GUI制作方面的内容,将上述程序改写成界面形式,这样更便于操作。作者编写的一个实验中应用的图像采集程序如图14-16所示。图像具有相机选择、放大预览、快门和增益调整、图像存储及帧率和丢帧数目实时显示等功能。程序文件可在网站上下载。

图14-16 使用GUI完成图像采集的界面