第十章g2o_custombundle中的common文件夹中的BundleParams.h
来源:互联网 发布:数据分析师前景如何 编辑:程序博客网 时间:2024/05/21 17:20
这个文件就是定义BA优化中用到的所有参数变量。并利用CommandArgs类进行变量管理。比如赋默认值等。
这里再啰嗦一遍,CommandArgs类只是一个变量(这里就是BA用到的所有参数了)管理类,真正的变量(这里就是参数集了)定义是在这个头文件中,也就是所有参数都定义在BundleParams这个结构体中。
其中有一些参数因为还没看BA的代码,所以没搞清楚,只是大概写了写,但是在这里不是重点,重点是,这个结构体中定义BA所需要的所有参数,不管干啥用的,肯定是个参数而已。
贴代码:
#ifndef BUNDLEPARAMS_H#define BUNDLEPARAMS_H#include <string>#include "flags/command_args.h"using namespace std;/** * 这个结构体定义了Bundle Adjustment使用所有参数。 * 说一下整体的结构和逻辑: * 结构体名称非常直观,就是BA的参数,当然成员就是一堆参数了 * 那在最后用CommandArgs arg;这么一句,相当于创建了一个参数描述类, * 结构成员定义完毕,开始构造函数。 * 构造函数中首先调用arg这个类中的.param()函数,这个函数有两个功能: * 1、给上面定义的每一个参数后面挂一个结构体类型的描述,name、type等等描述 * 2、给这这些参数赋了一些值,也就是默认值了。 * 然后构造函数又调用了arg这个类中的.parseArgs()函数。这个函数功能就是检查一下命令行中有没有用户自定义的参数值,有的话读进来将默认值覆盖。 */struct BundleParams{public: //构造函数,在后面定义,这里只声明。 BundleParams(int argc, char** argv); //析构函数 virtual ~BundleParams(){};public: //这里的一堆参数才是实打实的BA程序中要用的参数变量!! //输入,那个文件被处理 string input; //信赖域策略 string trust_region_strategy; //线性求解器 string linear_solver; //稀疏的线性代数求解器 string sparse_linear_algebra_library; //稠密的线性代数求解器 string dense_linear_algebra_library; //是否鲁棒??还没整明白 bool robustify; // loss function // double eta; //迭代次数 int num_iterations; // for making noise //噪声发生器 //随机种子 int random_seed; //旋转sigma double rotation_sigma; //变换sigma double translation_sigma; //空间点sigma double point_sigma; // for point cloud file... //原始点云 string initial_ply; //优化后点云 string final_ply; //此类在command_args.h中,用于解析用户输入的参数 //创建一个命令行参数类实例,通过下面的构造函数,对这个实例的成员进行赋值。 CommandArgs arg;};//构造函数定义,注意看,前面还是要加上类名称空间BundleParams:://这里看见,直接处理的命令行,也就是main()中的第一句:BundleParams params(argc,argv),用命令行实例化一个BundleParamsBundleParams::BundleParams(int argc, char** argv){ /** * 这一堆瞅着有点蛋疼和复杂。。。 * 慢慢看用法结构:.para()是个函数,下面用法有多种,参数列表也有很多种,明显是一个重载。 * 点开定义去看,.param()在CommandArgs类中。 * 从用法上看出来:(参数名称,参数,参数值,参数描述) */ //这个input就是要被BA的数据集。也就是要被处理的文件名。在这个程序里用的就是data文件夹下的problem-16-22106-pre.txt文件。 //发现默认值是空字符串,所以这种就是肯定要通过命令行输入进来值的参数。 arg.param("input", input, "", "file which will be processed"); arg.param("trust_region_strategy", trust_region_strategy, "levenberg_marquardt", "Options are: levenberg_marquardt, dogleg."); arg.param("linear_solver", linear_solver, "dense_schur", // iterative schur and cgnr(pcg) leave behind... "Options are: sparse_schur, dense_schur"); // arg.param("sparse_linear_algebra_library", sparse_linear_algebra_library, "suite_sparse", "Options are: suite_sparse and cx_sparse."); // arg.param("dense_linear_algebra_library", dense_linear_algebra_library, "eigen", "Options are: eigen and lapack."); // arg.param("ordering",ordering,"automatic","Options are: automatic, user."); arg.param("robustify", robustify, false, "Use a robust loss function"); // arg.param("num_threads",num_threads,1, "Number of threads."); arg.param("num_iterations", num_iterations,20, "Number of iterations."); arg.param("rotation_sigma", rotation_sigma, 0.0, "Standard deviation of camera rotation " "perturbation."); arg.param("translation_sigma", translation_sigma,0.0, "translation perturbation."); arg.param("point_sigma",point_sigma,0.0,"Standard deviation of the point " "perturbation."); arg.param("random_seed", random_seed, 38401,"Random seed used to set the state "); arg.param("initial_ply", initial_ply,"initial.ply","Export the BAL file data as a PLY file."); arg.param("final_ply", final_ply, "final.ply", "Export the refined BAL file data as a PLY"); //解析命令行中的参数,看看有没有新值过来,有的话就覆盖。 arg.parseArgs(argc, argv);}#endif
2017年10月2日19:57 晟碟假期中的会议室 午饭还没吃。。。
阅读全文
0 0
- 第十章g2o_custombundle中的common文件夹中的BundleParams.h
- 第十章g2o_custombundle中的common文件夹中的flags文件夹下的command_args.h
- 第十章g2o_custombundle中的common文件夹中的flags文件夹下的command_args.cpp
- 第十章g2o_custombundle/g2o_bundle.cpp
- 第十章g2o_custonbundle/common/projection.h
- common lisp中的funcall
- 第十章 OGRE中的粒子系统
- common.h
- 获取文件夹中的文件夹中的文件名
- 分散在不同文件夹中的.h文件如何在VC2010中得到快速定位并打开?
- string.h中的函数
- string.h中的函数
- stdio.h中的幽默
- string.h中的函数
- string.h中的函数
- string.h中的函数
- C++中的stdafx.h
- string.h中的函数
- TCP粘包,拆包
- 第十八课 使用视图
- bzoj 2464 中山市选[2009]小明的游戏
- scanf gets getchar cin cin.get getline 总结
- poj 1436 Horizontally Visible Segments
- 第十章g2o_custombundle中的common文件夹中的BundleParams.h
- 使用DrawerLayout+Toolbar实现侧滑菜单
- 机器学习面试问题
- 机器学习笔记--决策树&决策树可视化
- c++笔记:(2)
- 笔记
- 10.2 test solution.
- 复习
- Angular