将彩色图像分为黑白两个部分,定义了两个变量k1和k2,分别赋值为rate和0.5。然后使用rand(width, height)函数随机生成矩阵,由于rand函数生成的元素都在0-1之间,所以再比较该矩阵中的每个元素是否小于k1或k2,如果小于则将该元素赋值为1,反之则赋值为0,最终得到两个二值化的矩阵a1和a2。在矩阵中分为R、G、B三个通道为图像添加噪声,最后再将三个通道合在一起,如
时间: 2023-11-22 14:52:45 浏览: 31
下所示的代码实现:
```python
import numpy as np
from PIL import Image
# 定义变量
rate = 0.3
k1 = rate
k2 = 0.5
# 生成随机矩阵
width, height = 512, 512
rand_matrix = np.random.rand(width, height)
# 二值化矩阵
a1 = np.where(rand_matrix < k1, 1, 0)
a2 = np.where(rand_matrix < k2, 1, 0)
# 加入噪声
img = Image.open('your_image_file.jpg')
img_arr = np.array(img)
r, g, b = img_arr[:, :, 0], img_arr[:, :, 1], img_arr[:, :, 2]
noise_rate = 0.1
noise_r = np.random.rand(width, height) * 255 * noise_rate
noise_g = np.random.rand(width, height) * 255 * noise_rate
noise_b = np.random.rand(width, height) * 255 * noise_rate
r[a1 == 1] += noise_r[a1 == 1]
g[a1 == 1] += noise_g[a1 == 1]
b[a1 == 1] += noise_b[a1 == 1]
r[a2 == 1] += noise_r[a2 == 1]
g[a2 == 1] += noise_g[a2 == 1]
b[a2 == 1] += noise_b[a2 == 1]
img_arr_noise = np.stack([r, g, b], axis=2)
# 保存图像
img_noise = Image.fromarray(np.uint8(img_arr_noise))
img_noise.save('your_noise_image_file.jpg')
```
注意,该代码中的噪声添加方式是加上随机噪声,可以根据实际需求选择其他噪声添加方式。