zoukankan      html  css  js  c++  java
  • MP算法、OMP算法及其在人脸识别的应用

    主要内容:

    1、MP算法

    2、OMP算法

    3、OMP算法的matlab实现

    4、OMP在压缩感知和人脸识别的应用

    一、MP(Matching Pursuits)与OMP(Orthogonal Matching Pursuit)算法

      内容:稀疏信号的表示(字典、稀疏系数)、MP算法、MP算法的缺点、OMP、OMP的实现

      参考文章:http://blog.csdn.net/scucj/article/details/7467955

    二、OMP的matlab实现

    %A-稀疏系数矩阵
    %D-字典/测量矩阵(已知)
    %X-测量值矩阵(已知)
    %K-稀疏度
    function A=OMP(D,F,X,L)
    X=double(X);
    [n,P]=size(X);
    [n,K]=size(D);
    %按列操作,分别求出每一列对应的最相关的基
    for k=1:P
    %a:每一列对应的相关基的系数
    a=[];
    %取二维信号的每一列信号
    x=X(:,k);
    %初始残差
    residual=x;
    %indx:索引集,L:测量次数
    indx=zeros(L,1);
    for j=1:L
    %D转置与残差residual相乘,得到residual与每一列的内积值
    residual=double(residual);
    D=double(D);
    proj=D'*residual;
    %找内积值最大值的位置,即最相关基的position
    pos=find(abs(proj)==max(abs(proj)));
    %若最大值不止一个,取第一个
    pos=pos(1);
    %位置存入索引集的第j值
    indx(j)=pos;
    %indx(1:j)表示第一列前j个元素
    %pinv:Pseudoinverse伪逆矩阵,一般用于处理长方形矩阵的求逆
    %得到其相关基的对应系数,AD=X,A=inv(D)*X
    %一般应该通过最小二乘来求
    a=pinv(D(:,indx(1:j)))*x;
    %继续求残差
    residual=x-D(:,indx(1:j))*a;
    end
    %通过上面的循环,得到第k列的相关基对应的索引位置
    temp=zeros(K,1);
    temp(indx)=a;
    %只显示非零值及其位置
    %最终求得整个A,代入AD=X,即可求解
    A(:,k)=temp;
    end
    R=A'*D';
    R=uint8(R);
    imshow(R);

    三、OMP在压缩感知和人脸识别的应用

    参考以下文章:

    http://wenku.baidu.com/view/4e67448302d276a200292e53.html

    http://wenku.baidu.com/link?url=IVn0mBapYDtCfj_mVma6AU8C9ClbGYU4Y5u4Kq0-F-8vhMN_73fcjLrTwzidA1KtQkqj6FvPS6-YkALppqr_Z_8TDlUV2wKEIsdqPs-my1m

    http://blog.csdn.net/celerychen2009/article/details/9257275

  • 相关阅读:
    HDU 2546:饭卡(01背包)
    HPU 第三次积分赛:阶乘之和(水题)
    拓扑排序练习题
    HDU 2647:Reward(拓扑排序+队列)
    HDU 3342:Legal or Not(拓扑排序)
    HDU 2094:产生冠军(拓扑排序)
    POJ 2585:Window Pains(拓扑排序)
    51Nod 1002:数塔取数问题(DP)
    cogs696 longest prefix
    poj3764 The xor-longest Path
  • 原文地址:https://www.cnblogs.com/AndyJee/p/3849200.html
Copyright © 2011-2022 走看看