返回顶部
首页 > 资讯 > 后端开发 > Python >如何用python给数据加上高斯噪声
  • 133
分享到

如何用python给数据加上高斯噪声

python数据python高斯噪声python数据高斯噪声 2023-05-19 05:05:41 133人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录python给数据加上高斯噪声回顾MATLAB中的加高斯噪声Python中利用numpy给数据加噪声python批量给图形添加噪声高斯噪声椒盐噪声随机噪声总结python给数据加

python给数据加上高斯噪声

一开始用MATLAB给数据加噪声很简单,就一句话:

% 给数据加指定SNR的高斯噪声
signal_noise = awgn(signal,SNR,'measured');

但用python实现加噪声的时候遇到一个小问题,也是由于本人愚钝的原因吧。

回顾MATLAB中的加高斯噪声

常用方法:

% 给数据加指定SNR的高斯噪声
signal_noise = awgn(signal,SNR,'measured');
Ps=sum(sum((signal-mean(mean(signal))).^2));          %signal power
Pn=sum(sum((signal-signal_noise).^2));                %noise power
snr=10*log10(Ps/Pn);                                %验证所加的噪声

这里的signal 是一个二维的数据矩阵,所以后面的操作都是矩阵的操作。MATLAB中运行完全没有问题。

Python中利用numpy给数据加噪声

本文方法:

# 给数据加指定SNR的高斯噪声
SNR = 5
noise = np.random.randn(signal.shape[0],signal.shape[1])     #产生N(0,1)噪声数据
noise = noise-np.mean(noise)                                 #均值为0
signal_power = np.linalg.nORM( signal - signal.mean() )**2 / signal.size    #此处是信号的std**2
noise_variance = signal_power/np.power(10,(SNR/10))         #此处是噪声的std**2
noise = (np.sqrt(noise_variance) / np.std(noise) )*noise    ##此处是噪声的std**2
signal_noise = noise + signal
Ps = ( np.linalg.norm(signal - signal.mean()) )**2          #signal power
Pn = ( np.linalg.norm(signal - signal_noise ) )**2          #noise power
snr = 10*np.log10(Ps/Pn)

有很多人在产生给定SNR的高斯噪声时,用的是:

signal_power = np.linalg.norm( signal )**2
noise_variance = signal_power/np.power(10,(SNR/10))
noise = np.sqrt(noise_variance)*noise + 0

这里实际上是有问题的,我一开始也没发现。因为产生分布为N(mean,std**2)的噪声我们用的公式是:

noise = std * N(0,1) + mean

换句话说,我们需要计算噪声的std 以及 mean 。

计算噪声的 std 时,需要先计算信号的 std,然后利用SNR来求出噪声的 std ,从上面的代码中能发现,signal_power 代表的是信号的std^2 与 signal.size 的乘积,多乘了一个signal.size 那结果肯定是有问题的。

python批量给图形添加噪声

python代码实现批量给图形添加高斯噪声和椒盐噪声

高斯噪声

import cv2
import os
import numpy as np
def add_noise_Guass(img, mean=0, var=0.01):  # 添加高斯噪声
    img = np.array(img / 255, dtype=float)
    noise = np.random.normal(mean, var ** 0.5, img.shape)
    out_img = img + noise
    if out_img.min() < 0:
        low_clip = -1
    else:
        low_clip = 0
        out_img = np.clip(out_img, low_clip, 1.0)
        out_img = np.uint8(out_img * 255)
    return out_img
# 读取函数,用来读取文件夹中的所有函数,输入参数是文件名
def read_directory(directory_name):
    for filename in os.listdir(directory_name):
        print(filename)  # 仅仅是为了测试
        img = cv2.imread(directory_name + "/" + filename)
        #####显示图片#######
        out_img = add_noise_Guass(img)
        cv2.imshow("img", out_img)
        cv2.waiTKEy(0)
        #####################
        #####保存图片#########
        cv2.imwrite("C:/Users/Dong.Shao2/Desktop/DataSet/gaussian" + "/" + filename, out_img * 255)
read_directory("C:/Users/Dong.Shao2/Desktop/DataSet/image")#这里传入所要读取文件夹的绝对路径,加引号(引号不能省略!)

椒盐噪声

