If you have been frustrated with the lack of an open source skeleton tracking system for the Kinect your wait is over.
Currently there is an open source driver available for the Kinect, or you can use Microsoft's Kinect SDK for Windows, which is free to use commercially as long as you buy a Windows Kinect to work with it. The Microsoft SDK includes a high quality skeleton tracker and there is also a similar free-to-use skeleton tracker in the OpenNI framework. However, if you wanted to get inside the code and modify it, you were out of luck.
Skeltrack is the first alternative open source alternative. It has been implemented by a Spanish company Igalia based on the ideas described in this paper by Andreas Baak. The new skeleton tracker, however, doesn't make use of a pose database. Instead it is just a set of heuristic features. This approach means that the user doesn't have to start of with a special initialization position for the tracker to lock on to. The features are simply computed and the location of the joints returned.
Microsoft spent a large amount of computing time using machine learning to derive its joint detection features, so it is likely to be difficult to construct good features heuristically.
The resulting program provides an asynchronous tracking API using GLib and supports single user tracking with up to 7 joints - head, shoulders, elbows and hands. It uses the same company's open source wrapper for the Open Frameworks.
The big drawback of the system at the moment is that it only works if the user is the only object in the scene. That is, it requires a background subtraction to work properly. As the creators say in a recent blog post:
Skeltrack is in its early beginnings and we want to detect more skeleton joints and work on stabilizing the results so, its features and API might change in the future.
You can see the Skeltrack in action in the demo video below:
Creating such technically difficult software without the resources of a company like Microsoft is a tough task for the open source movement. Let's hope that it can be fine tuned and made as efficient as the Microsoft machine learning version.
If you know of any other attempts to build a skeleton tracker let us know.
One of the big problems with computer languages is they tend to throw their hands in the air (metaphorically) and give up at the slightest problem in executing your code. Now C# is taking a small step [ ... ]