openMVG----numeric

这个模块提供数学和线性代数工具,基于Eigen

向量和矩阵容器

重新命名了Eigen的一些基本类型,是列优先的

Vec2 a single 2d point stored as a column matrix (x,y),
Vec3 a single 3d point stored as a column matrix (x,y,z),
Vec2f, Vec3f float version.

Vec a vector of value (double precision),
Vecf a vector of floating point value,

Mat the generic matrix container,
Mat2X a collection of 2d points stored by column,
Mat3X a collection of 3d points stored as column.
// Create a set of 2D points store as column
Mat2X A(2, 5);
A << 1, 2, 3, 4, 5,
     6, 7, 8, 9, 10;
A.col(); // return a column vector : (1,6)^T
A.row(); // return a row vector : (1,2,3,4,5)

Mat3 testMatrix = Mat3::Identity();
testMatrix.setIdentity();

Vec3 e; e[0]= 1; e[1] = 2; e[2] = 3;
Mat3 R = LookAt(e); //只知道旋转后,z轴方向是(1,2,3)。x'=Rx
Mat3 I = Mat3::Identity();
Mat3 RRT = R*R.transpose();
Mat3 RTR = R.transpose()*R;
MeanAndVarianceAlongRows(points, &mean, &variance);

还有l1_solver, LM

源代码

eigen_alias_definition.hpp

定义了常用的别名,及对eigen的内存分配进行处理

/// 3d vector using double internal format
  using Vec3 = Eigen::Vector3d;

  /// 2d vector using int internal format
  using Vec2i = Eigen::Vector2i;

  /// 2d vector using float internal format
  using Vec2f = Eigen::Vector2f;

因为eigen有SSE加速,需要内存对齐。所以需要进行处理一下。在基本处理上,加上了几个explictinitializer list constructor support

numeric.hpp、numeric.cpp

内容
  • 一些几何小函数,如叉积、旋转矩阵生成
  • 一些实用的小函数,如求矩阵数据的统计参数MeanAndVarianceAlongRows、输出保存exportMatToTextFile
c++知识
  • eigen里面对象的操作:a.array() * b.array()).sum() /a.norm() / b.norm();Vec3 yc = zc.cross(xc);
  • <cmahth>里面有圆周率M_PI
  • <numeric>里面有针对利用迭代器计算的方便操作,如iota

poly.h

内容

计算三次方程和四次方程的根

c++知识
  • <complex>里面有关于负数运算的函数

nullspace.hpp

内容
  • Ax=0, s.t. :|x|=1的最小二乘解
double Nullspace
(
  const Eigen::Ref<const Mat> & A,
  Eigen::Ref<Vec> nullspace
)
c++知识
  • 可以不用模板函数,且参数是eigen类

accumulator_trait.hpp

内容

一个模板及其特殊化

template<typename T>
struct Accumulator { using Type = T; };
template<>
struct Accumulator<unsigned char>  { using Type = float; };

extract_columns.hpp

内容

一个模板函数

template <typename TCols>
Mat ExtractColumns
(
  const Eigen::Ref<const Mat> &A,
  const TCols &columns
)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值