如何对图片实现自定义的高斯噪声
时间: 2024-02-13 17:00:50 浏览: 102
要对图片实现自定义的高斯噪声,可以使用NumPy库中的`random`方法生成对应的高斯噪声数组,然后与原始图像进行叠加得到带有噪声的图片。具体实现步骤如下:
1. 读取原始图片,并将其转化为对应的`numpy`数组。
2. 生成同大小的高斯噪声数组,可以使用`np.random.normal()`方法生成均值为0,方差为指定值的高斯分布数组。
3. 将高斯噪声数组与原始图像数组进行叠加,得到带有噪声的图像数组。
4. 将带有噪声的图像数组转化为`Image.Image`对象,并保存为图片文件。
下面是实现代码的示例:
```python
import numpy as np
from PIL import Image
# 读取原始图片
img = Image.open('example.jpg')
img_array = np.array(img)
# 定义高斯噪声的方差
var = 200
# 生成同大小的高斯噪声数组
noise = np.random.normal(loc=0, scale=var, size=img_array.shape)
# 将高斯噪声数组与原始图像数组进行叠加
noisy_img_array = np.clip(img_array.astype(np.float) + noise, 0, 255).astype(np.uint8)
# 将带有噪声的图像数组转化为Image对象并保存为图片文件
noisy_img = Image.fromarray(noisy_img_array)
noisy_img.save('noisy_example.jpg')
```
在这个示例中,我们使用`np.clip()`方法将叠加后的图像数组中的像素值限制在0-255之间,并使用`astype()`方法将图像数组转化为无符号8位整型数组,最后将其转化为`Image.Image`对象,并保存为图片文件。
阅读全文