【发布时间】:2015-09-24 19:30:43
【问题描述】:
我正在构建一个交互式楼层。主要思想是将使用 Xtion 相机进行的检测与我在地板投影中绘制的对象进行匹配,并让它们跟随人。
我还检测到转换为多边形的地板上的投影区域。相机可以检测到“屏幕”区域之外。
问题在于,该算法使用深度数据检测其下方人的最顶部,并且由于该点与相机之间的角度,该点不在人的脚正上方。
我知道到地板的距离和检测到的人的高度。而且我知道相机不垂直于地板,但我不知道相机的倾斜角度。
我的问题是如何将 3D 点投影到地板上的多边形上?
我希望有人能指出我正确的方向。我一直在阅读有关相机投影的文章,但我没有看到如何在这个特定问题中使用它。
提前致谢
更新:
使用 Diego O.d.L 的遮篷,我能够进行几乎完美的检测。我将为那些可能正在寻找相同解决方案的人编写我使用的步骤(我不会详细介绍如何进行检测):
第 1 步:校准
在这里,我使用 openNI 从相机获取了一些颜色和深度帧,并清除了投影区域。
在彩色框架上检测到投影区域。
然后我将检测点转换为真实世界坐标(使用 OpenNI 的
CoordinateConverter)。借助新的现实世界检测点,我寻找更适合它们的平面。
第 2 步:检测
我使用检测算法来检测新的人,并使用深度帧对其进行跟踪。
这些检测点被转换为真实世界坐标并投影到先前计算的平面上。这可以纠正人的身高和地板之间的偏移。
- 使用透视变换将这些点映射到屏幕坐标。
希望这会有所帮助。再次感谢您的遮阳篷。
【问题讨论】:
-
当你说你知道到弗洛尔的距离时,你是否知道到你正在测量的矩形每个角的距离(或至少 3 个点?)
-
我可以得到相机在这些点的深度像素是的。
标签: c++ opencv computer-vision