我试着用基本感官感应器来检测两个人的拥抱或背靠背。目前,我可以同时跟踪两个人,当他们站在远处时,我可以跟踪他们的骨架数据。但如果他们拥抱在一起或背靠背很近,他们的骨架就会融为一体。谁能告诉我应该怎么做才能检测到两个人之间的动作(拥抱/背靠背)?
平台: windows 7 OpenNI版本: 1.5.7 NITE版本: 1.5.2
谢谢。
发布于 2014-09-03 05:14:51
我不确定单独使用OpenNI场景分割是否可行,因为正如您自己观察到的那样,让两个人彼此靠近会导致轮廓合并。
你需要自己运行自己的算法来解决这个合并问题。可能有几种不同的方法来解决这个问题。
这里有几个目前值得注意的古怪想法:
创意#1
使用OpenNI的场景分割功能并分析用户像素,即使它们是合并的。如果你分析大纲的话。通过观察边缘(最外面的像素)和质心之间的距离,您应该可以找到四肢(最大距离),即手/脚和头部。如果你的斑点有两个头,那可能是两个人在拥抱。
创意#2
您知道,当用户更接近时,他们会合并为单个用户,这意味着从OpenNI触发新用户/丢失用户事件。最重要的是,您可以跟踪每个用户的CoM(重心,在OpenNI中可用)。如果两个用户之间的距离减小了很多,并且紧随其后的是一个新的用户事件(合并的blob),该事件的边界框比两个用户中的每个用户的边界框都大,那么很可能你们的用户正在拥抱或非常接近彼此。
Idea #3
您可以只跟踪每个用户的上半身骨架轮廓,并检测“拥抱”手势。您可以从初始粗略姿势检测开始,其中手臂的角度在特定阈值内。您可以使用DTW来检测手势,而不是检测姿势。如果两个用户中至少有一个在OpenNI检测到“融合”用户之前触发了这个姿势/手势,那么你可能会检测到一个拥抱。
Idea #4
使用上面的一些想法:合并的斑点将大于任何成员,并且将在用户数量减少后被检测,您可以在属于新检测的合并斑点的rgb像素上使用hug检测haar级联来确认hug。
其中一些想法将比其他想法更容易实现,但重要的是要防止误报。理想情况下,你应该有一个简单的场景(背景中没有复杂的物体)和合适的照明(人造冷光,最好是任何远离红外范围的东西(阳光,白炽光等))。让你的生活更轻松。我观察到,对于复杂的背景,有时甚至一个用户也可以与背景对象合并。
https://stackoverflow.com/questions/25623210
复制相似问题