Bootstrap

BEV:针孔相机坐标转换

一 、背景

自动驾驶中经常涉及到不同坐标系之间的坐标转换,在BEV方案中用的比较多的是自车坐标到图像坐标的转换,系统整理了一下坐标转换过程流程。

二 、方法

针孔相机成像原理

自车坐标转图像坐标
旋转矩阵计算方法:
旋转矩阵计算方法
translation: 平移参数[‘x’, ‘y’, ‘z’]
高阶畸变模型参数:

        distortion = torch.tensor(distortion)
        k1 = distortion[:, 0].unsqueeze(-1).to(x.device)
        k2 = distortion[:, 1].unsqueeze(-1).to(x.device)
        k3 = distortion[:, 2].unsqueeze(-1).to(x.device)
        p1 = distortion[:, 3].unsqueeze(-1).to(x.device)
        p2 = distortion[:, 4].unsqueeze(-1).to(x.device)
        k4 = distortion[:, 5].unsqueeze(-1).to(x.device)
        k5 = distortion[:, 6].unsqueeze(-1).to(x.device)
        k6 = distortion[:, 7].unsqueeze(-1).to(x.device)

高阶畸变模型加畸变公式:

        r2 = x**2 + y**2
        x_temp = x * (1 + k1 * r2 + k2 * r2**2 + k3 * r2**3) / (1 + k4 * r2 + k5 * r2**2 + k6 * r2**3) + 2 * p1 * x * y + p2 * (r2 + 2 * x**2)
        y_temp = y * (1 + k1 * r2 + k2 * r2**2 + k3 * r2**3) / (1 + k4 * r2 + k5 * r2**2 + k6 * r2**3) + p1 * (r2 + 2 * y**2) + 2 * p2 * x * y
;