Python图像处理:DFT幅度谱归一化及逆变换
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()
代码解释
- 导入库: 首先导入必要的库:
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变换在图像处理中的应用,以及如何操作图像的频域信息。
原文地址: https://www.cveoy.top/t/topic/bCdg 著作权归作者所有。请勿转载和采集!