Machine Vision

cancel
Showing results for 
Search instead for 
Did you mean: 

Buffer Mode "Next" and "Every" in IMAQdx Extract Image (Labview NXG)

Hi everyone,

 

I have some issues in understanding the difference between the "Next" and "Every" buffer mode in IMAQdx ( LabView NXG).

The default value is "Next": Default value is Next, which specifies that the driver waits for the next acquired buffer.

Then there is "Last": Last specifies that the driver does not wait for the next buffer but instead returns the last acquired buffer.

 

So far, so good, but then there is "Every": Every returns all sequential images in memory.

Where is the difference between "Every" and "Next"?

In my application I have a "One Shot" Acquisition of a certain amount of images and I want to save all of them without loss of frames in high speed (20 kHZ).
When measuring the loop time of the "Extract Image" function, Buffer mode "Every" produces faster results.

Probably an easy question but I didn´t find anything online that answered my questions.

Thank you very much!
Christoph

0 Kudos
Message 1 of 3
(1,296 Views)

Hello,

 

Next means that the driver is always going to wait for a new image to be acquired when Extract is called. So if you're doing an acquisition of 100 frames and you just extracted buffer 5, at high speed you're still acquiring images and the driver could internally be at buffer 10 by the next time extract is called. At that point it would wait for buffer 11. So if you want all the buffers, definitely use Every. That will keep track of what you've already extracted and do what you want it to do. Next mode should be slower, as you've observed, because it's waiting for a new buffer every single time.  In the scenario above, if you are using Every mode instead of Next, you'd get buffer 6 without waiting as the driver continues to acquire images. If you want all of the images, Every mode is definitely the easiest and most efficient way to do it. The value of Next mode is getting the most recent possible image after Extract is called. Next mode should only be used when you want a new image and not when you're interested in every image.

 

Sorry, I'm not sure if that explanation was clear enough - let me know if you have any more questions about this.

 

-Katie

Message 2 of 3
(1,259 Views)

Hi Katie,

 

this is already super helpful thank you!!

I cannot completely follow because I am not sure how the work flow of acquiring the images is:

 

So at first you have „Configure Acquisition“ where you allocate space with „Create Images“ for the images on the RAM (or harddrive?). These are the buffers?

 

Then you have „Start Acquisition“ – is the camera here already physically taking the images and then sending them into the preallocated buffer?
If yes, wouldn‘t this be „in principle“ the place to measure fps? At least when we are talking about „One Shot“ acquisition with a super short total acquisition time

 

Then you have „Extract images“ which retrieves the images (that were already physically taken) from the temporary buffer.
So if, lets say the acquisition is finished (e.g. by putting a waiting timer to the „Start Acquisition“) in a „One Shot“ acquisition - all images are in the predefined buffers (always considering that the RAM is big enough).
Then there would not be any possibility to loose any frames with „Every“ right?
Because you just retrieve the images that were already acquired and saved Sending them into a queue afterwards is then also just a bonus.

 

Did I misunderstand something there?

 

Thank you in advance!
Christoph

0 Kudos
Message 3 of 3
(1,246 Views)