Re: PSA Using Python Pillow to foil camera image PRNU fingerprinting
Maria Sophia <[email protected]> Fri, 31 Jul 2026 13:59:58 -0800
| Newsgroups | rec.photo.digital,comp.lang.python,alt.comp.os.windows-10 |
|---|---|
| Organization | BWH Usenet Archive (https://usenet.blueworldhosting.com) |
| Message-ID | <[email protected]> |
Piergiorgio Sartor wrote: > Have you tried to de-noise first, with > something like BM3D, and then re-noise? > > For both operations likely some noise > parameter is required. > > I know this is not the same as the PRNU, > but de-noising will reduce / remove any > uncorrelated information. > > Re-noise will make it plausible. Thank you for the suggestion of BM3D denoise-renoise sequencing to reduce PRNU fingerprinting of images posted to various Internet locations. A digital camera sensor has millions of pixels. Each pixel is supposed to respond the same way to light, but, in reality, every pixel response is slightly different in a way unique to each sensor. I never heard of BM3D denoising/renoising until you mentioned itt, so looking it up, BM3D denoising + re-noising is apparently wonderful for removing random noise, but PRNU isn't random noise. Each pixel multiplies the incoming light by its own personal gain factor. So the imperfection is baked into the signal allowing it to partially survive much of our attempts at denoising, sharpening and compression Apparently, BM3D will reduce some PRNU energy, but it may not reliably destroy the correlation because PRNU is tied to pixel-level sensitivity variations, not additive noise. Re-noising afterward doesn't help much, apparently, because it doesn't greatly change the underlying sensor-specific gain pattern. Unfortunately for us, much of the forensic literature I've seen shows that PRNU survives denoising, sharpening, resizing, and even moderate JPEG compression. Given that, the main reliable ways to break PRNU correlation seem to be: a. geometric misalignment (rotation, crop, resample) b. strong blur or downsampling (which damages the image, unfortunately) c. pixel-level perturbations (we have to change the gain, per pixel) d. multiple rounds of resampling (we have to randomize this per pixel) So far, the attached script focuses on slightly decorrelating the pixel grid from the sensor grid rather than trying to "wash" the noise. But we don't know if it works unless we subject it to a PRNU test. If anyone knows of a public PRNU-matching site, I'd love to test it, but as far as I know, all the real PRNU matchers (Amped Authenticate, Forensically, DHS tools, academic implementations) require uploading a camera reference set, not just a single set of two arbitrary images . -- Privacy isn't something we get by accident. It's in everything that we do.