图像数据噪音种类以及Python生成对应噪音
前言
当涉及到图像处理和计算机视觉任务时,噪音是一个不可忽视的因素。噪音可以由多种因素引起,如传感器误差、通信干扰、环境光线变化等。这些噪音会导致图像质量下降,从而影响到后续的图像分析和处理过程。因此,对于从图像中获取准确信息的应用,我们需要有效地处理这些噪音。在本篇讨论中,我们将深入探讨图像数据中常见的几种噪音类型,以及相应的处理方法,旨在提升图像处理任务的准确性和稳定性。
噪音种类
1.高斯噪音(Gaussian Noise)
高斯噪声是一种常见的随机噪声类型,它在许多自然现象和工程应用中都会出现。其特点是随机的幅度和分布,符合正态分布(也称为高斯分布)。高斯噪声的产生可以由多种因素引起,例如电子元件的热噪声、光线的散射和传感器的非线性响应等。
高斯噪声会对图像产生以下影响:
- 图像细节模糊化:高斯噪声会在图像中引入随机干扰,导致图像细节变得模糊。
- 降低图像对比度:噪声会使图像的像素值变得不稳定,从而降低了图像的对比度。
- 影响图像分析和处理:在许多计算机视觉和图像处理任务中,噪声会干扰到对目标的检测、识别和测量。
高斯噪声在许多场景中都会出现,比如:
- 传感器捕获:在数字摄像头、声音采集器等传感器设备中,由于传感器的本身特性和外部环境等因素,会引入高斯噪声。
- 通信信号传输:在无线通信、有线通信等信号传输过程中,信号可能会受到干扰,从而产生高斯噪声。
- 天文学观测:望远镜在观测外太空物体时,由于大气扰动等因素,会产生高斯噪声。
上章节中我们有见到到高斯噪音图片,以原图片为例对比:
import numpy as np
import cv2# 读取图片
image = cv2.imread('planck.jpg', cv2.IMREAD_COLOR)# 生成高斯噪声
mean = 0
var = 0.8
sigma = var ** 0.5
gaussian = np.random.normal(mean, sigma, image.shape).astype('uint8')
noisy_image = cv2.add(image, gaussian)# 显示带噪声的图像
cv2.imshow('Noisy Image', noisy_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
高斯噪音图片展现为:
2.椒盐噪声(Salt and Pepper Noise)
椒盐噪声是一种常见的图像噪声,其特点是在图像中随机分布的黑白像素点,通常以黑色和白色的点来模拟椒和盐。这种噪声可能会在图像采集、传输或存储过程中引入,通常由于设备故障、传感器损坏、传输信号干扰或存储介质老化等原因引起。
椒盐噪声会对图像产生以下影响:
- 图像中出现随机的黑点和白点:这些黑点和白点会在图像中随机分布,导致图像中的细节和特征丧失。
- 降低图像质量:椒盐噪声会使图像的可视质量下降,降低了图像的清晰度和细节。
- 影响图像分析和处理:在许多图像处理和计算机视觉任务中,噪声会干扰到对目标的检测、识别和分析。
椒盐噪声在许多场景中都可能出现,比如:
- 摄影:在低光条件下拍摄照片,或者由于相机传感器损坏或脏污而引入椒盐噪声。
- 传感器故障:在数字摄像头、声音采集器等传感器设备中,由于传感器的损坏或故障,可能会引入椒盐噪声。
- 图像传输:在图像传输过程中,信号可能会受到干扰,从而产生椒盐噪声。
椒盐噪声展示为:
def salt_pepper_noise(image, salt_prob, pepper_prob):noisy_image = np.copy(image)total_pixels = image.shape[0] * image.shape[1] #计算图像的总像素数num_salt = int(total_pixels * salt_prob) #通过将总像素数与指定的椒盐噪声比例相乘,得到要添加的椒盐噪声的数量。salt_coords = [np.random.randint(0, i-1, num_salt) for i in image.shape]noisy_image[salt_coords[0], salt_coords[1]] = 255num_pepper = int(total_pixels * pepper_prob)pepper_coords = [np.random.randint(0, i-1, num_pepper) for i in image.shape]noisy_image[pepper_coords[0], pepper_coords[1]] = 0return noisy_image# 使用方法
noisy_image = salt_pepper_noise(image, salt_prob=0.1, pepper_prob=0.1)
# 显示带噪声的图像
cv2.imshow('Noisy Image', noisy_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
3.泊松噪声(Poisson Noise)
泊松噪声是一种常见的图像噪声,它源于光子在成像过程中的随机性。具体来说,泊松噪声是由于光子到达相机传感器的数量具有随机性,特别是在低光条件下或者拍摄快门速度较快时,泊松噪声会更为显著。
泊松噪声通常呈现为图像中的亮度和颜色的随机变化,这种变化不是由于真实场景的特性所引起的,而是由成像系统的随机性和量化误差所引起的。
具体场景包括:
- 低光条件下的拍摄:在光线不足的情况下,相机传感器接收到的光子数量较少,从而增加了泊松噪声的出现几率。
- 高ISO设置:高ISO设置会放大传感器接收到的信号,但也会放大噪声信号,特别是泊松噪声。
- 医学图像:在X射线或核磁共振成像中,由于光子或电子的随机性,图像中会存在泊松噪声。
泊松噪声图片展示为:
# 生成泊松噪声
noise = np.random.poisson(image / 255.0) * 255
noisy_image = np.clip(image + noise, 0, 255).astype('uint8')# 显示带噪声的图像
cv2.imshow('Noisy Image', noisy_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
4.周期性噪声(Periodic Noise)
周期性噪声是一种在图像或信号中以特定频率和振幅重复出现的噪声。它通常以正弦或余弦波形的形式呈现,具有明显的周期性结构。周期性噪声可以在图像处理、信号处理和音频处理等领域中出现。
周期性噪声的出现情况和场景:
- 传感器干扰:在图像或信号采集过程中,传感器可能受到电磁干扰或其他环境因素的影响,导致信号中出现周期性噪声。
- 电力干扰:在拍摄或录制过程中,可能会受到电源设备的电磁干扰,导致图像中出现周期性的条纹或噪点。
- 光源干扰:在照明条件不稳定的环境下拍摄图像,可能会因为光源频率的波动而产生周期性噪声。
- 传输噪声:在图像或信号传输过程中,可能会受到传输介质或设备的干扰,导致信号中出现周期性变化。
- 设备缺陷:一些摄像头或录音设备可能存在硬件缺陷,会引入周期性噪声。
周期性噪声的存在会影响到图像质量或信号的准确性,因此在图像处理和信号处理中,常常需要采取相应的方法来减少或去除周期性噪声,以提高数据的可靠性和可用性。
周期性噪音展现为:
import numpy as np
import cv2def generate_periodic_noise(image_shape, frequency):x = np.arange(image_shape[1])y = np.arange(image_shape[0])xx, yy = np.meshgrid(x, y)noise = np.sin(2 * np.pi * frequency * xx / image_shape[1])return noise# 读取图片
image = cv2.imread('planck.jpg', cv2.IMREAD_COLOR)# 生成周期性噪声
frequency = 0.1 # 调整此参数以改变噪声频率
periodic_noise = generate_periodic_noise(image.shape[:2], frequency)# 将噪声映射到 0-255 范围内
periodic_noise = ((periodic_noise - periodic_noise.min()) / (periodic_noise.max() - periodic_noise.min()) * 255).astype('uint8')# 扩展维度以匹配图像的通道数
periodic_noise = np.stack((periodic_noise,) * 3, axis=-1)# 将噪声叠加到图像上
noisy_image = cv2.add(image, periodic_noise.astype(np.uint8))# 显示带噪声的图像
cv2.imshow('Noisy Image with Periodic Noise', noisy_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
5.瑞利噪声(Rayleigh Noise)
瑞利噪声(Rayleigh Noise)是一种在图像或信号处理中常见的随机噪声模型。它的概率密度函数(PDF)遵循瑞利分布。
瑞利噪声通常由以下情况引起:
- 通信系统中的干扰:在无线通信中,信号可能会受到多径传播、障碍物遮挡等因素的影响,从而导致接收到的信号出现瑞利噪声。
- 医学成像中的噪声:在医学成像如超声波成像等领域,瑞利噪声可以由于声波在人体组织中传播时的吸收和散射引起。
- 传感器噪声:某些传感器测量过程中的不确定性也可能呈现瑞利噪声的特征。
瑞利噪声的特点是其幅值的分布服从瑞利分布,而相位是均匀分布的。
瑞利噪音图片展示;
def generate_rayleigh_noise(image_shape, scale):noise = np.random.rayleigh(scale, image_shape)return noise# 生成瑞利噪声
scale = 50 # 调整此参数以改变噪声幅度
rayleigh_noise = generate_rayleigh_noise(image.shape[:2], scale).astype('uint8')
# 扩展维度以匹配图像的通道数
periodic_noise = np.stack((rayleigh_noise,) * 3, axis=-1)
# 将噪声叠加到图像上
noisy_image = cv2.add(image, periodic_noise)# 显示带噪声的图像
cv2.imshow('Noisy Image with Rayleigh Noise', noisy_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
6.爱尔兰(伽马)噪声
爱尔兰(伽马)噪声是一种噪声模型,通常用于描述在低光照条件下的传感器噪声,如图像传感器或其他感光设备。它的概率密度函数(PDF)遵循伽马分布。
具体来说,爱尔兰噪声的概率密度函数如下:
其中,k和θ 是分布的参数,Γ(k) 是伽马函数。
在图像处理领域,爱尔兰噪声通常由于低光照条件下的电子噪声或传感器特性而引起。它会导致图像中的一些像素变得异常亮或异常暗,从而降低了图像的质量。
在图像处理中,我们可以使用一些滤波技术或者采用其他后处理方法来减轻或去除爱尔兰噪声,以提升图像的质量和可用性。
伽马噪声展示:
# 生成伽马噪声
shape, scale = 10.0,10.0 # 设置伽马分布的参数
gamma_noise = np.random.gamma(shape, scale, image.shape).astype('uint8')# 将噪声叠加到图像上
noisy_image = cv2.add(image, gamma_noise)# 显示带噪声的图像
cv2.imshow('Noisy Image with Gamma Noise', noisy_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
图像数据噪音是在图像获取、传输或处理过程中引入的不希望的随机或人为干扰,它会影响图像质量和可用性。常见的图像噪音种类包括高斯噪音、椒盐噪音、泊松噪音、斑点噪音、周期性噪音等。
在Python中,我们可以利用NumPy和OpenCV等库来生成各种类型的噪音。例如,可以通过生成随机数并将其叠加到图像上来模拟高斯噪音,或者在图像中随机生成黑白像素来模拟椒盐噪音。对于泊松噪音和斑点噪音,可以使用相应的数学模型来生成。
处理图像噪音的方法包括均值滤波、中值滤波、高斯滤波等。这些方法可以根据不同类型的噪音选择合适的滤波器来去除干扰,从而提升图像质量。
下一章我将总结所有图像去噪方法以及代码实现。
点关注,防走丢,如有纰漏之处,请留言指教,非常感谢
以上就是本期全部内容。我是fanstuck ,有问题大家随时留言讨论 ,我们下期见。
图像数据噪音种类以及Python生成对应噪音相关推荐
- PC电脑实时接收树莓派摄像头图像数据并显示(Python实现)
目录 一.任务概述 二.环境安装 三.实现 3.1 上位机端(PC服务器端) 3.2 树莓派端(客户请求端) 四.运行效果 一.任务概述 最近在做一个树莓派自动驾驶小车,上位机使用windows10 ...
- python自动导出数据脚本_使用python生成一个导出数据库的bat脚本文件的示例代码...
这篇文章分享使用python生成一个导出数据库的bat脚本文件的示例代码 实例如下:# 环境: python3.x def getExportDbSql(db, index): # 获取导出一个数据库 ...
- python自动导出数据脚本_利用python生成一个导出数据库的bat脚本文件的方法
# 环境: python3.x def getExportDbSql(db, index): # 获取导出一个数据库实例的sql语句 sql = 'mysqldump -u%s -p%s -h%s - ...
- python生成可视化数据(matplotlib)
我们知道python做数据分析是一流的,把数据变为可视化内容,如果我们有一个表格,表格里面有很多数据,我们该如何把这些数据转换为可视化数据咧.首页,我们来看下如何来进行操作的吧. 首先,我们先看下我们 ...
- 独家 | 手把手教你怎样用Python生成漂亮且精辟的图像(附教程代码)
作者:Fabian Bosler 翻译:车前子 校对:吴振东 本文约4800字,建议阅读15分钟. 本文将介绍如何利用Python生成图像并将结果做出可视化分析. 在上周的文章<用python从 ...
- 图像数据增强方法一览(附python代码)
在图像分类任务中,图像数据增强一般是大多数人会采用的方法之一,这是由于深度学习对数据集的大小有一定的要求,若原始的数据集比较小,无法很好地满足网络模型的训练,从而影响模型的性能,而图像增强是对原始图像 ...
- python读取图像数据流_浅谈TensorFlow中读取图像数据的三种方式
本文面对三种常常遇到的情况,总结三种读取数据的方式,分别用于处理单张图片.大量图片,和TFRecorder读取方式.并且还补充了功能相近的tf函数. 1.处理单张图片 我们训练完模型之后,常常要用图片 ...
- halcon边缘提取颜色相近_初学者福利!三种用Python从图像数据中提取特征的技术...
全文共4073字,预计学习时长8分钟 你之前是否使用过图像数据?也许你想建立自己的物体检测模型,或者仅仅是想统计走进某栋建筑物的人数,使用计算机视觉技术处理图像拥有无穷无尽的可能性. 但数据科学家最近 ...
- 利用Python提取函数图像数据并拟合曲线
目录 1. 前言 2. 数据提取 2.1 图像预处理 2.2 提取数据 3. 曲线拟合 4. 优化代码 1. 前言 学校导师要求拟合曲线,但只有函数图像没有数据,图像和公式都不懂就负责把系数算出来. ...
- python 读取图片成为一维数组_在OpenCV里图像数据与一维数组转换
通过读取文件之后,生成的图像数据一般是二维或三维数组,每个数组元素是8位字节大小.有时候从网络里接收到一串数据,它是字节顺序的,比如有30000个字节,想要把它转换为300X100的图像大小,这个怎么 ...
最新文章
- CI框架css引入出现问题
- 自建html网页,幽灵自建的html5 的模板文件!
- python语言中文社区-python语言中文
- 【Android 逆向】应用数据目录 ( files 数据目录 | lib 应用自带 so 动态库目录 | databases sqlite3 数据库目录 | cache 缓存目录 )
- 关于Ajax的type为post提交方式出现请求失效问题
- java service实例,javaweb后端实例 service
- numpy 删除元素
- php gzip 关闭,php能否在当前脚本页关闭nginx的gzip输出
- Python使用matplotlib可视化模拟正弦余弦在子图显示
- 药一点进销存管理软件_gsp管理规范_财务管理软件
- 力扣题解:面试题 02.03. 删除中间节点
- 文科生python自学行吗_对于文科生,Python好学吗?
- 函数式程序设计为什么至关重要(转载)
- 阿里云虚拟主机wordpress伪静态设置Nginx设置
- qml加载高德在线地图
- 计算机科学与技术专业发展问题,解析计算机科学与技术专业发展存在的问题.doc...
- Java创建学生喂养动物类
- 深圳Java培训学习:SpringBoot的yml配置及多环境切换【千锋】
- 基于校园网的SSM高校财务预约报账J2EE报销系统javaweb
- 如何使用CAM350打开gerber文件