压缩感知(Compressed sensing)from wiki

2023-11-06

压缩感知(Compressed sensing),也被称为压缩采样(Compressive sampling)或稀疏采样(Sparse sampling),是一种寻找欠定线性系统的稀疏解的技术。压缩感知被应用于电子工程尤其是信号处理中,用于获取和重构稀疏或可压缩的信号。這個方法用到訊號稀疏的特性,得以從相對較少的測量值還原出原來整個欲得知的訊號。MRI就是一個可能使用此方法的應用。这一方法至少已经存在了四十年,由于David DonohoEmmanuel Candès陶哲轩的工作,最近这个领域有了长足的发展。

概览

信号处理领域中的一个常见问题就是从一系列的采样中重建原本的信号。大致而言,由于不可能重建出未被采样的部分信号,这一任务是无法完全实现的。然而通过借助对于信号(性质)的预先了解或合理假设,完美地通过一系列采样重建原信号就成为了可能。随着科学的发展,数学家们逐步增进了如何作出合理假设的能力,并慢慢了解到在何种情况下可将这些假设一般化、推广化。

信号处理领域中的一次较早的突破是采样定理的提出。这一定理证明了若信号的最高频率小于采样频率的一半,便可完美地从采样结果中恢复原本信号。

在2004年左右,Emmanuel Candès陶哲轩David Donoho证明了在已知信号稀疏性的情况下,可能凭借较采样定理所规定更少的采样数重建原信号。这一理论也是压缩感知的基石。

取样方法

在理论上,为了确保信号重建的准确度,需要令所采用的取样矩阵各行列之间相干性([[:en:Coherence_(signal_processing)}]])尽量地低,且须矩阵元素(element)取值随机性尽量地高。

考虑到以上原因,最为标准的做法是采用相同独立分布随机高斯矩阵(identical independent distributed random Gaussian matrix)对待处理信号进行取样,即可确保在信号具有足够稀疏性的前提下得到较佳的压缩感知重建效果。

但是在采用相同独立分布随机高斯矩阵时,所需要的数据存储量过于庞大——每个矩阵元素都要单独记录,且数据类型一般为浮点数——这就促进了简化取样矩阵的研究;目前被提出的简化取样矩阵主要包括两种:结构简化采样矩阵与数值简化采样矩阵。

结构简化采样矩阵

一种基本的结构简化采样矩阵是Toeplitz矩阵

A =\begin{bmatrix}  a_{0} & a_{-1} & a_{-2} & \ldots & \ldots  &a_{-n+1}  \\  a_{1} & a_0  & a_{-1} &  \ddots   &  &  \vdots \\  a_{2}    & a_{1} & \ddots  & \ddots & \ddots& \vdots \\  \vdots &  \ddots & \ddots &   \ddots  & a_{-1} & a_{-2}\\ \vdots &         & \ddots & a_{1} & a_{0}&  a_{-1} \\a_{n-1} &  \ldots & \ldots & a_{2} & a_{1} & a_{0}\end{bmatrix}

其中A_{i,j} = A_{i+1,j+1} = a_{i-j}.\

在采用Toeplitz矩阵进行压缩感知取样时,便可以只在系统内存中储存第一行与第一列的矩阵元素,大大降低了储存成本,为算法的硬件实现降低了门槛。

数值简化采样矩阵

数值简化采样矩阵普遍将原有的、按照高斯分布随机取值的采样矩阵元素以数值上更为简单的元素取代,但在分布上维持矩阵元素的分布随机性——即缩减了储存浮点数这一方面的成本。

一种较为基本的数值简化采样矩阵是0-1伯努利矩阵,其中的元素仅有0和1两种,分布模式为相同独立的伯努利分布(identical independent Bernoulli distribution)。

对于每一个矩阵元素,该分布的概率质量函数f为:  f(k;p) = \begin{cases} p & \text{if }k=1, \\[6pt]1-p & \text {if }k=0.\end{cases}

欠定线性系统

