1

我有一个非平面对象,它有 9 个点,在 3D 中具有已知尺寸,即所有边的长度都是已知的。现在给定这个形状的 2D 投影,我想重建它的 3D 模型。我基本上想在现实世界中检索这个对象的形状,即 3D 中不同边之间的角度。例如:给定表格每个部分的所有尺寸和 2D 图像,我正在尝试重建其 3D 模型。

在此处输入图像描述

到目前为止,我已经阅读了有关单应性、透视变换、procrustes 和基本/基本矩阵的内容,但还没有找到适用于此的解决方案。我是新手,所以可能错过了一些东西。这方面的任何方向都会非常有帮助。

4

1 回答 1

2

在您的问题中,您提到您希望仅使用对象的单个视图来实现此目的。在这种情况下,单应性或基本/基本矩阵不会帮助您,因为这些需要至少两个场景视图才能有意义。如果您对要重建的对象的形状没有任何先验知识,那么您将丢失的关键信息是(相对)深度,在这种情况下,我认为这是两种可能的解决方案:

  • 利用学习算法。有大量关于深度网络的 6dof 对象姿态估计的文献,例如参见这篇论文。如果您使用这些网络,则不必直接处理深度,因为这些网络经过端到端训练以估计SO(3).

  • 添加更多图像并使用密集的光度计 SLAM/SFM 管道,例如弹性融合。但是,在这种情况下,您将需要对生成的模型进行分段,因为它们产生的估计是针对整个环境的,这取决于场景,这可能很困难。

但是,正如您在评论中提到的,如果您对模型的几何具有非常强的先验,则可以按比例重建模型。对于平面对象(长方体只是它的扩展),您可以使用这个简单的算法(这或多或少是他们在这里所做的,还有其他方法,但我发现它们有点混乱,等式-明智的):

//let's note A,B,C,D the rectangle in 3d that we are after, such that 
//AB is parellel with CD. Let's also note a,b,c,d their respective
//reprojections in the image, i.e. a=KA where K is the calibration matrix, and so on.

1) Compute the common vanishing point of AB and CD. This is just the intersection
   of ab and cd in the image plane. Let's call it v_1.
2) Do the same for the two other edges, i.e bc and da. Let's call this 
   vanishing point v_2.
3) Now, you can compute the vanishing line, which will just be
   crossproduct(v_1, v_2), i.e. the line going through both v_1 and v_2. This gives 
   you the orientation of your plane. Let's write its normal N.
5) All you need to find now is the boundaries of the rectangle. To do
   that, just consider any plane with normal N that doesn't go through
   the camera center. Now find the intersections of K^{-1}a, K^{-1}b,
   K^{-1}c, K^{-1}d with that plane. 

如果您需要复习消失点和消失线,我建议您查看Hartley-Zisserman 的书的第 213 和 216 页。

于 2018-10-06T09:45:56.650 回答