2013-04-02 3 views
4

В моем проекте Kinect я пытаюсь создать облако точек от датчика Kinect. При отображении трехмерных точек я получаю искаженную модель, где стены и полы изогнуты.Kinect Point Cloud Curved Walls

EDIT: Я использую Microsoft Kinect SDK. Это облако точек было создано с датчиком на расстоянии в два метра от стены.

Kinect Example

+0

Обеспечить немного больше деталей, как: используете ли вы «официальную» Kinect API или libkinect, и как далеко Kinect был от стен. –

+0

Я использовал SDK от Microsoft. Стены находятся примерно в футе от Kinect. – user977198

+0

Не могли бы вы подробно рассказать о том, как вы производите координаты x, y для облаков точек? Используете ли вы значения искажения ИК-датчика? – Sassa

ответ

5

Я узнал ответ. Я использовал изображение глубины, которое не является координатами реального мира. Я использовал класс CoordinateMapper в Kinect SDK для преобразования изображения глубины в SkeletonPoints, которые являются координатами реального мира.

Это бы что-то вроде этого:

using (DepthImageFrame depthFrame = e.OpenDepthImageFrame()) { 
    DepthImagePixel[] depth = new DepthImagePixel[depthFrame.PixelDataLength]; 
    SkeletonPoint[] realPoints = new SkeletonPoint[depth.Length]; 

    depthFrame.CopyDepthImagePixelDataTo(depth); 

    CoordinateMapper mapper = new CoordinateMapper(sensor); 
    mapper.MapDepthFrameToSkeletonFrame(DEPTH_FORMAT, depth, realPoints); 
}