1、椒盐噪声,简单的说就是图片或图像中的随机亮/暗点或黑白点。前面已经分别生成盐噪声和椒噪声。现在需要同时生成椒盐噪声,并且能控制椒盐的比例,这样方便测试。随机颜色噪声,这种实际也比较常见。俗称麻点噪声。
2、同时生成椒盐代码如下:通过pertotal 设置噪声总数persalt盐噪声比例#同时加椒盐 总占比 pertotal ,persalt盐占比image = cv.imread('c:\\meiping1.png')height = image.shape[0]width = image.shape[1]channels = image.shape[2]pertotal = 0.03 #总噪声占比persalt = 0.1 #盐占比perpep = 1- persalt #椒占比NoiseImg = image.copy()NoiseNum = int(pertotal * 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,100) < persalt*100 ): NoiseImg[rows, cols, 0] = 255 NoiseImg[rows, cols, 1] = 255 NoiseImg[rows, cols, 2] = 255 else: NoiseImg[rows, cols, 0] = 0 NoiseImg[rows, cols, 1] = 0 NoiseImg[rows, cols, 2] = 0
3、import cv2 as cvimport numpy as npimport copyimport random#......#调用代码:cv.imshow('SP单项占比NoiseImg', NoiseImg)cv.waitKey(0)
4、下面再来一个随机加麻点的:可以通过per调整麻点比例。#同时加杂乱(RGB单噪声)噪声 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:#随机加盐或者加椒 NoiseImg[rows, cols, channel] = 0 else: NoiseImg[rows, cols, channel] = 255cv.imshow('RGBNoiseImg', NoiseImg)cv.waitKey(0)
5、再来一个随机麻点噪声# 随机加杂乱噪声NoiseImg = image.copy()for k in range(5000): # Create 5000 noisy pixels i = random.randint(0, image.shape[0] - 1) j = random.randint(0, image.shape[1] - 1) color = (random.randrange(256), random.randrange(256), random.randrange(256)) NoiseImg[i, j] = colorcv.imshow("randomcolorNoize", NoiseImg)cv.waitKey(0)
6、小结:三篇小文总共介绍了加盐加椒,同时加椒盐,同时加麻点,按比例加椒盐,按比例加麻点以及按数量加麻点几种方法。可以按自己要求修改噪声数量。后续采用低通、高斯、中指滤波可以直接使用方便了很多。