图像恢复介绍(持续更新)

news2024/10/5 19:19:24


前言

       噪声的产生是信号在采集、传输以及记录过程中,受到成像设备自身因素和外界环境的影响而产生的。现实中的噪声是随机分布的,事实上,噪声无法完全去除,只能使得重现信号尽可能的接近原始信号,因此,去噪严格意义上只能被称之为降噪。通过去噪可以有效地增大图像信号的信噪比,提高图像质量 ,更好地体现原始图像所携带的信息。

噪声的来源

        一幅图像在实际应用中可能存在着各种各样的噪声,噪声可能在传输中产生,也可能在量化等处理中产生。

      我们一般将噪声分为三类:加性噪声,乘性噪声和量化噪声。用f(x,y)表示给定图像,g(x,y)表示图像信号,n(x,y)表示噪声。

1.加性噪声,此类噪声与输入图像信号无关,含噪图像可表示为f(x, y)=g(x, y)+n(x, y),信道噪声及光导摄像管的摄像机扫描图像时产生的噪声就属这类噪声;

2.乘性噪声,此类噪声与图像信号有关,含噪图像可表示为f(x, y)=g(x, y)+n(x ,y)g(x, y),飞点扫描器扫描图像时的噪声,电视图像中的相干噪声,胶片中的颗粒噪声就属于此类噪声;

3.量化噪声,此类噪声与输入图像信号无关,是量化过程存在量化误差,再反映到接收端而产生。

 

常见噪声

高斯噪声泊松噪声
乘性噪声椒盐噪声

去噪模型

      高维数据去噪问题旨在从被噪声污染 ( 噪声位置未知 ) 的高维数据中复原出 真实的高质量数据。在去噪问题中,噪声的种类非常多,如高斯噪声、稀疏噪声、 泊松噪声以及未知分布类型的其他噪声。而主要考虑常见的高斯噪声、稀疏噪声以及它们的混合噪声,因此退化模型可以表示为

评价指标

MPSNR(峰值信噪比平均值,the mean of peak signal-to-noise rate)

  • PSNR>40dB 说明图像质量极好(即非常接近原始图像);
  • PSNR∈(30,40)dB通常表示图像质量是好的(即失真可以察觉但可以接受);
  • PSNR∈(20,30)dB说明图像质量差;
  • PSNR<20dB图像不可接受;

MSSIM(结构相似性平均值,the mean of structural similarity) 

 SSIM取值范围[-1,1],值越大,表示图像失真越小

SAM(光谱角映射角,the mean of spectral angle mapping)

      SAM把图像中的每个像元的光谱视为一个高维向量,通过计算两向量间的夹角来度量光谱间的相似性,夹角越小,两光谱越相似

 去噪方法

       根据降噪算法的类型,可以大致分为:空间域滤波、变换域阈值、随机场、统计模型、各向异性扩散方法、字典学习方法和混合方法,除此之外,其他主要的去噪方法包括空间自适应滤波器,各种统计估计器,随机分析,形态分析和有序统计。

空间域滤波

非局部滤波器

       NLM滤波器利用图像的相似特征去进行去噪,非局部滤波器可以理解利用参考块与选定块周围的两个patch之间的欧式距离。NLM算法是典型的点去噪方法,仅为单个点生成无噪声像素,参考像素邻域之间的相似性直接影响滤波器权值。NLM的性能太慢了,所以后续研究学者对其进行了加速设计。 

变换域滤波 

    包括傅里叶变换、快速傅里叶变换、离散余弦变换、小波变换等等。

     FT和DCT已广泛应用于图像去噪和减损压缩。虽然DCT的图像恢复过程更简单,但重建后的图像出现了块状人工现象,在保留图像的边缘特征和细节方面效果不好。与FT相关的主要缺点是它的基函数长,而多分辨率工具小波变换表现出稀疏性(非零系数的数量很少)。小波比傅里叶变换更受欢迎的主要原因是小波同时在空间和时间上提供局部定位,而傅里叶变换只在频率上进行局部定位。

      离散小波变换(Discrete Wavelet Transform)是将连续小波变换离散化而得到的一种数学工具,它构成一个平移和膨胀因子,从而以滑动窗口的方式将不同尺度的整个图像包含在内。小波变换的能量压缩特性,即图像中的大部分信息被编码在少数高值系数中,是小波变换得到广泛应用的主要原因之一。DWT使用了许多母小波,为信号分解提供了基函数。

      基于小波的去噪方法通常是将图像内容变换成不同分辨率、不同尺度的多个子带。较大的频率系数包含低频图像信息(近似级),高频子带存在噪声和细节。通过阈值处理可以去除较小系数的噪声,最后通过系数的空间逆变换恢复图像

张量分解方法

      高光谱影像同时拥有空间和光谱信息,其数据形式是一个三维立方体结构,因此可以采用张量分析的方法对高光谱影像进行有效地处理,这类方法的最大优势是能够较好地保持影像全局结构

t-SVD分解

       t-SVD分解将一个三阶张量分解成一个 f-对角张量和两个正交张量 U 和 V ,其具体数学表达式如下:

