資源簡介
最近發現網上壓縮感知中用OMP算法重構圖像的代碼很多,但很少有應用OMP算法來重構整個視頻序列的,代碼是自己寫的,希望對初入門壓縮感知的有幫助。由于重構時間的原因,程序中只對前8幀進行了重構。
代碼片段和文件信息
function?hat_x=cs_omp(yT_Matm)
%?y=T_Mat*x?T_Mat?is?n-by-m
%?y?-?measurements
%?T_Mat?-?combination?of?random?matrix?and?sparse?representation?basis
%?m?-?size?of?the?original?signal
%?the?sparsity?is?length(y)/4
n=length(y);
s=floor(n/4);?????????????????????????????????????%??測量值維數
hat_x=zeros(1m);?????????????????????????????????%??待重構的譜域(變換域)向量?????????????????????
Aug_t=[];?????????????????????????????????????????%??增量矩陣(初始值為空矩陣)
r_n=y;????????????????????????????????????????????%??殘差值?
for?times=1:s;??????????????????????????????????%??迭代次數(稀疏度是測量的1/4)
????for?col=1:288;??????????????????????????????????%??恢復矩陣的所有列向量
????????product(col)=abs(T_Mat(:col)‘*r_n);??????????%??恢復矩陣的列向量和殘差的投影系數(內積值)?
????end
???%?product=abs(T_Mat‘*r_n);
????[valpos]=max(product);???????????????????????%??最大投影系數對應的位置
????Aug_t=[Aug_tT_Mat(:pos)];???????????????????%??矩陣擴充
????T_Mat(:pos)=zeros(n1);??????????????????????%??選中的列置零(實質上應該去掉,為了簡單將其置零)
????aug_x=(Aug_t‘*Aug_t)^(-1)*Aug_t‘*y;???????????%??最小二乘使殘差最小
????r_n=y-Aug_t*aug_x;????????????????????????????%??殘差
????pos_array(times)=pos;?????????????????????????%??紀錄最大投影系數的位置
????
end
hat_x(pos_array)=aug_x;???????????????????????????%??重構的向量?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2012-10-08?15:17??CS_OMP_MAIN\
?????文件????????1371??2012-09-26?21:02??CS_OMP_MAIN\cs_omp.m
?????文件????????4003??2012-09-26?21:34??CS_OMP_MAIN\cs_omp_main_1.m
?????文件????45619200??2006-04-22?05:18??CS_OMP_MAIN\foreman_cif.yuv
- 上一篇:編程之美微軟面試心得
- 下一篇:微型計算機控制技術課件
評論
共有 條評論