OpenCV:在图像中添加高斯噪声、胡椒噪声

news2025/1/27 12:11:23

目录

在图像中添加高斯噪声

高斯噪声的特性

添加高斯噪声的实现

给图像添加胡椒噪声

实现胡椒噪声的步骤


相关阅读

OpenCV:图像处理中的低通滤波-CSDN博客

OpenCV:高通滤波之索贝尔、沙尔和拉普拉斯-CSDN博客

OpenCV:图像滤波、卷积与卷积核-CSDN博客


在图像中添加高斯噪声

高斯噪声是一种常见的噪声类型,其特性是噪声值服从正态分布(Gaussian distribution)。在图像处理中,添加高斯噪声可以用于测试算法的抗噪性能或生成合成数据。

高斯噪声的特性

高斯噪声的数学公式如下:

f(x) = \frac{1}{\sqrt{2\Pi \sigma^{2}}} e ^ -\frac{(x - \mu ) ^ 2}{ 2 \sigma ^2}

其中:μ 为均值,决定噪声的中心值,σ 为标准差,决定噪声的强度。

在图像中,添加高斯噪声通常需要在每个像素值上叠加服从高斯分布的随机值。


添加高斯噪声的实现

以下是使用 Python 和 OpenCV 给图像添加高斯噪声的步骤。

示例代码

import cv2
import numpy as np

# 读取图像
image = cv2.imread("D:\\resource\\huaji.jpg")
image = cv2.resize(image, (400, 400))  # 调整大小方便显示

# 将图像转换为浮点型
image_float = image.astype(np.float32) / 255.0

# 定义高斯噪声参数
mean = 0          # 噪声的均值
stddev = 0.1      # 噪声的标准差

# 生成高斯噪声
gaussian_noise = np.random.normal(mean, stddev, image_float.shape)

# 将噪声添加到图像
noisy_image = image_float + gaussian_noise

# 将结果裁剪到 [0, 1] 范围
noisy_image = np.clip(noisy_image, 0, 1)

# 转换回 0-255 范围并转换为 uint8 类型
noisy_image = (noisy_image * 255).astype(np.uint8)