Tucker分解

       Tucker 分解将一个 N 阶张量 X 分解成一个 N 阶张量和 N 个矩阵,其具体数学表达式如下

 CP分解

CP分解就是将一个张量分解成多个单秩张量的和。例如,给定一个三阶张量X可以分解为 

 TT分解

       TT 分解在物理学中可以看作是开边界条件下的矩阵乘积态 (matrix product state, MPS) 分解TT 分解将一个 N 阶张量分解成两个矩阵以及 N 2 个三阶张量 。同时建立了每一个因子与它的下一个因子之间的多线性运算。TT分解的具体数学表达式如下:

TR分解

      TR 分解 将一个 N 阶张量 分解成 N 个三阶张量。换言之, TR 分解用两个三阶张量 替换了 TT 分解中位于两端的两个因子矩阵 ,并建立了这两个因子之间的多线性运算。 TR 分解的具体数学表达式如下:

 低秩矩阵恢复方法

      低秩矩阵恢复广泛用于图像处理用途图像恢复,比如去噪、去模糊等。一幅清晰的自然图像其数据矩阵往往是低秩或者近似低秩的,但存在随机幅值任意大但是分布稀疏的误差破坏了原有数据的低秩性。低秩矩阵恢复是将退化图像看做一组低维数据加上噪声形成的,因此退化前的数据就可以通过低秩矩阵来逼近

      低秩矩阵恢复首先将高光谱图像划分为全波段的 3D 图像块,然后将每一个 3D 图像块沿着光谱方向展开成矩阵形式,最后通过促进展开矩阵的低秩性来去除混合噪声

子空间先验方法

    HSI具有低秩特性,子空间方法是一种降维技术,可以充分考虑空间-光谱相关性,核心思想是通过子空间分解来表示 数据,通过将高光谱数据映射到更低维度的子空间,减少冗余信息,提取重要特征,并加快恢复算法的速度

模型方法 

采用光谱 - 空间自适应总变差模型的高光谱图像去噪(SSAHTV)

       SSAHTV去噪算法既考虑了不同波段间噪声强度的差异,自动调整各波段的去噪强度,又考虑了不同像素点之间的空间特性差异。根据空间结构分布,在同一波段内不同像素位置调整去噪强度。

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

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

相关文章

JavaSpringbootmysql农产品销售管理系统47627-计算机毕业设计项目选题推荐(附源码)

摘 要 随着互联网趋势的到来&#xff0c;各行各业都在考虑利用互联网将自己推广出去&#xff0c;最好方式就是建立自己的互联网系统&#xff0c;并对其进行维护和管理。在现实运用中&#xff0c;应用软件的工作规则和开发步骤&#xff0c;采用Java技术建设农产品销售管理系统。…

Matplotlib | 高阶绘图案例【4】- 2023年编程语言榜单Python稳坐第一

文章目录 &#x1f3f3;️‍&#x1f308; 1. 导入模块&#x1f3f3;️‍&#x1f308; 2. 数据处理2.1 高效数据2.2 保留需要的列 &#x1f3f3;️‍&#x1f308; 3. 绘图3.1 绘制图布&#xff0c;添加3个子图3.2 绘制子图1条形图3.3 子图1条形图添加数据标签3.4 绘制子图2条…

toluaframework中C#怎么调用Lua的方法以及无GC方法

toluaframework中C#怎么调用Lua的方法 问题Util.CallMethodLuaManager.CallFunctionLuaFunction.LazyCall 解决方案LuaFunction脚本无GC消耗的调用 用法总结 问题 用过luaframework框架的人应该都知道框架提供了Util的工具类&#xff0c;工具类提供了一个方法就是Util.CallMet…

口袋参谋:30秒导出淘宝同行的全部数据,是如何做到的?

作为一名淘宝天猫的商家&#xff0c;想要了解产品当下的市场行情数据。 则可以通过&#xff0c;【同类目数据导出】功能&#xff1a; 一键获取相同类目下&#xff0c;所有店铺市场推广数据。 ​【同类目数据导出】功能使用 1、安装插件 2、登录千牛后台→数据→生意参谋→市…

C# 海康威视平台API接入 和网页摄像头部署

文章目录 前言相关网址综合安防管理平台网址获取Appkey和Secret/密码和密钥测试个人魔改工具类 海康视频接入获取摄像头Id下载海康Web插件原生Html导入网页设置 JS封装封装代码使用设置成功&#xff01; 前言 最近有个需求是将海康的摄像头视频画面传到我们平台上&#xff0c;…

C++简单的栈模型示例

前言 最近在学习C&#xff0c;由于该语言是手动管理内存&#xff0c;所以要对内存池、栈、数组等相关模型要多多了解&#xff0c;下面是一个简单的栈模型。 // dome.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #define _CRT_SECURE_NO_WARNIN…

【踩坑记】js用a.push(...b)进行数组组合报栈溢出

建议&#xff1a;进行数组合并时&#xff0c;若不确定数组最终长度或者数组长度超过下述表中数据&#xff0c;建议使用 concat 最近踩了个坑&#xff0c;在进行数组合并时出现了栈溢出的报错。 示例代码&#xff1a; const arr [] for (let i 0; i < 500000; i) {arr.pu…

