Why Low-Light Cameras Go Color Blind:
Removing Color Bias in Raw Denoising

ICCP 2026 · Recommended to Special Issue, PAMI 2026
1University of Toronto 2Vector Institute 3Samsung AI Center Toronto 4York University *Joint supervision
Code & dataset — coming soon

TL;DR

We discover a systematic color shift in the SIDD ground-truth images (the purple tint). We propose a solution and introduce SIDD-CC, the color-corrected version of the dataset.

We also find that, in low light, the black level a camera reports in its metadata may be inaccurate, and this black-level error violates the zero-mean assumption behind raw denoising. As a result, the denoiser's output suffers from a color shift. We model the black-level error, supervise its estimation with a two-pass network, and erase the bias, setting a new state of the art among blind raw denoising methods.

SIDD-CC: SIDD with color-corrected ground truths

SIDD builds its "clean" ground truth by averaging many noisy frames — but a subtle mistake in the order of operations bakes a systematic color shift (a purple tint) into that ground truth. We diagnose it and release SIDD-CC, a corrected version.

SIDD-CC corrected ground truth, chess scene
SIDD ground truth, chess scene
SIDD SIDD-CC
SIDD-CC corrected ground truth, toy trucks
SIDD ground truth, toy trucks
SIDD SIDD-CC

Drag the divider — the left side is SIDD (purple tint), the right side is SIDD-CC (corrected).

Why: the order of operations

In a raw frame, a dark pixel's noise may dip below the sensor's black level. SIDD subtracts the black level and clips every frame before averaging — clipping discards those sub-zero values, so the average is pulled upward. This mean shift shows up as a color cast after rendering by ISP. Averaging first, then clipping, preserves the true mean.

SIDD Noisy frames Subtract black level & clip Average mean shift · purple tint
SIDD-CC Noisy frames Average Subtract black level & clip true colors

Black-level error estimation

The same problem returns at inference: the black level a camera reports in its metadata may be inaccurate. This black-level error violates the zero-mean assumption underlying Raw noise modeling, and a denoiser trained under that assumption bakes a color shift into its output. We model the black-level error explicitly, but a new noise model alone is not enough to solve this problem. Black-level error is a global distortion of the image, so the model used for denoising must be able to extract this distortion — and commonly used U-Net architectures, with their local receptive field, cannot capture global information. We therefore insert a U-Net encoder prior to denoising: a first model to estimate the black-level error from a global view of the noisy input, and a second model to denoise the noisy image using the corrected black level. An auxiliary loss supervises the estimate end-to-end, so the correction is learned rather than assumed.

Method overview: training and inference pipelines with black-level-error estimation and correction
Method overview. A first network — the BLE Predictor — estimates the black-level error (ℰ′bl) from a global view of the raw input; that estimate corrects the black-level subtraction during preprocessing before a second network, the Denoiser, cleans the image. Training (top): our noise synthesis injects a known black-level error ℰbl, an L1 loss supervises the prediction against it, and a second L1 loss supervises the denoised output. Inference (bottom): the predictor estimates the error directly from the noisy input.

Quantitative results

Pick a dataset and noise ratio to compare PSNR and SSIM across every method. Among blind methods Ours leads, and it stays competitive with calibration-based methods that require extra per-camera measurements.

University of Toronto Vector Institute Samsung AI Center Toronto York University