Imx462 (B0444) Exif ExposureTime does not match brightness (by eye) of captured jpgs

  1. Where did you get the camera module(s)?
    Arducam direct

  2. Model number of the product(s)?

  3. What hardware/platform were you working on?
    RPi Zero W Bullseye

  4. Instructions you have followed. (link/manual/etc.)
    followed by email instructions from Arducam …
    ./ -l
    ./ -p libcamera0
    ./ -p libcamera_apps

  5. Problems you were having?
    Exif ExposureTime matches the requested --shutter but not the actual jpg brightness observed by eye (see google image)

  6. The dmesg log from your hardware?
    dmesg | grep arducam
    [ 0.156600] platform 20801000.csi: Fixed dependency cycle(s) with /soc/i2c0mux/i2c@1/arducam_pivariety@c
    [ 57.676825] arducam-pivariety 10-000c: firmware version: 0x10002
    [ 58.044006] arducam-pivariety 10-000c: Consider updating driver arducam-pivariety to match on endpoints

  7. Troubleshooting attempts you’ve made?
    jpgs are generated using libcamera-still with Arducam B0444 IMX462 working on a RPi Zero W.
    lpi@RPiZeroE:~ $ libcamera-still --shutter 100 --gain 1 --awbgains 1,1 --immediate --output camera/x100.jpg
    Made X/EGL preview window
    [1:28:39.781998562] [21267] INFO Camera camera_manager.cpp:297 libcamera v0.0.0+4367-ad9428b4
    [1:28:40.137249293] [21329] WARN CameraSensorProperties camera_sensor_properties.cpp:261 No static properties available for ‘arducam-pivariety’
    [1:28:40.156244172] [21329] WARN CameraSensorProperties camera_sensor_properties.cpp:263 Please consider updating the camera sensor properties database
    [1:28:40.961925022] [21329] ERROR IPAProxy ipa_proxy.cpp:149 Configuration file ‘arducam-pivariety.json’ not found for IPA module ‘rpi/vc4’
    [1:28:41.353189519] [21329] INFO RPI vc4.cpp:444 Registered camera /base/soc/i2c0mux/i2c@1/arducam_pivariety@c to Unicam device /dev/media3 and ISP device /dev/media0
    [1:28:41.354211512] [21329] INFO RPI pipeline_base.cpp:1101 Using configuration file ‘/usr/share/libcamera/pipeline/rpi/vc4/rpi_apps.yaml’
    [1:28:41.360860470] [21267] INFO Camera camera.cpp:1033 configuring streams: (0) 1920x1080-YUV420 (1) 1920x1080-SRGGB10_CSI2P
    [1:28:41.424522062] [21329] INFO RPI vc4.cpp:572 Sensor: /base/soc/i2c0mux/i2c@1/arducam_pivariety@c - Selected sensor format: 1920x1080-SRGGB10_1X10 - Selected unicam format: 1920x1080-pRAA
    Still capture image received
    pi@RPiZeroE:~ $
    libcamera was run successively to test over a range of shutter times …
    libcamera-still --shutter [ss] --gain 1 --awbgains 1,1 --immediate --[alpha][ss].jpg
    with [ss] one of 100,1000,10000,10000 and [alpha] replaced by a letter; e.g. d1000.jpg was taken using shutter 1000. I used exiftool -ExposureTime [name].jpg to read exif exposure times of the resulting jpgs. Those Exif times do match the requested [ss] used by libcamera-still. However, the actual jpgs viewed by eye show exposures that obviously do not match the Exif tag ‘ExposureTime’. I have included a screen shot showing 4 sets of thumbnails of such images which were all taken successively.

With the exception of e10000 and g10000 (brighter) and e100, g100, and h1100 (dimmer) the other 11 images appear to have approximately the same actual amount of exposure even though -shutter varied from 100 to 100000. All 4 of he ‘f’ images all seem to have been exposed the same regardless of --shutter range.

  1. What help do you need?
    While Exif ExposureTime matches the requested ‘-- shutter xxx’, it often does not match the apparent exposure as can be seen by eye (see attached jpg). I need the actual exposure time to be accurately recorded in Exif to detect if an image attempt has failed. If my code could detect that something is wrong, an image could be retaken but I would need to somehow detect such an error automatically (not by looking at a jpg by eye). I need a fix so that images are actually exposed for the amount of time requested by --shutter.