Как интерполировать трехмерные точки, вычисленные по Kinect, чтобы получить траекторию шара?

Я получаю 3D очки от Kinect через OpenNI. Допустим, у меня есть:

X = [93,7819,76,8463,208,386,322,069,437,946,669,999] Y = [-260,147, -250,011, -230,717, -211,104, -195,538, -189,851] Z = [958 942 950 945 940 955]

Это те моменты, которые я смог поймать из моего движущегося мяча. Теперь я хотел бы иметь возможность вычислять что-то вроде интерполяции или наименьшего квадрата с этими точками, чтобы знать траекторию движения мяча. Затем я могу знать, куда движется мяч и где он ударит в стену.

Я не уверен, какой математический инструмент использовать и как его перевести на C ++. Я видел много ресурсов для 2D-интерполяции (кубических, …) или наименьших квадратов, но кажется, что для 3D сложнее, или я что-то упустил, может быть.

С наилучшими пожеланиями

РЕДАКТИРОВАТЬ: вопрос помечен модераторами как слишком широкий, поэтому я уменьшу область с полученными ответами: если я использую 2D полиномиальную регрессию с 3 планами отдельно (thx yephick), что я могу использовать в C ++ для его реализации?

1

Решение

Для того, что вас интересует, нет никакой разницы между 3D и 2D.

Все, что вы делаете, это работа с самолетами независимо (Плоскость XY, плоскость XZ и плоскость YZ). Это значительно снизит сложность и позволит вам «рисовать» намного более простые диаграммы на листе бумаги, когда вы работаете над этой проблемой.

Как только вы вычислили координаты в каждой из плоскостей, довольно просто не только согласовать координаты в трехмерном пространстве, но также получить дополнительное преимущество проверки ошибок. Например, координата X, найденная в плоскости XY, должна соответствовать (или быть «достаточно близкой») к той же координате X, найденной в плоскости XZ.

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

2

Другие решения

Ты можешь использовать сплайн-интерполяция создать плавную траекторию.

Если вы не в «настроении» реализовать это самостоятельно, быстрый поиск в Google предоставит вам библиотеки с открытым исходным кодом, такие как SINTEF. SISL которые имеют такую ​​функциональность.

1

По вопросам рекламы [email protected]