opencv实现正交匹配追踪算法OMP
//dic: 字典矩阵;
//signal :待重构信号(一次只能重构一个信号,即一个向量)
//min_residual: 最小残差
//sparsity:稀疏度
//coe:重构系数
//atom_index:字典原子选择序号
//返回最后的残差
float OMP( Mat& dic,Mat& signal,float min_residual,int sparsity,Mat& coe,vector<int>& atom_index) {
if(signal.cols>)
{
cout<<"wrong signal"<<endl;
return -;
}
signal=signal/norm(signal); //信号单位化
Mat temp(,dic.cols,);
for(int i=;i<dic.cols;i++)
{
temp.col(i)=norm(dic.col(i)); //每个原子的模长
}
divide(dic,repeat(temp,dic.rows,),dic); //字典原子单位化
Mat residual = signal.clone(); //初始化残差
coe.create(, , CV_32FC1); //初始化系数
Mat phi; //保存已选出的原子向量
float max_coefficient;
unsigned int atom_id; //每次所选择的原子的序号 for(;;)
{
max_coefficient = ;
//取出内积最大列
for (int i = ; i <dic.cols; i++)
{
float coefficient = (float)dic.col(i).dot(residual); if (abs(coefficient) > abs(max_coefficient))
{
max_coefficient = coefficient;
atom_id = i;
}
}
atom_index.push_back(atom_id); //添加选出的原子序号
Mat& temp_atom= dic.col(atom_id); //取出该原子
if (phi.cols == )
phi = temp_atom;
else
hconcat(phi,temp_atom,phi); //将新原子合并到原子集合中(都是列向量) coe.push_back(0.0f); //对系数矩阵新加一项
solve(phi, signal,coe, DECOMP_SVD); //求解最小二乘问题 residual = signal - phi*coe; //更新残差
float res_norm = (float)norm(residual); if (coe.rows >= sparsity || res_norm <= min_residual) //如果残差小于阈值或达到要求的稀疏度,就返回
{
return res_norm;
}
}
}
opencv实现正交匹配追踪算法OMP的更多相关文章
- 浅谈压缩感知(九):正交匹配追踪算法OMP
主要内容: OMP算法介绍 OMP的MATLAB实现 OMP中的数学知识 一.OMP算法介绍 来源:http://blog.csdn.net/scucj/article/details/7467955 ...
- 浅谈压缩感知(二十一):压缩感知重构算法之正交匹配追踪(OMP)
主要内容: OMP的算法流程 OMP的MATLAB实现 一维信号的实验与结果 测量数M与重构成功概率关系的实验与结果 稀疏度K与重构成功概率关系的实验与结果 一.OMP的算法流程 二.OMP的MATL ...
- 浅谈压缩感知(二十八):压缩感知重构算法之广义正交匹配追踪(gOMP)
主要内容: gOMP的算法流程 gOMP的MATLAB实现 一维信号的实验与结果 稀疏度K与重构成功概率关系的实验与结果 一.gOMP的算法流程 广义正交匹配追踪(Generalized OMP, g ...
- 浅谈压缩感知(二十五):压缩感知重构算法之分段正交匹配追踪(StOMP)
主要内容: StOMP的算法流程 StOMP的MATLAB实现 一维信号的实验与结果 门限参数Ts.测量数M与重构成功概率关系的实验与结果 一.StOMP的算法流程 分段正交匹配追踪(Stagewis ...
- [转]广义正交匹配追踪(gOMP)
广义正交匹配追踪(Generalized OMP, gOMP)算法可以看作为OMP算法的一种推广,由文献[1]提出,第1作者本硕为哈工大毕业,发表此论文时在Korea University攻读博士学位 ...
- 浅谈压缩感知(二十六):压缩感知重构算法之分段弱正交匹配追踪(SWOMP)
主要内容: SWOMP的算法流程 SWOMP的MATLAB实现 一维信号的实验与结果 门限参数a.测量数M与重构成功概率关系的实验与结果 SWOMP与StOMP性能比较 一.SWOMP的算法流程 分段 ...
- [转]压缩感知重构算法之分段正交匹配追踪(StOMP)
分段正交匹配追踪(StagewiseOMP)或者翻译为逐步正交匹配追踪,它是OMP另一种改进算法,每次迭代可以选择多个原子.此算法的输入参数中没有信号稀疏度K,因此相比于ROMP及CoSaMP有独到的 ...
- 浅谈压缩感知(二十二):压缩感知重构算法之正则化正交匹配追踪(ROMP)
主要内容: ROMP的算法流程 ROMP的MATLAB实现 一维信号的实验与结果 测量数M与重构成功概率关系的实验与结果 一.ROMP的算法流程 正则化正交匹配追踪ROMP算法流程与OMP的最大不同之 ...
- 匹配追踪算法(MP)简介
图像的稀疏表征 分割原始图像为若干个\[\sqrt{n} \times \sqrt{n}\]的块. 这些图像块就是样本集合中的单个样本\(y = \mathbb{R}^n\). 在固定的字典上稀疏分解 ...
随机推荐
- CPU load高而使用率低的问题分析
最近服务器上出现了一个很诡异的问题,症状如下图所示: 查看进程发现: 如上图所示,非常多的df -h进程没有退出.于是手工kill掉这些 df -h进程.cpu load恢复正常. 至于为什么会有这么 ...
- python_day1_python第一个程序 hello world
Python 第一个程序 1)安装好python后,cmd进入DOS下,直接输入python Python 3.6.0 (v3.6.0:41df79263a11, Dec 23 2016, 08:06 ...
- 2.2.1synchronized方法的弊端
缺陷:用关键字synchronized声明方法是有弊端的,譬如A线程调用同步方法执行一个长时间的任务,那么B线程则必须等待较长的时间, 解决方法:使用synchronized同步语句块 package ...
- MongoDB、redis、memcached
mongodb和memcached不是一个范畴内的东西. mongodb 是文档型的非关系型数据库,其优势在于查询功能比较强大,能存储海量数据. memcached,redis mongodb ...
- android-基础编程-Preference
由于SDK封装和提供了一套基于Preference的类,使用Preference通过编辑xml配置文件,只要很少的代码就可以实现了,而且Preference本身已经实现了参数保存,不需要我们再考虑将参 ...
- _编程语言_C++_宏定义#define 和 常量const 的区别
C++中有两种定义常量的方式:#define预处理和const关键字 #define 预处理指令 #include <iostream> using namespace std; #def ...
- maven工程聚合和继承的意义
聚合的意义: 对于一个大型的项目,如果我们直接作为一个工程开发,由于相互之间的依赖我们只能从头到尾由一组人开发,否则就会出现一个类好多人开发,相互更改的混乱局面,这个时候我们就将项目进行了横向和纵向的 ...
- android:theme
附件:常用的系统提供的 android:theme 样式一览表 01 android:theme="@android:style/Theme.Dialog" 将一个Activity ...
- Ubuntu下SVN安装和配置
一.SVN安装 1.安装包 1.$ sudo apt-get install subversion 2.创建项目目录 $ sudo mkdir /home/xiaozhe/svn $ cd /home ...
- QuartzNet使用
quartz.config # You can configure your scheduler in either <quartz> configuration section # or ...