python编程实现给图像添加周期噪声,显示频谱图
时间: 2024-05-14 14:13:32 浏览: 51
可以通过调整图像的像素值来添加周期噪声。具体步骤如下:
1. 导入所需库:
```
import numpy as np
import cv2
from matplotlib import pyplot as plt
```
2. 读取图像并转为灰度图:
```
img = cv2.imread('image.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
```
3. 定义周期噪声函数:
```
def periodic_noise(img, freq):
rows, cols = img.shape
noise = np.zeros_like(img)
for i in range(rows):
noise[i, :] = np.sin(i * freq * 2 * np.pi / cols)
img_noise = img + noise * 50
img_noise = np.uint8(np.clip(img_noise, 0, 255))
return img_noise
```
其中,freq表示噪声的频率,可以自行调整。
4. 添加周期噪声并显示频谱图:
```
img_noise = periodic_noise(gray, 0.1)
freq = np.fft.fft2(img_noise)
freq_shift = np.fft.fftshift(freq)
magnitude_spectrum = 20 * np.log(np.abs(freq_shift))
plt.subplot(121), plt.imshow(img_noise, cmap='gray')
plt.title('Periodic Noise'), plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.imshow(magnitude_spectrum, cmap='gray')
plt.title('Magnitude Spectrum'), plt.xticks([]), plt.yticks([])
plt.show()
```
运行后即可显示添加周期噪声后的图像和频谱图。
阅读全文