Camera FPS, CPU load and Lighting/Exposure


I’ve just confirmed an old suspicion of mine. Camera frames per second (fps) depend on lighting or rather on the exposure you need to set for the given lighting situation.

This is at least true for the ELP FullHD camera and the new 720p 120fps global shutter camera I’m evaluating.

If you increase the exposure for a dark scene, the cameras seem to accumulate multiple frame times into one, the frame rate drops in turn. The exposure time per frame is being increased, i.e. roughly the same amount of light is captured by the camera sensor from the dark scene, as from a bright scene with low exposure time. If you were just to boost the sensor signal instead, the noise in the image would become awful. In photography this boosting factor is called the ISO value, with higher ISO resulting in more noise.
(Thanks to Sebastian for suggestions where this text needed improvement).

A higher exposure time also results in stronger motion blur, which is a bad thing in PnP, of course.

The phenomenon can now also explain what Marek T. observed: CPU load increases when exposure is lowered. With a higher fps being streamed from the camera, it is only natural, that the CPU load from frame decompression/handling increases.

Btw: we established that (at least on Windows) this CPU load happens inside the Windows DirectShow qcap.dll, so it is not a Java or OpenPnP Problem.

With exposure all dialed down I can get ~93fps at 720p in camera settle, all unique frames, including the settle detection algorithms. It does not seem that Java is a bottleneck:

Testing the other camera (ELP Full HD) you can see it even collapses down to 2 fps on full exposure. On the other hand, it is ok to use it at -9 exposure:

So … what can we do? We must put stronger LEDs on our machines, so we can dial down the exposure to the minimum!

More info:

Leave a Reply

Your email address will not be published. Required fields are marked *

Please use comments for short feed-back to the posts only. If you have questions, consider using the OpenPnP discussion group instead.