То, что вы пытаетесь сделать (преобразование), называется Регистрация. Здесь я очень четко объяснил, как выполнить регистрацию.
Я знаю, что я могу вручную откалибровать (через OpenCV и т. д.), чтобы определить преобразование, но я хотел бы реальную матрицу камеры.
Калибровка вашей камеры — это единственный способ получить наиболее точную матрицу камеры вашего сенсора Kinect, поскольку матрицы камер каждого сенсора Kinect отличаются друг от друга с небольшим запасом. Но это будет иметь существенное значение, когда вы создадите свое облако точек.
Кто-нибудь знает, как извлечь, или если внутри API Kinect v2 существует матрица, которую они используют внутри для вызова MapDepthFrameToCameraSpaceUsingIntPtr?
Вы можете извлечь часть матрицы, но не всю. Что-то очень бессильное MapDepthFrameToCameraSpaceUsingIntPtr
не обрабатывается вашим процессором. Он вычисляется внутри чипа самого оборудования kinect. Значения матрицы встроены в сам чип. Причина этого в том, что подумайте о том, сколько вычислений нужно выполнить для этого вызова API. Например. Частота кадров Kinect составляет 30 кадров в секунду, а размер каждого цветного кадра составляет 1920 x 1080 пикселей, а размер кадра глубины составляет 512 x 424 пикселей. как минимум
30 x 512 x 424 = 6,512,640
вычислений в секунду.
Вы не можете построить облако точек в координатном пространстве реального мира, не зная матрицы камеры. Если вы строите облако точек напрямую, используя координаты изображения глубины, то это облако точек находится в пространстве глубины.
Я разработал прототип для 3D-взаимодействия с визуализацией облака точек в реальном времени.
Вы можете проверить мой репозиторий VRInteraction.
Демонстрационное видео
Откалибрована матрица камеры цвета и глубины
Как вы можете видеть в правой части видео, это трехмерное облако точек в реальном времени. Я достигаю этого, используя CUDA (ускорение графического процессора) путем регистрации кадра глубины в цветном кадре и построения облака точек RGBXYZ.
person
Shanil Fernando
schedule
11.07.2017