在交互式楼层项目中匹配顶视图人体检测与楼层投影

Matching top view human detections with floor projection on interactive floor project

本文关键字:检测 投影 视图 项目 交互式楼      更新时间:2023-10-16

我正在构建一个交互式地板。主要的想法是将Xtion相机所做的检测与我在地板投影中绘制的物体相匹配,并让它们跟随人。

我还检测地板上的投影区域,它转化为一个多边形。摄像头可以检测"屏幕"区域外。

问题是该算法使用深度数据检测到它下面的人的顶部,并且由于该点与相机之间的角度,该点并不是直接在人的脚上方。

我知道到地板的距离和被检测到的人的身高。我知道摄像机不垂直于地面但我不知道摄像机的倾斜角

我的问题是如何将3D点投影到地板上的多边形上?

我希望有人能给我指个正确的方向。我一直在阅读有关相机投影的内容,但我不知道如何在这个特定的问题中使用它。

Thanks in advance

更新:

有了Diego O.d.L的警报器,我能够得到一个几乎完美的检测。我将为那些可能正在寻找相同解决方案的人编写我使用的步骤(我不会详细说明如何进行检测):

步骤1:校准

  • 这里我从相机中获得一些颜色和深度帧,使用openNI,清除投影区域。

  • 在颜色帧上检测投影区域。

  • 然后将检测点转换为真实世界的坐标(使用OpenNI的CoordinateConverter)。有了新的真实世界的检测点,我寻找更适合他们的飞机。

步骤2:检测

  • 我使用检测算法来获得新的人物检测并使用深度帧跟踪他们。

  • 这些检测点被转换成真实世界的坐标并投影到先前计算的平面上。这可以校正人的高度和地面之间的偏移

  • 使用透视变换将点映射到屏幕坐标。

希望这对你有帮助。再次感谢你们的回答。

首先使用相机坐标系统。我假设你从(row,column,distance)转换到与相机轴对齐的现实世界系统(x,y,z):

没有问题。
  1. 用三个或多个点计算平面(为了鲁棒性)摄像机投影(x,y,z)。(选择你最喜欢的算法,即

  2. 然后找到你的头部指向地板平面的投影(例子)

  3. 最后,您可以将其转换为地板坐标系或只是

从您的预期应用程序的描述,它可能是更有用的,你恢复图像坐标,我猜。

这类问题通常受益于明确定义变量。

在这种情况下,你有一个头部在物理位置{x,y,z},你想要地面投影{x,y,0}。这是微不足道的,但你的相机给你{u,v,d} (d是深度),你需要将其转换为{x,y,z}

找到给定摄像机位置变换的最简单解决方案可能是简单地将已知标记放在{0,0,0}, {1,0,0}, {0,1,0}的地板上,并查看它们在摄像机中弹出的位置。