新闻中心

EEPW首页 > 测试测量 > 设计应用 > LabVIEW图像采集相关(一)

LabVIEW图像采集相关(一)

作者:时间:2017-01-09来源:网络收藏
单次采集图像时,常用Snap.vi来编程。,如果我们连续采集的话,就会想到如下的模式。
snap

但是上图中的模式,采集图像比较慢,因为Snap.vi都包含了初始化和关闭等环节,最快的情况下也得需要120ms。NI为了解决这种问题,添加了Grab.vi来实现连续采集。程序框图如下:

本文引用地址:http://www.eepw.com.cn/article/201701/337148.htm
grab

这种情况下一帧数据大约需要40ms。

​然而,在高速图像采集的应用中,我们会发现上一种模式也会存在一定的问题,即当图像采集速度非常高时,处理程序还来不及处理当前的图像,图像缓冲区里面的数据已经被新的图像数据所覆盖了。

为了解决采集缓冲区不足的问题,我们可以增加图像采集缓冲区。

NI-IMAQ提供了两种多缓冲区的方式,分别为Sequence和Ring。

Sequene和Ring

Sequence和Ring都是多缓冲区图像采集方式,区别是Sequence是单次采集,而Ring是连续采集,类似Snap和Grab。

​Sequence.vi最最重要的参数是Imahes In,这是一个图像数据缓冲区引用数组,里面包含了多个由Imaq Create.vi创建的图像数据缓冲区的引用。只有知道了多个图像数据缓冲区在哪里,IMAQ Sequence.vi才能完成多缓冲区的图像采集。

​Sequnce应用:

sequence应用

Ring图像采集方式(IMAQ的方式,IMAQdx还不太一样):

Ring图像采集方式需要由三个VI来实现,分别是IMAQ Configure List.vi​、IMAQ Configure Buffer.vi和IMAQ Extract.vi。

​IMAQ Configure List.vi完成缓冲区列表的配置,告诉驱动程序缓冲区的数量,以连续还是单次的方式进行图像采集以及缓冲区的位置。

​IMAQ Configure Buffer.vi把创建好的图像缓冲区分配到缓冲区列表的对应位置。

​IMAQ Extract Buffer.vi把采集到的图像从缓冲区中提取出来,为后续图像处理做准备。

如下图所示(由于图过长,仅截取关键代码)​

​第一步,调用IMAQ Configure List.vi告诉驱动程序是以Continuous的方式进行图像采集,缓冲区的位置在system—也就是开发引用程序的主机上。

第二步,调用​IMAQ Configure Buffer.vi把创建好的图像缓冲区关联到缓冲区列表的对应位置上。

​第三步,调用IMAQ Start.vi开启一个图像采集的过程,需要注意的是,在调用IMAQ Start.vi前,必须调用IMAQ Configure List.vi和IMAQ Configure Buffer.vi来配置采集过程。

第四步,调用​IMAQ Extract Buffer.vi从缓冲区中把图像提取出来。

第五步,把IMAQ Extract Buffer.vi的Buffer to Exact参数设置为-1​表示释放当前被提取的缓冲区。IMAQ Extract Buffer.vi在提取图像数据时会对当前被提取的缓冲区进行保护,所以当采集过程完成时,需要释放当前被保护的缓冲区。

Ring图像采集方式实现的主要过程如上所述,其余步骤就是大家熟悉的初始化采集硬件、释放图像采集硬件和释放缓冲区了。



关键词: LabVIEW图像采

评论


技术专区

关闭