如果一个线性方程组未知数的数目超过方程的数目,这个方程组被称为欠定,并且一般而言有无数个解。但是,如果这个欠定系统只有唯一一个稀疏解,那么我们可以利用压缩感知理论和方法来寻找这个解。值得注意的是,不是所有欠定线性方程组都有稀疏解。

求解/重构方法

压缩感知利用了很多信号中所存在的冗余(换言之,这些信号并非完全是噪声)。具体而言,很多信号都是“稀疏”的;在适当的表示域中,它们的很多系数都是等于或约等于零。

在信号获取阶段,压缩感知在信号并不稀疏的域对信号进行线性测量。

为了从线性测量中重构出原来的信号,压缩感知求解一个称为L1-范数正则化的最小二乘问题。从理论上可以证明,在某些条件下,这个正则化最小二乘问题的解正是原欠定线性系统的稀疏解。

基追踪

基追踪(basis pursuit[1])是一种信号重建演算法,被广泛地用于压缩感知领域,属于数学最优化问题的范畴,形式为 \min_x \|x\|_1 \quad \mbox{subject to} \quad y = Ax。,

其中xN×1尺寸向量,表示输出(信号),yM×1的测量向量,AM × N的“转换矩阵”或曰“测量矩阵”;其中M < N

基追踪常在需要完美满足欠定线性方程组系统中y = Ax时被应用,且要求解在L1基准下为最稀疏的。

若应用情景允许降低对完美恢复的要求,以换取更加稀疏的解x降噪基追踪(basis pursuit denoising[2])更为适用。

匹配追踪

匹配追踪(Matching pursuit[3])是一种稀疏近似运算,旨在找到多维数据在某个超完备字典(dictionary)D上映射的“最佳匹配”。其基本的概念就是要用来自D的函数组g_{\gamma_n}(称为基元,或atom)的加权和来表示希尔伯特空间H上的信号f

 f(t) = \sum_{n=0}^{+\infty} a_n g_{\gamma_n}(t)

其中n表示被选取基元的序数,a_n是每个基元的加权常数。对于固定的字典,匹配追踪会先找到与信号间内积最大的一个基元,再减去该基元带来的影响,然后重复找寻影响力次大的基元直到信号被较好地分解。

相较而言,以傅里叶级数表示的信号来说,字典是构建于正弦基函数之上的。信号处理领域中傅里叶分析的主要缺点就在于它只能提取出信号中常存的特征,而不能适应当前的分析目标信号f

若采用一组极端保险、带有大量冗余的字典,我们就能够找到可以完美匹配信号的f函数组。在对信号进行编码与压缩时,最好是能够找到一组映射,使加权和中的大部分系数都接近零(具有“稀疏性”)。

应用

压缩感知与包括欠定系统群验稀疏编码复用稀疏采样等。在成像科技领域,亦有许多技术如(编码孔计算摄影学)与压缩感知相关。亦有许多在不同技术完成度下将压缩感知实现的案例。

摄影学

压缩感知技术被用于手机摄像头传感器设计中。这一技术使得在获取图像时所耗费的能量大大降低,可达原先耗费的15分之一——当然,需要引入复杂的解压算法;这一运算可能会需要脱机状态下的预先安装、设置。

压缩感知亦被用于实现单像素摄影。贝尔实验室运用了这一技术,用无镜片单像素相机在栅格中随机选取的孔隙处拍照,以达到成像效果。随着拍照次数的逐渐增多,照片质量也会逐步提高;一般来说,这种技术较之传统的摄影成像技术仅仅需要一小部分的数据占用量,且能完全避免与镜片或聚焦相关的故障或失常;参见[4]

全息成像

压缩感知可被用于增加通过单幅全息图中所能得到的立体像素的数量改进全息摄影技术中的图像重建问题。在光学全息图或毫米波全息图采样率不足的情况下,这一技术也能够被用于图像检索以作出改善。

面部识别

压缩感知目前被用于面部识别应用之中,参加Engineers Test Highly Accurate Face Recognition

核磁共振成像

压缩感知被用于缩短核磁共振成像中的扫描时间,参加[5][6][7];其中涉及的重建方法包括ISTA、FISTA、SISTA等。

网络诊断

