2013-09-19 7 views
0

Как я могу указать новую глобальную систему координат в kinect? Например, мой кинект движется, и мне нужно указать статическую мировую систему координат в сцене. Если использовать карту глубины для определения заданной пользователем координаты мира, то какой наиболее точный способ? Поскольку разрешение карты глубины невелико, трудно выбрать точные пиксели, которые определяют заданную пользователем координату мира. Каков наилучший способ преобразования координаты по умолчанию по умолчанию в эту заданную пользователем систему координат мира?укажите новую глобальную систему координат в kinect

+1

На каком языке вы и используете библиотеку kinect? Нужно просто использовать матрицу преобразования 4x4 (которая уже может быть доступна в вашей настройке) –

+0

кажется, что идентифицированная пользователем система координат мира в глубинной карте неточна. – jarjar

+0

Позвольте мне перефразировать: вы используете OpenNI, Kinect для Windows SDK и т. Д.? Какой язык вы пишете, у вас есть код? (C++/java/C#/etc.) –

ответ

0

Вы хотите изучить матрицы преобразований. Они позволят вам преобразовать набор координат, например, для поворота, трансляции, масштабирования и т. Д. Существуют различные библиотеки, которые предоставляют матричные структуры, такие как Math.NET Numerics, XNA и т. Д.

0

AS Bas упомянуты это должно быть использование матрицы преобразования. В XNA есть Matrix и Vector3. Там есть other implementations. Я не использую C#, поэтому я не могу посоветовать, какой из них лучше. Однако идея та же, независимо от библиотеки вы используете: это просто немного линейной алгебры:

  1. Используйте экземпляр Matrix и это методы легко вращать/перевести в систему координат, что вам нужно.
  2. Умножьте экземпляр Vector3 на матрицу преобразования, чтобы получить новый вектор в новую систему координат. (XNA's Vector3 делает это с помощью метода Transform, насколько я могу видеть в документах, другие реализации могут дать вам функцию mult()/multiply() или просто поддерживать оператор * между вектором и матрицей)
  3. Необязательно, если вы хотите преобразовать из своего пользовательского координатного пространства обратно в систему координат kinect, было бы просто получить обратную матрицу преобразования, которую вы создали, и использовать ее для умножения вектора/положения в пользовательской системе координат, чтобы получить вектор в системе координат кине.

Часть кода тривиально, если вы понимаете несколько понятий в линейной алгебре (в основном векторных и матричных, на данном этапе вам могут не понадобиться кватернионы). Есть много ресурсов, например:

  1. Лично я нашел 3D Math Primer действительно легко следовать. Хотя понятия могут показаться трудно на первый, с визуальными геометрических интерпретаций линейная алгебра сделал намного больше смысла, особенно если вы думаете, визуально
  2. Khan's Academy course on Linear Algebra
  3. Эрик Haines (от Autodesk) имеет Udacity курс Interactive 3D Graphics. Очень приятно объяснить и супер легко подобрать. Он использует файл three.js/webgl, но вы должны найти удобную информацию на уроках Трансформации и Матрицы.
Смежные вопросы