openMVG nullspace ratio 零空间比率

文章可能存在错误。

先介绍一下线性空间,所谓线性空间即$Ax=b $ A中向量的线性组合产生的空间即为线性空间。

零空间自然是 A x = 0 Ax=0 Ax=0时 A的线性空间。
二者有区别,具体这篇有讲 https://blog.csdn.net/daduzimama/article/details/123823651 ----松下J27

而“零空间比例"(nullspace ratio)带入到openMVG则是6点法求解2d3d投影矩阵时,奇异值分解部分V的倒数第二个奇异值与第一个奇异值之间的比值为零空间比例。 本质上算是衡量解的线性相关。

当这个比值较小时,意味着倒数第二个奇异值接近于0,从而表示矩阵A存在较大的零空间。换句话说,矩阵A的列在某些方向上存在线性相关,因此有较大的零空间。而当这个比值较大时,表示矩阵A的零空间较小,矩阵A的列更加独立。

个人觉得(可能的错误 ) 矩阵之间列的秩比较大,也就是说选的点比较有代表性。

double NullspaceRatio
(
  const Eigen::Ref<const Mat> & A,
  Eigen::Ref<Vec> nullspace
)
{
  Eigen::JacobiSVD<Mat> svd(A, Eigen::ComputeFullV); //奇异值分解拿到最右边的V
  nullspace = svd.matrixV().col(A.cols()-1);//就是v最后一列
  return svd.singularValues()(A.cols()-2) / svd.singularValues()(0);//这里有个线性空间A的零空间概念 跑出来是		ratio	0.0035134452808048252	double   实际上大于 if (ratio > 1e-5) 就被认为是个正确的解(值的大小)
}

这部分代码来自于main_sfm_localization SixPointResectionSolver 点进去 再点 solve 中的 ratio = NullspaceRatio(A, p);

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值