diff --git a/datasets/raise/fft/remove_period_patterns.py b/datasets/raise/fft/remove_period_patterns.py index ed93d80..ad7a24c 100644 --- a/datasets/raise/fft/remove_period_patterns.py +++ b/datasets/raise/fft/remove_period_patterns.py @@ -10,7 +10,7 @@ sys.path.insert(0, '../') from utils import Color, mergeSingleColorChannelImagesAccordingToBayerFilter import matplotlib.pyplot as plt -PREFIX = 'mean_rafael_230424_mean_' +PREFIX = 'means/mean_rafael_230424_mean_' X_STDDEV = 2 def getImageByColor(color): @@ -45,23 +45,20 @@ def removePeriodicPatterns(fft1Part): kernel = Gaussian2DKernel(x_stddev = X_STDDEV) # create a "fixed" image with NaNs replaced by interpolated values - fixedImage = interpolate_replace_nans(fft1Part, kernel) - return fixedImage + fixedImagePart = interpolate_replace_nans(fft1Part, kernel) + return fixedImagePart -''' +# TODO: are `.copy()` really necessary? realFixedImage = removePeriodicPatterns(np.real(fft1).copy()) imaginaryFixedImage = removePeriodicPatterns(np.imag(fft1).copy()) fixedImage = realFixedImage + 1j * imaginaryFixedImage -''' -fixedImage = removePeriodicPatterns(abs(fft1)) +fixedImage = imaginaryFixedImage figure, axes = plt.subplots(1, 2, sharex = True, sharey = True) plt.suptitle('Attenuating FFT significant lines') axes[0].set_title('Original FFT') -#originalFft1Abs = abs(originalFft1) -#minValue = np.min() -firstImage = np.log10(1 + abs(originalFft1)) +firstImage = np.log10(1 + abs(np.real(originalFft1))) secondImage = np.log10(1 + abs(fixedImage)) images = [firstImage, secondImage] vMin = np.min(images) @@ -71,20 +68,26 @@ axes[1].set_title('FFT with significant lines attenuated') axes[1].imshow(secondImage, vmin = vMin, vmax = vMax) plt.tight_layout() plt.show() -#plt.imsave('fft.png', np.log10(1 + fixedImage)) -figure, axes = plt.subplots(1, 2, sharex = True, sharey = True) +figure, axes = plt.subplots(1, 3, sharex = True, sharey = True) def inverseFft(fft): ifft2 = np.real(fftpack.ifft2(fftpack.ifftshift(fft))) - #ifft2 = np.maximum(0, np.minimum(ifft2, 255)) #* 255# / 255 return ifft2 +invOriginalFft1 = inverseFft(originalFft1) +invFixedImage = inverseFft(fixedImage) +images = [invOriginalFft1, invFixedImage] +vMin = np.min(images) +vMax = np.max(images) plt.suptitle('Rafael 23/04/24 PRNU mean denoiser with periodic patterns attenuated') axes[0].set_title('Original PRNU') -invOriginalFft1 = inverseFft(originalFft1) -axes[0].imshow(invOriginalFft1) +axes[0].imshow(invOriginalFft1, vmin = vMin, vmax = vMax) axes[1].set_title('PRNU with periodic patterns attenuated') -axes[1].imshow(inverseFft(fixedImage), vmin = invOriginalFft1.min(), vmax = invOriginalFft1.max()) +axes[1].imshow(invFixedImage, vmin = vMin, vmax = vMax) +axes[2].set_title('Difference between both left images') +differenceBetweenBothImages = invOriginalFft1 - invFixedImage +# `np.log10(1 + abs(differenceBetweenBothImages))` does not seem more interesting. +axes[2].imshow(differenceBetweenBothImages) plt.tight_layout() plt.show() \ No newline at end of file