python图像处理(一): 添加高斯噪声

python图像处理(一): 添加高斯噪声

核心思想

先将原图片的像素值除以255,即将像素值区间[0,255]投射到[0,1],再添加服从高斯分布的噪声,最后将处理后的像素矩阵乘255恢复。
为什么不直接添加噪声呢? 其实也可以,请读者老爷自己尝试吧 = =

代码

import cv2
import numpy as np

def Gaussnoise_func(image, mean=0, var=0.005):
    ''' 
    添加高斯噪声
    mean : 均值 
    var : 方差
    '''
    image = np.array(image/255, dtype=float)                    #将像素值归一
    noise = np.random.normal(mean, var ** 0.5, image.shape)     #产生高斯噪声
    out = image + noise                                         #直接将归一化的图片与噪声相加

    '''
    将值限制在(-1/0,1)间,然后乘255恢复
    '''
    if out.min() < 0:
        low_clip = -1.
    else:
        low_clip = 0.

    out = np.clip(out, low_clip, 1.0)
    out = np.uint8(out*255)
    return out

def nothing(pp):
    pass

if __name__ == '__main__':
    img = cv2.imread("apple.png")
    #创建预览界面
    cv2.namedWindow("Preview")
    cv2.createTrackbar("mean","Preview",0,5,nothing)
    cv2.createTrackbar("var","Preview",0,5,nothing)
    while(1):
        mean = cv2.getTrackbarPos("mean","Preview")
        var = cv2.getTrackbarPos("var","Preview")
        img_r = Gaussnoise_func(img,mean/10,var/100)
        cv2.imshow("Result",img_r)
        k = cv2.waitKey(1) & 0xff
        if k == 27:
            break
    cv2.destroyAllWindows()

结果

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值