slam学习(2)

http://www.cnblogs.com/gaoxiang12/p/4652478.html
从上面学习转载

18 // 相机内参
19 const double camera_factor = 1000;
20 const double camera_cx = 325.5;
21 const double camera_cy = 253.5;
22 const double camera_fx = 518.0;
23 const double camera_fy = 519.0;

从2D到3D(数学部分),其实就是从图像信息和深度信息的2d信息转化为点云(3d信息)

  上面两个图像给出了机器人外部世界的一个局部的信息。假设这个世界由一个点云来描述: X={x1,,xn} X={x1,…,xn}. 其中每一个点呢,有  r,g,b,x,y,z r,g,b,x,y,z一共6个分量,表示它们的颜色与空间位置。颜色方面,主要由彩色图像记录; 而空间位置,可以由图像和相机模型、姿态一起计算出来。

  对于常规相机,SLAM里使用针孔相机模型(图来自http://www.comp.nus.edu.sg/~cs4243/lecture/camera.pdf ):

  简而言之,一个空间点 [x,y,z] [x,y,z]和它在图像中的像素坐标 [u,v,d] [u,v,d] ( d d指深度数据) 的对应关系是这样的:

u=xfxz+cx u=x⋅fxz+cx

v=yfyz+cy v=y⋅fyz+cy

d=zs d=z⋅s

  其中, fx,fy fx,fy指相机在 x,y x,y两个轴上的焦距, cx,cy cx,cy指相机的光圈中心, s s指深度图的缩放因子。

  小萝卜:好晕啊!突然冒出这么多个变量!

  师兄:别急啊,这已经是很简单的模型了,等你熟悉了就不觉得复杂了。 

  这个公式是从 (x,y,z) (x,y,z)推到 (u,v,d) (u,v,d)的。反之,我们也可以把它写成已知 (u,v,d) (u,v,d),推导 (x,y,z) (x,y,z)的方式。请读者自己推导一下。

  不,还是我们来推导吧……公式是这样的:

 

z=d/s z=d/s

x=(ucx)z/fx x=(u−cx)⋅z/fx

y=(vcy)z/fy y=(v−cy)⋅z/fy

  怎么样,是不是很简单呢?事实上根据这个公式就可以构建点云啦。

  通常,我们会把 fx,fy,cx,cy fx,fy,cx,cy这四个参数定义为相机的内参矩阵 C C,也就是相机做好之后就不会变的参数。相机的内参可以用很多方法来标定,详细的步骤比较繁琐,我们这里就不提了。给定内参之后呢,每个点的空间位置与像素坐标就可以用简单的矩阵模型来描述了:

suv1=CRxyz+t s⋅[uv1]=C⋅(R⋅[xyz]+t)

  其中, R R t t是相机的姿态。 R R代表旋转矩阵, t t代表位移矢量。因为我们现在做的是单幅点云,认为相机没有旋转和平移。所以,把 R R设成单位矩阵 I I,把 t t设成了零。 s s是scaling factor,即深度图里给的数据与实际距离的比例。由于深度图给的都是short (mm单位), s s通常为1000。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你想学习 ORB-SLAM2,是一个基于特征点的稀疏直接法视觉 SLAM 系统。这个系统能够通过摄像头捕捉到的图像来构建三维地图并同时估计相机的运动轨迹。要学习 ORB-SLAM2,你可以按照以下步骤进行: 1. 了解 SLAM:首先,你需要了解什么是视觉 SLAM,包括它在机器人、增强现实和自动驾驶等领域中的应用。你可以阅读相关的论文或教材来掌握 SLAM 的基本概念。 2. 学习 ORB 特征点描述符:ORB-SLAM2 使用 ORB 特征点描述符来提取和匹配图像特征。你可以学习 ORB 特征点描述符的原理和实现方法,并了解特征点在 SLAM 中的作用。 3. 下载并阅读源代码:ORB-SLAM2 是开源的,你可以在其 GitHub 上找到代码和文档。下载代码后,阅读文档以了解系统的结构和使用方法。 4. 安装依赖库:ORB-SLAM2 使用了一些第三方库,如 OpenCV 和 Eigen。确保你已经正确安装和配置了这些库,并按照文档中的指导完成编译和配置。 5. 运行示例程序:ORB-SLAM2 附带了一些示例程序,你可以用它们来运行系统并观察其行为。首先,你可以尝试使用它们提供的演示数据集,以便更好地理解系统的工作原理。 6. 实践与调试:一旦你对系统有了基本的了解,你可以尝试将 ORB-SLAM2 应用到自己的数据集或实际场景中。在此过程中,你可能会遇到一些问题或 bug,需要进行调试和优化。 7. 学习进阶内容:一旦你熟悉了 ORB-SLAM2 的基本用法,你可以进一步学习其内部原理和算法细节。这将有助于你更好地理解系统,并能够针对特定需求进行定制和优化。 记住,学习 ORB-SLAM2 需要一定的数学和计算机视觉基础。如果你是初学者,建议先学习相关的数学和计算机视觉知识,然后再深入研究 ORB-SLAM2。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值