给图像添加噪声(椒盐噪声,高斯噪声)

1、椒盐噪声是比较常见的噪声(salt and pepper noise),为什么叫椒盐噪声?因为图像的像素点由于噪声影响随机变成了黑点(dark spot)或白点(white spot)。这里的“椒”不是我们常见的红辣椒或青辣椒,而是外国的“胡椒”(香料的一种)。我们知道,胡椒是黑色的,盐是白色的,所以才取了这么个形象的名字。
接下来我们来实现一下椒盐噪声
首先看一下原始图片
在这里插入图片描述
椒盐噪声有两种(slat or pepper)也就是黑点和白点,实现起来是类似的,这里值对slat进行说明

import cv2
import numpy as np
def imshow(x):
    cv2.imshow('image',x.astype('uint8'))
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
x = cv2.imread('4.jpg',0)
y = cv2.resize(x,dsize = (800,700))#原图太大,修改一下大小
#生成随机噪声
noise = np.random.randint(0,256,size = y.shape)#注意这个函数是下闭上开的
#设定一个阈值,大于的取255,小于的取0
noise = np.where(noise>250,255,0)

noise = noise.astype('float')
y = y.astype("float")
y = y + noise
#读入的图像的数据类型是uint8,相加的话不会截取,而是自动对256取余,所以我们需要转换为float后再相加
#这时候图像的数据都是float,并且有的是大于255的,对于大于255的,我们进行截取
y = np.where(y>255,255,y)
y = y.astype('uint8')
imshow(y)

效果图:

在这里插入图片描述
2、高斯噪声

import cv2
import numpy as np
def imshow(x):
    cv2.imshow('image',x.astype('uint8'))
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
x = cv2.imread('4.jpg',0)
y = cv2.resize(x,dsize = (800,700))#原图太大,修改一下大小
#生成随机噪声
noise = np.random.normal(0,30,size = y.shape)# 0 是均值,30是方差
y = y.astype("float")
y = y + noise 
y = np.where(y>255,255,y)
y = np.where(y<0,0,y)
y = y.astype('uint8')
imshow(y)

效果图
在这里插入图片描述
np.where(condition,x,y)符合条件输出x,不符合条件返回y
例子:

x = np.random.randint(0,50,size = (3,3))
y = np.where(x>20,50,0)
y

输出:
array([[ 0,  0,  0],
       [ 0,  0, 50],
       [ 0, 50,  0]])

  • 6
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值