【三维重建】将左相机的深度图转换到右相机下
相机矩阵(Camera Matrix):https://blog.csdn.net/zb1165048017/article/details/71104241
相机矩阵
假设有一个3*4
的相机矩阵,可以将齐次3D坐标转换为2D图像坐标。矩阵表示如下:
这里的'|'
代表的是增广矩阵,其中M
代表可逆的3*3
矩阵,C
是列向量,代表世界坐标系中相机位置。
相机矩阵可以将3D点投影到2D空间,但是有些缺点:
- 没有提供相机的摆放姿态
- 没有提供相机的内部几何特征
- 不能使用镜面光照,因为无法在相机坐标系中得到表面法线向量
c
和t
的区别
这里的c
和坐标变换中的t
需要进行区分:
c
:指相机的原点在世界坐标系的坐标(世界坐标系中相机的位置)t
:指世界坐标系的原点在相机坐标系的坐标
相机矩阵分解
为了解决上述问题,可以将相机矩阵分解为两个矩阵的乘积:内参矩阵K
和外参矩阵[R|-RC]
其中,
3*3
的上三角阵K
描述了相机的内参比如焦距;3*3
的旋转矩阵R
的列表示相机参考帧的世界坐标轴方向;- 向量
C
是世界坐标系中的相机中心
向量就给出了相机坐标系中的世界原点坐标。
具体相机矩阵分解见最上面的原文链接。
外参矩阵
相机的外参矩阵描述的是世界坐标中相机的位置,及其指向方向。有两个成分:旋转矩阵R和平移向量t。它们并非对应相机的旋转和平移。
外参矩阵以刚体变换矩阵的形式可以记为:左边一个3*3
旋转矩阵,右边一个3*1
的平移向量。
常见的做法是在底部增加一行(0,0,0,1)
,这使得矩阵为方形的,允许我们进一步将矩阵分解为旋转和平移矩阵。
这个矩阵描述的就是如何将世界坐标系中的点变换到相机坐标系中,向量t
描述的是世界坐标系原点在相机坐标系中的位置,R
的列代表的是相机坐标系中世界坐标系轴的方向。
总结:
外参的主要作用就是描述世界坐标系到相机坐标系的转换。
内参矩阵的R和机姿态的的区别:
- R代表相机坐标系中世界坐标系轴向,也就是当前的世界坐标的变换需要变换到相机坐标系中,即所谓的世界坐标中的变换相对于相机坐标系是怎么样的。
the extrinsic matrix is that it describes how the world is transformed relative to the camera
. - 代表世界坐标系中相机坐标系的轴向,也就是当前的相机坐标系需要怎么变换到世界坐标系中,即所谓的相机坐标系中的变换相对于世界坐标系是怎样的,
Rc be the rotation matrix describing the camera's orientation with respect to the world coordinate axes
。
因而可以这样做:定义一个描述相机中心在世界坐标系中的位置的向量C,然后让代表相机在世界坐标系旋转到当前姿态需要的旋转矩阵。那么描述相机姿态的变换矩阵就是(|C)。同样在底部添加一个行向量(0,0,0,1),那么外参矩阵就是相机姿态矩阵的逆。
倒数第三个等式变换到倒数第二个等式,使用的转置是因为是正交阵,证明。
此处平移矩阵的逆就是他的负数平移向量,进而可以得到外参矩阵参数和相机姿态是直接相关的:
深度图与3D点云互转
https://blog.csdn.net/a40850273/article/details/122410448
深度图像和3D点云互转只涉及相机内参矩阵,其中
- fx,fy分别为镜头x,y方向的焦距(成像平面到镜头的距离)
- cx,cy分别是光心(镜头中心点在成像平面的投影)在图像坐标系(原点位于图像左上角,水平为x,垂直为y)下的坐标。
世界坐标点转化到相机像素平面的过程
《视觉SLAM14讲》P99
其中,K
为3x3内参
,T
为外参,Pw
为4x4
的世界坐标点。
所以从二维深度图转世界坐标系下的三维点是:
其中,K
为内参,Z
为深度,t
为平移向量。
因为
即
所以二维深度图也可以表示为:
其中
即深度图像,u
和v
为像素坐标。
实例
代码题:已知深度图和相机内参和外参,完成以下测试
相机内参 , , 外参 将深度图 warp 到右图
其中,
从上到下第二个公式中:为右相机下二维深度图(没有进行归一化的),和为右图和世界坐标系的对应关系
第四个公式中:表示右相机的二维深度图的深度值,其实表示取深度图中的Z坐标值
第五个公式其实就相当于首先进行归一化处理,然后乘上得到右相机下的深度图(归一化的)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具