将2D坐标转换为另一个2D坐标

时间:2020-08-29 14:26:51

标签: math computer-vision coordinates object-detection tracking

我正在研究用于从CCTV摄像机跟踪人员的程序,其中我从CCTV摄像机输入视频,并且我拥有包含所有CCTV摄像机的建筑物的2D顶视图图像。当我在场景中检测到人时,我在人周围绘制了边界框,并且该边界框的中心点在图像坐标系中表示为x,y,我要做的就是将该边界框的中心点转换为另一个2D点在建筑图像坐标系中。谁能给我一个提示或想法???

这里是来自cctv摄像机的图像,以及建筑物的图像,其中cctv图像中的红线是我所拥有的线,建筑物图像中的红线是我要获取的线。

CCTV摄像机图像:

enter image description here

建筑物图片:

enter image description here

1 个答案:

答案 0 :(得分:1)

因此,因为相机将3D世界投影到2D,然后又想从另一个2D角度获取它,则可能会出现错误。例如,该人的矩形的中心点可能离他们站立的地面约2.7英尺,或者如果该人不在的话可能是地板。那将是您的鸟瞰图上两个非常不同的地方。

但是,由于这是用于跟踪人员,因此可以假设每个人的高度大致相同,并假设矩形的中心始终离地面约2.7英尺。如果您做出此假设,那么问题将更容易解决。

基于这种假设,您可以做的是校准阶段。因此,您可以让此人站在走廊的尽头,查看摄像头上的坐标和地图上的坐标。然后让他们走在镜头前,查看镜头上的坐标和地图上的坐标。使用这两个点,您可以进行线性插值,以找出有人在走廊中基于摄像头的位置。您需要对拥有的每台摄像机进行此校准,但是它应该给出相当准确的结果。

(x1, y1)是大厅尽头的摄像机坐标,(X1, Y1)是大厅尽头的地图坐标。然后,让(x2, y2)是靠近相机的相机坐标,(X2, Y2)则是靠近相机的地图坐标。因此,找到一个线性A这样的

A(x1, y1) = (X1, Y1)A(x2, y2) = (X2, Y2)

您可以将其作为矩阵方程式求解(不确定如何在此处键入数学运算符)

A|x1 x2| = |X1 X2|
 |y1 y2|   |Y1 Y2|

A = |X1 X2||x1 x2|^(-1)
    |Y1 Y2||y1 y2|

这应该为您提供一种不错的方式,将相机上的坐标转换为地图上的坐标。