slam学习(2)

本文介绍了如何通过2D图像信息和深度信息转换为3D点云的过程,详细解释了针孔相机模型下,空间点与图像像素坐标之间的转换公式,并给出构建点云的方法。
部署运行你感兴趣的模型镜像
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,zr,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] (dd指深度数据) 的对应关系是这样的:

u=xfxz+cxu=x⋅fxz+cx

v=yfyz+cyv=y⋅fyz+cy

d=zsd=z⋅s

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

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

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

  这个公式是从(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/sz=d/s

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

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

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

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

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

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


您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值