diff --git a/datasets/raise/fft/remove_period_patterns.py b/datasets/raise/fft/remove_period_patterns.py index 6b86884..52114ce 100644 --- a/datasets/raise/fft/remove_period_patterns.py +++ b/datasets/raise/fft/remove_period_patterns.py @@ -22,8 +22,9 @@ singleColorChannelImages = {color: getImageByColor(color) for color in Color} multipleColorsImage = mergeSingleColorChannelImagesAccordingToBayerFilter(singleColorChannelImages) image = multipleColorsImage -fft1 = abs(fftpack.fft2(image)) +fft1 = fftpack.fftshift(fftpack.fft2(image)) originalFft1 = fft1.copy() +fft1 = abs(fft1) # This example is intended to demonstrate how astropy.convolve and # scipy.convolve handle missing data, so we start by setting the brightest @@ -47,9 +48,26 @@ fixedImage = interpolate_replace_nans(fft1, kernel) figure, axes = plt.subplots(1, 2, sharex = True, sharey = True) +plt.suptitle('Attenuating FFT significant lines') axes[0].set_title('Original FFT') -axes[0].imshow(np.log10(originalFft1)) +axes[0].imshow(np.log10(abs(originalFft1))) axes[1].set_title('FFT with significant lines attenuated') axes[1].imshow(np.log10(fixedImage)) +plt.tight_layout() plt.show() -#plt.imsave('fft.png', np.log10(fixedImage)) \ No newline at end of file +#plt.imsave('fft.png', np.log10(fixedImage)) + +figure, axes = plt.subplots(1, 2, 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 + +plt.suptitle('Rafael 23/04/24 PRNU mean denoiser with periodic patterns attenuated') +axes[0].set_title('Original PRNU') +axes[0].imshow(inverseFft(originalFft1)) +axes[1].set_title('PRNU with periodic patterns attenuated') +axes[0].imshow(inverseFft(fixedImage)) +plt.tight_layout() +plt.show() \ No newline at end of file