我正在尝试使用 OpenCV 估计相对相机姿势。就我而言,相机已经过校准(我知道相机的内在参数)。
鉴于在两个位置捕获的图像,我需要找出两个相机之间的相对旋转和平移。典型的平移约为 5 到 15 米,摄像机之间的偏航角旋转范围在 0 到 20 度之间。
为此,采用以下步骤。
- 一个。使用 SIFT/SURF 找到对应的点
- 湾。基本矩阵识别
- C。
E = K'FK
通过奇异性约束和修改 E估计基本矩阵 - d。分解基本矩阵得到旋转,
R = UWVt
或者R = UW'Vt
(U和Vt得到E的SVD) - e. 从旋转矩阵中获取真实的旋转角度
实验一:真实数据
对于真实数据实验,我通过将相机安装在三脚架上来拍摄图像。在位置 1 捕获的图像,然后移动到另一个对齐的位置并以 5 度的步长改变偏航角,并为位置 2 捕获图像。
问题/问题:
- 估计偏航角的符号与地面实况偏航角不匹配。有时 5 度估计为 5 度,但 10 度为 -10 度,15 度为 15 度。
- 在实验中,仅改变了偏航角,但估计的 Roll 和 Pitch 角具有接近 180/-180 度的非零值。
- 在某些情况下,精度非常差,估计和地面真实角度的误差约为 2-5 度。
- 如何找出比例因子以获取实际测量单位的转换?
模拟数据的行为也相同。
有没有人和我遇到过类似的问题?对如何解决它们有任何线索。任何人的任何帮助将不胜感激。
(我知道已经有很多类似问题的帖子了,所有这些都没有救我。因此再发一次。)