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