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.