import cv2
import random
import os
import numpy as np
def add_salt_pepper(img, prob):
    resultImg = np.zeros(img.shape, np.uint8)
    thres = 1 - prob
    for i in range(img.shape[0]):
        for j in range(img.shape[1]):
            rdn = random.random()
            if rdn < prob:
                resultImg[i][j] = 0
            elif rdn > thres:
                resultImg[i][j] = 255
            else:
                resultImg[i][j] = img[i][j]
    return resultImg
# 读取函数,用来读取文件夹中的所有函数,输入参数是文件名
def read_directory(directory_name):
    for filename in os.listdir(directory_name):
        print(filename)  # 仅仅是为了测试
        img = cv2.imread(directory_name + "/" + filename)
        #####显示图片#######
        out_img = add_salt_pepper(img,0.05)
        cv2.imshow("img", out_img)
        cv2.waitKey(0)
        #####################
        #####保存图片#########
        cv2.imwrite("C:/Users/Dong.Shao2/Desktop/DataSet/salt_pepper" + "/" + filename, out_img )
read_directory("C:/Users/Dong.Shao2/Desktop/DataSet/image")#这里传入所要读取文件夹的绝对路径,加引号(引号不能省略!)

随机噪声

import cv2
import os
import numpy as np
def random_noise(image,noise_num):
    '''
    添加随机噪点(实际上就是随机在图像上将像素点的灰度值变为255即白色)
    param image: 需要加噪的图片
    param noise_num: 添加的噪音点数目
    return: img_noise
    '''
    # 参数image:,noise_num:
    img_noise = image
    # cv2.imshow("src", img)
    rows, cols, chn = img_noise.shape
    # 加噪声
    for i in range(noise_num):
        x = np.random.randint(0, rows)#随机生成指定范围的整数
        y = np.random.randint(0, cols)
        img_noise[x, y, :] = 255
    return img_noise
# 读取函数,用来读取文件夹中的所有函数,输入参数是文件名
def read_directory(directory_name):
    for filename in os.listdir(directory_name):
        print(filename)  # 仅仅是为了测试
        img = cv2.imread(directory_name + "/" + filename)
        #####显示图片#######
        out_img = random_noise(img,10000)
        cv2.imshow("img", out_img)
        cv2.waitKey(0)
        #####################
        #####保存图片#########
        cv2.imwrite("C:/Users/Dong.Shao2/Desktop/DataSet/random"  + "/" + filename, out_img )
read_directory("C:/Users/Dong.Shao2/Desktop/DataSet/image")#这里传入所要读取文件夹的绝对路径,加引号(引号不能省略!)

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: 如何用python给数据加上高斯噪声

