Что вы пытаетесь сделать (преобразование) называется Регистрация. I have explained here very clearly how to do the Registration.
Я знаю, что я могу вручную откалибровать (с помощью OpenCV и т.д.), чтобы определить, преобразование, но я хотел бы фактическую матрицу камеры.
Калибровка камеры - единственный способ получить самую точную матрицу камеры вашего сенсора Kinect, поскольку каждая матрица камеры датчика Kinect отличается небольшим размахом. Но это будет иметь существенное значение, как только вы создадите облако точек.
ли кто-нибудь знает, как извлечь, или если существует матрица внутри Kinect v2 API, что они используют внутренне для MapDepthFrameToCameraSpaceUsingIntPtr позвонить?
Вы можете извлечь часть матрицы, но не все. Что-то очень импотенция MapDepthFrameToCameraSpaceUsingIntPtr
не обрабатывается в вашем CPU. Он вычисляется внутри чипа в самом оборудовании kinect. Значения матрицы встроены в сам чип. Причиной этого является то, что подумайте о том, сколько вычислений необходимо сделать для этого вызова API. Например. Частота кадров Kinect в 30 кадрах в секунду, и каждая цветовая рамка имеет разрешение 1920 x 1080 пикселей, а кадр глубины - 512 x 424 пикселя. не менее
30 x 512 x 424 = 6,512,640
расчет в секунду.
Вы не можете построить облако точек в координатном пространстве реального мира, не зная матрицу камеры. Если вы построите облако точек непосредственно с помощью координат изображения глубины, то это облако точек в пространстве глубины.
Я разработал прототип для 3D-взаимодействия с визуализацией облаков в реальном времени.
You can check out my repository VRInteraction.
Demo video
Calibrated color and depth camera matrix
Как вы можете увидеть правую часть видео, это в режиме реального времени 3D точка помутнения. Я достигаю этого, используя CUDA (ускорение GPU), зарегистрировав рамку глубины в цветную рамку и построив облако точек RGBXYZ.