Sunday, 20 February 2011

Motion Tracking of an object moving with Six Degrees of Freedom

What is Six Degrees of Freedom (6 DoF)?

6 DoF (Image from: http://forums.eidosgames.com/showthread.php?p=1377717)














In simple words, 6 DoF is ability of an object to, move along and rotate around, the three axes of a Cartesian Coordinate System.

Motion Tracking for Feel3D

There are many systems developed for  augmented reality projects which track motions But almost all of them are focused on tracking motion of human face or hand, and those systems use unique features of those body parts to track motion. So ability to use those mechanisms for this project is limited.

Forum post on stackoverflow.com generated lot of information on the current situation of this area.

Keeping the knowledge gained in mind we decided to try to design a mechanism to calculate motion of a 3D object.

The proposed approach for motion tracking

We are using a static background. So detecting the moving object can be done easily using a background subtraction mechanism. Then we will apply methods described below on the foreground (object) pixels to calculate needed information.

First we will track motion of the object giving it 2 DoF on X and Y axes of Cartesian Coordinate System. This is expected to be pretty much straight forward. There are many methods available to do this, including blob tracking using OpenCV library. We assume that movements are restricted to X,Y plane.

Secondly, we will add another degree of freedom to the object. We will calculate rotation of the object around Z axis. We propose, first find the line connecting mid points of front and back of the object. Then calculate the difference of rotation angle of this line at two time points. At this phase we assume that movements are restricted to X,Y plane and rotation only happen around Z axis.

Thirdly we will try to address the more challenging problems, tracking motion of the object with other 3 degrees of freedom. To tackle this we propose a method that use edges. We plan to detect edges of the object and then infer rotation angles based on distance between two parallel edges and the intensity values of pixels near the edges. We can also use surface features to infer rotation direction of the object.

Next steps of the project will be directed towards implementing above proposed approach.


No comments:

Post a Comment