本文链接: https://lsjlt.com/news/212572.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何用python给数据加上高斯噪声
    目录python给数据加上高斯噪声回顾MATLAB中的加高斯噪声Python中利用numpy给数据加噪声python批量给图形添加噪声高斯噪声椒盐噪声随机噪声总结python给数据加...
    99+
    2023-05-19
    python数据 python高斯噪声 python数据高斯噪声
  • 利用python3如何给数据添加高斯噪声
    目录Background原始数据源码总结Background 高斯噪声,顾名思义是指服从高斯分布(正态分布)的一类噪声。有的时候我们需要向标准数据中加入合适的高斯噪声让数据更加符合实...
    99+
    2024-04-02
  • python3怎么给数据添加高斯噪声
    本篇内容介绍了“python3怎么给数据添加高斯噪声”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Background高斯噪声,顾名思义是指...
    99+
    2023-06-29
  • Python实现对图像加噪(高斯噪声椒盐噪声)
    目录内容简介加噪声的代码(高斯噪声,椒盐噪声)在pytorch中如何使用补充内容简介 展示如何给图像叠加不同等级的椒盐噪声和高斯噪声的代码,相应的叠加噪声的已编为对应的类,可实例化使...
    99+
    2024-04-02
  • Python实现图像随机添加椒盐噪声和高斯噪声
    目录1.常见的图像噪声(1)高斯噪声(2) 椒盐噪声2.生成图像噪声(1)高斯噪声(2) 椒盐噪声(速度慢)(3) 椒盐噪声(快速版)3. Demo性能测试 图像噪声是指存...
    99+
    2024-04-02
  • 图像处理:随机添加椒盐噪声和高斯噪声Python
    图像处理:随机添加椒盐噪声和高斯噪声Python 目录 图像处理:随机添加椒盐噪声和高斯噪声Python 1.常见的图像噪声 (1)高斯噪声 (2) 椒盐噪声 2.生成图像噪声 (1)高斯噪声 (2) 椒盐噪声(速度慢) (3) 椒盐噪声(...
    99+
    2023-08-31
    高斯噪声 椒盐噪声 快速生成椒盐噪声 图像添加噪声 图像噪声
  • 如何利用python正确地为图像添加高斯噪声
    目录彩图or灰度图uint8orfloat64方差or标准差是否截断(clip)总结参考开门见山,直接使用 skimage 库为图像添加高斯噪声是很简单的: import skima...
    99+
    2024-04-02
  • Python怎么实现对图像添加高斯噪声或椒盐噪声
    这篇文章主要为大家展示了“Python怎么实现对图像添加高斯噪声或椒盐噪声”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Python怎么实现对图像添加高斯噪声或椒盐噪声”这篇文章吧。加噪声的代码...
    99+
    2023-06-21
  • python使用opencv对图像添加噪声(高斯/椒盐/泊松/斑点)
    目录1、高斯噪声2、椒盐噪声3、泊松噪声4、speckle噪声导读: 这篇文章主要介绍如何利用opencv来对图像添加各类噪声,原图: 1、高斯噪声 高斯噪声就是给图片添加一个服从...
    99+
    2024-04-02
  • Opencv图像添加椒盐噪声、高斯滤波去除噪声原理以及手写Python代码实现方法
    目录一、噪声 二、噪声的分类三、图像中添加椒盐噪声四、基于滤波器方法去噪五、opencv高斯滤波调包 总结 一、噪声   我们将常会...
    99+
    2024-04-02
  • Python中如何给数据加列名
    在Python中给数据加列名可以使用pandas库中的DataFrame对象。DataFrame是一个二维表格,类似于Excel中的...
    99+
    2023-10-18
    Python
  • python如何生成高斯函数
    在python中使用random.gauss高斯随机数生成器生成高斯函数,具体方法如下:import randomdef trunc_gauss(mu, sigma, bottom, top): //使用随机库中的函数,其中包括高斯随机数生...
    99+
    2024-04-02
  • 如何给pdf数据加密
    对pdf文件进行数据加密的方法首先,在打开并进入一个pdf文档;在pdf文档中,点击上方的“视图”选项,并在下拉列表中选择“工具”>“保护”选项;进入保护页面后,在右侧窗口中点击“加密”按钮,并在下拉中选择“使用口令加密”选项;在弹出的口令...
    99+
    2024-04-02
  • 如何用md5函数给数据库加密
    在MySQL数据库中使用md5函数进行加密的方法首先,在MySQL数据库中新建一个test表;CREATE TABLE test (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varcha ...
    99+
    2024-04-02
  • 如何在Couchbase中实现数据去重和去噪声处理
    在Couchbase中实现数据去重和去噪声处理可以通过以下几种方式: 使用Couchbase的N1QL查询语言来进行数据去重和去...
    99+
    2024-04-02
  • php如何给数组增加数据
    本文小编为大家详细介绍“php如何给数组增加数据”,内容详细,步骤清晰,细节处理妥当,希望这篇“php如何给数组增加数据”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。php给数组增加数据的方法:1、使用“arra...
    99+
    2023-06-29
  • plsql如何给表添加数据
    在PL/SQL中,可以使用INSERT语句来给表添加数据。INSERT语句的基本语法如下:```INSERT INTO 表名 (列1...
    99+
    2023-10-07
    plsql
  • sqlserver如何给表添加数据
    要给表添加数据,可以使用SQL Server中的INSERT语句。以下是一个示例: INSERT INTO 表名 (列1, 列2, ...
    99+
    2024-04-10
    sqlserver
  • mysql如何给用户添加数据库权限
    要给用户添加数据库权限,可以使用MySQL的GRANT语句。以下是一个简单的示例: GRANT ALL PRIVILEGES ON ...
    99+
    2024-04-02
  • 如何使用Python给Excel写入数据
    openpyxl三步走 获取work book 获取 work sheet 再然后 获取单元格 进行操作 保存文件 安装OpenpyXl pip install OpenpyXl 导包方式以下两种都可以 from openpyxl i...
    99+
    2023-10-12
    excel python 信息可视化 数据分析 powerpoint
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作