diff --git a/Filtering_Padding.py b/Filtering_Padding.py new file mode 100644 index 0000000..1dc1773 --- /dev/null +++ b/Filtering_Padding.py @@ -0,0 +1,85 @@ +import cv2 +import numpy as np +import matplotlib.pyplot as plt +plt.rcParams['font.sans-serif'] = ['simHei'] +plt.rcParams['axes.unicode_minus'] = False + +# 读取照片 +image_zeropad = cv2.imread("file/zeropad.jpg", cv2.IMREAD_GRAYSCALE) + +# 不填充 +dft_no_padded = np.fft.fft2(image_zeropad) +shift_no_padded = np.fft.fftshift(dft_no_padded) +sm_no_padded = np.abs(shift_no_padded) +pa_no_padded = np.angle(shift_no_padded) +mag_no_padded = np.log(1 + np.abs(sm_no_padded)) + +image_no_padded_dft = np.multiply(mag_no_padded, np.exp(1j*pa_no_padded)) +image_no_padded = np.abs(np.fft.ifft2(image_no_padded_dft)) + +# 零填充 +rows, cols = image_zeropad.shape +pad_rows, pad_cols = rows * 2, cols * 2 +padded_zero = np.zeros((pad_rows, pad_cols), dtype=image_zeropad.dtype) +padded_zero[:rows, :cols] = image_zeropad + +dft_zero_padded = np.fft.fft2(padded_zero) +shift_zero_padded = np.fft.fftshift(dft_zero_padded) +sm_zero_padded = np.abs(shift_zero_padded) +pa_zero_padded = np.angle(shift_zero_padded) +mag_zero_padded = np.log(1 + np.abs(sm_zero_padded)) + +image_zero_padded_dft = np.multiply(mag_zero_padded, np.exp(1j*pa_zero_padded)) +image_zero_padded = np.abs(np.fft.ifft2(image_zero_padded_dft)) + +# 原图填充 +padded_copy = cv2.copyMakeBorder(image_zeropad, 0, rows, 0, cols, borderType=cv2.BORDER_REPLICATE) + +dft_copy_padded = np.fft.fft2(padded_copy) +shift_copy_padded = np.fft.fftshift(dft_copy_padded) +sm_copy_padded = np.abs(shift_copy_padded) +pa_copy_padded = np.angle(shift_copy_padded) +mag_copy_padded = np.log(1 + np.abs(sm_copy_padded)) + +image_copy_padded_dft = np.multiply(mag_copy_padded, np.exp(1j*pa_copy_padded)) +image_copy_padded = np.abs(np.fft.ifft2(image_copy_padded_dft)) + +# 进行平滑滤波(均值滤波) +kernel_size = (5, 5) +image_no_padded_blur = cv2.blur(image_no_padded, kernel_size) +image_zero_padded_blur = cv2.blur(image_zero_padded, kernel_size) +image_copy_padded_blur = cv2.blur(image_copy_padded, kernel_size) + +# 展示图像 +plt.subplot(2,3,1) +plt.imshow(image_no_padded, cmap='gray') +plt.title('不填充') +plt.axis('off') + +plt.subplot(2,3,2) +plt.imshow(image_zero_padded, cmap='gray') +plt.title('零填充') +plt.axis('off') + +plt.subplot(2,3,3) +plt.imshow(image_copy_padded, cmap='gray') +plt.title('原图填充') +plt.axis('off') + +plt.subplot(2,3,4) +plt.imshow(image_no_padded_blur, cmap='gray') +plt.title('不填充+均值滤波') +plt.axis('off') + +plt.subplot(2,3,5) +plt.imshow(image_zero_padded_blur, cmap='gray') +plt.title('零填充+均值滤波') +plt.axis('off') + +plt.subplot(2,3,6) +plt.imshow(image_copy_padded_blur, cmap='gray') +plt.title('原图填充+均值滤波') +plt.axis('off') + +plt.tight_layout() +plt.show() \ No newline at end of file diff --git a/Result_Photo_Filtering/1.All_Photo.png b/Result_Photo_Filtering/1.All_Photo.png new file mode 100644 index 0000000..9c98eda Binary files /dev/null and b/Result_Photo_Filtering/1.All_Photo.png differ diff --git a/Result_Photo_Filtering/1.Copy_Padded.png b/Result_Photo_Filtering/1.Copy_Padded.png new file mode 100644 index 0000000..ca921e7 Binary files /dev/null and b/Result_Photo_Filtering/1.Copy_Padded.png differ diff --git a/Result_Photo_Filtering/1.No_Padded.png b/Result_Photo_Filtering/1.No_Padded.png new file mode 100644 index 0000000..024affb Binary files /dev/null and b/Result_Photo_Filtering/1.No_Padded.png differ diff --git a/Result_Photo_Filtering/1.Zero_Padded.png b/Result_Photo_Filtering/1.Zero_Padded.png new file mode 100644 index 0000000..1b186b3 Binary files /dev/null and b/Result_Photo_Filtering/1.Zero_Padded.png differ