投影或欧几里德三维重建?

时间:2017-11-09 20:22:13

标签: 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,
                               numDisparities = numDisp)
disp = stereo.compute(imgL, imgR).astype(np.float32) / 16.0

这给了我一个视差图,f.e。这个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。差异以像素计算。 点云的结果看起来相当不错,但我的所有点都有一个小的不断倾斜。所以创建的pointcloud(-plane)有一个倾斜角。

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

任何建议或文献都表示赞赏。 :)

提前致以最诚挚的问候和谢意!

0 个答案:

没有答案