iOS自动混淆测试处理笔记

1 打开 ipa&#xff0c;导出ipa 路径和配置文件路径会自动填充 2 点击 开始自动混淆测试处理 自动混淆测试是针对 oc 类和oc方法这两个模块进行自动混淆ipa&#xff0c;并ipa安装到设备中运行&#xff0c;通过检测运行ipa包是否崩溃&#xff0c;来对oc类和oc方法进行筛选。如果…

COSCon'23 真·黑客马拉松准备出发!

众多开源爱好者翘首期盼的开源盛会&#xff1a;第八届中国开源年会&#xff08;COSCon23&#xff09;将于 10月28-29日在四川成都市高新区菁蓉汇举办。本次大会的主题是&#xff1a;“开源&#xff1a;川流不息、山海相映”&#xff01;各位新老朋友们&#xff0c;欢迎到成都&a…

【java学习—九】模板方法(TemplateMethod)设计模式(4)

文章目录 1. 在java中什么是模板2. 模板方法设计解决了什么问题&#xff1f;3. 代码化理解 1. 在java中什么是模板 抽象类体现的就是一种模板模式的设计&#xff0c;抽象类作为多个子类的通用模板&#xff0c;子类在抽象类的基础上进行扩展、改造&#xff0c;但子类总体上会保留…

windows安装最新pip官方教程

在执行pip的pip install --upgrade pip更新时&#xff0c;出现如下错误&#xff0c;怎么也无法重新安装&#xff1a; 根据官网的安装教程来 命令的方式一&#xff1a; • 卸载PIP的命令&#xff1a;python -m pip uninstall pip • 重装PIP的命令&#xff1a;python -m ensure…

语雀P0级故障复盘,有9个字亮了

大家好&#xff0c;我是洋子 最近语雀不是出了个号称 “载入史册” 的 P0 级事故嘛 —— 连续宕机接近8个小时无法使用&#xff0c;作为一个大厂知名产品&#xff0c;这个修复速度属实让人无法理解 故障公告原文&#xff1a;https://mp.weixin.qq.com/s/WFLLU8R4bmiqv6OGa-QMc…

【算法设计】贪心算法设计——均分纸牌、线段覆盖问题(C++实现)

创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡>𖥦<)!! 主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步! 更多算法分析与设计知识专栏:算法分析🔥 给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ 目录…

私藏小技巧:让微信朋友圈营销方便化的小窍门!

微信&#xff0c;这个拥有十亿用户的社交软件&#xff0c;已经成为生活中不可或缺的一部分。 而朋友圈&#xff0c;这个微信的基础功能&#xff0c;是聚宝盆&#xff0c;也是一切流量的尽头。 现在公域&#xff0b;私域的流量增长变现体系很火。朋友圈是一切公域流量的尽头&a…

智能硬件适配测试

泽众云测试的智能硬件适配测试&#xff0c;帮助客户解决测试能力和资源问题&#xff0c;提升产品质量、规避产品风险、增加产品竞争力。智能硬件测试通过蓝牙、网络和音频接口等连接方式与手机终端连接&#xff0c;通过兼容性、功能性、连接稳定性、数据同步性测试场景&#xf…

QWEN technical report

通义千问-Qwen技术报告细节分享 - 知乎写在前面大家好&#xff0c;我是刘聪NLP。 阿里在很早前就开源了Qwen-7B模型&#xff0c;但不知道为什么又下架了。就在昨天阿里又开源了Qwen-14B模型&#xff08;原来的7B模型也放出来了&#xff09;&#xff0c;同时还放出了Qwen的技术报…

[CMakeLists]cmake设置堆栈保留大小

MATH(EXPR stack_size "100*1024*1024") set(CMAKE_EXE_LINKER_FLAGS "-Wl,--stack,${stack_size}") 其中100*1024*1024是100MB的大小。 如果是在VS里面写代码则可以按照下图设置&#xff1a;

问题:anaconda的bin和envs目录莫名奇妙消失!

这个命令不是我输入的&#xff0c;在此之后&#xff0c;anaconda的bin目录就找不到了&#xff0c;conda也无法使用&#xff0c;上面命令中的文件也并没有。很奇怪。 为什么为什么为什么&#xff0c;真奇怪。

跨境出口亚马逊美国和加拿大市场水基灭火器UL测试报告审核解析

水基灭火器&#xff08;Foam extinguisher&#xff09;&#xff0c;为绿色外观的灭火器&#xff0c;其灭火器机理为物理性灭火器原理&#xff0c;其主要成分包括碳氢表面活性剂、氟碳表面活性剂、阻燃剂和助剂等。水基灭火器出口需办理UL测试报告。 消防及其他安全用品 本政策…

UE4/UE5 设置widget中text的字体Outline

想要在蓝图中控制Widget 中的 text字体&#xff0c;对字体outline参数进行设置。 但是蓝图中无法直接获取设置outline参数的方法&#xff1a; 没有outline相关的蓝图函数 该参数本身是在Font类别下的扩展&#xff0c;所以只要获取设置Font参数即可进行outline的设置 text连出…