Kinect for Windows SDK beta vs. OpenNI
With the release of the official Kinect for Windows SDK beta from Microsoft, there have been a few questions on what the pros and cons of using Microsoft’s SDK over one of the previously available hacked SDKs. Since there are several of these SDKs floating around we’ll use the largest, OpenNI, as our hacked SDK in these comparisons.
1. Skeleton – both SDKs have skeleton systems that track 20 unique joints on the human body. Both have lag times in the mere milliseconds and can handle tracking 2 users simultaneously. The deciding factor in this race comes down to tracking initialization. OpenNI’s tracking system requires a user to hold a calibration pose until the tracking system can identify enough of the joints to make out a player. The time this requires varies wildly depending on enviroment conditions and processing power. The Windows SDK uses a specialized system (Learn More Here: http://research.microsoft.com/pubs/145347/BodyPartRecognition.pdf) that compares known images of humans to the incoming data from the depth stream allowing them to quickly (less than a second in most cases) determine human shaped objects, and from that generate a joint set. This is great in a walk in/walk out situation, however, it is more prone to false positives than OpenNI.
Winner: Windows Kinect SDK
2. Joint Accuracy – both systems generate a tracking set of 20 joints, and there’s no discernible difference in tracking accuracy. The Windows SDK does have an advantage over its opponents, since its tracking system can do predictive tracking of joints, which allows them to maintain a relatively high degree of accuracy in situations where the sensor loses track of the user. There are 2 major downsides to this, first, it can cause the sensor to generate false positives where it can track non-human objects as humans and, secondly, it requires significantly more processing power to use. While OpenNI cannot do the predictive analysis that Microsoft can, it generates very little in the way of false positives and it requires much less computational power to do so.
Winner: Tie
3. Color Video Stream: While both systems are able to access the color camera, the Windows SDK is able to grab the full 1024×768 resolution of the camera, while OpenNI is only able to get a scaled down 800 x 600 version. This could mean a world of difference in an application that uses the color camera.
Winner: Windows Kinect SDK
4. Audio Recording – While OpenNI has a driver that allows you to access the Microphone array on the Kinect Sensor, there is currently no support for it with in the API. The Windows API, on the other hand, allows full access, and recording capabilities. It even allows for the noise canceling effect of the Microphone array.
Winner: Windows Kinect SDK.
5. Speech Recognition – The Windows SDK is the clear winner in this category, seeing as how OpenNI has no capability to record audio from the device. The Windows SDK gives you access to the same speech recognition library used on the Xbox 360 implementation of the Kinect SDK. This means you can quickly and easily generate speech files using XML, and import and test them long before you application is completed, using the speech tools. Noise canceling and user selecting is built into the system, using the Sensor’s microphone array.
Winner: Windows Kinect SDK
6. Platform Dependence – OpenNI has a clear edge in this area, seeing as how Microsoft has only deployed the Kinect SDK on Windows. OpenNI is completely supported across platforms, including most major Linux distributions and OS X. This is great if you need to build an application that is multi-platform, and since the code is open source, theoretically developers could port it to any future platform as well.
Winner: OpenNI
With our data laid out, it shows that in most cases the Kinect for Windows SDK is the better choice. It has superior joint tracking, full support for voice recording and recognition, and it even has high resolution access to the color cameras. Even so, there are still reasons to consider using OpenNI or any of the multitude of open source systems available for the Kinect Sensor and seeing as how this technology has just reached consumer price levels, I expect we will see some incredible leaps forward in these systems in the near future.
