I’m using the Microsoft Kinect SDK to get the depth and color information from a Kinect and then convert that information into a point cloud. I need the depth information to be in real world coordinates with the centre of the camera as the origin.
I’ve seen a number of conversion functions but these are apparently for OpenNI and non-Microsoft drivers. I’ve read that the depth information coming from the Kinect is already in millimetres, and is contained in the 11bits… or something.
How do I convert this bit information into real world coordinates that I can use?
Thanks in advance!
This is catered for within the Kinect for Windows library using the Microsoft.Research.Kinect.Nui.SkeletonEngine class, and the following method:
This method will map the depth image produced by the Kinect into one that is vector scalable, based on real world measurements.
From there (when I’ve created a mesh in the past), after enumerating the byte array in the bitmap created by the Kinect depth image, you create a new list of Vector points similar to the following:
By doing so, the end result from this is a list of vectors stored in millimeters, and if you want centimeters multiply by 100 (etc.).