如何使用棋盘找到2个摄像机之间的旋转/平移

时间:2011-04-01 21:31:03

标签: c++ c opencv computer-vision

我正在使用带有C的opencv,我正在尝试获取两个摄像头之间的外部参数(旋转和平移)。

我被告知可以使用棋盘图案进行校准,但我找不到任何好的样品。我该怎么做呢?

修改

给出的建议是用棋盘校准单个相机。如果从两个视图中得到棋盘图像,你会如何找到2个摄像机之间的旋转和平移?

3 个答案:

答案 0 :(得分:2)

我使用的是http://www.starlino.com/opencv_qt_stereovision.html的代码。它有一些有用的信息,作者的代码很容易理解和分析,它涵盖了 - 棋盘校准和从立体相机获取深度图像。我认为它基于this OpenCV book

答案 1 :(得分:1)

opencv library here以及opencv书的大约3章

答案 2 :(得分:1)

来自相机的图片只是将一堆颜色样本投影到平面上。假设相机本身创建了具有正方形像素的图片,则给定像素的可能位置是从相机原点到投影像素的平面的矢量。我们将该平面称为图像平面。

一个样本没有给你那么多信息。两个样本告诉您更多 - 相机相对于由三个点创建的平面的位置:两个采样点和摄像机位置。第三个样本告诉你相机在世界上的相对位置;这将是太空中的一个点。

如果您拍摄相同的三个样本并在另一张相机拍摄的照片中找到它们,您将能够确定三个样本中摄像机的相对位置(以及它们的方向基于正确向上和向上的向量图片平面)。要获得正确的距离,您需要知道实际采样点之间的距离。对于棋盘,它是棋盘的物理尺寸。