我用的是立体系统,所以我试着通过三角测量得到一些点的世界坐标。在
我的相机呈现一个角度,Z轴方向(深度方向)与我的曲面不垂直。这就是为什么当我观察平面时,我得到的不是恒定深度,而是“线性”变化,对吗?我想要从基线方向开始的深度。。。我如何重新规划?在
我的一段代码和我的投影数组和三角化函数:
#C1 and C2 are the cameras matrix (left and rig)
#R_0 and T_0 are the transformation between cameras
#Coord1 and Coord2 are the correspondant coordinates of left and right respectively
P1 = np.dot(C1,np.hstack((np.identity(3),np.zeros((3,1)))))
P2 =np.dot(C2,np.hstack(((R_0),T_0)))
for i in range(Coord1.shape[0])
z = cv2.triangulatePoints(P1, P2, Coord1[i,],Coord2[i,])
----------稍后编辑------------
谢谢你的涂鸦,所以我试着应用你的建议。但我想我有一个错误,因为它不能很好地工作,正如你可以看到下面。点云看起来是扭曲的,向图像的边缘弯曲。在
^{pr2}$
对于重建方法,预期的z方向是任意的。通常,您有一个旋转矩阵,它可以从您想要的方向旋转左摄影机。你可以很容易地建立这个矩阵,然后你需要做的就是用R的转置乘以你的重构点
为了增加fireant的响应,这里有一个候选解决方案,假设预期的X方向与连接两个相机投影中心的线重合。在
实用说明: 根据我的实际经验,如果不付出相当大的努力,期望平面对象与立体基线精确对齐是不太可能的。需要一定量的平面拟合和额外的旋转。在
一次性努力: 这取决于您是否需要这样做一次,例如一次性校准,在这种情况下,只需将此估计过程实时化,然后旋转您的立体相机对,直到深度贴图方差最小化。然后锁定你的相机位置,祈祷以后不要有人撞到它。在
重复性: 如果您需要将估计的深度贴图与随捕捉到的每一个新帧而变化的真正任意Z轴对齐,那么您应该考虑在平面估计方法上投入时间,并使其更加健壮。在
相关问题 更多 >
编程相关推荐