Python——通过统计图像像素值初步分析图像噪声类型

图像噪声是指图像中不随真实场景变化而变化的随机干扰。噪声会影响图像的质量,因此需要对其进行去噪处理。

目录

  • 一、图像噪声
    • 1.1 噪声类型
    • 1.2 结合峰度和偏度判断噪声
      • 1.2.1 峰度和偏度
      • 1.2.2 常见噪声的峰度和偏度
  • 二、代码
  • 三、测试结果
  • 四、总结

一、图像噪声

图像的像素值统计是指对图像中所有像素值进行统计分析,包括均值、方差、峰度、偏度等。这些统计量可以反映图像的整体特征,也能够用来判断噪声的类型。

1.1 噪声类型

根据均值和方差的不同组合,可以将噪声分为以下几种类型:

均值为零、方差为常数的噪声,称为高斯噪声。高斯噪声是一种常见的噪声类型,其特征是噪声分布符合高斯分布。

均值为零、方差随空间位置变化的噪声,称为高斯白噪声。高斯白噪声是高斯噪声的一种特殊形式,其特征是噪声在空间上是均匀分布的。

均值不为零、方差为常数的噪声,称为均值偏移高斯噪声。均值偏移高斯噪声的特征是噪声在均值上有一个固定的偏差。

均值不为零、方差随空间位置变化的噪声,称为均值偏移高斯白噪声。均值偏移高斯白噪声是均值偏移高斯噪声的一种特殊形式,其特征是噪声在空间上是均匀分布的。

通过计算图像的均值和方差,可以初步判断噪声的类型。例如,如果图像的均值为零、方差为常数,则该图像可能受到高斯噪声的污染。

1.2 结合峰度和偏度判断噪声

仅仅根据均值和方差还不能完全确定噪声的类型,还需要结合其他特征进行判断。例如,可以通过计算噪声的峰度和偏度来进一步判断噪声的类型。

以下是一些常用的图像噪声类型判断方法:

均值和方差:如果均值为零、方差为常数,则可能是高斯噪声;如果均值为零、方差随空间位置变化,则可能是高斯白噪声;如果均值不为零、方差为常数,则可能是均值偏移高斯噪声;如果均值不为零、方差随空间位置变化,则可能是均值偏移高斯白噪声。

峰度和偏度:如果峰度和偏度均接近于零,则可能是高斯噪声;如果峰度和偏度均不为零,则可能是其他噪声类型。

直方图:如果直方图呈现出高斯分布,则可能是高斯噪声;如果直方图呈现出其他分布,则可能是其他噪声类型。

1.2.1 峰度和偏度

噪声的峰度和偏度是噪声的两个重要特征,可以用来描述噪声的分布形状。

峰度(Kurtosis)是指噪声分布尾部的形状。峰度越大,噪声分布尾部越厚,越容易出现极端值。

偏度(Skewness)是指噪声分布对称性的度量。偏度越大,噪声分布越不对称,越容易出现偏离均值的值。

噪声的峰度和偏度可以通过以下公式计算:
在这里插入图片描述
其中xi表示噪声的每个值,μ 表示噪声的均值,σ 表示噪声的标准差。

噪声的峰度和偏度可以通过直方图来直观地观察。如果直方图呈现出高斯分布,则噪声的峰度和偏度均接近于零。如果直方图呈现出其他分布,则噪声的峰度和偏度可能不为零。

1.2.2 常见噪声的峰度和偏度

高斯噪声:峰度接近于 3,偏度接近于 0。

均值偏移高斯噪声:峰度接近于 3,偏度接近于均值偏移量。

拉普拉斯噪声:峰度为 3.69,偏度为 1.58。

指数噪声:峰度为 0,偏度为 0。

二、代码

使用代码,只需要修改导入图片路径即可,具体代码如下:

import numpy as np
import matplotlib.pyplot as plt
import cv2def noise_type(img):"""判断图像的噪声类型Args:img: 图像Returns:噪声类型"""# 计算图像的均值和方差img_mean = np.mean(img)img_var = np.var(img)print("图像均值为:",img_mean)print("图像方差为:",img_var)# 计算图像的峰度和偏度img_kurtosis = np.mean((img - img_mean)**4) / (img_var**2)img_skewness = np.mean((img - img_mean)**3) / (img_var**1.5)print("图像的峰度为",img_kurtosis)print("图像的偏度为", img_skewness)# 判断噪声类型if img_mean == 0 and img_var == img_var.max():return "高斯白噪声"elif img_mean != 0 and img_var == img_var.max():return "均值偏移高斯白噪声"elif img_kurtosis == 3 and img_skewness == 0:return "高斯噪声"elif img_kurtosis == 3.69 and img_skewness == 1.58:return "拉普拉斯噪声"elif img_kurtosis == 0 and img_skewness == 0:return "指数噪声"else:return "其他噪声"def plot_hist(img):"""绘制图像直方图Args:img: 图像"""plt.hist(img, bins=256)plt.show()if __name__ == "__main__":# 读取图像img = cv2.imread("Images/input-resize_480360/1.bmp",0)# 判断噪声类型noise_type = noise_type(img)print("噪声类型:", noise_type)# 绘制直方图plot_hist(img)

