Opencv 单目摄像机的运动估计

Opencv 单目摄像机的运动估计,opencv,camera,rotation,translation,motion,Opencv,Camera,Rotation,Translation,Motion,我读过讲座和主题,从几周前开始我就在做这方面的工作,但我找不到方法来描述我相机的运动。我不想重建3D世界。我正在使用OpenCV 我有一个单目照相机和一个不认识的单词。我有固有参数和畸变参数。我有特征和对应关系。我在寻找两帧之间的旋转和平移。我想考虑我的第一个图像作为XYZ轴的起源。 我使用基本矩阵和基本矩阵来寻找外部参数(R,T),但我不相信。我得到了以下结果: R [0.040437..., 0.116076..., -0.992416..., 0.076999..., -0.99063..

我读过讲座和主题,从几周前开始我就在做这方面的工作,但我找不到方法来描述我相机的运动。我不想重建3D世界。我正在使用OpenCV

我有一个单目照相机和一个不认识的单词。我有固有参数和畸变参数。我有特征和对应关系。我在寻找两帧之间的旋转和平移。我想考虑我的第一个图像作为XYZ轴的起源。 我使用基本矩阵和基本矩阵来寻找外部参数(R,T),但我不相信。我得到了以下结果:

R [0.040437..., 0.116076..., -0.992416..., 0.076999..., -0.99063..., -0.112731..., -0.996211.., -0.071848.., -0.048994...] T [0.6924183…;0.081694…;-716885…]

如何检查它们是否良好

我计算了欧几里德距离,以便在3D中看到距离,但我有错误的值

请问,有谁能给我一些细节,或指导我?我希望我能解释清楚


用词问候你是指世界吗?这个问题也不是stackoverflow的主题,因为它涉及的是理论而不是代码


回答你的问题。如果你加上R和T,那么你可以计算每个点的三维坐标。由此,您可以将每个点重新投影到另一个摄影机上,并计算观测点和预测点之间的剩余误差。如果误差在一个像素范围内,那么它可能是有效的。

基本上这样,每个连续帧的比例因子都是未知的,因此可以得到R和T的奇怪值。但是,可以使用一些初始化,如已知运动,来执行场景的第一次三角剖分。接下来,您可以使用solvePnP来计算Next[R | T]

试着阅读一下PTAMM,它是单眼SLAM最有趣的实现之一


是的,我很抱歉。我忘了说我在用OpenCV!对于R和T,我必须找到反投影矩阵,然后使用triangulatePoint()找到每个点的3D坐标,正如你所说的。我可以使用SolvePnP()重新投影吗?我说得对吗?