Kinect Floor Plane


#1

Hi, about usage of kinect2, I was checking how to calculate the distance of a joint from floor.
As far as i know it can be calculated knowing the floor plane representation ( FloorClipPlane), is there any node of controbution retrieving that value ?
I know it can be just measured manually, but I was exploring Kinect2 nodes, and I found out camera intrinsincs, wondering if it can be useful for this operation.

My idea is to use the following formula once i know sensor phisycal height :

float distance = (Math.Abs((x * floorPlane.X) + (y * floorPlane.Y) + (z * floorPlane.Z) + floorPlane.W))/((float)Math.Sqrt((Math.Pow(floorPlane.X,2)) + (Math.Pow(floorPlane.Y, 2)) + (Math.Pow(floorPlane.Z, 2))));

Where x,y,z are values for a joint vector3

Any hints ?


#2

If you have a fixed installation I suggest meassuring the actual sensor heigth and hardcoding it. It’s more accurate than kinect’s floor plane.


#3

Have you used this method yet ? If yes which computation you tried to achieve the result ? Something like my suggestion ?


#4

I would go for the Points2Vector.2d node, if you work in a patch. If you want to write your own plugin in c#, the kinectv2 SDK implements a funktion that calculates the center of the floor plane. Sry I don’t do a lot of vector calculation in c#, for sure someone else here is better at Math :)


#5

Kinect SDK implements, as I said, the whole description of the plane, included the inverse height, aka the sensor phisical height.
So, using the SDK would be better to retrieve that’s height and calculate the distance 3d of a point ( joint ) from the plane.
The solution is known not a secret to research, my question was more about…did somebody ever used the distance of a kinetc joint from the plane ? :)


#6

If the kinect is fixed you can use the calibration node of dx11.particles to align virtual and real world.
After doing that it is really easy to calculate distance from joint to floor.