python图片添加周期噪声并在频率域观察
时间: 2023-12-23 19:03:21 浏览: 140
Python给图像添加噪声具体操作
要添加周期噪声并在频率域观察,可以使用以下步骤:
1. 导入所需的库和图像
```python
import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('image.jpg', 0)
```
2. 生成周期噪声
我们可以使用正弦函数来生成周期噪声。为了使噪声更加明显,我们可以使用不同的频率和振幅。
例如,如果我们想要添加一个频率为 10 的噪声,我们可以使用以下代码:
```python
rows, cols = img.shape
f = 10
amplitude = 50
# 生成正弦函数
sin_func = amplitude * np.sin(2 * np.pi * f * np.arange(cols) / cols)
# 复制到所有行
noise = np.tile(sin_func, (rows, 1))
```
这将生成一个与图像大小相同的数组,其中每行都包含相同的正弦波。
3. 将噪声添加到图像中
```python
noisy_img = img + noise
```
4. 可视化图像和频率域
```python
# 显示原始图像和噪声图像
plt.subplot(121), plt.imshow(img, cmap='gray')
plt.title('Original Image'), plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.imshow(noisy_img, cmap='gray')
plt.title('Noisy Image'), plt.xticks([]), plt.yticks([])
plt.show()
# 显示频率域
f = np.fft.fft2(noisy_img)
fshift = np.fft.fftshift(f)
magnitude_spectrum = 20 * np.log(np.abs(fshift))
plt.subplot(121), plt.imshow(noisy_img, cmap='gray')
plt.title('Noisy Image'), plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.imshow(magnitude_spectrum, cmap='gray')
plt.title('Magnitude Spectrum'), plt.xticks([]), plt.yticks([])
plt.show()
```
这将显示原始图像、添加噪声后的图像以及频率域的幅度谱。频率域的幅度谱将显示噪声的频率和振幅。
阅读全文