3
可以用Python向图像添加椒盐噪声
噪声:在计算机版本中,噪声是指信号中的随机干扰。在图像中添加噪声,这里的信号是图像,对图像亮度和颜色的随机干扰称为图像噪声。
椒盐:仅在灰度图像(黑白图像)中存在。顾名思义,
- 胡椒粉(黑色)中的盐(白色)——深色区域中的白色斑点;
- 盐(白色)中的胡椒粉(黑色)——白色区域中的黑色斑点。
换句话说,具有椒盐噪声的图像在明亮区域中将具有一些暗像素,在黑暗区域中将具有一些亮像素,椒盐噪声也称为脉冲噪声。产生椒盐造成的原因有很多,例如像素坏点,模数转换错误,位传输错误等。
具体如何在图像中添加椒盐噪声
- 椒盐噪声只能添加到灰度图像中,因此需要将输入图像转换为灰度图
- 随机选择要添加噪声的像素数(number_of_pixels)
- 随机选择图像中添加噪声的像素点,可以通过随机选择x和y坐标来完成
- 注意生成的随机值必须在图像尺寸的范围内,x和y坐标必须在图像尺寸范围内
- 可以使用代码中使用的random.randint之类的随机数生成器函数来生成随机数
- 将一部分随机选择的像素设置为黑色,将其值设置为0
- 将一部分随机选取的像素设为白色,将其值设置为255
- 保存图像的值
Python代码实现
import random
import cv2
def add_noise(img):
# Getting the dimensions of the image
row , col = img.shape
# Randomly pick some pixels in the
# image for coloring them white
# Pick a random number between 300 and 10000
number_of_pixels = random.randint(300, 10000)
for i in range(number_of_pixels):
# Pick a random y coordinate
y_coord=random.randint(0, row - 1)
# Pick a random x coordinate
x_coord=random.randint(0, col - 1)
# Color that pixel to white
img[y_coord][x_coord] = 255
# Randomly pick some pixels in
# the image for coloring them black
# Pick a random number between 300 and 10000
number_of_pixels = random.randint(300 , 10000)
for i in range(number_of_pixels):
# Pick a random y coordinate
y_coord=random.randint(0, row - 1)
# Pick a random x coordinate
x_coord=random.randint(0, col - 1)
# Color that pixel to black
img[y_coord][x_coord] = 0
return img
# salt-and-pepper noise can
# be applied only to greyscale images
# Reading the color image in greyscale image
img = cv2.imread('lena.jpg',
cv2.IMREAD_GRAYSCALE)
#Storing the image
cv2.imwrite('salt-and-pepper-lena.jpg',
add_noise(img))
输入
输出
参考https://www.geeksforgeeks.org/add-a-salt-and-pepper-noise-to-an-image-with-python/
收藏