# 显示结果
cv2.imshow("image", image)
cv2.imshow("noisy", noisy_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

参数说明

  • mean: 高斯噪声的均值,通常设为 0。
  • stddev: 高斯噪声的标准差,值越大,噪声越明显。
  • np.random.normal: 用于生成服从正态分布的随机噪声。
  • np.clip: 确保像素值仍然在 [0, 1] 或 [0, 255] 的合法范围内。

运行效果


给图像添加胡椒噪声

胡椒噪声 是一种常见的二值噪声类型,与 盐噪声 搭配使用通常称为 椒盐噪声。它会在图像中随机生成黑点,模拟传感器故障或数据传输中的错误。

胡椒噪声的特性

  • 胡椒噪声:像素值变为 黑色(0)。
  • 与 盐噪声(白色点,像素值为 255) 不同,胡椒噪声专注于图像中的随机黑点。

实现胡椒噪声的步骤

以下是添加胡椒噪声的 Python 代码,基于 OpenCV 和 NumPy 实现。

示例代码

import cv2
import numpy as np

# 读取图像
image = cv2.imread("D:\\resource\\huaji.jpg")
image = cv2.resize(image, (400, 400))  # 调整大小方便显示

# 定义胡椒噪声的比例
pepper_prob = 0.02  # 噪声比例(例如 2%)

# 创建随机矩阵
random_matrix = np.random.rand(*image.shape)

# 在随机矩阵中将小于噪声比例的点设置为 0(胡椒噪声)
pepper_noise = image.copy()
pepper_noise[random_matrix < pepper_prob] = 0

# 显示结果
cv2.imshow("Image", image)
cv2.imshow("Noise", pepper_noise)
cv2.waitKey(0)
cv2.destroyAllWindows()

参数说明

  • pepper_prob: 控制胡椒噪声的密度(比例),值越大,黑点越多。
  • np.random.rand(*gray_image.shape): 生成与图像相同大小的随机矩阵。
  • pepper_noise[random_matrix < pepper_prob] = 0: 将随机矩阵中小于阈值的位置设置为黑色(0)。

运行效果

胡椒噪声通过在图像中引入黑点,模拟了现实中的噪声情况。结合降噪算法(如中值滤波)可以有效去除此类噪声,提高图像质量。通过调整噪声比例,可以测试算法在不同噪声强度下的表现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2281823.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

二叉树的存储(下)c++

链式存储 我们可以创建两个数组L[N]、r[N]&#xff0c;分别存储i 号结点的左右孩子的编号&#xff0c;这样就可以通过数组下标实现链式访问。 本质上还是孩子表示法&#xff0c;存储的是左右孩子的信息 #include <iostream>using namespace std;const int N 1e6 10; …

回归预测 | MATLAB基于TCN-BiGRU时间卷积神经网络结合双向门控循环单元多输入单输出回归预测

效果一览 基本介绍 回归预测 | MATLAB基于TCN-BiGRU时间卷积神经网络结合双向门控循环单元多输入单输出回归预测 一、引言 1.1、研究背景及意义 在当今数据驱动的时代&#xff0c;时间序列预测已成为金融、气象、工业控制等多个领域的关键技术。随着人工智能和机器学习技术的…

如何获取小程序的code在uniapp开发中

如何获取小程序的code在uniapp开发中&#xff0c;也就是本地环境&#xff0c;微信开发者工具中获取code&#xff0c;这里的操作是页面一进入就获取code登录&#xff0c;没有登录页面的交互&#xff0c;所以写在了APP.vue中&#xff0c;也就是小程序一打开就获取用户的code APP.…

BGP边界网关协议(Border Gateway Protocol)路由聚合详解

一、路由聚合 1、意义 在大规模的网络中&#xff0c;BGP路由表十分庞大&#xff0c;给设备造成了很大的负担&#xff0c;同时使发生路由振荡的几率也大大增加&#xff0c;影响网络的稳定性。 路由聚合是将多条路由合并的机制&#xff0c;它通过只向对等体发送聚合后的路由而…

《用DOTS解决实际需求》集锦

去年作者发布了一篇《DOTS-ECS系列课程》&#xff0c;深受同学们的好评&#xff01;前期课程是基于0.51版本录制的&#xff0c;DOTS升级至1.0版本后&#xff0c;同学们纷纷希望能使用DOTS 1.0版本录制实战课程。 今年作者带着DOTS 1.0版本的实战课程回来啦&#xff01;&#x…

pycharm 运行远程环境问题 Error:Failed to prepare environment.

问题排查 拿到更详细的报错信息&#xff1a; Help > Diagnostic Tools > Debug Log Settings section: 添加下面的配置 com.intellij.execution.configurations.GeneralCommandLine 重显报错&#xff0c;我这里是再次运行代码打开 Help | Collect Logs and Diagnosti…

11、性能测试及监控Nginx动静分离配置

1、Jconsole使用 1、win cmd窗口输入jconsole打开工具 选择需要监控的应用程序&#xff0c;点击连接即可进行监控 2、jvisualvm监控工具 1、cmd控制台输入jvisualvm打开工具 运行&#xff1a;正在运行的 休眠&#xff1a;sleep 等待&#xff1a;wait 驻留&#xff1a;线…

流行的开源高性能数据同步工具 - Apache SeaTunnel 整体架构运行原理

概述 背景 数据集成在现代企业的数据治理和决策支持中扮演着至关重要的角色。随着数据源的多样化和数据量的迅速增长&#xff0c;企业需要具备强大的数据集成能力来高效地处理和分析数据。SeaTunnel通过其高度可扩展和灵活的架构&#xff0c;帮助企业快速实现多源数据的采集、…

【Address Overfitting】解决过拟合的三种方法

目录 1. 收集更多数据实践方法&#xff1a;适用场景&#xff1a;优缺点&#xff1a; 2. 特征选择方法介绍&#xff1a;实践示例&#xff1a;适用场景&#xff1a;优缺点&#xff1a; 3. 正则化&#xff08;Regularization&#xff09;正则化类型&#xff1a;实践示例&#xff1…

机器人SLAM建图与自主导航

前言 这篇文章我开始和大家一起探讨机器人SLAM建图与自主导航 &#xff0c;在前面的内容中&#xff0c;我们介绍了差速轮式机器人的概念及应用&#xff0c;谈到了使用Gazebo平台搭建仿真环境的教程&#xff0c;主要是利用gmapping slam算法&#xff0c;生成一张二维的仿真环境…

士的宁(strychnine)的生物合成-文献精读104

Biosynthesis of strychnine 士的宁&#xff08;strychnine&#xff09; 又名 番木鳖碱 的生物合成 摘要 士的宁&#xff08;番木鳖碱&#xff09;是一种天然产物&#xff0c;通过分离、结构阐明和合成努力&#xff0c;塑造了有机化学领域。目前&#xff0c;士的宁因其强大的…

Moretl FileSync增量文件采集工具

永久免费: <下载> <使用说明> 我们希望Moretl FileSync是一款通用性很好的文件日志采集工具,解决工厂环境下,通过共享目录采集文件,SMB协议存在的安全性,兼容性的问题. 同时,我们发现工厂设备日志一般为增量,为方便MES,QMS等后端系统直接使用数据,我们推出了增量采…

设计模式的艺术-中介者模式

行为型模式的名称、定义、学习难度和使用频率如下表所示&#xff1a; 1.如何理解中介者模式 如果在一个系统中对象之间存在多对多的相互关系&#xff0c;可以将对象之间的一些交互行为从各个对象中分离出来&#xff0c;并集中封装在一个中介者对象中&#xff0c;由该中介者进行…

win32汇编环境,函数的编写与调用、传值或返回值等

;运行效果 ;win32汇编环境,函数的编写与调用、传值或返回值等 ;函数在被调用的时候&#xff0c;如果此函数实体在前面&#xff0c;可以不用声明。如果实体在后面&#xff0c;则需要先声明。类似于下面的DlgProc函数&#xff0c;因为它的实体在后面&#xff0c;所以需要在调用之…

填坑 kali 虚拟机磁盘耗尽

今天准备SSH暴力破解&#xff0c;打开kali 虚拟机的时候&#xff0c;发现一直卡在一个地方不动&#xff0c;一开始的时候&#xff0c;我并不知道是磁盘满了&#xff0c;只是跟着网上的解决方案去实施操作&#xff0c;也是通过recovery mode&#xff0c;然后一通操作拿到shell&a…

智能手机“混战”2025:谁将倒下而谁又将突围?

【潮汐商业评论原创】 “去年做手机比较艰难&#xff0c;几乎每个品牌都在调价、压货&#xff0c;像华为这种以前都不给我们分货的厂商&#xff0c;也开始成为我的主要库存。不过今年开头比较好&#xff0c;20号国补一开始&#xff0c;店里的人流和手机销量就明显涨了不少&…

MongoDB文档查询

一、实验目的 1. 理解MongoDB文档数据库的基本概念和特性。 2. 掌握在MongoDB中创建集合和插入文档数据的方法。 3. 学习使用MongoDB进行文档查询操作&#xff0c;包括查询、过滤和排序等。 二、实验环境准备 1. JAVA环境准备&#xff1a;确保Java Development Kit (J…

【Python・机器学习】多元回归模型(原理及代码)

前言 自学笔记&#xff0c;分享给语言学/语言教育学方向的&#xff0c;但对语言数据处理感兴趣但是尚未入门&#xff0c;却需要在论文中用到的小伙伴&#xff0c;欢迎大佬们补充或绕道。ps&#xff1a;本文最少限度涉及公式讲解&#xff08;文科生小白友好体质&#xff09;&am…

Vue中设置报错页面和“Uncaught runtime errors”弹窗关闭

文章目录 前言操作步骤大纲1.使用Vue自带的报错捕获机制添加报错信息2.在接口报错部分添加相同机制3.把报错信息添加到Vuex中方便全局使用4.添加报错页面备用5.app页面添加if判断替换报错界面 效果备注&#xff1a;vue项目中Uncaught runtime errors:怎样关闭 前言 在开发Vue项…

Adobe的AI生成3D数字人框架:从自拍到生动的3D化身

一、引言 随着人工智能技术的发展,我们见证了越来越多创新工具的出现,这些工具使得图像处理和视频编辑变得更加智能与高效。Adobe作为全球领先的创意软件公司,最近推出了一项令人瞩目的新技术——一个能够将普通的二维自拍照转换成栩栩如生的三维(3D)数字人的框架。这项技…