首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >OpenCV从机器人摄像机中移除视角

OpenCV从机器人摄像机中移除视角
EN

Stack Overflow用户
提问于 2018-07-12 20:15:14
回答 2查看 1.4K关注 0票数 2

我有一架带有向下摄像头和红外感应器的飞行无人机,并且正在为无人机做SLAM的工作。无人机只飞越平面表面。要使用相机馈送和opencv构建无人机环境的地图,您需要从拍摄到的图像(由高度、滚动、俯仰和偏航引入)中删除摄像机的视角,以便图像中的距离是准确的。

我已经研究过openCV的方法,但它们似乎都需要事先对摄像机进行校准,才能使用脚本确定相机的方向。

如果你知道无人机(和摄像机)的方向,有没有任何方法可以可靠地转换图像中的点,使其间距是恒定的?我可以从IMU那里获得无人机方位的数据。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-12 23:11:42

不幸的是,无人机的位置和方向不准确会导致你建议的方法上的错误。

相机校准是一个恼人的过程,但如果你想要一个黑匣子解决方案的话,这可能是你最好的选择。

但是如果你想试一试,请看下面我的评论。

您可以应用opencv的warp透视图函数来尝试删除摄像机的透视图,但请注意,有几个强有力的假设,可能不是最好的解决方案:

  • 你有关于你的无人机位置的完美信息
  • 你知道摄像机相对于无人机身体的位置吗
  • 你正飞过一个完美的平面

在这种情况下,您构建了3个转换矩阵来表示:从地面到无人机的转换,从无人机到摄像机的转换,以及通过乘以前两个矩阵从地面到摄像机的转换。

T_{地面到摄像机}=T_{地面到无人机}*T_{无人机到摄像机}

该矩阵的逆可以作为warpPerspective的输入,将像素转换为地面帧。这是一个博客文章,它很好地解释了函数的输入和输出参数。代码是在c++中提供的,但是在python中实现应该相对简单。

票数 2
EN

Stack Overflow用户

发布于 2018-07-12 23:08:47

打开CV的远景转换()函数似乎是合适的,转换一个框架,就像它是从上面使用OpenCV获取的一样这个问题我想回答你的很多问题。对旋转和倾斜的补偿可以编码在3x3矩阵中,以正确地转换图像。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51313763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档