Может ли датчик чувственного восприятия обнаруживать двух человек, обнимающихся или тесно связанных друг с другом?

Я пытаюсь обнаружить двух людей, обнимающихся или близких друг к другу с помощью сенсорного датчика. В настоящее время я могу отслеживать двух человек одновременно и их данные скелета, когда они стоят на расстоянии. но если они будут обниматься или близко друг к другу, их скелет будет объединен в один. может ли кто-нибудь сказать мне, что мне делать, чтобы обнаружить действия (hug/backToback) между двумя людьми?

Платформа: Windows 7 Версия OpenNI: 1.5.7 Версия NITE: 1.5.2

Благодарю.

1 ответ

Я не уверен, что сегментация сцены OpenNI сама по себе будет делать, поскольку, как вы себя заметили, наличие двух человек близко друг к другу приведет к слиянию контуров.

Вам нужно будет самостоятельно запустить собственный алгоритм вокруг этой проблемы слияния. Есть, вероятно, несколько разных способов решить эту проблему.

Вот несколько взломанных идей, которые нужно помнить на данный момент:

Идея №1

Используйте функцию сегментации объектов OpenNI и анализируйте пользовательские пиксели, даже если они объединены. Если вы проанализируете план. Рассматривая расстояние между краями (внешнее большинство пикселей) и центроидом, вы должны видеть конечности (наибольшие расстояния), которые были бы руками/ногами и головой. Если у вашего блоба две головы, возможно, обнимают двух человек.

Идея №2

Вы знаете, что когда пользователи приближаются, они объединяются в одного пользователя, что означает новые триггеры пользовательских/потерянных пользовательских событий из OpenNI. Кроме того, вы можете отслеживать каждый пользователь CoM (центр масс, доступный в OpenNI). Если расстояние между двумя пользователями значительно уменьшается, и за этим сразу следует новое пользовательское событие (объединенное blob), которое имеет больший ограничивающий прямоугольник, чем каждый из двух пользователей, тогда, скорее всего, вы обнимаете пользователей или очень близко друг к другу.

Идея № 3

Вы можете отслеживать профиль скелета верхнего тела только для каждого пользователя и обнаруживать жест "hug". Вы можете начать с первоначального обнаружения сырой позы, где угол рук находится в пределах определенных пороговых значений. Вместо обнаружения позы вы можете использовать DTW для обнаружения жестов. Если хотя бы один из двух пользователей запускает эту позу/жест перед открытием OpenNI с "плавными" пользователями, вы можете обнаружить объятие.

Идея №4

Используя некоторые из вышеперечисленных идей: тот факт, что объединенный blob будет больше, чем любой из членов, и будет обнаруживаться после уменьшения количества пользователей, вы можете использовать каскад обнаружения hug, определяющий кадр на пикселях rgb, принадлежащих вновь обнаруженному объединенному blob, чтобы подтвердить объятие.

Некоторые из этих идей будут проще реализовать, чем другие, но важно не допускать ложных срабатываний. В идеале у вас будет простая сцена (без сложных объектов в фоновом режиме) с приличным освещением (искусственный холод, желательно что-нибудь в инфракрасном диапазоне (солнечный свет, лампа накаливания и т.д.)), Чтобы сделать вашу жизнь проще. Я заметил, что при сложном фоне иногда даже один пользователь может объединяться с фоновым объектом.

licensed under cc by-sa 3.0 with attribution.