以下Python代码实现对BMP图像进行8x8的二维DFT变换,并保存为灰度图像,并统计计算时间:

import numpy as np
import cv2
import time

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

# 分块8x8的二维DFT变换
dft_image = np.zeros_like(image, dtype=np.float32)
start_time = time.time()
for i in range(0, height, 8):
    for j in range(0, width, 8):
        block = np.float32(image[i:i+8, j:j+8])
        dft_block = cv2.dft(block, flags=cv2.DFT_COMPLEX_OUTPUT)
        dft_image[i:i+8, j:j+8] = cv2.magnitude(dft_block[:, :, 0], dft_block[:, :, 1])
end_time = time.time()
total_time = end_time - start_time

# 显示DFT图像
cv2.imshow('DFT Image', dft_image)
cv2.waitKey(0)

# 保存灰度图像
output_path = 'output.bmp'  # 替换为保存输出图像的路径
cv2.imwrite(output_path, dft_image)

# 统计计算时间
print('计算时间:', total_time, '秒')

请确保将your_image.bmp替换为实际的BMP图像路径,并将output.bmp替换为保存输出图像的路径。运行代码后,将显示DFT图像,并在控制台上输出计算时间。

Python BMP图像8x8二维DFT变换,显示并保存为灰度图像

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

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