PointCloud с несколькими Kinects - PullRequest
3 голосов
/ 26 марта 2012

Я пытаюсь создать пользователя для отображения PointCloud с несколькими кинектами при обработке.Я получаю пользователя спереди и сзади с 2 кинектами на противоположных сторонах и генерирую оба PointClouds.

Беда в том, что PointClouds X / Y / Z не синхронизированы, просто выводит их на экран иконечно выглядит грязно.Есть способ рассчитать или сделать сравнение между ними, перевести второй PointCloud, чтобы «присоединиться» к первому?Я мог бы перевести положение вручную, но если я переместлю датчики, он снова отключится.

1 Ответ

4 голосов
/ 27 марта 2012

Предполагая, что все Kinect являются стационарными, я полагаю, вам нужно будет пойти в следующем порядке:

  1. решить, какой Kinect использовать в качестве глобальной ссылки,
  2. получить параметры для3D-преобразование для каждого из других Kinects - я бы попытался использовать PMatrix3D и applyMatrix (), хотя это может быть медленным,
  3. применить преобразования к каждому из облаков точек других Kinects и нарисоватьоблака

Я (пока) не знаю, как получить параметры преобразования для преобразования Прокруста , но, если они не изменятся, вам, вероятно, придется установитьдо нескольких опорных точек, возможно, путем отображения облаков точек из каждой пары Kinects и регистрации точек, которые, как вы знаете, одинаковы в обоих облаках точек.Получив их достаточно, создайте PMatrix3D и примените его внутри push / popMatrix.Этот подход используется этим парнем: http://www.youtube.com/watch?v=ujUNj1RDL4I

Альтернативный подход заключается в использовании алгоритма итеративной ближайшей точки и построении трехмерного преобразования из его выходных данных.Мне бы очень хотелось, чтобы для обработки была библиотека ICP или PCL, если кто-нибудь знает хорошую.

...