OpenCV中的3D渲染

4
我正在进行一个关于场景3D渲染方面的项目。我使用OpenCV,我的步骤如下:
1. 拍摄场景的两张图片。 2. 使用SURF特征匹配计算对象对应关系。 3. 计算相机基础矩阵。 4. 计算视差图像。
现在有两个问题:
1. 在计算基础矩阵后,如何计算Q矩阵?(我无法校准相机) 2. 如何使用OpenCV或其他库进行3D渲染?
3个回答

6

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

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

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

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


3
通过OpenCV方法,您可以从立体校正中获得Q矩阵。
cv::stereoRectify

我认为您想要使用Q矩阵来重构三维图像。然而,您可以通过内参数进行重构,具体方法如下:
X = (u-cu)*base/d
Y = (v-cv)*base/d
Z = f*base/d 

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


2
对于可视化,可以使用 PCLVTK(PCL 的可视化基于 vtk,但对我来说更容易实现)。
如果你只想查看输出,可以使用像 Meshlab 这样的软件。
干杯

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接