计算相机运动PnP

在运动估计过程中,得到了两幅图片的特征匹配后,下一步要做的就是计算这两张图片发生的相对运动。特征点对在第一幅图片中的3D信息是知道的,也就是知道特征点在世界坐标系下的3D坐标在第二幅图片中的像素坐标(这在slam中是常见的求解位姿的情况)。有了这样的对应关系,对相机运动进行求解的方法叫做PnP:Perspective-n-Point。

PnP也叫做3D-2D的运动估计方法,它与2D-2D的对极几何求解方法不同的是,对极几何需要8个或8个以上的点对,且存在初始化,纯旋转和尺度的问题。然而,如果两张图像中一张特征点的3D位置已知,那么至少只需3个点对(以及一个额外点验证结果)就可以估计相机运动。[摘自十四讲]

计算机视觉以及slam发展了这么多年,前人为了解决这个问题已经提出了多种方法:简单粗暴的代数方法DLT,基于几何方法求解的P3P,不太熟悉的EPnP和UPnP,还有非线性优化方法。
这些方法在OPenCV中有写好的函数solvePnP,它的函数原型:
https://docs.opencv.org/3.3.0/d9/d0c/group__calib3d.html#ga549c2075fac14829ff4a58bc931c033d
这个函数实现的功能是求解PnP,默认使用SOLVEPNP_ITERATIVE的方法去求解PnP,原理是最小化重投影误差;还可以选择SOLVEPNP_P3P等方法。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
激光雷达是一种使用激光束来感知周围环境的传感器,它能够准确测量目标物体的距离和三维位置。激光雷达通过发射激光束,经过目标物体后,通过接收激光的反射信号来计算目标的位置。它能够提供精确的三维信息,对于无法通过传统相机捕捉到的目标物体,如透明物体或者低反射率的物体,激光雷达具有很大优势。在自动驾驶、智能机器人和三维建模等领域,激光雷达被广泛应用。 相机PNP是一种用于计算相机位姿的算法。PNP代表了 “Perspective-n-point”的缩写,它利用相机观测到的物体的图像点与物体的三维点之间的对应关系,通过解算出相机的内外参数,从而计算相机的姿态信息。PNP算法常常与相机标定一起使用,先通过标定从相机中提取出相机的内参数(如焦距、畸变参数等),然后通过PNP算法求解相机的外参数(即相机运动的旋转和平移)。 激光雷达和相机PNP在应用中常常结合使用。激光雷达提供了目标物体的精确三维位置信息,而相机PNP则可以计算相机在世界坐标系下的姿态,即相机的位置和朝向。将这两者结合,可以实现同时获取目标物体的三维位置和相机位姿信息。这在自动驾驶、机器人导航和三维重建等领域非常重要。通过激光雷达和相机PNP的组合,可以实现更高精度和准确性的目标识别和定位,为实现智能化和自主化提供了有力的支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值