PDA

View Full Version : DFK 25fps without trigger



jakovn
November 26, 2008, 20:38:33
I need to have image from DFK processed at 25 fps... it seems I do not get that number of frames. Is it possible to have other than 30, 15, 7.5fps without using external trigger?

I am using this method:

m_pSink->setSnapMode(true);
m_cGrabber.setSinkType(m_pSink);
m_cGrabber.startLive(false);

Then I have timer that ticks at 25fps and calls

m_pSink->snapImages(1);
&CListener::frameReady;

And in CListener I process each frame...

I have exposure set to 1/50s

Stefan Geissler
November 27, 2008, 09:25:33
Hello

the snapImages() method is not suitable for a hard frame rate. If snapImages() is called, it wait for the next complete frame, that is delivered by the camera. That means, if the delivery of a frame has just started before snapImages() is called, then this frame will be discarded. The next frame will be copied into the image buffer. In consequence, the frame rate can be halfed in worst case.

A better attempt is automatic frame grabbing and discard the frames that are too much in the CListener. With this, you will have a jitter around 25fps.

jakovn
December 1, 2008, 22:02:43
For this application the most important is to have exact exposure time and highest frame rate for the light situation without touching gain.

Please correct me if I am wrong.. Lets say I need 40ms exposure time (1/25s)

So using the trigger:
So at the moment I send pulse I have to wait 40ms exposure time + 33ms image readout

Using just snapimages(1) in a loop:
maximum 32ms if I missed the frame readout + 40ms exposure time + 33ms image readout
...so it produces minimum 1000/(32+40+33)=1000/105=9.5 fps

Stefan Geissler
December 2, 2008, 09:28:31
If the exposure time is longer than the frame rate allows, the frame rate is halved. That means: the frame rate is set to 30 fps and you expose with 1/25 second, then the camera switches the frame rate down to 15 fps.

Also snapImages waits for the next complete frame. In worst case, this can last two frames.

If the camera ran triggered, please use a Listener for grabbing the images automatically. For doing so, set the snapMode of the sink to false. Also add a GrabberListener inherited object with "addListener()" to the grabber. In the Listener's frameReady() method you can handle the incoming images. This avoids the waiting of the "snapImages" method. You may have a look in the "Callback" sample of IC Imaging Control for a Listener class.