Python实现对图像加噪(高斯噪声 椒盐噪声)的攻略如下:
1. 引言
近年来,深度学习技术的迅速发展推动了计算机视觉的快速发展,而图像处理是计算机视觉中不可避免的一环。然而在真实应用中,由于图像采集设备产生的众多干扰因素,以及传输过程中的诸如信号干扰、传输噪声等问题,使得图像通常并不干净。在这种情况下,为了提高图像处理的精准度,在进行基于图像的算法设计前,需要进行图像去噪处理。
图像加噪则是一种有效的测试数据生成方式,可以帮助对图像去噪算法的评估。本文将针对Python语言,分别介绍常用的高斯噪声和椒盐噪声添加方法,帮助读者了解如何生成一幅噪声图像,并为后续操作提供基础。
2. 高斯噪声生成
高斯噪声是指在每个像素点上添加一个高斯分布的随机噪声,其传统的生成方式是使用numpy库的random函数生成随机数,利用OpenCV对每个像素点进行操作。
import cv2
import numpy as np
# 读入图片
img = cv2.imread('lena.png')
# 添加高斯噪声
noise = np.zeros(img.shape, np.uint8)
mean = 0 #均值
var = 0.03 #方差,即噪声强度
cv2.randn(noise,mean,var) #创建随机噪声
img_with_noise = cv2.add(img, noise) #将噪声和图像加在一起
# 显示图像
cv2.imshow('image', img)
cv2.imshow('image with noise', img_with_noise)
cv2.waitKey(0)
cv2.destroyAllWindows()
在上述代码中,我们利用cv2.imread函数读取原图,然后通过cv2.randn函数生成噪声图像,最后利用cv2.add函数将噪声和原图像相加。
3. 椒盐噪声生成
椒盐噪声是一种常用的图像噪声,它相当于在原图中随机添加黑白点,常见于老照片、荧光屏幕等噪声图像的生成,我们可以使用numpy库的random函数模拟添加。
import cv2
import numpy as np
# 读入图片
img = cv2.imread('lena.png')
# 添加椒盐噪声
percent = 0.05 #噪声比例
noise = np.zeros(img.shape, np.uint8)
noise_number = int(percent * img.shape[0] * img.shape[1]) #计算噪声点数
for i in range(noise_number):
randx = np.random.randint(0,img.shape[0]-1)
randy = np.random.randint(0,img.shape[1]-1)
if np.random.randint(0,2) == 0:
noise[randx,randy] = 0
else:
noise[randx,randy] = 255
img_with_noise = cv2.add(img, noise) #将噪声和图像加在一起
# 显示图像
cv2.imshow('image', img)
cv2.imshow('image with noise', img_with_noise)
cv2.waitKey(0)
cv2.destroyAllWindows()
在上述代码中,我们通过np.random.randint生成随机整数,对于每个像素点,根据白噪声概率将其划分为黑、白两类。将添加了噪声的图像分别与原图像显示出来。
4. 总结
通过本文的介绍,我们了解到了如何使用Python生成图像噪声。在实际应用中,除了这两种噪声以外,可能还存在其他的噪声类型,需要对应不同的处理方式进行去噪。噪声图像的生成对图像算法设计、增强等实践具有重要的意义,也为图像噪声去除技术的研究提出了挑战。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现对图像加噪(高斯噪声 椒盐噪声) - Python技术站