三、测试结果

运行上面代码后得到的结果如下,运行代码后需要等待一会。

在这里插入图片描述

下面是图像的直方图
在这里插入图片描述

四、总结

以上就是使用Python,通过统计图像像素值初步分析图像噪声类型。

注意,博文中的方法只是初步大致估计,并不能准确确定噪声类型,具体噪声类型还要根据实际情况判断。

总结不易,多多支持,谢谢!

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CloudCompare——拟合空间球

目录 1.拟合球2.软件操作3.算法源码4.相关代码 本文由CSDN点云侠原创,CloudCompare——拟合空间球,爬虫自重。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT生成的文章。 1.拟合球 源码里用到了四点定球,…

数学建模-Matlab R2022a安装步骤

软件介绍 MATLAB是一款商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分,可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程…

给自己创建的GPTs添加Action(查天气)

前言 在这篇文章中,我将分享如何利用ChatGPT 4.0辅助论文写作的技巧,并根据网上的资料和最新的研究补充更多好用的咒语技巧。 GPT4的官方售价是每月20美元,很多人并不是天天用GPT,只是偶尔用一下。 如果调用官方的GPT4接口&…

设备树在开发板的系统中的体现

一. 简介 设备树文件中的设备节点,可以在开发板系统中看到。 也就说,开发板加载设备树文件,Linux内核启动系统以后,可以在根文件系统里看到设备树的节点信息。在/proc/device-tree/目录下存放着设备树信息。 二. 设备树在开发板…

CDN加速之HTTPS配置

记录一下HTTPS配置的免费证书配置 2张图搞定 最后补充说明: 由于CDN采用的Tengine服务基于Nginx,因此开启HTTPS安全加速功能的加速域名,只支持上传Nginx能读取的PEM格式的证书。如果证书不是PEM格式,需转换成PEM格式。转换方法&a…

python 队列

队列常用方法 Python中的队列是一种数据结构,遵循先进先出(FIFO)的原则。在Python中,你可以使用内置模块queue提供的Queue类来实现队列数据结构。队列是一种常见的数据结构,用于按照特定顺序处理数据项,例…

上市公司-是否数字化转型数据集(2000-2022年)

参照《经济评论》中张欣(2023)、《中国工业经济》中巫强(2023)的做法,团队对上市公司-是否数字化转型进行测算。若年报中出现数字化转型的关键词,则视企业的是否数字化转型赋值为1,否则为0。使用…

哈希表-散列表数据结构

1、什么是哈希表? 哈希表也叫散列表,哈希表是根据关键码值(key value)来直接访问的一种数据结构,也就是将关键码值(key value)通过一种映射关系映射到表中的一个位置来加快查找的速度,这种映射关系称之为哈希函数或者散列函数&…

BOM简介

1.1 常用的键盘事件 1.1.1 键盘事件 键盘事件触发条件onkeydown按键被按下时触发onkeypress按键被按下时触发onkeyup按键被松开时触发 注意&#xff1a;addEventListener事件不需要加on <script>//1. keydown 按键按下的时候触发,按任意键都触发&#xff0c;也可以识…

【已解决】c语言编写的lib如何调用

本博文源于笔者在vs2015正在编写的lib想要调用的问题&#xff0c;正常的操作是将项目生成lib&#xff0c;但是然后又如何操作呢&#xff0c;本博文就是解决这样的问题 文章目录 问题再现步骤1&#xff1a;编写lib.h与lib.c步骤2&#xff1a;生成lib步骤3&#xff1a;添加用得到…

Vue-11、Vue计算属性

Vue计算属性是Vue实例的属性&#xff0c;用来根据已有的数据进行计算得到新的数据。计算属性的值会根据它的依赖缓存起来&#xff0c;在依赖没有发生改变时直接返回缓存的值&#xff0c;提高了性能。 计算属性的定义方式为在Vue实例中使用computed关键字&#xff0c;并将计算属…

Clion断点无效(LLDB调试器)

使用Clion时&#xff0c;配置的编译器是Visual Studio&#xff0c;当中的Debugger只有选择LLDB。 项目是CMAKE类型&#xff0c;这里启动调试会发现断点无法命中。 先检查项目的CMakeLists.txt&#xff0c;发现如下配置会影响&#xff1a; set(CMAKE_BUILD_TYPE Debug) set(CM…