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

目录

在图像中添加高斯噪声

高斯噪声的特性

添加高斯噪声的实现

给图像添加胡椒噪声

实现胡椒噪声的步骤


相关阅读

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

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

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


在图像中添加高斯噪声

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

高斯噪声的特性

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

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

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


添加高斯噪声的实现

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

示例代码

python 复制代码
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 实现。

示例代码

python 复制代码
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)。

运行效果

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

相关推荐
MoonBit月兔1 小时前
年终 Meetup:走进腾讯|AI 原生编程与 Code Agent 实战交流会
大数据·开发语言·人工智能·腾讯云·moonbit
大模型任我行2 小时前
人大:熵引导的LLM有限数据训练
人工智能·语言模型·自然语言处理·论文笔记
weixin_468466852 小时前
YOLOv13结合代码原理详细解析及模型安装与使用
人工智能·深度学习·yolo·计算机视觉·图像识别·目标识别·yolov13
蹦蹦跳跳真可爱5892 小时前
Python----大模型(GPT-2模型训练加速,训练策略)
人工智能·pytorch·python·gpt·embedding
xwill*2 小时前
π∗0.6: a VLA That Learns From Experience
人工智能·pytorch·python
jiayong232 小时前
知识库概念与核心价值01
java·人工智能·spring·知识库
雨轩剑2 小时前
做 AI 功能不难,难的是把 App 发布上架
人工智能·开源软件
kylezhao20192 小时前
C# 语言基础(变量、数据类型、流程控制、面向对象编程)
开发语言·计算机视觉·c#·visionpro
Tezign_space3 小时前
AI智能体赋能实践:从提示工程到上下文工程的架构演进
人工智能·架构·agentic ai·上下文工程·大模型智能体·长程任务·模型注意力预算
..过云雨3 小时前
17-2.【Linux系统编程】线程同步详解 - 条件变量的理解及应用
linux·c++·人工智能·后端