Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing 给定二维投影和已知多边形尺寸,在三维重建非平面多边形_Image Processing_Computer Vision_Transformation_Robotics_Projective Geometry - Fatal编程技术网

Image processing 给定二维投影和已知多边形尺寸,在三维重建非平面多边形

Image processing 给定二维投影和已知多边形尺寸,在三维重建非平面多边形,image-processing,computer-vision,transformation,robotics,projective-geometry,Image Processing,Computer Vision,Transformation,Robotics,Projective Geometry,我有一个非平面对象,有9个点,三维尺寸已知,即所有边的长度已知。现在给出这个形状的2D投影,我想重建它的3D模型。我基本上想在现实世界中检索这个物体的形状,即3D中不同侧面之间的角度。例如:给定表格每个部分的所有尺寸和一个2D图像,我试图重建它的3D模型 到目前为止,我已经阅读了关于单应、透视变换、procrustes和基本/基本矩阵的内容,但还没有找到适用于这里的解决方案。我是新来的,所以可能错过了什么。这方面的任何指导都会非常有用 在您的问题中,您提到您希望仅使用对象的单个视图来实现这一点

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


到目前为止,我已经阅读了关于单应、透视变换、procrustes和基本/基本矩阵的内容,但还没有找到适用于这里的解决方案。我是新来的,所以可能错过了什么。这方面的任何指导都会非常有用

在您的问题中,您提到您希望仅使用对象的单个视图来实现这一点。在这种情况下,同音字或基本/基本矩阵对您没有帮助,因为它们至少需要两个场景视图才能理解。如果对要重建的对象的形状没有任何先验知识,那么缺少的关键信息是(相对)深度,在这种情况下,我认为这是两种可能的解决方案:

  • 利用学习算法。关于深度网络的6自由度物体姿态估计有大量文献,例如。如果你使用这些网络,你就不必直接处理深度问题,因为这些网络都经过了端到端的训练,可以在
    SO(3)
    中估计姿势

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

但是,正如您在评论中提到的,如果您对模型的几何图形有很强的先验知识,则可以按比例重建模型。对于平面对象(长方体只是它的一个扩展),您可以使用这个简单的算法(这或多或少就是他们所做的,还有其他方法,但我发现它们有点混乱,从方程角度看):


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

有关深度,是否有任何方法可以利用多边形的尺寸来重建三维模型?例如,对于长方体,我可以想象如何使用尺寸信息来实际重建原始立方体。@ShivamMangla是的,谢谢你指出这一点!我不知道你对你的物体有这样的先验知识(我认为这张图片只是一个例子),所以我给出了这样一个一般性的答案。我已经编辑了答案,我希望它会有意义。不过很抱歉格式化了。如果他们在这里添加乳胶支撑,那就太酷了。。。
//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.