Python图像处理:DFT幅度谱归一化及逆变换

本文将介绍如何使用Python对图像进行离散傅里叶变换(DFT),提取幅度谱,并将其归一化到[0, 255]的范围内,最后进行逆变换。

代码解析pythonimport numpy as npimport cv2import matplotlib.pyplot as plt

加载BMP图像image_path = 'your_image.bmp' # 替换为实际的BMP图像路径image = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)

二维DFT变换dft_image = np.fft.fft2(image)

提取幅度谱dft_magnitude = np.abs(dft_image)

归一化幅度谱到 [0, 255]dft_magnitude_scaled = (dft_magnitude / np.max(dft_magnitude)) * 255

保留幅度并进行逆变换dft_inverse = np.fft.ifft2(dft_magnitude_scaled)

显示图像plt.subplot(1, 2, 1)plt.imshow(image, cmap='gray')plt.title('Original Image')

plt.subplot(1, 2, 2)plt.imshow(np.abs(dft_inverse).astype(np.uint8), cmap='gray')plt.title('Inverse DFT')

plt.show()

代码解释

  1. 导入库: 首先导入必要的库:numpy用于数值计算,cv2用于图像处理,matplotlib.pyplot用于图像显示。2. 加载图像: 使用cv2.imread()函数加载灰度BMP图像。3. DFT变换: 使用np.fft.fft2()函数对图像进行二维DFT变换。4. 提取幅度谱: 使用np.abs()函数提取DFT结果的幅度谱。5. 归一化幅度谱: 将幅度谱归一化到[0, 255]的范围内: - dft_magnitude / np.max(dft_magnitude) 将幅度谱的值缩放到[0, 1]之间。 - 乘以255,将值扩展到[0, 255]的范围。6. 逆变换: 使用np.fft.ifft2()函数对归一化后的幅度谱进行逆变换。7. 显示图像: 使用matplotlib.pyplot库将原始图像和逆变换后的图像显示在一个窗口中。

总结

本代码展示了如何使用Python对图像进行DFT变换、提取和归一化幅度谱,并进行逆变换。 这段代码可以帮助你理解DFT变换在图像处理中的应用,以及如何操作图像的频域信息。

Python图像处理:DFT幅度谱归一化及逆变换

原文地址: https://www.cveoy.top/t/topic/bCdg 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录