问题描述
我目前正在试验 Kitti 立体数据集 (http://www.cvlibs.net/datasets/kitti/eval_odometry.php),目标是找到一个正确的矩阵,将像素投影到世界坐标系中的点。 问题是我不确定 Kitti 数据集中使用哪个坐标系。自述文件说:
每个文件 xx.txt 包含一个 N x 12 的表,其中 N 是 这个序列的帧。第 i 行代表左相机的第 i 个姿势 通过 3x4 变换的坐标系(即 z 指向前方) 矩阵。矩阵以行对齐的顺序存储(第一个条目 对应于第一行),并在第 i 个坐标中取一个点 系统并将其投影到第一个(= 0th)坐标系中。因此,该 平移部分(第 4 列的 3x1 向量)对应于 第 i 帧中相对于第一帧的左相机坐标系 (=第 0)帧。
据我所知,这个矩阵代表一个世界到相机映射,因此我应该取它的逆来从相机 c.s. 投影。到世界 c.s.?
另一个问题是我需要世界坐标系的方向不同:-z 指向前方,y 指向上方。
我的代码的当前版本如下所示:
M = np.reshape(M,(3,4))
#convert local to global c.s. (?)
Rc = M[...,:-1]
tc = M[...,-1]
R,t = Rc.T,-Rc.T.dot(tc.reshape(-1 ))
M[...,:-1] = Rc
M[...,-1] = tc
#convert to CG c.s.
M[0,1] *= -1.0
M[1,0] *= -1.0
M[0,2] *= -1.0
M[2,0] *= -1.0
M[1,3] *= -1
M[2,3] *= -1```
However,when I reproject pixels between consecutive left frames,the resulting pixels end up far beyond image boundaries.
The functions I use for reprojection work correctly,if the coordinates are given in world coordinate system.
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)