2017-01-27 4 views
0

Прямо сейчас, я пытаюсь определить матрицу преобразования в рамках Kinect V2.0. Моя конечная цель состоит в том, чтобы получить матрицу перевода и вращения, необходимую для преобразования моего облака точек, которое относится к датчику глубины, в облако точек относительно цветной камеры.Kinect Point Cloud To Color Transform

Я знаю, что могу вручную выполнить калибровку (через OpenCV и т. Д.), Чтобы определить преобразование, но мне нужна фактическая матрица камеры. Я использую вызов MapDepthFrameToCameraSpaceUsingIntPtr, поэтому я знаю, что существует внутреннее понимание (так называемое преобразование матрицы) между пространством глубины и цветовым пространством.

ли кто-нибудь знает, как извлечь, или если существует матрица внутри v2 API Kinect, что они используют внутренне для MapDepthFrameToCameraSpaceUsingIntPtr вызова? Или, если есть способ перевести рамку изображения точечного облака в пространство цветной камеры?

ответ

0

Возможно, они знают матрицу поворота и перевода, а также параметры цветовой камеры. К сожалению, насколько вы используете Microsoft SDK, они не раскрывают эти данные (только параметры глубины камеры являются общедоступными). Либо вы откалибруете камеры, либо используете справочную таблицу.

0

Что вы пытаетесь сделать (преобразование) называется Регистрация. 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.