2014-10-06 2 views
1

Я работаю с MS SDK в Windows 7, и я собираюсь извлечь некоторую ориентацию головы из 3D-скелета. Но я удивился, когда рисую 3D-координаты. Предполагаемое положение головы всегда наклоняется вперед. Из моего статического положения, просматривающего камеру, я помещаю 3 изображения в качестве примеров, обе руки и головы окрашены в желтый цвет, правая сторона скелета находится в пурпуре, а левая сторона - в голубом.Работа с каркасом Kinect 3D

3D skeleton from the front view

(1) 3D каркас из вид спереди

rotating the same skeleton from (1)

(2) вращая один и тот же каркас из (1)

top view of (1)

(3) вид сверху (1)

Итак, вопрос в том,

  1. Правильная техника?

  2. Хотя я изменил параметры по умолчанию, я не получаю никаких улучшений. Любые советы по настройке параметров скелетной настройки установки?

ответ

1

Я не уверен в том, что вы используете V1 или V2, но они похожи по вопросам ...

  1. Это является правильным как с Kinect SDK и анатомически. Вычерчивание линии от центра ваших плеч до верхней части головы приведет к линии с наклоном вперед. Вы можете увидеть примеры этого в Образцах браузера SDK (Основы тела).

  2. Я не уверен, что вы пытаетесь сопоставить суставные позиции, но вот demo, который визуализирует данные JointOrientation для каждого сустава. В комментариях есть исходный код, демонстрирующий, как получить значения.

Here являются совместные типы Kinect SDK (V2, но похож на V1)

+0

Уважаемый IntStarFoo, спасибо за ваш ответ. Я использую SDK 1.8 с C#. С помощью использования скелетной фильтрации на http://msdn.microsoft.com/en-us/library/jj131024.aspx (для жестов игры) я нахожу, что размер конечностей является настолько переменным. В то время как я машу правой рукой на расстоянии 1,5 м от Kinect, без окклюзии, я измеряю расстояние между локтем и запястьем и запястьем, я считаю, что эти значения меняются в прошедшее время. Ex. e-to-w, от 18 см до 28 см и от w-to-h от 1 см до 15 см. Должен ли я откалибровать датчик? Является ли мой Kinect ошибочным? Я думаю, что с этими значениями я не смогу ничего узнавать. – Carl

+0

Нет проблем. Рад, что я могу помочь. Как вы измеряете расстояние? Вам нужно измерить, используя точки 3D. Вы измеряете вдоль трехмерного вектора между E и W? Или вы измеряете с помощью 1 или двух осей? – IntStarFoo

+0

Основываясь на трехмерной совместной позиции Kinect (в метрах), я вычислил эвклидовое расстояние от локтя до запястья, то есть норму 3D-вектора, например. ElbowRight-To-WristRight = норма (3DWristRight-3DElbowRight), но, как я уже сказал, странно, что во время движения у него большие колебания. – Carl

2

Теперь поворот головы относительно оси шеи можно рассчитать на глубину двух плеч. Сначала вычислите разницу глубин между центром шеи и плечевым суставом (расстояние z) и получите разницу между центром шеи и плечом (расстояние x), и, получив значение загара, вы можете получить, сколько тела повернуто.

Смежные вопросы