主要内容:
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