在定位系统中对摄像机倾斜进行编程校正

时间:2012-12-30 12:41:58

标签: image image-processing computer-vision

快速介绍:
我们正在开发一种定位系统,其工作方式如下。我们的相机位于机器人上,朝上(看着天花板)。在天花板上我们有类似地标的东西,多亏了我们可以计算出机器人的位置。它看起来像这样:

enter image description here

我们的问题:
相机倾斜了一点(我认为是0-4度),因为机器人的表面并不完美均匀。这意味着,当机器人转身但停留在相同的坐标时,摄像机会看到天花板上的不同位置,因此我们的定位程序会产生机器人的不同位置,即使它只是转身并且没有移动位。

我们目前的(硬编码)解决方案:
我们从相机拍摄了一些测试照片,围绕镜头轴转动。从图片中我们推断出它是倾斜的。在图片的“向上方向”4度。使用一些简单的几何变换我们已经设法减少倾斜效果并找到真实的相机位置。在下面的图片中,灰点标记图片的中心,黑点是相机所在天花板上的真实位置。从灰点转换黑点(计算其位置以校正灰点位置)。你可以很容易地注意到,灰色圆点在天花板上形成一个圆圈,黑点是这个圆圈的中心。

enter image description here

enter image description here

enter image description here

enter image description here

我们解决方案的问题:
我们的方法完全不可移植。如果我们将相机移动到新机器人,则必须完全重新校准倾斜的角度和方向。因此,我们希望将校准阶段留给用户,这将要求获取一些图片,由他评估倾斜参数,然后在程序中设置它们。我的问题是:你能想到更好(更自动)的解决方案来计算倾斜参数或修正图片的倾斜度吗?

1 个答案:

答案 0 :(得分:5)

干得好。进行自动校准是一个很好的挑战。

一个想法是使用屋顶瓦片中的平行线: 如果相机是完全水平的,那么所有线条也将在图片中平行。 如果相机倾斜,则所有线条都将被割线(它们在消失点相交)。

现在,这可能很难实现。使用您正在使用的相机时,需要首先校正失真,使线条确实笔直。

您的实用方法可能更简单,更强大。正如您所描述的那样,它似乎可以自动化以变得用户友好。让机器人自行打开并务实地识别哪个点保留在图片中的相同位置。