PointCloud с множество Kinects

Опитвам се да направя потребител за картографиране на PointCloud с множество kinects на Processing. Получавам предната и задната страна на потребителя с 2 кинекта от противоположните страни и генерирам и двата PointClouds.

Проблемът е, че PointClouds X/Y/Z не са синхронизирани, просто ги поставя двата на екрана и със сигурност изглежда объркано. Има ли начин да се изчисли или направи сравнение между тях, да се преведе вторият PointCloud да се "присъедини" към първия? Бих могъл да преведа позицията ръчно, но ако преместя сензорите, той ще изгасне отново.


person Sérgio Passos Jr.    schedule 26.03.2012    source източник
comment
Използвате ли събитието AllFramesReady? Това трябва да синхронизира всички камери   -  person Liam McInroy    schedule 07.04.2012


Отговори (1)


Ако приемем, че всички Kinects са неподвижни, предполагам, че ще трябва да вървите в този ред:

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

Не знам (все още) как да получа параметрите на трансформация за трансформация на Прокруст, но ако приемем те няма да се променят, вероятно ще трябва да настроите множество референтни точки, може би чрез показване на облаците от точки от всяка двойка Kinects и регистриране на точките, за които знаете, че са еднакви в двата облака от точки. След като получите достатъчно от тях, конструирайте PMatrix3D и го приложете в push/popMatrix. Това е подходът, използван от този човек: http://www.youtube.com/watch?v=ujUNj1RDL4I

Алтернативен подход би бил да се използва алгоритъм за итеративна най-близка точка и да се конструира 3D трансформация от неговия изход. Наистина бих искал ICP или PCL библиотека за обработка, ако някой знае добра.

person Solipsy    schedule 27.03.2012
comment
Благодаря много! Ще опитам, засега ще гласувам за вашия отговор. - person Sérgio Passos Jr.; 27.03.2012