最近发现网上压缩感知中用OMP算法重构图像的代码很多,但很少有应用OMP算法来重构整个视频序列的,代码是自己写的,希望对初入门压缩感知的有帮助。由于重构时间的原因,程序中只对前8帧进行了重构。
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2012-10-08 15:17 CS_OMP_MAIN
文件 1371 2012-09-26 21:02 CS_OMP_MAINcs_omp.m
文件 4003 2012-09-26 21:34 CS_OMP_MAINcs_omp_main_1.m
文件 45619200 2006-04-22 05:18 CS_OMP_MAINforeman_cif.yuv
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_MAINcs_omp.m
文件 4003 2012-09-26 21:34 CS_OMP_MAINcs_omp_main_1.m
文件 45619200 2006-04-22 05:18 CS_OMP_MAINforeman_cif.yuv
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)