在LabVIEW中定义IMAQ图像处理函数的执行顺序

更新 Jan 14, 2019

适用于

Driver

  • NI-IMAQ

问题详述

每次运行应用程序处理的图像都不同,如何保证正确的执行顺序?

在图像采集或处理时,如何避免竞争条件

解决方案

图像数据类型与普通数据类型(例如,整数/字符串/布尔值)的存储方式不同,这意味着在普通数据类型不会导致竞争的情况下,图像数据类型可能会发生竞争。

为确保不会发生这种情况,访问图像的函数需要定义执行顺序。

例如,下面的框图显示了未定义执行顺序的两个函数。图像显示(A)或IMAQ阈值(B)将首先执行,但我们不确定是哪个。 IMAQ Mophology(C)一定是最后执行的。


在图像开始处理(B) 之前确保显示图像(A)的一种方法是将要要先执行的功能函数先放在顺序结构中。这只是一个方法,如下图所示,还有其他方法可以确定执行顺序。





 

相关信息

IMAQ图像需要在PC内存中创建图像缓存区。每个缓存区都有一个唯一的名称,这些缓存区可以通过指针在LabVIEW中访问。因此,LabVIEW中的图像数据类型实际上是对存储图像的特定存储位置的引用。

这样做的原因是图像通常占用大量内存(与更原始的数据类型相比)。预分配的存储空间消除了每次对图像进行处理时不断地为同一图像重新分配存储器的需要。

由于LabVIEW中图像的数据线表示的是存储器中的特定位置,而存储在该位置的数据可能经常更改,因此控制访问图像缓冲区的各步骤的执行顺序非常重要。由于图像打破了典型的数据流模式,因此会遇到在处理使用其他数据类型时不会遇到的竞争条件。

 

本文是否有帮助?

无帮助