opencv实现正交匹配追踪算法OMP
2023-09-11 14:17:15 时间
//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>1) { cout<<"wrong signal"<<endl; return -1; } signal=signal/norm(signal); //信号单位化 Mat temp(1,dic.cols,5); for(int i=0;i<dic.cols;i++) { temp.col(i)=norm(dic.col(i)); //每个原子的模长 } divide(dic,repeat(temp,dic.rows,1),dic); //字典原子单位化 Mat residual = signal.clone(); //初始化残差 coe.create(0, 1, CV_32FC1); //初始化系数 Mat phi; //保存已选出的原子向量 float max_coefficient; unsigned int atom_id; //每次所选择的原子的序号 for(;;) { max_coefficient = 0; //取出内积最大列 for (int i = 0; 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 == 0) 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— — kaleidoscope Filter
- OpenCV学习笔记(六十二)——《OpenCV Computer Version with Python》阅读摘要
- OpenCV根据颜色的车牌定位
- 应用OpenCV进行图像旋转和平移
- OpenCV中的图像阈值处理算法
- Python-OpenCV难道比C++_OpenCV快?以调用Canny边缘检测函数为例
- OpenCV中的saturate操作(饱和操作)究竟是怎么回事?
- OpenCV中的Vec3b、Vec2i、Vec3f等是什么意思?
- 利用OpenCV的函数cvtcolor()进行颜色空间转换时需要注意的地方
- 利用MSER算法提取图像区域(车牌区域)的OpenCV代码~
- OpenCV下实现单窗口显示多幅图像(C++源码)
- 利用霍夫梯度法进行圆检测的原理概要及利用OpenCV的函数HoughCircles()实现霍夫梯度法圆检测的代码
- 分水岭算法分割图像的原理概述及OpenCV代码实现
- 《Arduino计算机视觉编程》一第2章 OpenCV的基础与安装2.1 OpenCV的基础
- opencv实现canopy算法
- OpenCV图像各向异性滤波
- 第一章 opencv与python介绍及环境搭建
- OpenCV学习教程入门篇<一、介绍>
- Android Opencv 之 Android Studio 进行 opencv ( 4.2.0) 环境搭建,并简单进行图片灰度处理demo
- 《得知opencv》注意事项——矩阵和图像处理——cvAdd、cvAddS and cvAddWeighted
- OpenCV:图像的腐蚀和膨胀
- opencv