Excessive green tint in photos/videos with Raspberry Pi Ultra Low Light Camera IMX462

Hi everyone, I recently picked up the Arducam Ultra Low Light Camera (2MP IMX462) and I’m running it on a Raspberry Pi. Photos and video both have a pretty heavy green tint no matter what I try. I’ve already played around with exposure and gain settings, but that hasn’t made any real difference. Is there a white balance setting I should be changing manually? Also, I can only find the user manual and assembly guide online - is there an actual datasheet for this camera?

Thanks for the details. Just to confirm, you’re on the IMX462 Ultra Low Light module, correct? A green tint like that usually points to white balance / color correction rather than exposure or gain, so that matches what you’ve already tried. I’ve sent the datasheet for the 2MP IMX462 to you via private message - please check your inbox. You can also browse our documentation hub here: Arducam Wiki. Can you tell me which camera stack you’re using - libcamera or the older raspistill/raspivid tools? That changes which white balance parameters to use.

Thanks, I got the datasheet. I’m using libcamera (the newer stack on Bullseye/Bookworm). I tried setting AWB to a few presets like ‘daylight’ and ‘fluorescent’, but the image is still noticeably green, especially indoors. I’m testing with libcamera-still and libcamera-vid.

Got it. With libcamera, the AWB presets don’t always handle the IMX462 well in mixed or low lighting, which is common for ultra low light sensors. Try setting the gains manually with --awbgains. It takes red and blue gain values, and to counter a green cast you generally need to raise both. Something like:

libcamera-still -o test.jpg --awb custom --awbgains 1.8,2.0

Start around those values and adjust from there. If it’s still too green, push the red gain up a bit more. If it starts looking too magenta/purple, you’ve gone too far. What lighting are you testing under, and could you share a sample frame with the settings you used?

I tried --awbgains 1.8,2.0 and it’s definitely better, but there’s still a green tint in the shadows and when the light gets dim. I bumped red up to 2.2 and blue to 2.4 and then the highlights started looking a bit off. I’m mostly testing under indoor LED lighting. Should I also be looking at the color correction matrix, or is this purely a white balance thing?

That sounds like classic AWB drift on this sensor - the green tint in shadows/low light is the AWB and color correction struggling with the IMX462’s sensitivity. The gains will only get you so far before highlights start shifting. For indoor LED, try something like --awbgains 2.0,2.2 and see if the midpoint holds better. If the shadows still lean green, you may need to adjust the color correction matrix in a tuning file, but let’s rule out the simpler stuff first. Could you capture a raw/DNG and a JPEG of the same scene with your current settings and share them? That will show whether the green cast is in the sensor data or being introduced by the ISP. Also, is it equally bad in video and stills, or is one worse?

It’s pretty consistent between stills and video. I’ll grab a DNG and JPEG of the same scene and share them. For the DNG, should I use --rawfull or is the regular raw flag enough? And do you want me to leave AWB custom with those gains, or switch back to auto for the test?

Regular raw is fine for this - just add -r to libcamera-still and it’ll save a DNG alongside the JPEG. Keep it at --awb custom --awbgains 2.0,2.2 so we’re comparing against the same settings. Once I see those files I can tell if the green is coming from the sensor itself or from the ISP’s color pipeline. While we wait, there are also a few IMX462 color tuning threads on our forums that might be worth a look: https://www.arducam.com/forums/

Just uploaded the DNG and JPEG from the same scene. The DNG actually looks less green before processing, so I think you might be right about the ISP side. The JPEG is still pretty green though.

Thanks, that’s helpful. Based on everything so far, the green tint is most likely coming from the white balance and color correction in the ISP rather than the sensor output itself - especially since the raw DNG looks closer to neutral. The current workaround is to keep using manual gains (–awb custom --awbgains around 2.0,2.2) and tune from there depending on your lighting. I’ll take a look at the samples you shared and follow up here with more specific gain or tuning file adjustments. In the meantime, the datasheet I sent over and the documents page at Arducam Wiki have the full spec details.