python给图像添加乘性噪声
时间: 2023-07-08 15:13:15 浏览: 429
可以使用Python的OpenCV库来给图像添加乘性噪声。下面是一个简单的示例代码:
```python
import cv2
import numpy as np
img = cv2.imread('image.jpg')
# 生成一个与图像大小相同的随机数矩阵
noise = np.random.rand(*img.shape)
# 将噪声矩阵乘以一个系数,控制噪声强度
noise_factor = 0.1
noise = noise * noise_factor
# 将噪声加到图像中
noisy_img = img * noise
# 将数据类型转换回uint8
noisy_img = np.uint8(noisy_img)
# 显示加噪声后的图像
cv2.imshow('Noisy Image', noisy_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个示例中,我们使用`np.random.rand()`函数生成一个与原始图像大小相同的随机数矩阵,然后将其乘以一个系数`noise_factor`来控制噪声的强度。最后,将噪声矩阵乘以原始图像,得到加噪声后的图像。
相关问题
python给图像添加45度噪声
您可以使用 Pillow 库中的 Image 模块和 NumPy 库来实现给图像添加45度噪声的效果。以下是一个基本的代码示例:
```python
from PIL import Image
import numpy as np
# 打开图像
image = Image.open("image.jpg")
# 转换为 NumPy 数组
# 注意:这里需要将 'L' 参数改为相应的模式,比如 'RGB' 或 'RGBA'
array = np.array(image.convert('L'))
# 高斯噪声函数
def add_noise(x):
return x + np.random.normal(scale=10)
# 对每个像素施加 45 度旋转并添加噪声
rotated_array = np.rot90(array, k=1)
noisy_array = np.apply_along_axis(add_noise, 1, rotated_array)
# 旋转回去并转换为图像
result_array = np.rot90(noisy_array, k=-1)
result_image = Image.fromarray(result_array.astype('uint8'))
# 保存结果
result_image.save("result.jpg")
```
需要注意的是,这只是一个简单的示例代码,您可能需要调整一些参数来适应不同的场景和需求。
python给图像添加高斯噪声
可以使用Python的OpenCV库中的函数cv2.randn()来添加高斯噪声。具体的方法可以参考以下代码:
```
import cv2
import numpy as np
img = cv2.imread("image.jpg")
# 生成高斯噪声
mean = 0
variance = 0.001 # 设置方差越小,噪声越小
sigma = np.sqrt(variance)
noise = np.random.normal(mean, sigma, img.shape)
# 图像加噪声
img_noise = img + noise
# 将像素值限制在0-255之间
np.clip(img_noise, 0, 255, out=img_noise)
cv2.imshow("image_noise", img_noise)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
阅读全文