• 易迪拓培训,专注于微波、射频、天线设计工程师的培养
首页 > 测试测量 > Labview 虚拟仪器 > LabVIEW 像采集相关(一)

LabVIEW 像采集相关(一)

录入:edatop.com    点击:
单次采集图像时,常用Snap.vi来编程。,如果我们连续采集的话,就会想到如下的模式。
snap

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

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

点击浏览:矢量网络分析仪、频谱仪、示波器,使用操作培训教程

上一篇:LabView7.1点滴(5)--建立全局变量
下一篇:labview实现串口通信(二)

微波射频测量操作培训课程详情>>
射频和天线工程师培训课程详情>>

  网站地图