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)。

运行效果

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

相关推荐
Kel8 小时前
深入剖析 openai-node 源码:一个工业级 TypeScript SDK 的架构之美
javascript·人工智能·架构
岛雨QA8 小时前
Skill学习指南🧑‍💻
人工智能·agent·ai编程
波动几何8 小时前
从人性到无名:一条向内的觉悟之路
人工智能
EllenLiu8 小时前
架构演进与性能压榨:在金融 RAG 中引入条款森林 (FoC)
人工智能·架构
IT_陈寒9 小时前
深入理解JavaScript:核心原理与最佳实践
前端·人工智能·后端
梦醒过后说珍重9 小时前
医学图像超分辨率:如何构建“教科书级”的模型评测与交互式可视化流水线?
opencv
Presto9 小时前
AI 时代 .env 文件不再安全——我试图找到替代方案,然后撞上了一堵墙
人工智能
IT WorryFree9 小时前
OpenClaw-Medical-Skills 仓库介绍
人工智能·skill·openclaw
多年小白9 小时前
今日AI科技简报 | 2026年3月19日
人工智能·科技·ai编程
逄逄不是胖胖9 小时前
《动手学深度学习》-69预训练bert数据集实现
人工智能·深度学习·bert