将KITTI MOT分割蒙版转换为右摄像头

时间:2020-08-11 14:22:11

标签: python computer-vision tracking kitti

我正在尝试将KITTI MOT dataset的地面真假分割蒙版从左到右转换为相机,并对其为何不起作用感到非常困惑。

分割蒙版在左侧框架中以像素形式给出。我从calib_cam_to_cam.txt文件中获得了校准参数,据我了解,该校准参数对于所有KITTI数据集都是相同的。据我正确理解相应的paper而言,图像数据已得到校正,因此左(2)和右(3)RGB图像平面位于单个平面中,并且仅沿x轴平移,基线(在摄像机2和3之间,平移等于〜54厘米)。根据上述文件,从校准文件计算得出的结果是相同的:

bm_left = -P_rect_left[0, 3] / P_rect_left[0, 0]
bm_right = -P_rect_right[0, 3] / P_rect_right[0, 0]
bm_left_right = bm_right - bm_left

P_rect_...[0, 3]是给定摄像机的基线,以像素为单位并乘以-1,即乘以像素焦距(fu的-1倍,P_rect_...[0, 0]为{ {1}}。

因此,从右摄像头到左摄像头的转换很简单:

fu

现在,为了从左侧图像平面到右侧图像平面获取某个图像点T_left_right = [[1, 0, 0, 0.54], [0, 1, 0, 0 ], [0, 0, 1, 0 ], [0, 0, 0, 1 ]] ,我可以使用p_i=[u, v]中经过校正的固有参数将其反向投影到单位矢量:

P_rect_left

然后我可以使用 mu = (u - cu) / fu mv = (v - cv) / fv vectorized = [u, v, 1] vectorized_normed = vectorized / norm(vectorized) 将单位矢量转换为正确的相机坐标系,即:

T_left_right

最后,我可以将此点投影到正确的相机图像平面中以获得像素坐标:

 vectorized_normed_right = dot_product(inverse(T_left_right), vectorized_normed)

However, this does not work well Yet, when I divide the baseline by ten, I get pretty good results

我的数学错了吗?还有其他提示吗? 我将非常感谢任何形式的帮助:)

0 个答案:

没有答案