使用附带的图像和示例进行OpenCV 3D重建

时间:2011-04-26 17:44:28

标签: opencv stereo-3d 3d-reconstruction

我正在尝试使用OpenCV示例文件从立体声配置执行3D表面重建。我用2个网络摄像头创建了一个立体摄像头。 我已经使用stereo_calib.cpp(https://code.ros.org/trac/opencv/browser/trunk/opencv/samples/cpp/stereo_calib.cpp?rev=4086)获得了校准参数,并使用stereo_match.cpp(https://code.ros.org/trac/opencv/browser/trunk/opencv/samples/c/stereo_match.cpp?rev=2614)生成了一个点云。使用MeshLab打开的结果点云根本不像原始场景(http://img707.imageshack.us/i/snapshot01u.png/)。

我在这里缺少什么?

重新创建的步骤:

  1. stereo_calib.cpp(在图像所在的同一文件夹中,没有参数,因此它假定为默认值)

  2. stereo_match left01.jpg right01.jpg -i intrinsics.yml -e extrinsics.yml -p cloud.asc

  3. 在MeshLab上导入cloud.asc

  4. 由于

1 个答案:

答案 0 :(得分:1)

您发布的说明和图片并未提供大量信息。但根据我的3D重建经验,似乎外在或内在参数不正确。

因此,校准出了问题。你必须得到两个摄像机的内在校准和摄像机之间的外在校准。

  1. 外部参数表示摄像机之间的相对位置和方向。因此,如果它们不正确,可能会发生任何事情,主要是点云极度退化。
  2. 内在参数描述了如何将3D点投影到2D图像上。因此,如果您有不正确的内在参数,您的点云将通过线性变换变形(假设分别存在可忽略的径向/切向失真或高阶失真)。
  3. 有很多关于3D重建和立体声主题的好文献。其中最重要的一本是Richard Hartley和Andrew Zisserman的书“Multiple View Geometry”。