三维姿态估计与立体成像技术解析
1. 三维姿态估计
三维物体的姿态估计问题可以通过单相机或多相机来解决。多相机的情况下,我们利用各个相机所看到的内容之间的对应关系,通过三角测量来确定物体的位置。这种技术的优点是即使对于未知物体或整个未知场景也能发挥作用,缺点是需要多个相机。不过,仅用一个相机也可以计算已知物体的姿态,下面我们先探讨单相机姿态估计问题。
1.1 单相机姿态估计
为了理解如何解决这个问题,我们假设有一个已知的物体,我们已经识别出该物体上的一些关键点,并且知道这些关键点在物体坐标系中的位置。当这个物体以新的姿态出现时,我们可以寻找这些相同的关键点。如果我们想弄清楚物体姿态与相机之间的关系,关键在于每个找到的点都必须位于从相机成像器上的像素位置通过相机光圈发出的特定射线上。
虽然我们无法单独知道相机到某个特定点的距离,但对于一个刚性物体,在众多这样的约束条件下,它只有一种方式能够满足所有这些约束。
在OpenCV中,解决这个问题的函数是 cv::solvePnP() 或与之密切相关的 cv::solvePnPRansac() 。这个函数原本主要用于解决棋盘格或其他校准设备的姿态问题,但实际上它可以解决一般的透视N点(PNP)问题。
例如,我们以飞机为例,假设我们知道飞机上某些特征的精确位置(在飞机的机身坐标系中),并且相信在任意视角下都能成功识别这些特征。我们可以从图像中提取特征,并尝试计算物体的姿态,使得我们已知的各个点映射到图像中观察到的位置。通常情况下,这个问题会有唯一解。
需要注意的是,PNP问题并不总是有唯一解。有两种重
超级会员免费看
订阅专栏 解锁全文
794

被折叠的 条评论
为什么被折叠?



