luxonis / depthai-core

DepthAI C++ Library
MIT License
231 stars 126 forks source link

[Feature-Request] Configure ISO Independently of Exposure Time #433

Open justin-larking-pk opened 2 years ago

justin-larking-pk commented 2 years ago

Start with the why:

A lowered exposure can be desirable in applications where minimising motion blur/image distortion is important (i.e. on moving platforms) especially when rolling shutter is involved.

Move to the what:

Currently a set exposure with a set gain is configurable. via: ctrl = setManualExposure(exposure, iso value) If a minimised exposure is desirable, a larger iso could be used to decrease the exposure (assuming auto exposure algorithm takes this into account) This would allow the camera to be configured in order to minimise exposure time whiel still having autoexposure. At the sacrifice of image quality.

Move to the how:

thus ideally we could have separated manual exposure and gain configuration like: ctrl = setManualExposure(exposure) ctrl = setManualIso(iso)

alex-luxonis commented 2 years ago

I agree this would be very valuable, but unfortunately it's not easy to implement, as the 3A library on device controls both exposure and ISO, and the rule of combining them is described in the camera tuning database. I added more info here (related): https://github.com/luxonis/depthai-core/issues/304#issuecomment-997121371

We'll check what's possible to do.

wdimmit commented 1 year ago

Has there been any progress on this issue (or the related #304)?

priyajakhar commented 1 year ago

Having this feature would solve our problems too in high vibration environment where we want to put a cap on shutter speed while still allowing exposure to be adjusted automatically.

alex-luxonis commented 10 months ago

It's possible now to set an upper limit for auto-exposure: https://github.com/luxonis/depthai-python/pull/921. Once the limit is reached, AE will increase ISO as needed. Example: cam.initialControl.setAutoExposureLimit(5000) # microseconds. Can also be updated at runtime