压缩感知在被用于旨在利于网络管理网络诊断应用中时带来了极佳成效。对网络延时的估计和网络拥塞的探知均可被归纳、建模为非定性的线性方程组系统,其中的参数矩阵正是所分析网络的路由选择矩阵。此外,在互联网情景中,网络路由矩阵常常能够满足压缩感知技术所要求的几个基本要素:低相关性、稀疏性及(可能的)R.I.P条件,请参见[8]

短红外摄影

目前,基于压缩感知技术的商用短红外相机已被推出[9] 。这些相机的光敏度大约从0.9µm到1.7µm,在上述波段上,人类的肉眼是无效的。

參考資料

  • Candès, E.J., & Wakin, M.B., An Introduction To Compressive Sampling, IEEE Signal Processing Magazine, V.21, March 2008

外部链接

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

压缩感知(Compressed sensing)from wiki 的相关文章

  • 如何检查图像对象与资源中的图像对象是否相同?

    所以我试图创建一个简单的程序 只需在单击图片框中更改图片即可 我目前只使用两张图片 所以我的图片框单击事件函数的代码 看起来像这样 private void pictureBox1 Click object sender EventArgs
  • 如何使 Windows 窗体的关闭按钮不关闭窗体但使其不可见?

    该表单有一个 NotifyIcon 对象 当用户单击 关闭 按钮时 我希望表单不关闭而是变得不可见 然后 如果用户想再次查看该表单 可以双击系统托盘中的图标 如果用户想关闭表单 可以右键单击该图标并选择 关闭 有人可以告诉我如何使关闭按钮不
  • ASP.NET Core Serilog 未将属性推送到其自定义列

    我有这个设置appsettings json对于我的 Serilog 安装 Serilog MinimumLevel Information Enrich LogUserName Override Microsoft Critical Wr
  • 获取按下的按钮的返回值

    我有一个在特定事件中弹出的表单 它从数组中提取按钮并将标签值设置为特定值 因此 如果您要按下或单击此按钮 该函数应返回标签值 我怎样才能做到这一点 我如何知道点击了哪个按钮 此时代码返回 DialogResult 但我想从函数返回 Tag
  • 将数组向左或向右旋转一定数量的位置,复杂度为 o(n)

    我想编写一个程序 根据用户的输入 正 gt 负 include
  • 从父类调用子类方法

    a doStuff 方法是否可以在不编辑 A 类的情况下打印 B did stuff 如果是这样 我该怎么做 class Program static void Main string args A a new A B b new B a
  • 实时服务器上的 woff 字体 MIME 类型错误

    我有一个 asp net MVC 4 网站 我在其中使用 woff 字体 在 VS IIS 上运行时一切正常 然而 当我将 pate 上传到 1and1 托管 实时服务器 时 我得到以下信息 网络错误 404 未找到 http www co
  • 将目录压缩为单个文件的方法有哪些

    不知道怎么问 所以我会解释一下情况 我需要存储一些压缩文件 最初的想法是创建一个文件夹并存储所需数量的压缩文件 并创建一个文件来保存有关每个压缩文件的数据 但是 我不被允许创建许多文件 只能有一个 我决定创建一个压缩文件 其中包含有关进一步
  • Cython 和类的构造函数

    我对 Cython 使用默认构造函数有疑问 我的 C 类 Node 如下 Node h class Node public Node std cerr lt lt calling no arg constructor lt lt std e
  • 从路径中获取文件夹名称

    我有一些路c server folderName1 another name something another folder 我如何从那里提取最后一个文件夹名称 我尝试了几件事 但没有成功 我只是不想寻找最后的 然后就去休息了 Thank
  • 如何衡量两个字符串之间的相似度? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 给定两个字符串text1 and text2 public SOMEUSABLERETURNTYPE Compare string t
  • for循环中计数器变量的范围是多少?

    我在 Visual Studio 2008 中收到以下错误 Error 1 A local variable named i cannot be declared in this scope because it would give a
  • 当操作繁忙时,表单不执行任何操作(冻结)

    我有一个使用 C 的 WinForms 应用程序 我尝试从文件中读取一些数据并将其插入数据表中 当此操作很忙时 我的表单冻结并且无法移动它 有谁知道我该如何解决这个问题 这可能是因为您在 UI 线程上执行了操作 将文件和数据库操作移至另一个
  • 将 unsigned char * (uint8_t *) 转换为 const char *

    我有一个带有 uint8 t 参数的函数 uint8 t ihex decode uint8 t in size t len uint8 t out uint8 t i hn ln for i 0 i lt len i 2 hn in i
  • 实体框架 4 DB 优先依赖注入?

    我更喜欢创建自己的数据库 设置索引 唯一约束等 使用 edmx 实体框架设计器 从数据库生成域模型是轻而易举的事 现在我有兴趣使用依赖注入来设置一些存储库 我查看了 StackOverflow 上的一些文章和帖子 似乎重点关注代码优先方法
  • 如何让Gtk+窗口背景透明?

    我想让 Gtk 窗口的背景透明 以便只有窗口中的小部件可见 我找到了一些教程 http mikehearn wordpress com 2006 03 26 gtk windows with alpha channels https web
  • WCF:将随机数添加到 UsernameToken

    我正在尝试连接到用 Java 编写的 Web 服务 但有些东西我无法弄清楚 使用 WCF 和 customBinding 几乎一切似乎都很好 除了 SOAP 消息的一部分 因为它缺少 Nonce 和 Created 部分节点 显然我错过了一
  • 为什么 C# Math.Ceiling 向下舍入?

    我今天过得很艰难 但有些事情不太对劲 在我的 C 代码中 我有这样的内容 Math Ceiling decimal this TotalRecordCount this PageSize Where int TotalRecordCount
  • 如何在 C++ BOOST 中像图形一样加载 TIFF 图像

    我想要加载一个 tiff 图像 带有带有浮点值的像素的 GEOTIFF 例如 boost C 中的图形 我是 C 的新手 我的目标是使用从源 A 到目标 B 的双向 Dijkstra 来获得更高的性能 Boost GIL load tiif
  • 限制C#中的并行线程数

    我正在编写一个 C 程序来生成并通过 FTP 上传 50 万个文件 我想并行处理4个文件 因为机器有4个核心 文件生成需要更长的时间 是否可以将以下 Powershell 示例转换为 C 或者是否有更好的框架 例如 C 中的 Actor 框

