最近在找工作,虽然offer不是问题,但是面试的过程,让我意识到自己存在的很多问题。其中之一就是,有人跟我说,你的广度是够了,但可能深度不够。实际上,短短一两小时的面试 ,是很难知道一个人的深度的,但个人觉得,这算是一个警钟,以后的路,要慢慢做深,做精,才能成为砖家啊。哈哈。

直接上大神的原文:

http://blog.csdn.net/zouxy09/article/details/8118313

压缩感知(压缩传感,Compressive Sensing)理论是近年来信号处理领域诞生的一种新的信号处理理论,由D. Donoho(美国科学院院士)、E. Candes(Ridgelet, Curvelet创始人)及华裔科学家T. Tao(2006年菲尔兹奖获得者)等人提出,自诞生之日起便极大地吸引了相关研究人员的关注。网站http://dsp.rice.edu/cs上可以获取大量相关的论文。

有关压缩感知,有两个科普文章,讲得很通俗易懂,可以很好地介绍了压缩感知:

http://www.cvchina.info/2010/06/08/compressed-sensing-2/

那什么叫压缩感知?为什么它的出现吸引了那么多的目光?

还记得我们在信号与信息处理有关课程里面必讲的一个知识吗?它可谓是现代数字信号处理系统理论建立的一个功臣之一。没错,就是能将物理世界和数字世界建立连接的采样定理:奈奎斯特采样定理(Shannon-Nyquist采样定理)。其要求:在进行模拟/数字信号的转换过程中,当采样频率fs.max大于信号中最高频率fmax的2倍时,采样之后的数字信号完整地保留了原始信号中的信息。

而压缩感知的出现,告诉我们:如果信号在某一个正交空间具有稀疏性(即可压缩性),就能以较低的频率(远低于奈奎斯特采样频率)采样该信号,并可能以高概率精确的重建该信号。

在上面所说的一篇科普文章中提到:所谓压缩感知,最核心的概念在于试图从原理上降低对一个信号进行测量的成本。比如说,一个信号包含一千个数据,那么按照传统的信号处理理论,至少需要做一千次测量才能完整的复原这个信号。这就相当于是说,需要有一千个方程才能精确地解出一千个未知数来。但是压缩感知的想法是假定信号具有某种特点(比如文中所描述得在小波域上系数稀疏的特点),那么就可以只做三百次测量就完整地复原这个信号(这就相当于只通过三百个方程解出一千个未知数)。

在cvchina里面有一篇很热的文章《稀疏表达:向量、矩阵与张量》,呵呵,有点深,我看不懂,但里面开篇的几张图像吸引了我:

首先是图像恢复,由左侧图像恢复出右侧结果:

然后是类似的图像inpainting

然后是图像去模糊,左上为输入模糊图像,右下为输出清晰图像及估计的相机运动(其实是PSF),中间均为迭代过程:

再然后是物体检测(自行车),左侧输入图像,中间为位置概率图,右侧为检测结果

当然我个人还推荐Yi Ma的sparse face,这个在对抗噪声的效果上很棒,比如下图中左侧的那张噪声图像(你能辨认是哪位不?这方法可以!)

上面的结果都很amazing,但是怎么实现的我就不知道了。原博主既然摆在那,就表明了它是稀疏表达的功劳了。

CT算法paper:

http://www4.comp.polyu.edu.hk/~cslzhang/CT/CT.htm

其涉及到的理论就是压缩感知(或者稀疏表达)。然后感觉不错,了解了解(后面会对这个跟踪算法做介绍,具体见博客更新)。所以接触时间有限,理解未免出错,望各位不吝指正。

简单地说,压缩感知理论指出:只要信号是可压缩的或在某个变换域是稀疏的,那么就可以用一个与变换基不相关的观测矩阵将变换所得高维信号投影到一个低维空间上,然后通过求解一个优化问题就可以从这些少量的投影中以高概率重构出原信号,可以证明这样的投影包含了重构信号的足够信息。

在该理论框架下,采样速率不再取决于信号的带宽,而在很大程度上取决于两个基本准则:稀疏性和非相关性,或者稀疏性和等距约束性。

压缩感知理论主要包括三部分:

(1)信号的稀疏表示;

(2)设计测量矩阵,要在降低维数的同时保证原始信号x的信息损失最小;

(3)设计信号恢复算法,利用M个观测值无失真地恢复出长度为N的原始信号。

理论依据:

