slam14讲 ch7三角测量
时间: 2025-03-13 19:19:28 浏览: 39
### 关于SLAM14讲第七章三角测量的内容
#### 什么是三角测量?
三角测量是一种基于几何原理的技术,用于估算三维空间中的点的位置。在单目视觉SLAM中,由于仅依靠一张图像无法获取像素的深度信息,因此需要利用两幅或多幅图像之间的视差来进行计算[^2]。
#### 如何实现三角测量?
三角测量的核心在于构建两个相机投影矩阵并应用`cv::triangulatePoints()`函数完成深度估计。具体来说:
- **输入参数**:
- `projMatr1` 和 `projMatr2`: 这些是描述两次观测时相机姿态的投影矩阵。
- `projPoints1` 和 `projPoints2`: 它们代表同一特征点在这两种不同视角下的二维图像坐标位置。
- **输出参数**:
- `points4D`: 返回齐次形式下重建出来的三维点集[^4]。
随后还需要进一步处理这些齐次坐标的点数据以便得到最终的标准欧几里得空间表达方式。例如,在实际编程操作过程中会执行如下片段来规范化结果[^3]:
```cpp
for (int i = 0; i < pts_4d.cols; ++i) {
Mat x = pts_4d.col(i);
x /= x.at<float>(3, 0); // 将其转化为单位长度向量
Point3d p(x.at<float>(0, 0), x.at<float>(1, 0), x.at<float>(2, 0));
points.push_back(p);
}
```
以上代码展示了如何遍历所有由`cv::triangulatePoints()`产生的四维齐次坐标,并将其转换成常规使用的笛卡尔直角坐标系内的三维点集合。
#### 实践意义
通过上述方法可以有效恢复场景结构以及摄像机运动轨迹,这对于建立完整的环境模型至关重要。同时这也是双目立体匹配算法的基础之一[^1]。
阅读全文
相关推荐
















