2012-06-01 151 views
3

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

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

现在我有两个问题

  1. 计算基础矩阵我怎么能计算Q矩阵后? (我无法校准相机)

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

回答

4

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

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

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

如果你想使用OpenGL,你要打开一个有效的OpenGL上下文。我建议你使用SFML库或Qt。这些库非常易于使用并且具有良好的文档。两者都有关于使用OpenGL进行3D渲染的教程。

1

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

如果你只是想看看到输出你可以使用像Meshlab

干杯一些软件

2

您可以通过OpenCV的方法具有立体声整改Q矩阵:

cv::stereoRectify 

我想你想要Q矩阵来重建3D。但是,可以从经由固有参数重建:

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

其中(U,V)是图像中的2D点坐标系统中,(CU,CV)是摄像机的主点,f是焦点长度,基点是基线,d是视差,(X,Y,Z)是相机坐标系中的3D点。