(1)设长度为N的信号X在某个正交基Ψ上是K-稀疏的(即含有k个非零值);

(2)如果能找到一个与Ψ不相关(不相干)的观测基Φ;

(3)用观测基Φ观测原信号得到长度M的一维测量值M个观测值Y,K<M<<N;

(4)那么就可以利用最优化方法从观测值Y中高概率恢复X

数学表达:

设x为长度N的一维信号,稀疏度为k(即含有k个非零值),A为M×N的二维矩阵(M<N),y=Φx为长度M的一维测量值。压缩感知问题就是已知测量值y和测量矩阵Φ的基础上,求解欠定方程组y=Φx得到原信号x。Φ的每一行可以看作是一个传感器(Sensor),它与信号相乘,拾取(Acquisition)了信号的一部分信息。而这一部分信息足以代表原信号,并能找到一个算法来高概率恢复原信号。

一般的自然信号x本身并不是稀疏的,需要在某种稀疏基上进行稀疏表示,xs,Ψ为稀疏基矩阵,s为稀疏系数(s只有K个是非零值(K<<N)。

压缩感知方程为yx=ΦΨss

将原来的测量矩阵Φ变换为Θ=ΦΨ(称之为传感矩阵),解出s的逼近值s’,则原信号x’ = Ψs’。

1、信号的稀疏表示

信号的稀疏性简单理解为信号中非0元素数目较少,或者说大多数系数为0(或者绝对值较小)。

自然界存在的真实信号一般不是绝对稀疏的,而是在某个变换域下近似稀疏,即为可压缩信号。或者说从理论上讲任何信号都具有可压缩性,只要能找到其相应的稀疏表示空间,就可以有效地进行压缩采样。信号的稀疏性或可压缩性是压缩感知的重要前提和理论基础。

稀疏表示的意义:只有信号是K稀疏的(且K<M<<N),才有可能在观测M个观测值时,从K个较大的系数重建原始长度为N的信号。也就是当信号有稀疏展开时,可以丢掉小系数而不会失真。

我们知道,长度为N的信号X可以用一组基ΨT=[Ψ1,…, ΨM]的线性组合来表示:

       xs,Ψ为稀疏基NxN矩阵,s为稀疏系数(N维向量),当信号X在某个基Ψ上仅有 K<<N个非零系数或远大于零的系数s时,称Ψ为信号X的稀疏基。我们需要做的就是合理地选择稀疏基,使得信号的稀疏系数个数尽可能少。

再啰嗦点的话:如果长度为N的信号X,在变换域Φ中只有K个系数不为零(或者明显大于其他系数),且K<<N,那么可以认为信号X在Φ域中是稀疏的并可称为K-稀疏(不是严格的定义)。那么在该域下,我们如果只保留这M个大系数,丢弃其他的系数,则可以减小储存该信号需要的空间,达到了压缩(有损压缩)的目的。同时,以这M个系数可以重构原始信号X,不过一般而言得到的是X的一个逼近。

我们应该熟悉JPEG跟JPEG2000的区别吧,JPEG的核心算法是DCT,而后者是DWT,本质上,这两种处理方法都是将信号从一个域变换到另外一个域(把坐标系进行旋转,将信号投影到不同的基上),从而获得信号的稀疏表示,即用最少的系数来表示信号,不过DWT比DCT更加稀疏而已。信号不同,对应最稀疏表达的基也会不同,比如,对于一维信号可能小波基是最稀疏的,而对于图像而言,可能那些Curvelet和contourlet是最优的,对于有些信号,也有可能需要将几种基结合起来才是最优的。稀疏分解是找到信号的最稀疏最有效的表达。

信号在某种表示方式下的稀疏性,是压缩感知应用的理论基础,经典的稀疏化的方法有离散余弦变换(DCT)、傅里叶变换(FFT)、离散小波变换(DWT)等。

最近几年,对稀疏表示研究的另一个热点是信号在冗余字典下的稀疏分解。 这是一种全新的信号表示理论:用超完备的冗余函数库取代基函数,称之为冗余字典,字典中的元素被称为原子。目前信号在冗余字典下的稀疏表示的研究集中在两个方面:一是如何构造一个适合某一类信号的冗余字典,二是如何设计快速有效的稀疏分解算法。目前常用的稀疏分解算法大致可分为匹配追踪(Matching Pursuit)和基追踪(Basis Pursuit)两大类。

2、信号的观测矩阵

观测矩阵(也称测量矩阵)MxN(M<<N)是用来对N维的原信号进行观测得到M维的观测向量Y,然后可以利用最优化方法从观测值Y中高概率重构X。也就是说原信号X投影到这个观测矩阵(观测基)上得到新的信号表示Y。

观测矩阵的设计目的是如何采样得到M个观测值,并保证从中能重构出长度为N的信号X或者稀疏基Ψ下等价的稀疏系数向量。

为了保证能够从观测值准确重构信号,其需要满足一定的限制:观测基矩阵与稀疏基矩阵的乘积满足RIP性质(有限等距性质)。这个性质保证了观测矩阵不会把两个不同的K稀疏信号映射到同一个集合中(保证原空间到稀疏空间的一一映射关系),这就要求从观测矩阵中抽取的每M个列向量构成的矩阵是非奇异的。

在CS编码测量模型中并不是直接测量稀疏信号X本身, 而是将信号投影到一组测量矩阵Φ上而得到测量值y。即,用一个与变换矩阵不相关的MxN(M<<N)测量矩阵Φ对信号x进行线性投影,得到线性测量值y: y=Φx ;

测量值y是一个M维向量,这样使测量对象从N维降为M维。测量矩阵的设计要求信号从x转换为y的过程中,所测量到的K个测量值不会破坏原始信号的信息,以保证信号可以精确重构。

由于信号x是是可稀疏表示的: x=Ψs,上式可以表示为下式:

y=Φx=ΦΨs=Θs

其中Φ是一个MxN矩阵。上式中,方程的个数远小于未知数的个数,方程无确定解,无法重构信号。但是,由于信号是K稀疏,若上式中的Φ满足有限等距性质(Restricted Isometry Property,简称RIP),则K个系数就能够从M个测量值准确重构(得到一个最优解)。RIP性质的等价条件是测量矩阵Φ和稀疏基Ψ不相关。

如果稀疏基和观测基不相关,则很大程度上保证了RIP性。CandeS和Tao等证明:独立同分布的高斯随机测量矩阵可以成为普适的压缩感知测量矩阵。则一般用随机高斯矩阵作为观测矩阵。目前常用的测量矩阵还有随机贝努利矩阵、部分正交矩阵、托普利兹和循环矩阵和稀疏随机矩阵等,这里不一一列举了。

3、信号的重构算法

当矩阵Φ满足RIP准则时。压缩感知理论能够通过对上式的逆问题先求解稀疏系数s,然后将稀疏度为K的信号x从M维的测量投影值y中正确地恢复出来。解码的最直接方法是通过l0范数(0-范数,也就是向量yˆ中非零元素的个数)下求解的最优化问题:

从而得到稀疏系数s的估计s’。则原信号x’ = Ψs’。由于上式的求解是个NP难问题(在多项式时间内难以求解,甚至无法验证解的可靠性)。L1最小范数下在一定条件下和L0最小范数具有等价性,可得到相同的解。那么上式转化为L1最小范数下的最优化问题:

L1范数最小化是通过用L1范数来近似0范数,取1而不取1/2,2/3或者其他值,是因为1范数最小化是凸优化问题,可以将求解过程转化成有一个线性规划问题。L1最小范数下最优化问题又称为基追踪(BP),其常用实现算法有:内点法和梯度投影法。内点法速度慢,但得到的结果十分准确:而梯度投影法速度快,但没有内点法得到的结果准确 。

目前,压缩感知的重构算法主要分为两大类:

(1)贪婪算法,它是通过选择合适的原子并经过一系列的逐步递增的方法实现信号矢量的逼近,此类算法主要包括匹配跟踪算法、正交匹配追踪算法、补空间匹配追踪算法等。

(2)凸优化算法,它是把0范数放宽到1范数通过线性规划求解的,此类算法主要包括梯度投影法、基追踪法、最小角度回归法等。

凸优化算法比贪婪算法所求的解更加精确,但是需要更高的计算复杂度。

从数学上来说,CS就是在一定的条件下求解欠定(不适定)方程,条件包括x要是稀疏的,测量矩阵要满足RIP条件,那么欠定(不适定)方程就会以很大的概率有唯一解。



运动目标跟踪(六)--压缩跟踪之CS原理介绍相关推荐

  1. 压缩跟踪Compressive Tracking

    压缩跟踪Compressive Tracking zouxy09@qq.com http://blog.csdn.net/zouxy09 好了,学习了解了稀疏感知的理论知识后,终于可以来学习<R ...

  2. ORB-SLAM2系列第六章—— 跟踪线程

    系列文章目录 ORB-SLAM2系列第一章-- 简介 ORB-SLAM2系列第二章-- ORB 特征点提取 ORB-SLAM2系列第三章-- 地图初始化 ORB-SLAM2系列第四章-- 地图点.关键 ...

  3. 人脸跟踪:CT压缩跟踪

    压缩跟踪Compressive Tracking zouxy09@qq.com http://blog.csdn.net/zouxy09 好了,学习了解了稀疏感知的理论知识后,终于可以来学习<R ...

  4. 压缩跟踪Compressive Tracking源码理解

    压缩跟踪Compressive Tracking源码理解 zouxy09@qq.com http://blog.csdn.net/zouxy09 在前面一个介绍<Real-Time Compre ...

  5. BT源代码学习心得(六):跟踪服务器(Tracker)的代码分析(初始化) -- 转贴自 wolfenstein (NeverSayNever)

    BT源代码学习心得(六):跟踪服务器(Tracker)的代码分析(初始化) author:wolfenstein Tracker在BT中是一个很重要的部分.这个名词我注意到以前的文章中都是直接引用,没 ...

  6. BT源代码学习心得(六):跟踪服务器(Tracker)的代码分析(初始化)

    BT源代码学习心得(六):跟踪服务器(Tracker)的代码分析(初始化) 发信人: wolfenstein (NeverSayNever), 个人文集 标  题: BT源代码学习心得(六):跟踪服务 ...

  7. Fast Compressive Tracking(快速压缩跟踪)算法的C++代码实现

    本文系原创,转载请注明. 有问题请留言或发邮箱:johnnycons@163.com 因为实验室项目工程的需要,最近在研究目标跟踪算法.这里提的Fast Compressive Tracking (快 ...

  8. opencv运动目标跟踪预测_基于Opencv的运动目标的检测和跟踪.pdf

    第 20卷 第 l2期 电子设计工程 2012年 6月 Vol_20 No.12 ElectronicDesignEngineering Jun.2012 基于Opencv的运动 目标的检测和跟踪 白 ...

  9. 【java】高效压缩位图RoaringBitmap的原理与应用

    文章目录 1.概述 2.位图法简述 3.RoaringBitmap的思路 4.Container原理 4.1 ArrayContainer 4.2 BitmapContainer 4.3 RunCon ...

最新文章

  1. Castle ActiveRecord(一)概述
  2. Unity中调用手机中的粘贴功能
  3. SAP ABAP用户锁定标识USR02-UFLAG
  4. android+ebook控件,Android 自定义控件 eBook 翻书效果
  5. [HNOI 2011]卡农
  6. 深入理解Kafka(4)-主题与分区
  7. 这两天做项目出现的几个问题
  8. 单体 soa 微服务 区别_漫谈何时从单体架构迁移到微服务?
  9. python自动化框架测试实操_自动化框架之 python+selenium+pytest
  10. 2021杨铭杰高考成绩查询,谁知道汕头一中2007年高考成绩的概况
  11. 跟我唱简谱v5.3 中文免费版
  12. linux 模拟误码率,误码率BER计算原理及仿真输出
  13. 富士胶片展示透明投影膜、CMF表面装饰材料及HydroAg+抗菌技术
  14. 热烈欢迎两位园友加盟
  15. java实现mysql的导入导出_Java实现mysql导入导出Excel
  16. excel表格怎么拆分成多个表格?
  17. 测试必会之 Linux 三剑客之 grep
  18. 抖音快手短视频如何用python程序高效的自动化剪辑?
  19. 树莓派Python3安装运行OpenCV
  20. 机器学习 深度学习 神经网络 图像处理优质博客整理

热门文章

  1. ARM指令ldr、str、stm、ldm理解
  2. SIMD与NEON概念理解
  3. Android9.0添加HIDL
  4. 什么样的人不适合当程序员呢?
  5. Vscode 如何使用内置浏览器?
  6. python全栈开发网络_Python全栈开发:django网络框架(二)
  7. python微信库wxpy无法登录_使用wxpy这个基于python实现的微信工具库的一些常见问题...
  8. 你的主机中的软件中止了一个已建立的连接。_winscp中文版,winscp中文版软件的使用技巧...
  9. double operator[](int i)_请谨慎使用float和double
  10. 不能使用 float 和 double 来表示金额等精确的值