算矩阵的基础知识
解析本质、基础、单应矩阵的自由度
1 寻找初始像对
1.1手动选择ID
1.2自动筛选 ①prior focal length存在情况下,开始筛选
- 匹配点数由小到大排序
- 第二张候选影像的匹配数目大于init_min_num_inliers(100)
- R和t满足启动阈值
- 从cv角度,3*3矩阵9个参数
- 因为up2scale自由度-1
- 又因为rank(F)=2自由度-1
- 从摄影测量角度:
- 5pose
- 确定射线位姿)
- +2 intrinsic
- fx和fy,通常s=0,主点坐标(cx,cy)不参与优化
- 5pose
- ①八点法,有唯一解,考虑噪声实际是转为:构建超定方程 ,最小二乘求解。
- 注意:由于会有误差,我们需要强制约束rank=2
- 具体方法:将SVD分解的特征值最后一项(最小项)置为0再重构,代码如下:
- 注意:由于会有误差,我们需要强制约束rank=2
// Enforcing the internal constraint that two singular values must non-zero
// and one must be zero.
Eigen::JacobiSVD fmatrix_svd(
ematrix_t.transpose(), Eigen::ComputeFullU | Eigen::ComputeFullV);
Eigen::Vector3d singular_values = fmatrix_svd.singularValues();
singular_values(2) = 0.0;
const Eigen::Matrix3d F = fmatrix_svd.matrixU() *
singular_values.asDiagonal() *
fmatrix_svd.matrixV().transpose();
- ②七点法:9个未知参数用7个点解,未知数>方程数。可以构建新的方程来解决:
- 有9-7=2个nullspace,把方程改写为:
- F=λF1+μF2,λ+μ=1
- 有9-7=2个nullspace,把方程改写为:
- cv角度:6-1=5
- 相机位姿6pose(3位置、3角度)
- 尺度up2scale -1
- 摄影测量角度:直接5pose定向元素
- 基础矩阵内涵相机内参,本质矩阵无关内参
- 8点法,与8点法求F同,构建超定方程解最小二乘
- 注意强制约束,通常是令λ1=(λ1+λ2)/ 2,λ2=λ1,λ3=0
- 5点法,非线性求解过程复杂,一般都是计算基础矩阵F后结合内参K求解本质矩阵E(如orbslam2)
- 综合来说5点法比8点法好一些,8点法适用于车载的forward-facing,但在sideways-facing表现不如5点法
- SVD解出4个解
- 三角化求出前方3D点最多的那组姿态参数
推荐阅读
- 深度学习|Yolov5训练指南—CoCo格式数据集
- 人工智能|用PaddlePaddle打比赛!
- 图像对比度修正|论文学习笔记: Learning Multi-Scale Photo Exposure Correction(含pytorch代码复现)
- 人工智能计算机视觉之OpenCV学习详解一
- 人工智能|31个Python实战项目教你掌握图像处理,PDF开放下载
- 算法|刷爆 AI 圈!基于 Transformer 的 DALL-E 代码刚刚开源了
- 大数据|OpenAI魔法模型DALL-E论文、代码公布!
- 算法|一文详解三维重建中的立体匹配
- 算法|三维重建——相机几何参数标定