HiveBrain v1.2.0
Get Started
← Back to all entries
patternMinor

Segmenting a human body point cloud into limbs

Submitted by: @import:stackexchange-cs··
0
Viewed 0 times
humanpointintosegmentingcloudlimbsbody

Problem

I have a human body point cloud taken through a Kinect (v1). Now, I want to segment the point cloud into different parts, namely hands, lower arms, upper arms, torso, upper legs, lower legs, feet and head.

Here's the method I'm currently using:

  • I get the approximate skeleton from the point cloud using OpenNI



  • I take those points from the point cloud that are at a distance d from the line that is the bone (obtained from OpenNI). This distance d is currently set differently for different parts, based on observations only.



The problem with the above method is that it's not very robust. The parameter d can be different for people with different body types and also this is prone to errors since at the joints, the points within the circle of radius d will lie in both the parts.

Is there a better way of segmenting the point cloud?

Edit: This is what I get from OpenNI

The blue portion is the lower arms segmented using the above algorithm.

Solution

Suggestion: for each point $P$ in the point cloud, find which bone it is nearest to, and associate it with that bone. In other words, find which point $Q$ on the skeleton is closest to $P$, and associate $P$ with $Q$. Now associate $Q$ with a particular part of the skeleton (e.g., arm, leg, etc.); that will let you associate $P$ with a particular part of body (e.g., arm, leg, etc.). Do this for each point in the point cloud.

Try that -- it's a very simple approach, and it might just work.

Context

StackExchange Computer Science Q#51883, answer score: 3

Revisions (0)

No revisions yet.