Estimating fake PRNU on noise-free images #25
Labels
No Label
bug
Context-Adaptive Interpolator
duplicate
enhancement
epic
help wanted
high priority
invalid
left for future work
low priority
medium
medium priority
meta
question
quick
wontfix
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: Benjamin_Loison/Robust_image_source_identification_on_modern_smartphones#25
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Related to #19, #27 and #9.
As Context-Adaptive Interpolator is slow and possibly incorrectly implemented, let us try a good known working denoiser:
Based on https://scikit-image.org/docs/0.22.x/auto_examples/filters/plot_denoise.html
With
PRNU_FACTOR = 0.1
:PRNU
quite guessable on a given image. Now need to reduce its factor and mean on several images to make it clear.With
PRNU_FACTOR = 0.01
it is more subtile but still visible on both images. For the image with PRNU see theU
. For the PRNU estimate look at the top ofR
and bottom ofU
for instance.PRNU estimate taking into account all images:
Manipulating brightness and contrast on GIMP does not enable a clear result as the following one. However, the not significant RMS decreasing reason is unclear. Even with normalizing it does not seem to make sense.
Split images in 4x4 to increase PRNU estimation accuracy:
Let us not consider this RMS inconsistency but admit that the visual clear PRNU is fine, so let us add Gaussian noise.
In a first time we show an example of Gaussian noise and PRNU on an image, then we consider the PRNU estimate on the mean of the extracted noise for the considered images: in a first time only full images and in a second time split each images in 4x4.
With
NOISE_FACTOR = 0.25
:With
NOISE_FACTOR = 0.1
:If want to move on Gaussian noise as PRNU, then have to understand RMS unexpected results. May also be surprised, so can try anyway. To have recognizable PRNU can use
GIMP
>Filters
>Noise
>RGB Noise...
selecting white and setting{Red,Blue,Green}
to1
.Concerning the RMS, maybe it is due to residual scene and with more images we would have a many pixels, hence important, less significant as nearer to 0.
How to ease visualizing the values of this rendering of image of floats? Could render as a greyscale image to make sure of my rough understanding of image values.
I start having the feeling that the RMS inconsistency is because of the PRNU estimation background which can not converge to 0 as it is just adding residual scene.
The associated code is at
dd7a6892e5/datasets/noise_free_test_images/estimate_prnu.py
.Next step:
Try on known working old cameras, i.e. with actual noise and PRNU? See #29.
Add a single or multiple color scales?
Related to Benjamin_Loison/matplotlib/issues/32.
Based on the Stack Overflow question 23876588:
Using:
With
tight_layout
:Without
tight_layout
:With
cax
instead ofax
:The Stack Overflow answer 49037495 code leads to:
The Stack Overflow answer 23877042 code leads to:
The other answers to the mentioned Stack Overflow question do not seem interesting.
orientation = 'horizontal'
makes the figure ok.Related to Benjamin_Loison/matplotlib/issues/35.
Should check the denoiser range. There is no denoiser here.
Could use the scikit util view as block/window.
Estimating fake PRNU on noise-less imagesto Estimating fake PRNU on noise-free imagesRelated to PRNU_extraction/issues/34.