From 64d876c0fcaa00ee8dc347ea9d288a1d606607ae Mon Sep 17 00:00:00 2001 From: Benjamin Loison Date: Thu, 28 Mar 2024 17:06:18 +0100 Subject: [PATCH] Add `datasets/noise_free_test_images/estimate_prnu.py` --- datasets/fake/generate_dataset.py | 2 ++ .../noise_free_test_images/estimate_prnu.py | 29 +++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 datasets/noise_free_test_images/estimate_prnu.py diff --git a/datasets/fake/generate_dataset.py b/datasets/fake/generate_dataset.py index 1e94df3..3656497 100644 --- a/datasets/fake/generate_dataset.py +++ b/datasets/fake/generate_dataset.py @@ -1,3 +1,5 @@ +# Notes: https://gitea.lemnoslife.com/Benjamin_Loison/Robust_image_source_identification_on_modern_smartphones/issues/21 + import numpy as np from matplotlib import pyplot as plt from PIL import Image diff --git a/datasets/noise_free_test_images/estimate_prnu.py b/datasets/noise_free_test_images/estimate_prnu.py new file mode 100644 index 0000000..bd07126 --- /dev/null +++ b/datasets/noise_free_test_images/estimate_prnu.py @@ -0,0 +1,29 @@ +# Notes: https://gitea.lemnoslife.com/Benjamin_Loison/Robust_image_source_identification_on_modern_smartphones/issues/25 + +import os +from PIL import Image +import numpy as np +import sys + +sys.path.insert(0, '../../algorithms/image_utils/') + +from image_utils import showImageWithMatplotlib, randomGaussianImage + +datasetPath = 'no_noise_images' +# Note that contrarily to `datasets/fake/`, here we do not have images being Gaussian with `scale` `1` but actual images with pixel values between 0 and 255. +# In addition to the range difference, note that the distribution in the first set of images was a Gaussian and here is very different and specific. +PRNU_FACTOR = 255 * 0.1 +IMAGE_SIZE_SHAPE = (469, 704) + +# Should first try with an image showing `PRNU`. +prnu = randomGaussianImage(scale = PRNU_FACTOR, size = IMAGE_SIZE_SHAPE) + +for imageName in os.listdir(datasetPath): + if imageName.endswith('.png'): + #print(imageName) + imagePath = f'{datasetPath}/{imageName}' + imagePil = Image.open(imagePath).convert('F') + imageNpArray = np.array(imagePil) + showImageWithMatplotlib(imageNpArray) + showImageWithMatplotlib(imageNpArray + prnu) + break \ No newline at end of file