可以使用感应传感器检测两个人紧密拥抱或背靠背吗?

时间:2014-09-02 12:15:00

标签: openni

我尝试通过主感传感器检测两个人紧密拥抱或背对背。目前,我可以同时跟踪两个人和他们站在远处的骨架数据。但如果他们紧紧拥抱或背靠背,他们的骨架将合并成一个。任何人都可以告诉我,我该怎么做才能发现两个人之间的行动(拥抱/回击)?

平台:Windows 7 OpenNI版本:1.5.7 NITE版本:1.5.2

感谢。

1 个答案:

答案 0 :(得分:0)

我不确定单独使用OpenNI场景分割,因为正如您自己观察的那样,让2个人彼此靠近会导致轮廓合并。

您需要自己围绕此合并问题运行自己的算法。 可能有几种不同的方法可以解决这个问题。

以下是一些令人讨厌的想法:

创意#1

使用OpenNI的场景分割功能并分析用户像素,即使它们已合并。如果你分析大纲。通过观察边缘(最外面的像素)和质心之间的距离,你应该发现四肢(最大距离),即手/脚和头部。如果你的斑点有两个头,可能是两个人拥抱。

创意#2

您知道当用户靠近时,他们会合并为一个用户,这意味着OpenNI会触发新用户/丢失用户事件。除此之外,您还可以跟踪每个用户的CoM(质心,在OpenNI中可用)。如果两个用户之间的距离减少很多,紧接着是一个新的用户事件(合并的blob),它有一个比两个用户中的每一个都更大的边界框,那么很可能你是用户拥抱或非常彼此接近。

创意#3

您只能为每个用户跟踪上半身骨架轮廓并检测“拥抱”手势。您可以从初始粗略姿势检测开始,其中臂的角度在特定阈值内。您可以使用DTW来检测手势,而不是检测姿势。如果两个用户中至少有一个在OpenNI检测到“融合”用户之前触发此姿势/手势,那么您可能会发现拥抱。

创意#4

使用上面的一些想法:合并的blob将比任何一个成员都大,并且在用户数量减少后将被检测到,你可以在属于的rgb像素上使用拥抱检测haar级联新发现的合并blob以确认拥抱。

其中一些想法比其他想法更容易实施,但重要的是要避免误报。理想情况下,您将拥有一个简单的场景(背景中没有复杂的物体)和适当的照明(人工冷,最好远离红外线范围(阳光,白炽灯等)),以使您的生活更轻松。我观察到,对于复杂的背景,有时甚至单个用户也可以与背景对象合并。