完成填充+平滑滤波
This commit is contained in:
parent
ee59f5b227
commit
28c31c9aa2
85
Filtering_Padding.py
Normal file
85
Filtering_Padding.py
Normal file
@ -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()
|
BIN
Result_Photo_Filtering/1.All_Photo.png
Normal file
BIN
Result_Photo_Filtering/1.All_Photo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 23 KiB |
BIN
Result_Photo_Filtering/1.Copy_Padded.png
Normal file
BIN
Result_Photo_Filtering/1.Copy_Padded.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 13 KiB |
BIN
Result_Photo_Filtering/1.No_Padded.png
Normal file
BIN
Result_Photo_Filtering/1.No_Padded.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 10 KiB |
BIN
Result_Photo_Filtering/1.Zero_Padded.png
Normal file
BIN
Result_Photo_Filtering/1.Zero_Padded.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 23 KiB |
Loading…
x
Reference in New Issue
Block a user