Python OpenCV立体摄像头位置
作者:互联网
我想确定立体摄像机相对于其在世界坐标系中的先前位置的位置和方向.我使用的是大黄蜂XB3相机,立体声对之间的运动约为几英尺.
这会走上正确的轨道吗?
>获得每对的校正图像
>检测/匹配特征点校正图像
>计算基本矩阵
>计算基本矩阵
谢谢你的帮助!
解决方法:
好吧,这听起来像您对自己想做的事情有充分的了解!拥有预先校准的立体相机(如Bumblebee)将在需要时提供点云数据-听起来您基本上也想使用相同的图像执行视觉测距(当然是正确的术语),并且GPS发生故障时,可从最后一个已知的GPS位置提供绝对方向.
首先是第一件事-我想知道您是否看过文献中有更多想法:和以往一样,通常只是知道要为Google做什么.导航“传感器融合”的整个想法(尤其是在GPS丢失的建筑区域中)促使了整个研究领域.因此,以下(相交)研究领域可能对您有所帮助:
> Navigation in ‘urban canyons’
> Structure-from-motion for navigation
> SLAM
> Ego-motion
所有这些方法都将遇到的问题包括:
>处理静态和动态场景(即纯粹基于摄像机运动而变化的场景-c.f.由于场景中发生独立运动而变化的其他场景:树木移动,驶过的汽车等)
>将视觉运动量与真实运动联系起来(我提到的另一种“校准”形式是物体很小还是很远?这是立体信息可以证明非常方便的地方,正如我们将看到的…)
>问题的分解/优化-特别是随着时间的推移处理沿摄像机路径累积的错误并具有异常特征(交易的所有技巧:捆扎调整,树胶等)
所以,无论如何,务实地说,您想在python中做到这一点(通过OpenCV绑定)吗?
如果您使用的是OpenCV 2.4,则(组合的C/C++和Python)新的API文档为here.
首先,我建议您看以下示例:
/OpenCV-2.4.2/samples/python2/lk_homography.py
它使用功能cv2.findHomography提供了从光流进行基本自我运动估计的一个很好的实例.
当然,该单应性H仅在点共面时才适用(即,在相同的投影变换下位于同一平面上-因此它将在漂亮的平坦道路的视频上工作).但是-根据相同的原理,我们可以使用基本矩阵F来表示对极几何形状中的运动.这可以通过非常相似的函数cv2.findFundamentalMat来计算.
最终,正如您在问题中正确指定的那样,您需要基本矩阵E-因为它是在实际物理坐标中运行的矩阵(不仅是沿极点的像素之间的映射).我一直认为基本矩阵是对基本矩阵的推广,通过该矩阵可以省去相机固有校准(K)的(非本质)知识,反之亦然.
因此,这些关系可以正式表示为:
E = K'^T F K
因此,您毕竟需要了解一些立体相机校准K!参观著名的哈特利剧院Zisserman book了解更多信息.
例如,您可以使用函数cv2.decomposeProjectionMatrix分解Essential矩阵并恢复R方向和t位移.
希望这可以帮助!最后一个警告词:这绝不是解决现实世界数据复杂性的“已解决问题”-因此正在进行的研究中!
标签:stereo-3d,opencv,computer-vision,python 来源: https://codeday.me/bug/20191127/2075826.html