4

我正在做一个关于场景 3D 渲染的项目。我正在使用 OpenCV。我正在做的步骤是这样的:

  1. 拍摄两个场景的图像。
  2. 使用 SURF 特征匹配计算对象对应关系。
  3. 计算相机基本矩阵。
  4. 计算视差图像。

现在我有两个问题

  1. 计算基本矩阵后,如何计算 Q 矩阵?(我无法校准相机)

  2. 如何使用 opencv 或任何其他库进行 3D 渲染?

4

3 回答 3

6

对于 3D 部分,您可以使用 OpenGL 或 PCL 渲染场景。你有两个解决方案:

  • 对于每个像素,您使用从相机图像中提取的正确颜色创建一个点。这将为您提供可以使用 PCL 处理的点云(例如,用于 3D 特征提取)。
  • 您应用三角测量算法,但为了应用此算法,您必须拥有相机的外部矩阵。

您可以在此处找到有关这些技术的更多信息:

如果你想使用 OpenGL,你必须打开一个有效的 OpenGL 上下文。我向您推荐SFML库或 Qt。这些库非常易于使用并且有很好的文档。两者都有关于使用 OpenGL 进行 3D 渲染的教程。

于 2012-06-01T18:00:46.890 回答
3

您可以通过 openCV 方法从立体校正中获得 Q 矩阵:

cv::stereoRectify

我认为您希望 Q 矩阵重建 3D。但是,您可以通过以下方式从内在参数重建:

X = (u-cu)*base/d
Y = (v-cv)*base/d
Z = f*base/d 

其中 (u,v) 是图像坐标系中的二维点,(cu,cv) 是相机的主点,f 是焦距,base 是基线,d 是视差,(X,Y, Z) 是相机坐标系中的一个 3D 点。

于 2014-05-05T09:59:00.960 回答
2

对于可视化,可以使用PCLVTK(PCL 的可视化是基于 vtk,但对我来说实现起来更简单)。

如果你只是想看看输出,你可以使用一些软件,比如Meshlab

干杯

于 2013-07-17T04:06:24.107 回答