傅里叶变换是一种数学工具,可用于将图像从空间域转换到频域,能够将图像表示为不同频率的正弦和余弦函数的叠加。傅里叶变换通常用于图像处理和分析,可以帮助理解图像中存在的频率信息和模式。
傅里叶变换通过将图像从空间域转换到频率域来描述图像的特征。这种变换将图像视为一系列不同频率的正弦和余弦波的加权组合。在频率域中,低频表示图像中变化缓慢的部分,而高频表示图像中变化剧烈的部分。
cv2.dft()
来进行傅里叶变换。以下是一个示例代码:import cv2
import numpy as np
def show_images(image):
cv2.namedWindow('image',cv2.WINDOW_KEEPRATIO)
cv2.imshow('image',image)
cv2.waitKey()
cv2.destroyAllWindows()
def FT(image):
# 进行二维傅里叶变换
f_transform = cv2.dft(np.float32(image), flags=cv2.DFT_COMPLEX_OUTPUT)
f_shift = np.fft.fftshift(f_transform) # 将频率原点移到图像中心
# 计算幅度谱
magnitude_spectrum = 20 * np.log(cv2.magnitude(f_shift[:, :, 0], f_shift[:, :, 1]))
return magnitude_spectrum
if __name__ == '__main__':
# 读取图像
img = cv2.imread('cat-dog.png', flags=0)
re_img=FT(img)
# # 将四张图像连接成一个大图像
# top_row = np.hstack((img, re_img[0]))
# bottom_row = np.hstack((re_img[1], re_img[2]))
combined_img = np.vstack((img, re_img))
show_images(combined_img)