匹配追踪算法(MatchingPursuit)原理

MP算法原理

  • 信号稀疏分解与MP算法
    信号稀疏分解的思想是:将一个信号分解成字典库(dictionary或codebook)中的一些原子的组合,要求使用的原子个数最少,重构误差最小。对于一个给定字典,列出所有可能组合,可以从中选出满足上述要求的一组,得到最优组合。
    但是穷举字典中的所有组合是一个NP难题,对于大的字典库几乎无法实现,因此将要求改为从字典库中寻找一个原子个数尽可能少,重构误差尽可能小的次优组合。这样计算复杂度会大大降低,MP算法就是能够实现这种要求的算法之一。

  • MP算法原理
    算法假定输入信号与字典库中的原子在结构上具有一定的相关性,这种相关性通过信号与原子库中原子的内积表示,即内积越大,表示信号与字典库中的这个原子的相关性越大,因此可以使用这个原子来近似表示这个信号。当然这种表示会有误差,将表示误差称为信号残差,用原信号减去这个原子,得到残差,再通过计算相关性的方式从字典库中选出一个原子表示这个残差。迭代进行上述步骤,随着迭代次数的增加,信号残差将越来越小,当满足停止条件时终止迭代,得到一组原子,及残差,将这组原子进行线性组合就能重构输入信号

步骤

  • step 1-初始化:生成/选择字典库 D,并对其中的原子做归一化处理 norm(D),常用的字典库有:DCTGabor ,初始化信号残差 r = s(s为输入信号)
  • step 2-投影:将信号残差 r 与 D 中的每个原子 vi 做内积 pi=sTvi,记录最大的投影长度 pmax,和它所对应的原子的索引 i
  • step 3-更新: 更新残差 r = s - p*vi
  • step 4-判断: 当到达设定的迭代次数,或则残差小于设定的阈值的时候停止,否则继续 step2,step3

应用-使用DCT字典重构图片

reconstruct lena
reconstruct lena
github源码:matching pursuit

参考:
[1] Matching Pursuits with Time-Frequency Dictionaries
[2] Matching pursuit of images

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,640评论 25 708
  • 原文章为scikit-learn中"用户指南"-->"监督学习的第一节:Generalized Linear Mo...
    HabileBadger阅读 9,386评论 1 19
  • 台商.温商经贸恳谈会暨郑州乐清商会2016年会在郑州美盛喜来登大酒店隆重举行! 2016年12月3日下午3点,由郑...
    爱拼会赢阅读 726评论 0 1
  • 《星球大战六》都上映了,所以,我的星空主题写到3还没写完,也属正常。 在我的脑海里时常会映出一样的场景,小时候的我...
    linsa碎碎念阅读 349评论 0 0
  • 曾经,我恋上了那人。那情是始于同情。相似的命运之下,能体其之苦,为其所困,愿护之。 如今,我远离那人。心中有愧,却...
    oneandone阅读 257评论 0 1