仅使用立体图像对并且没有校准相机进行3D重建

时间:2015-06-04 05:02:39

标签: matlab image-processing 3d matlab-cvst stereoscopy

我有两个空间图像,但我没有相机校准输入。如何通过使用 imread 读取两个图像来开发3D模型? 此外,我尝试遵循此代码,但这也需要相机参数。

http://in.mathworks.com/discovery/stereo-vision.html

我还试图想出一个3D稀疏建模,但它不起作用。

http://in.mathworks.com/help/vision/examples/sparse-3-d-reconstruction-from-two-views.html

我可以使用高斯滤波器或类似的东西从立体声对输入图像数据,然后匹配它们以进行部门估计。如果我得到深度,我可以制作3D模型。

请建议我可以快速完成哪些工作。

2 个答案:

答案 0 :(得分:0)

首先,您不能准确地说出3D模型所需的内容。您是否需要欧几里德模型(即知道所有边的长度?)还是只需要缩放(度量重建)?

其次你对图像有什么了解?他们是在不同的时间点从同一台相机拍摄的吗?不同的相机?摄像机是如何安排的?有些特殊情况可能会使3D恢复更容易,但在一般情况下,如果没有相机校准,您将无法获得度量重建。

说过你可以尝试从消失点或[{3}}

上阅读this paper校准

如果你知道相机的类型,有人可以获得足够好的校准参数 - 可以防止相机的质量。

这背后的几何形状并非微不足道,我们需要在推荐解决方案之前了解更多信息。

答案 1 :(得分:0)

问题在于,如果没有任何校准,你所能得到的只是一个未知的投射变换的重建。这意味着您将无法获得对象的绝对大小,并且您的角度将是错误的。最好的办法是校准你的相机。

如果你不能这样做,你可以使用estimateUncalibratedRectificationdisparity功能获得部分路径。见example。一旦你有差异,你将不得不弥补假的相机参数,如焦距,光学中心和相机之间的距离,并编写自己的代码进行重建。同样,这将是一个新的投射重建。请参阅Bradsky和Kaehler的“学习OpenCV”。