将二维坐标转换为另一个二维坐标

convert 2D coordinates to another 2D coordinates

我正在开发用于通过闭路电视摄像机跟踪人员的程序,其中我有来自闭路电视摄像机的视频输入,并且我有包含所有闭路电视摄像机的建筑物的 2D 顶视图图像。当我在场景中检测到人时,我在人周围绘制边界框,并且这个边界框的中心点在图像坐标系中表示为 x,y,我想要做的是将这个边界框中心点转换为另一个 2D 点在构建图像坐标系中。任何人都可以给我一个提示或想法吗???

这里是闭路电视摄像机的图像,以及建筑物的图像,其中闭路电视图像中的红线是我拥有的线,建筑物图像中的红线是我想要获得的线。

闭路电视摄像机图像:

建筑形象:

因此,由于相机将 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|

这应该为您提供了一种将相机上的坐标转换为地图上的坐标的好方法。