Papers › Unprocessing Images for Learned Raw Denoising
Unprocessing Images for Learned Raw Denoising
Tim Brooks, Ben Mildenhall, Tianfan Xue, Jiawen Chen, Dillon Sharlet, Jonathan T. Barron
Machine learning techniques work best when the data used for training resembles the data used for evaluation. This holds true for learned single-image denoising algorithms, which are applied to real raw camera sensor readings but, due to practical constraints, are often trained on synthetic image data. Though it is understood that generalizing from synthetic to real data requires careful consideration of the noise properties of image sensors, the other aspects of a camera's image processing pipeline (gain, color correction, tone mapping, etc) are often overlooked, despite their significant effect on how raw measurements are transformed into finished images. To address this, we present a technique to "unprocess" images by inverting each step of an image processing pipeline, thereby allowing us to synthesize realistic raw sensor measurements from commonly available internet photos. We additionally model the relevant components of an image processing pipeline when evaluating our loss function, which allows training to be aware of all relevant photometric processing that will occur after denoising. By processing and unprocessing model outputs and training data in this way, we are able to train a simple convolutional neural network that has 14%-38% lower error rates and is 9x-18x faster than the previous state of the art on the Darmstadt Noise Dataset, and generalizes to sensors outside of that dataset as well.
In Syntology Open this paper in Syntology's Atlas, the map of the papers in Syntology's graph and their citations.
Code
Repository list and official/mentioned flags are the archive's, frozen 2025-07-28. Reachability, where shown, is from one Syntology probe window (2026-09-16 to 2026-09-18); repositories not probed show nothing. GitHub stars are not tracked.
Code Syntology ran Syntology
Not run by Syntology. Nothing on this page verifies that the listed code works.
Tasks
Results from the paper archive 2025-07-28
| Task | Dataset | Model | Metric | Value | Rank at snapshot | Leaderboard | Report |
|---|---|---|---|---|---|---|---|
| Color Image Denoising | Darmstadt Noise Dataset | Image Unprocessing | PSNR (Raw) | 48.88 | #1 of 6 | Archive leaderboard | report |
| Color Image Denoising | Darmstadt Noise Dataset | Image Unprocessing | PSNR (sRGB) | 40.35 | #1 of 6 | Archive leaderboard | report |
| Color Image Denoising | Darmstadt Noise Dataset | Image Unprocessing | SSIM (Raw) | 0.9821 | #1 of 6 | Archive leaderboard | report |
| Color Image Denoising | Darmstadt Noise Dataset | Image Unprocessing | SSIM (sRGB) | 0.9641 | #1 of 6 | Archive leaderboard | report |
| Noise Estimation | SIDD | ULRD | Average KL Divergence | 0.545 | #4 of 5 | Archive leaderboard | report |
| Noise Estimation | SIDD | ULRD | PSNR Gap | 4.90 | #4 of 5 | Archive leaderboard | report |
Ranks are positions in the archive's leaderboards as they stood at the 2025-07-28 snapshot. Results published since then are not among these rows, so a rank here is not a current standing.
Report a problem or propose a change · a person checks every report against the paper or source before anything changes; decisions are listed on /corrections