您的位置首页百科知识

opencv+python椒盐噪声之椒噪声

opencv+python椒盐噪声之椒噪声

的有关信息介绍如下:

opencv+python椒盐噪声之椒噪声

在学习opencv过程中,加盐噪声和加椒噪声是必须要经过的历程,通过对自己对加盐代码的学习和编写,为后面的滤波处理提供不少助益。上文介绍加盐噪声代码。本文是加椒噪声代码。

所谓椒噪声,简单的说就是图片或图像中的随机暗点或黑点。就是在图片或图像上出现黑色随机噪声点。

例如:下图所示就是加椒500的示意图。

和原图比对,在暗色背景上看,白色噪点还是比较明显的。

源代码如下:

#加椒

def PepperNoise(srcimg,Peppernum):

PepperNoise_img = srcimg.copy()

for k in range(Peppernum):

#随机坐标

rows = np.random.randint(0, srcimg.shape - 1)

# 随机坐标

cols = np.random.randint(0, srcimg.shape - 1)

channel = srcimg.shape

if (channel == 1): #灰度

PepperNoise_img[rows, cols, 0] = 0

else:

if (channel == 3): #彩色

PepperNoise_img[rows, cols, 0] = 0

PepperNoise_img[rows, cols, 1] = 0

PepperNoise_img[rows, cols, 2] = 0

return PepperNoise_img

image = cv.imread('c:\\meiping1.png')

PepperNoise_img = PepperNoise(image,500) #1000

cv.imshow('PepperNoise_img', PepperNoise_img)

cv.waitKey(0)

import cv2 as cv

import numpy as np

import copy

import random

#......

#调用代码:

image = cv.imread('c:\\meiping1.png')

PepperNoise_img = PepperNoise(image,500) #1000

cv.imshow('PepperNoise_img', PepperNoise_img)

cv.waitKey(0)

修改加椒数量:

PepperNoise_img = PepperNoise(image,1000) #加1000数量

可以看出黑点明显增多。

#同时加椒盐 per :噪声占比 彩图

image = cv.imread('c:\\meiping1.png')

height = image.shape

width = image.shape

channels = image.shape

per = 0.05 #噪声占比 已经比较明显了 0.1 严重影响画质

per = 0.1

NoiseImg = image.copy()

NoiseNum = int(per * image.shape * image.shape)

print(NoiseNum)

for i in range(NoiseNum):

rows = np.random.randint(0, image.shape - 1)

cols = np.random.randint(0, image.shape - 1)

#channel = np.random.randint(0, 3)

# if np.random.randint(0, 2) == 0:#随机加盐或者加椒

if (1): # 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] = 255

cv.imshow('SP比例NoiseImg', NoiseImg)

cv.waitKey(0)

将per 改成0.1 图像质量下降的很厉害。

这样就可以比较容易控制噪声数量,方便程序调试。

还可以修改程序 同时加椒盐 并且控制椒盐各自的占比。