卷积网络使用椒盐噪声 python
时间: 2023-09-22 09:14:36 浏览: 102
卷积神经网络可以通过数据增强来提高鲁棒性,其中一种方法是通过添加噪声来模拟实际场景中的噪声。椒盐噪声是一种常见的噪声类型,通常由随机像素变为黑色或白色像素来模拟。
在Python中,可以使用以下代码将椒盐噪声添加到图像中:
```python
import numpy as np
import cv2
def add_salt_pepper_noise(image, noise_ratio):
h, w = image.shape[:2]
noise_img = np.zeros((h, w), dtype=np.uint8)
cv2.randu(noise_img, 0, 255)
salt = np.where(noise_img > 255 * noise_ratio, 255, 0)
pepper = np.where(noise_img < 255 * (1 - noise_ratio), 0, 255)
noise_img = cv2.add(salt, pepper)
noise_image = cv2.add(image, np.zeros(np.shape(image), dtype=np.uint8), mask=noise_img)
return noise_image
```
其中,`image`是输入图像,`noise_ratio`是椒盐噪声的比例。该函数首先生成一个与输入图像相同大小的随机噪声图像,然后根据噪声比例将像素设为黑色或白色。最后,将噪声图像与输入图像相加,得到带有椒盐噪声的图像。
可以使用以下代码来测试该函数:
```python
import matplotlib.pyplot as plt
# 加载图像
img = cv2.imread('test.jpg', cv2.IMREAD_GRAYSCALE)
# 添加椒盐噪声
noise_img = add_salt_pepper_noise(img, 0.1)
# 显示图像
plt.subplot(1, 2, 1), plt.imshow(img, cmap='gray')
plt.title('Original Image'), plt.xticks([]), plt.yticks([])
plt.subplot(1, 2, 2), plt.imshow(noise_img, cmap='gray')
plt.title('Noise Image'), plt.xticks([]), plt.yticks([])
plt.show()
```
其中,`test.jpg`是输入图像的文件名,`0.1`表示噪声比例为10%。运行后,将显示原始图像和带有椒盐噪声的图像,如下所示:
![salt_pepper_noise](https://img-blog.csdnimg.cn/20211021122620346.png)
阅读全文