Image Acquisition to disk without using memory

3 views (last 30 days)
Bob
Bob on 25 Feb 2015
Answered: cr on 2 Dec 2020
Hi,
In our lab, we are use to acquire images from highspeed camera with Matlab. It could be 1394, GigE, or, as the present case, CameraLink camera. The model of the camera is Basler A406k and the framegrabber is NI PCI-1433, on a 16x PCI-e slot (so no bandwidth problem at this point). Normally, for the old cases, I was using the memory logging for the cameralink camera which need a high bandwidth. But in the present case, I have a big problem. I can not reach the full speed of the camera (2352x1726 at 210FPS). Then, I tried to reduce the image size. It's ok for 2352x600px at 210FPS, but only for 2-3 seconds, then it stucks, I don't know why, because I can see in the Windows Task manager that I have many GB of RAM in reserve, and of course imaqmem is set to higher that the computer memory (24GB). I put a chronometer in front of the lens, so I can verify that the FPS is ok but only for the 2-3 first seconds, and it's not able to fill completly the memory.
So, as I mounted a PCI-express SSD which can reach 800MB/s on this computer, I wanted to try with the loggin mode to disk! I follow all the help for this to be sure my code is ok. Then, I use the GUI interface to try also, configuring the recording to disk. But not possible. Ok, it creates a video file instead of images in the memory. But, during recording, when I look the Windows Task manager, it shows that the memory is filling as before, so no change at this point. And of course, the reccording stuck after seconds, or there is a message indicate that a frame has been droped. I precise that the logging mode is set only to disk, and not to disk and memory.
So where is the problem? If someone can tell me if it's possible to record really directly on the disk, I shall be grateful to him. And also, why is Matlab not able to fill completly the memory, stopping randomly during filling it?
Thank's in advance for your precious help about acquiring images with high FPS.
  3 Comments
cr
cr on 1 Dec 2020
Did you try triggering acquisition as opposed to frame logging. The former stores acquired frames in buffer until read into memory? In 2017a I see RAM fill up following a trigger for acquisition.
Luuk Altenburg
Luuk Altenburg on 1 Dec 2020
I do not fully understand what you are saying. I set the disklogger to disk only. Frame logging is not used as far as I know.

Sign in to comment.

Answers (1)

cr
cr on 2 Dec 2020
Set logging to None. Neither disk nor memory. Set large enough number for Number of Frames for Acquisition upon Trigger, say 1000. Set trigger to manual. Start acquisition and let it finish grabbing the set number of frames. Read the frames into memory and check if they match expectations.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!