Python 2.7 投影三维重建还是欧几里得三维重建?

Python 2.7 投影三维重建还是欧几里得三维重建?,python-2.7,matlab,triangulation,3d-reconstruction,projective-geometry,Python 2.7,Matlab,Triangulation,3d Reconstruction,Projective Geometry,如果我得到一个欧几里德重建结果或者仅仅是一个投影结果,我在理解上有困难。首先让我告诉你我做了什么: 我有两张立体图像。图像为SEM图像,并呈等中心倾斜。倾斜角度差为5°。利用SURF对应关系和RANSAC,采用归一化8点算法计算基本矩阵。 然后对图像进行校正,我进行密集立体匹配: minDisp = -16 numDisp = 16-minDisp stereo = cv2.StereoSGBM_create(minDisparity = minDisp,

如果我得到一个欧几里德重建结果或者仅仅是一个投影结果,我在理解上有困难。首先让我告诉你我做了什么:

我有两张立体图像。图像为SEM图像,并呈等中心倾斜。倾斜角度差为5°。利用SURF对应关系和RANSAC,采用归一化8点算法计算基本矩阵。 然后对图像进行校正,我进行密集立体匹配:

minDisp = -16
numDisp = 16-minDisp
stereo = cv2.StereoSGBM_create(minDisparity = minDisp,
                               numDisparities = numDisp)
disp = stereo.compute(imgL, imgR).astype(np.float32) / 16.0
这给了我一个视差图,即这个5x5矩阵(值范围从-16到16)。我屏蔽掉坏像素(-17),并使用展平的disp数组计算图像的z分量

                -0.1875 -0.1250 -0.1250  0
                -0.1250 -0.1250 -0.1250 -17
    disp =      -0.0625 -0.0625 -0.1250 -17
                -0.0625 -0.0625  0       0.0625
                 0       0       0.0625  0.1250

#create mask that eliminates the bad pixel values ( = minimum values)
mask = disp != disp.min() 
dispMasked = disp[mask]

#compute z-component
zWorld = np.float32(((dispMasked) * p) / (2 * np.sin(tilt)))
这是一种简化的实三角剖分形式,假设使用三角方程进行平行投影。使用校准对象计算像素常数。所以我得到的高度单位是mm。视差以像素为单位计算。 点云的结果看起来很好,但我对所有点都有一个小的恒定倾斜。因此,创建的点云(-plane)具有倾斜角度

我现在的问题是,这个点云是在真实的欧几里德坐标系中,还是我的投影重建(等于仿射重建?)结果仍然不同于欧几里德结果(欧几里德和投影结果之间的未知转换)? 我问这个问题的原因是我没有一个真正的校准矩阵,我没有使用一个真正的三角测量方法,使用中心投影和摄像机中心坐标、焦距和图像点坐标

如有任何建议或文献,我们将不胜感激。:)


最好的问候和感谢提前

很好的Q,但是在这里发布一些代码,并将编程语言添加到关键字中。嘿,我使用了Matlab和Python。我没有发布代码,因为我认为帖子会太长,人们会犹豫是否阅读。你是这样的,这意味着,没有代码的单词只不过是空话。当然,你不会发布不相关的文章。仅显示如何计算点云的内容。您可以使用缩写示例发布,例如使用两个8x8矩阵。我到底该怎么猜你的结果是不是预测出来的呢。很可能是这样。所以,在没有看到代码的情况下,我可以告诉你这一点,然后完成。好的,我添加了一些示例代码,我认为这些代码应该足够了。如果不告诉我你需要知道什么!我认为重要的是使用校正图像,并利用这些校正图像计算视差图。点云是使用视差和我上面发布的方程式生成的。