vicon point tracking, or point tracking in general

asked 2015-09-20 10:54:06 -0600


I have inherited a ton of vicon data for a research project. The data is supposed to be 3d markers for joints of a human doing certain things.

But vicon creates lots of unintended data, (for instance "ghost" elbow markers come in and out, markers in the middle of no where come in and out, markers fall out of existence, and come back, etc, etc the data is definitely not clean)

My job, at the moment, is to clean the data. Currently I'm trying a brute force manner, where, I fit all the points to a skeleton, and then whenever a point falls out, try and pick a replacement point which is most probable to be the correct point. For 80% of the data, this works fine. But for the other 20% this doesn't, because, "interference" from the ghost markers and fuzz markers messes up the skeleton when a marker falls out, and the data becomes more and more incorrect.

(The skeleton picks the wrong point for the knee let's say - it picks this ghost point, and then the knee is messed up, so when the foot point falls out, it can't quite figure out where the foot is supposed to be, so it ends up picking some other incorrect point, etc)

Is there a way opencv could help me with the problem?

I have points for a skeleton, but they drop out, and at the same time, incorrect ghost points are coming in and out randomly. I need to somehow pick the correct points all of the time.



edit retag flag offensive close merge delete


I don't know if OpenCV could help.

Nevertheless, I would try to buid a model of a human skeleton, maybe using simple constraint as joint angles, joint distances, etc... With this model you could discard incoherent points for example and also get the most probable skeleton based on noisy data.

Eduardo gravatar imageEduardo ( 2015-09-21 10:13:29 -0600 )edit

maybe something like human pose estimation

(also see project page for matlab code)

berak gravatar imageberak ( 2015-09-22 03:24:59 -0600 )edit

Yeah, I'm doing just that, building a model of human skeleton, etc. However there is no guaranteed "good" starting position, (meaning there is interference all through out), the person is at a different point in space, they are in different poses, etc etc... I want to find a solution which doesn't require any human intervention.

I figured OpenCV might have some way of tracking points in an image over time. Where in essence I would cease to look for a skeleton, and then just say, "there are X number of points in this image... Find X number of points that seem to move in some continuous (but not always continuous manner).


timtimtim gravatar imagetimtimtim ( 2015-09-28 17:04:57 -0600 )edit

For what I know, all the tracking algorithms in OpenCV use the image content and not raw point locations. For that, you could look at the Hungarian algorithm, or more generally on assignment problem. The Kalman Filter is widely use in tracking problems.

I would combine the skeleton approach + others things (tracking ?) instead of ceasing to use the skeleton as like you said it works for 80% of the data.

Not sure, but you could also look at Iterative Closest Point algorithm. It's definitely overkill but you could discard noisy points and then infer the missing joints with another method ?

Eduardo gravatar imageEduardo ( 2015-09-29 12:39:55 -0600 )edit