随机推荐

  • 网络工程师常用的命令整理-windows版,还不快收藏起来

    一 ping命令 1 ping ping是最常用的实用程序之一 用来确定网络的连通性 ping是个使用频率极高的实用程序 主要用于确定网络的连通性pi 如果ping通一个地址 那么基本可以排除物理层数据链路层的故障等 ping 的命令格式通
  • 使用联机搜索求解Wumpus World

    使用 JavaScript 重写的算法网页 https yuqingxiong github io Wumpus World Problem github仓库地址 https github com YuqingXiong Wumpus Wo
  • CUDA 分块矩阵乘法

    cpp文件 include stdafx h include
  • mips使用buildroot,交叉静态编译file程序出现ld: cannot find -lz错误解决过程

    最近用unbutu X64 版本16 04 使用buildroot 版本2020 2 交叉编译一个mips的目标机 因为目标机没有支持库所以很多程序使用静态编译 这次的主角是file这个程序 运行该程序能知道各类文件的类型及追踪需要的支持库
  • Verilog实现异步FIFO(重难点)

    FIFO总概 图来自文章Simulation and Synthesis Techniques for Asynchronous FIFO Design 一个异步FIFO一共由五个基本模块组成 分别是 RAM存储器模块 FIFO写地址以及写
  • 分享一个基于springboot+vue的职业生涯规划系统源码

    作者 计算机源码社 个人简介 本人七年开发经验 擅长Java Python PHP NET 微信小程序 爬虫 大数据等 大家有这一块的问题可以一起交流 学习资料 程序开发 技术解答 文档报告 JavaWeb项目 微信小程序项目 Python
  • tp摄像头的默认地址_TP-Link路由器默认管理员密码是什么 路由器默认管理员密码介绍【详解】...

    TP Link路由器默认管理员密码是多少 最近有网友咨询了小编这样的问题 其实关于TP Link路由器的默认管理员密码是要根据路由器的型号而介绍的 因为有些型号的TP Link路由器是有默认管理员用户名和密码的 而有些型号是没有的 这对这个
  • Flutter 容器(5) - SizedBoxSizedBox

    SizedBox 两种用法 一是可用来设置两个widget之间的间距 二是可以用来限制子组件的大小 import package flutter material dart class AuthList extends StatelessW
  • squid 用户通过NCSA认证

    Squid的用户认证设置 默认时 Squid本身不带任何认证程序 但是可以通过外部认证程序来实现用户认证 一般有以下的认证程序 LDAP认证 SMB认证 基于mysql的认证 基于sock5的密码认证和基于Radius的认证 下面介绍常用的
  • STM32设置为I2C从机

    硬件平台 STM32F401 编辑器 keil 5 18 操作系统 win7 一 I2C协议 在传输数据的时候 SDA线必须在时钟的高电平周期保持稳定 SDA的高或低电平状态只有在SCL 线的时钟信号是低电平时才能改变 起始和停止条件 SC
  • JavaScript的三大组成

    文章目录 一 JavaScript三大组成 1 ECMAScript 2 DOM 3 BOM 总结 一 JavaScript三大组成 JavaScript的三个部分为 ECMAScript JavaScript语法规范 是JS的基础也是核心
  • SpringBoot打包jar包并后台运行

    最近又进步了 我一直习惯直接在Intellij Idea中直接运行写好的程序 不过也是因为仅仅是写个模拟接口而已 后来到新公司要负责java后台 开始习惯把项目部署到外部Tomcat去测试 或者打成war包让运维去linux上面部署 不过
  • 基于OpenCV的视频道路车道检测

    基于OpenCV的视频道路车道检测 基于OpenCV的视频道路车道检测 前言 综述 运行方法 车道检测的实现 路面图像二值化 基于透视变换提取车道区域 基于二次多项式拟合车道线 计算曲率半径与车辆的偏移距离 用车道区域标注原始图像 总结 E
  • 网站服务器评测,9.2分! 浪潮服务器受到海外权威专业评测网站肯定

    目前 浪潮服务器业务覆盖全球120个国家和地区 拥有8个全球研发中心 6个全球生产中心以及2个全球服务中心 海外权威服务器专业评测网站ServeTheHome 简称STH 曾对浪潮NE5260M5边缘服务器进行测评 该服务器斩获9 2的高分
  • threejs实现一个固定大小的3d标点

    需求背景 需要在3d模型上实现标注的功能 一开始是直接通过添加一个普通的mesh来实现的 但是这样就会有一个问题 当视图缩放的时候 标注也会跟着一起放大缩小 影响视觉效果 因此需要实现一个不会随着视图一起放大或者缩小的mesh 实现思路 明
  • MongoDB update数据语法

    mongodb更新有两个命令 1 update 命令 db collection update criteria objNew upsert multi criteria update的查询条件 类似sql update查询内where后面
  • Qt自定义窗口部件/控件(实现一个十六进制微调框SpinBox)

    目录 1 自定义Qt窗口部件 控件 2 十六进制微调框 SpinBox 2 1 实现思路 2 2 源码 3 使用方法 3 1 代码添加自定义窗口部件 控件 3 2 Qt设计师添加自定义窗口部件 控件 3 3 运行效果 4 缺点 1 自定义Q
  • tomcat线程池配置

    以Tomcat8为例 配置方式一
  • dependency-check-maven安全漏洞扫描工具介绍

    目录 dependency check maven安全漏洞扫描工具介绍 dependency check maven插件 重点参数解析 运行命令 检查单个maven工程安全漏洞 检查多个maven子工程汇总一个报告 命令行方式运行 扫描报告
  • 压缩感知(Compressed sensing)from wiki

    压缩感知 Compressed sensing 也被称为压缩采样 Compressive sampling 或稀疏采样 Sparse sampling 是一种寻找欠定线性系统的稀疏解的技术 压缩感知被应用于电子工程尤其是信号处理中 用于获取