python3图像加高斯噪声

高斯噪声

高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一类噪声。常见的高斯噪声包括起伏噪声、宇宙噪声、热噪声和散粒噪声等等。

除常用抑制噪声的方法外,对高斯噪声的抑制方法常常采用数理统计方法。

高斯白噪声:如果一个噪声,它的幅度分布服从高斯分布,而它的功率谱密度又是均匀分布的,则称它为高斯白噪声。

图像噪声

图像噪声是指存在于图像数据中的不必要的或多余的干扰信息。噪声的存在严重影响了遥感图像的质量,因此在图像增强处理和分类处理之前,必须予以纠正。

图像中各种妨碍人们对其信息接受的因素即可称为图像噪声 。

噪声在理论上可以定义为“不可预测,只能用概率统计方法来认识的随机误差”。因此将图像噪声看成是多维随机过程是合适的,因而描述噪声的方法完全可以借用随机过程的描述,即用其概率分布函数和概率密度分布函数。

高斯定理

高斯定理(Gauss’ law)也称为高斯通量理论(Gauss’ flux theorem),或称作散度定理、高斯散度定理、高斯-奥斯特罗格拉德斯基公式、奥氏定理或高-奥公式(通常情况的高斯定理都是指该定理,也有其它同名定理)。

python3图像加高斯噪声

  • 依赖

    • python 3.x
    • opencv2
    • numpy
  • 核心思想

    1、将原始图像的像素值进行归一化

    image = np.array(img / 255, dtype=float)

    2、创建一个均值为mean,方差为sigma,呈高斯分布的图像矩阵,作为图像噪声

    noise = np.random.normal(mean, sigma/255.0, image.shape)

    3、将噪声和归一化后的图像进行相加得到加噪后的图像

    out = image + noise
  • 代码实现图像加高斯噪声

    test.py:

    import numpy as np
    import cv2
    import os
    import sys
    import random
    
    def main(path):
        
        img = cv2.imread(path)
        gn_img = gauss_noise(img, 0, random.randint(15, 30))#这里加了随机值
        cv2.imwrite('gauss_noise.png', gn_img)
        
        
    def gauss_noise(img, mean=0, sigma=25):
        
        image = np.array(img / 255, dtype=float)  # 将原始图像的像素值进行归一化
        # 创建一个均值为mean,方差为sigma,呈高斯分布的图像矩阵
        noise = np.random.normal(mean, sigma/255.0, image.shape)
        out = image + noise  # 将噪声和原始图像进行相加得到加噪后的图像
        res_img = np.clip(out, 0.0, 1.0)
        res_img = np.uint8(res_img * 255.0) 
        
        return res_img
        
    if __name__ == '__main__':
        if len(sys.argv) == 2:
            main(sys.argv[1])
  • 用法:

    python test.py img_path

  • 测试输入

  • 测试效果图

参考

1.百度百科

作者:szZack 原文地址:https://blog.csdn.net/zengNLP/article/details/128033497

%s 个评论

要回复文章请先登录注册