python3图像加高斯噪声

本文介绍了如何在Python3中利用OpenCV和NumPy库为图像添加高斯噪声。首先,对原始图像进行归一化处理,然后创建一个符合高斯分布的噪声矩阵,最后将噪声与归一化后的图像相加,得到加噪图像。文中提供了一个名为`gauss_noise`的函数,用于实现这一过程,并给出了实际的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

高斯噪声

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

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

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

在这里插入图片描述

图像噪声

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

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

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

在这里插入图片描述

高斯定理

高斯定理(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.百度百科

要给图像高斯噪声和去噪,我们可以使用Python中的OpenCV库。首先,我们需要导入必要的库和图像。 ```python import cv2 import numpy as np # 图像 image = cv2.imread('image.jpg') ``` 接下来,我们可以通过使用`cv2.randn()`函数来添高斯噪声。该函数可以生成一个具有指定均值和标准差的随机高斯数组,与原始图像尺寸相同。 ```python # 生成高斯噪声 mean = 0 std_deviation = 50 gaussian_noise = np.zeros(image.shape, np.uint8) cv2.randn(gaussian_noise, mean, std_deviation) ``` 可以调整`mean`和`std_deviation`的值来控制噪声的强度。生成的高斯噪声数组与原始图像。 ```python # 添高斯噪声图像 noisy_image = cv2.add(image, gaussian_noise) ``` 现在图像上添高斯噪声。如果要将其去噪,可以使用OpenCV库中的`cv2.fastNlMeansDenoising()`函数。 ```python # 去噪 denoised_image = cv2.fastNlMeansDenoisingColored(noisy_image, None, 10, 10, 7, 21) ``` 在这里,我们使用了`cv2.fastNlMeansDenoisingColored()`函数来对带有高斯噪声的彩色图像进行去噪。该函数采用一些参数,如去噪强度、空间窗口大小和色彩距离权重等。您可以根据需要调整这些参数。 最后,可以使用`cv2.imshow()`函数显示添高斯噪声和去噪后的图像。 ```python # 显示结果 cv2.imshow('Original Image', image) cv2.imshow('Noisy Image', noisy_image) cv2.imshow('Denoised Image', denoised_image) cv2.waitKey(0) cv2.destroyAllWindows() ``` 通过运行以上代码,您将能够在显示窗口中看到原始图像、添高斯噪声图像和经过去噪处理的图像
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

szZack

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值