匹配追踪算法(MatchingPursuit)原理

MP算法原理

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

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

步骤

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

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

匹配追踪算法(MatchingPursuit)原理_第1张图片
reconstruct lena
github源码: matching pursuit

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

你可能感兴趣的:(匹配追踪算法(MatchingPursuit)原理)