LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Fast image processing

Hello!

 

My name is Andreas and i have a big problem.

I am using a camera that will take pictures with resultion 512*512  and the camera should take picture at a rate of 500 frames per second.

I have computer wich has 24 gig Ram.

Is it possible to program this in labview or is it to slow?

I am completly new to labview so are there any good VI:s for this?

 

Regards Andreas 

0 Kudos
Message 1 of 5
(3,261 Views)

In the title you state fast image processing, not acquisiton. Does this mean you need to perform actual image processing? If so, then the answer to whether you can process the data depends not on whether you use LabVIEW, but on what processing you intend to perform.

 

LabVIEW's image processing features are fast, and comparable to any other language, but as with all coding if you implement a slow solution then you will not be able to achieve the frame rates you are interested in. Having 24Gb RAM is not really important if you don't need to store all the images in memory at once.

 

What kind of format image are you acquiring? (8bit, 24bit RGB, 32bit ARGB)

For how long are you acquiring data? (A few seconds, minutes, hours, indefinitely)

What do you plan to do with the images (Process, simply save to file, perform complex analyses)

Thoric (CLA, CLED, CTD and LabVIEW Champion)


0 Kudos
Message 2 of 5
(3,231 Views)

hello Thoric!

thank you for answering so fast

 

you are right i mean acquisition are my first goal and the second show it in real time display

i will only saving data and it will run for about 5 minutes if possible. 

The camera is  DR1 2048 NIR and will take black and white pictures.

Regards Andreas  

0 Kudos
Message 3 of 5
(3,208 Views)

If you are saving 500 frames per second, with 8-bit B&W 512x512 images, then you are looking at streaming 131Mb/s to your storage media. This is a lot of data and can not usually be achieved on a standard desktop PC. Therefore you might find you need to queue the images in memory whilst saving them.

To do this you might want to look at the Master Slave or Producer Consumer architectures, that will allow you to acquire your images in one process and store them in a memory queue, whilst saving the images to file in a parallel process. If the acquisition process is faster than the saving process then the images are buffered up in the queue and not lost. The limitation to this is how many images you can keep in memory.

 

You say you have 24Gb of RAM, so presuming you have access to most of this for the queue buffer then you can potentially store up to 183 seconds of data. However, in reality you will likely be able to acquire for much longer because as the save process stores your images on disk you are emptying the queue and making space for the new incoming images. The true limit will all depend on the speed at which you can save the images to file. If you can compress them as compressed image files then you don't need to achieve a storage rate of 131Mb/s, but this requires CPU time so you might lose out a little to that.

 

When it comes to displaying the images, there's no point in displaying every image at 500Hz because you display , and indeed the human eye, cannot process data at that speed. I would suggest taking every 10th or 20th image to achieve an update rate of 50 to 25Hz on screen.

 

Remember though, anything you do to the data in real time (displaying, analysing, processing etc.) will take potential CPU time away from the saving process causing the buffer of images to fill much faster, and potentially reducing the maximum acquisition time.

 

Good luck!

Thoric (CLA, CLED, CTD and LabVIEW Champion)


0 Kudos
Message 4 of 5
(3,191 Views)

Yes there are several tricks to fast saving of images including a producer consumer architecture.  Note that if your saving is slowing than your acq you will only delay the problem of a buffer overrun.  One of the most important considerations is the saving hardware, you will want to go with a SSD which can have sustained rates of saving to disk as high as several hundred MB/sec.  Well worth the 200-300 extra.  you can also consider using a raid0 to increase this furthur.  130MB is very doable, when considering this can be done with cameralink full running at over 600MB/sec.

Using rting buffers in your acquisition will also help with any jitter in the system.

 

 

Paul Falkenstein
Coleman Technologies Inc.
CLA, CPI, AIA-Vision
Labview 4.0- 2013, RT, Vision, FPGA
0 Kudos
Message 5 of 5
(3,185 Views)