对图lena_gray_256.tif做以下5个步骤:(1)乘以(-1)^(x+y);(2)计算其DFT;
时间: 2023-05-29 08:01:20 浏览: 131
Assignment1.rar_lena_lena.bmp_matlab 抖动_图像抖动_灰度 抖动
(3)将DFT的零频分量移动到DFT中心;(4)取模;(5)取模的对数并作归一化处理。
以下是Python代码实现:
```python
import numpy as np
import cv2
# 读取灰度图像
img = cv2.imread('lena_gray_256.tif', cv2.IMREAD_GRAYSCALE)
# 乘以(-1)^(x y)
h, w = img.shape
for i in range(h):
for j in range(w):
img[i, j] *= pow(-1, i+j)
# 计算DFT
dft = cv2.dft(np.float32(img), flags=cv2.DFT_COMPLEX_OUTPUT)
# 将零频分量移动到DFT中心
dft_shift = np.fft.fftshift(dft)
# 取模
magnitude_spectrum = 20*np.log(cv2.magnitude(dft_shift[:,:,0], dft_shift[:,:,1]))
# 归一化处理
magnitude_spectrum = cv2.normalize(magnitude_spectrum, None, 0, 1, cv2.NORM_MINMAX)
# 显示结果
cv2.imshow('Input Image', img)
cv2.imshow('Magnitude Spectrum', magnitude_spectrum)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
阅读全文