资源简介
C语言编写LM迭代算法+文档说明,是非线性优化处理很好的方法
代码片段和文件信息
#include “growmat.h“
grow_mat::grow_mat()
{
clear_all();
}
//
grow_mat::grow_mat(int r int c int type void* data int step)
{
clear_all();
if (data)
{
CvMat temp_mat;
cvInitMatHeader(&temp_mat r c type data step );
_mat = cvCreateMat(r c type);
cvCopy(&temp_mat_mat);
cvGetSubRect(_mat this cvRect(00cr));
return;
}
init(rctype00);
}
grow_mat::~grow_mat()
{
if(_mat)
cvReleaseMat(&_mat);
}
void grow_mat::clear_all(void)
{
memset(this0sizeof(CvMat));
_mat = 0;
_expand_factor = 1.6;
_copy_flag = 1;
_zero_flag = 1;
}
int grow_mat::init(int r int c int type int maxrows int maxcols)
{
int no_max = 0;
if (maxrows==0) {maxrows=r*_expand_factor;no_max=1;}
if (maxcols==0) {maxcols=c*_expand_factor;no_max=1;}
if (type==0) type=CV_64FC1;
if (r<=0 || c<=0 || maxrows<0 || maxcols<0 || r>maxrows || c>maxcols)
return 0;
// 为了和mini_solver的set_solver一致,允许再次初始化!
if (_mat)
{
// 若矩阵_mat存在,且类型相同,表示客户想改变大小。
int mat_type = CV_MAT_TYPE(_mat->type);
if (CV_MAT_TYPE(type)==mat_type)
{
return resize(rc);
}
}
if(_mat) cvReleaseMat(&_mat);
if (no_max)
_mat = cvCreateMat(r c type);
else
_mat = cvCreateMat(maxrows maxcols type);
if (_mat==0) return 0;
if (_zero_flag) cvSetZero(_mat);
cvGetSubRect(_mat this cvRect(00cr));
return 1;
}
int grow_mat::resize(int r int c)
{
if (_mat==0 || r<0 || c<0)
return 0;
if (r <= _mat->rows && c <= _mat->cols)
{
cvGetSubRect(_mat this cvRect(00cr));
}
else
{
// 新扩展矩阵为原来需要的矩阵大小的_expand_factor倍
int maxrows = (r > _mat->rows ? r*_expand_factor : _mat->rows);
int maxcols = (c > _mat->cols ? c*_expand_factor : _mat->cols);
reserve(maxrowsmaxcols);
cvGetSubRect(_mat this cvRect(00cr));
}
return 1;
}
int grow_mat::reserve(int maxrows int maxcols)
{
if (_mat==0 || maxrows<0 || maxcols<0)
return 0;
// 只要申请的矩阵的行或列大于当前矩阵就分配内存
if (maxrows > _mat->rows || maxcols > _mat->cols)
{
// 新矩阵
CvMat * nm = cvCreateMat(maxrows maxcols _mat->type);
if (nm==0)
return 0;
if (_zero_flag) cvSetZero(nm);
if (this->rows && this->cols && _copy_flag)
{
// 若当前矩阵大小不为0,且需要复制数据,则将当前矩阵this的数据复制到nm
CvMat sub;
cvGetSubRect(nm &sub cvRect(00this->cols this->rows));
cvCopy(this &sub);
}
cvReleaseMat(&_mat);
_mat = nm;
}
return 1;
}
void grow_mat::free()
{
if(_mat)
cvReleaseMat(&_mat);
_mat=0;
memset(this0sizeof(CvMat));
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 194048 2010-05-04 21:47 lm\08Levenberg.doc
文件 11953 2010-05-04 21:42 lm\lm\Debug\growmat.obj
文件 0 2010-05-04 21:42 lm\lm\Debug\growmat.sbr
文件 705536 2010-05-04 21:42 lm\lm\Debug\lm.bsc
文件 594008 2010-05-04 21:42 lm\lm\Debug\lm.exe
文件 839716 2010-05-04 21:42 lm\lm\Debug\lm.ilk
文件 807924 2010-05-04 21:42 lm\lm\Debug\lm.pch
文件 1377280 2010-05-04 21:42 lm\lm\Debug\lm.pdb
文件 160182 2010-05-04 21:35 lm\lm\Debug\LM_DEMO.obj
文件 0 2010-05-04 21:35 lm\lm\Debug\LM_DEMO.sbr
文件 37654 2010-05-04 21:35 lm\lm\Debug\ls_minimizer.obj
文件 0 2010-05-04 21:35 lm\lm\Debug\ls_minimizer.sbr
文件 48433 2010-05-04 21:35 lm\lm\Debug\ls_observation.obj
文件 0 2010-05-04 21:35 lm\lm\Debug\ls_observation.sbr
文件 123904 2010-05-04 21:42 lm\lm\Debug\vc60.idb
文件 167936 2010-05-04 21:42 lm\lm\Debug\vc60.pdb
文件 2660 2010-05-04 21:42 lm\lm\growmat.cpp
文件 997 2008-08-30 11:27 lm\lm\growmat.h
文件 78 2010-05-04 21:30 lm\lm\lm.dep
文件 4686 2010-05-04 23:01 lm\lm\lm.dsp
文件 529 2010-05-04 21:30 lm\lm\lm.dsw
文件 5889 2010-05-04 23:01 lm\lm\lm.mak
文件 50176 2010-05-04 23:01 lm\lm\lm.ncb
文件 49664 2010-05-04 23:01 lm\lm\lm.opt
文件 1178 2010-05-04 21:42 lm\lm\lm.plg
文件 1399 2009-09-23 10:53 lm\lm\LM_DEMO.cpp
文件 7756 2009-09-23 11:06 lm\lm\ls_minimizer.cpp
文件 3033 2010-05-04 21:32 lm\lm\ls_minimizer.h
文件 7885 2009-09-23 10:28 lm\lm\ls_observation.cpp
文件 5244 2009-06-28 18:31 lm\lm\ls_observation.h
............此处省略8个文件信息
- 上一篇:绘制多边形
- 下一篇:C++ 数学计算库 TooN
相关资源
- MFC42UD.DLLMFC42UD.LIBMFCN42UD.LIBMFCO42UD.DLL
- 粒子群优化算法 C++实现
- PictureControl
- 遗传算法c++代码.rar
- OpenGL模拟Minecraft
- 粒子群优化算法(PSO)
- 最短路径算法—Bellman-Ford(贝尔曼-福
- c语言编写的FxLMS算法程序
- 卡尔曼滤波算法航迹预测.rar
- 捷联惯导算法+kalman滤波c程序
- kalman和ukf滤波C语言源码和
- C++模拟退火算法求二维函数极值
- 有源噪声控制FxLMS算法C语言程序
- LMS自适应滤波C程序,语音降噪的
- Bresenham画圆算法和中点圆整数优化算
- 批量16位图像转8位
- 最优化算法的无约束算法的单纯形法
- 基于Camshift+Kalman的多目标跟踪
- 遗传算法解决TSP问题 旅行商问题 程序
- Camshift Kalman目标跟踪算法
- UKF的C、C++代码实现
- LMSE(Ho-Kashyap).rar
- palm 手掌检测的训练文件
- WOA鲸鱼优化算法 C++实现
- MFC规则DLL(MFC Regular DLL)添加DLLMain(
- 混合基快速傅里叶变换(2FFT+4fft)优
- 用openglMFC实现的魔方
- 鲸鱼优化算法C++代码
- Sick LMS激光雷达数据采集程序
- windows 线程池(ThreadPoolMain.cpp)
评论
共有 条评论