【发布时间】:2019-11-02 05:48:45
【问题描述】:
目标是从 KITTI 图像(数据集)中获取鸟瞰图,并且我有投影矩阵 (3x4)。
有很多方法可以生成转换矩阵。对于鸟瞰图,我已经阅读了一些数学表达式,例如:
H12 = H2*H1-1=ARA-1=P*A-1 in OpenCV - Projection, homography matrix and bird's eye view
和 x = Pi * Tr * X in kitti dataset camera projection matrix
但这些选项都不适用于我的目的。
Python 代码
将 numpy 导入为 np 导入cv2
image = cv2.imread('Data/RGB/000007.png')
maxHeight, maxWidth = image.shape[:2]
M 有 3x4 尺寸
M = np.array(([721.5377, 0.0, 609.5593, 44.85728], [0.0, 721.5377, 72.854, 0.2163791], [0.0, 0.0, 1.0, .002745884]))
这里需要一个 3x3 维度的 M 矩阵
warped = cv2.warpPerspective(image, M, (maxWidth, maxHeight))
显示原始图像和变形图像
cv2.imshow("原图", 图片)
cv2.imshow("扭曲", 扭曲)
cv2.waitKey(0)
我需要知道如何管理投影矩阵以获得鸟瞰图。
到目前为止,我尝试过的每件事都会向我抛出扭曲的图像,甚至没有接近我需要的信息。
This is a example of image from the KITTI database.
This is other example of image from the KITTI database.
左侧显示了检测汽车的 3D(上)和 2D(下)图像。右边是我想要获得的鸟瞰图。因此,我需要获取变换矩阵来变换分隔汽车的框的坐标。
【问题讨论】:
-
你能展示其中一张 kitti 鸟瞰图吗?了解您想要实现的目标
-
我已经在帖子中添加了几张图片。
-
你想得到右边的图像吗?只需在相机图像的地平面上定义 4 个点,在鸟瞰图像上定义相应的 4 个点,然后 getPerspectiveTransform 即可获得转换。
-
如果您有 3d 坐标中的框,只需删除 z 坐标即可获得正交投影。然后缩放并将空间转换为您想要的图像空间。
-
我不想使用 4 点法,因为我必须处理数英里的帧,每个帧都提供自己的投影矩阵值。这就是我想使用那个矩阵的原因,我想这样我会得到更准确的结果。
标签: python opencv matrix-transform kitti