2015-01-18 6 views
1

Я работаю над установкой cinder и kinect v2, и в настоящее время я привязан к отображению точки цвета в точку глубины. Я искал цветную рамку для определенной точки определенного цвета, поэтому у меня есть Color Frame Point x и y.Kinect Color Point to Depth/Camera Point

Я хотел бы получить глубину от этого, но, конечно, рамка глубины - это другое разрешение и точка зрения, поэтому вы не можете просто индексировать ее.

Я не смог найти ни одного картографа для точки цвета до точки глубины или даже точки камеры. Есть ли простой способ сделать это, кроме самих измерений?

Моя проблема похожа на эту: How to get real world coordinates (x, y, z) from a distinct object using a Kinect, но мне не нужны реальные координаты реального мира. Однако ответ там не полностью объясняет, что мне нужно.

ответ

2

Вы должны использовать CoordinateMapperClass. В вашем случае:
Используйте функцию

public void MapColorFrameToDepthSpace (
     Array<UInt16>[] depthFrameData, 
     out Array<DepthSpacePoint>[] depthSpacePoints 
) 
1

Вы должны использовать CoordinateMapper датчика KINECT. Ваше сопоставление связано с MapColorFrameToDepthFrame или пространством. Эта функция доступна для kinect v2 sdk.

После этой стадии, вы будете иметь 3 информацию (Xview, Yview, Zworld) Yworld и Xworld вы сможете найти эти формулы

Yworld = Zworld * Yview/focal_length 
Xworld = Zworld * Xview/focal_length 

теперь вы знаете мир любой точки изображения, координата

Вы может легко измерить расстояние между двумя точками.

Distance_of_p1_p2(mm) = Sqrt (Square(p2.Xworld - p1.Xworld) + Square(p2.Yworld - p1.Yworld) + Square(p2.Zworld - p1.Zworld))