1、什么是盐噪声,简单的说就是图片或图像中的随机亮点或白点,或者脉冲点。在图片或图像上出现白色随机噪声点(比一定对,自己的肤浅理解)。例如:下图所示就是加盐500的示意图。
2、和原图比对,在暗色背景上看,白色噪点还是比较明显的。源代码如下:#盐def SaltNoise(srcimg,saltnum): SaltNoise_img = srcimg.copy() #做一个拷贝 for k in range(saltnum): #随机坐标 rows = np.random.randint(0, srcimg.shape[0] - 1) # 随机坐标 cols = np.random.randint(0, srcimg.shape[1] - 1) channel = srcimg.shape[2] if (channel == 1):#灰度 SaltNoise_img[rows, cols, 0] = 255 else: if (channel == 3):#彩色 SaltNoise_img[rows, cols, 0] = 255 #将噪声置位255 SaltNoise_img[rows, cols, 1] = 255 SaltNoise_img[rows, cols, 2] = 255 return SaltNoise_img
3、import cv2 as cvimport numpy as npimport copyimport random#......#调用代码:image = cv.imread('c:\\meiping1.png')SaltNoise_img = SaltNoise(image,500) #加500数量cv.imshow('SaltNoise_img', SaltNoise_img)cv.waitKey(0)
4、修改加盐数量:SaltNoise_img = SaltNoise(image,1000) #加1000数量可以看出白点明显增多。
5、按照百分比加盐代码 5%#加盐 per :噪声占比 彩图image = cv.imread('c:\\meiping1.png')height = image.shape[0]width = image.shape[1]channels = image.shape[2]per = 0.05 #噪声占比 已经比较明显了 0.1 严重影响画质NoiseImg = image.copy()NoiseNum = int(per * image.shape[0] * image.shape[1])print(NoiseNum)for i in range(NoiseNum): rows = np.random.randint(0, image.shape[0] - 1) cols = np.random.randint(0, image.shape[1] - 1) #channel = np.random.randint(0, 3) # if np.random.randint(0, 2) == 0:#随机加盐或者加椒 if (0): # 0: 加盐 1:加椒 NoiseImg[rows, cols, 0] = 0 NoiseImg[rows, cols, 1] = 0 NoiseImg[rows, cols, 2] = 0 else: NoiseImg[rows, cols, 0] = 255 NoiseImg[rows, cols, 1] = 255 NoiseImg[rows, cols, 2] = 255cv.imshow('SP比例NoiseImg', NoiseImg)cv.waitKey(0)
6、将per 改成0.1 图像质量下降的很厉害。这样就可以比较容易控制噪声数量,方便程序调试。还可以修改程序 同时加椒盐 并且控制椒盐各自的占比。后续在介绍。