Python-给图像添加椒盐噪声和高斯噪声

Python-给图像添加椒盐噪声和高斯噪声,第1张

概述椒盐噪声和高斯噪声在噪声的概念中,通常采用信噪比(Signal-NoiseRate,SNR)衡量图像噪声。通俗的讲就是信号占多少,噪声占多少,SNR越小,噪声占比越大。在信号系统中,计量单位为dB,为10lg(PS/PN),PS和PN分别代表信号和噪声的有效功率。在这里,采用信号像素点的占比充当SNR,以衡量所添加噪 椒盐噪声和高斯噪声

在噪声的概念中,通常采用信噪比(Signal-Noise Rate, SNR)衡量图像噪声。通俗的讲就是信号占多少,噪声占多少,SNR越小,噪声占比越大。

在信号系统中,计量单位为dB,为10lg(PS/PN), PS和PN分别代表信号和噪声的有效功率。在这里,采用信号像素点的占比充当SNR,以衡量所添加噪声的多少。

椒盐噪声又称为脉冲噪声,它是一种随机出现的白点(盐噪声)或者黑点(椒噪声)。

高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一类噪声。

原图:

代码:
import cv2import numpy as npfrom matplotlib import pyplot as pltfrom PIL import Imageimport randomdef gasuss_noise(image, mean=0, var=0.001):    '''        添加高斯噪声        mean : 均值        var : 方差    '''    image = np.array(image/255, dtype=float)    noise = np.random.normal(mean, var ** 0.5, image.shape)    out = image + noise    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 outdef sp_noise(image,prob):    '''    添加椒盐噪声    prob:噪声比例    '''    output = np.zeros(image.shape,np.uint8)    thres = 1 - prob    for i in range(image.shape[0]):        for j in range(image.shape[1]):            rdn = random.random()            if rdn < prob:                output[i][j] = 0            elif rdn > thres:                output[i][j] = 255            else:                output[i][j] = image[i][j]    return outputimg = cv2.imread("1.jpg")gray=cv2.cvtcolor(img,cv2.color_BGR2GRAY)# 添加椒盐噪声,噪声比例为 0.02out1 = sp_noise(img, prob=0.02)# 添加高斯噪声,均值为0,方差为0.009out2 = gasuss_noise(img, mean=0, var=0.009)cv2.imshow('out1',out1)cv2.imwrite('sp.png',out1)cv2.imshow('out2',out2)cv2.imwrite('gasuss.png',out2)cv2.waitKey(0)cv2.destroyAllwindows()
实验结果

高斯(gasuss)


椒盐(sp)

总结

以上是内存溢出为你收集整理的Python-给图像添加椒盐噪声和高斯噪声全部内容,希望文章能够帮你解决Python-给图像添加椒盐噪声和高斯噪声所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1184987.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存