我正在尝试从头开始编写一个可以估计相机姿势的程序。我对任何编程语言都开放,并使用内置函数/方法进行特征检测......
我一直在探索估计SLAM,PTAM,DTAM等姿势的不同方法......但我真的不需要跟踪和映射,我只需要这个姿势。
你们中的任何人都可以建议一种可以帮助我的方法或任何资源吗?我知道什么是姿势,并且大致了解如何估算它,但我找不到任何解释如何做的资源。
我在考虑从录制的视频开始,从视频中提取特征,然后使用这些特征和几何来估计姿势。
(请原谅我的天真,我不是一个有计算机视觉的人,对所有这些都是新手)
答案 0 :(得分:4)
为了计算相机姿势,您需要在图像中有一些已知点给出的参考帧。 这些已知点例如来自calibration pattern,但也可以是图像中的一些已知的地标(例如,Gizeh金字塔的4个角落)。
在给定相机看到的已知标志(即,从2D点找到3D位置)的情况下估计相机姿势的问题通常被称为 PnP 。 OpenCV为此问题提供了ready-made solver。
但是,您首先需要校准您的相机,即您需要确定它的独特之处。 您需要估算的参数称为内在参数,因为它们取决于相机焦距,传感器尺寸......但不取决于相机位置或方向。 这些参数将在数学上解释如何将世界点投影到相机传感器框架上。 您可以从已知的平面模式中估计它们(同样,OpenCV也有一些ready-made functions。
答案 1 :(得分:0)
通常,您只能相对于给定的参考系提取摄像机的姿势。 估计相机的一个视图与另一个视图之间的相对姿势是很常见的。 来自两个不同相机的同一场景的两个视图之间的最一般关系由基本矩阵(google it)给出。 您可以根据图像之间的对应关系计算基本矩阵。例如,查看Matlab实现: http://www.mathworks.com/help/vision/ref/estimatefundamentalmatrix.html 计算完之后,您可以使用基本矩阵的分解来获得摄像机之间的相对姿势。 (以此为例:http://www.daesik80.com/matlabfns/function/DecompPMatQR.m)。
如果你有校准过的相机,你可以使用类似的程序,然后你需要基本矩阵而不是基金。