Libfreenect VS OpenNI - kinect

So I know this question has been done before but most of the other time it was still when both OpenNI and Libfreenect where being diveloped. My question are:
1)I want to know it what state the are now.
2)The differences between this two (pros, cons and anything else)
3)Specifically for skeleton tracking, which is better and give more data about the skeleton (for example in Microsoft SDK they give data for 20 joints, is it the same in this two, more, less?)

Libfreenect is mainly a driver which exposes the Kinect device's features:
- depth stream
- IR stream
- color(RGB) stream
- motor control
- LED control
- accelerometer
It does not provide any advanced processing features like scene segmentation, skeleton tracking, etc.
On the other hand, OpenNI allows generic access to Kinect's feature (mainly the image streams), but also provides rich processing features such as:
- scene segmentation
- skeleton tracking
- hand detection and tracking
- gesture recognition
- user interface elements
etc.
but no low level controls to device features like motor/LED/accelerometer.
As opposed to libfreenect which AFAIK works only with the Kinect sensor, OpenNI
works with Kinect but with other sensors as well like Asus Xtion Pro, Carmine, etc.
You've mentioned the Kinect SDK. It's good to bare in mind the are multiple Kinect sensors:
- Kinect for Xbox
- Kinect for Windows
The Kinect for Windows sensor for example allows a close mode and has a longer range.
I don't know how the skeleton tracking differs.
Also, there is a MS Kinect-OpenNI bridge bridge project and OpenNI2 works plays nice with Kinect

Related

Kinect for testing algorithms

Can I use kinect sensor for testing my algorithms related to depth measurement? Have someone already tried this?
I have researched a bit, and have thus few questions -
is there a linux driver to work with kinect?
Which kinect is advisable? Kinect v1 or v2?
is there a way that I can get the data on my computer using a USB cable? As far as I have seen, the kinect needs to be modified ( i.e add a 12 V power supply ). Does anyone know the specifications of this power supply? How many ampere should the power supply support?
lastly why is there is such a massive price difference between the usb adaptor for Kinect V1 ( for xBox 360 - 4 pounds ) and Kinect V2 ( for Xbox one - 50 pounds), although both of them simply divert power and data cable as far as I understand.
I'm not sure whether the Kinect sensor is appropriate for testing your algorithms given that I don't know the specifics, but to answer your other questions:
Yes, there are drivers such as OpenKinect's libfreenect for Kinectv1 or libfreenect2 for Kinectv2 for Linux.
Note that I only have experience with the official Kinect SDK. If you care about skeletal tracking quality, you should probably use the official Kinect SDK on Windows. If you don't care about the skeleton tracking, that gives you a lot more options.
Kinect v2 - it has better specs. Certain requirements might call for using Kinect v1, but generally, Kinect v2 is the default choice.
No, you need the adapter/power supply to connect it to a PC. The official power supply is 2.67A at 12V. There are many tutorials online for DIY, such as this YouTube video: How to Hack Xbox One Kinect to Work on Windows 10 PC
Supply and demand. The adapters are no longer being manufactured and there is more demand for the Kinect v2 adapters.

Finger Position Detection using Kinect

Are there any open libraries or opensource codes available for finger position detection using Kinect ?
I have tried searching OpenNI and other libraries for Kinect but could'nt find one.
I was looking into this a few years ago, you can check out this post from then which includes a few options.
Links may be a bit outdates, for example Apple bought OpenNI, so the Forth ICS project can now be found here
You didn't mention which version of the kinect, so I'll assume it's the original kinect for xbox 360.
If you're not constrained to using kinect only, you might actually want to try the Intel RealSense SDK as it already includes hand tracking(pdf tutorial link) and the c++ sdk has wrappers for c#/java and makes the data available through websockets.

Opening Kinect datasets and/or SDK Samples

I am very new to Kinect programming and am tasked to understand several methods for 3D point cloud stitching using Kinect and OpenCV. While waiting for the Kinect sensor to be shipped over, I am trying to run the SDK samples on some data sets.
I am really clueless as to where to start now, so I downloaded some datasets here, and do not understand how I am supposed to view/parse these datasets. I tried running the Kinect SDK Samples (DepthBasic-D2D) in Visual Studio but the only thing that appears is a white screen with a screenshot button.
There seems to be very little documentation with regards to how all these things work, so I would appreciate if anyone can point me to the right resources on how to obtain and parse depth maps, or how to get the SDK Samples work.
The Point Cloud Library (or PCL) it is a good starting point to handle point cloud data obtained using Kinect and OpenNI driver.
OpenNI is, among other things, an open-source software that provides an API to communicate with vision and audio sensor devices (such as the Kinect). Using OpenNI you can access to the raw data acquired with your Kinect and use it as a input for your PCL software that can process the data. In other words, OpenNI is an alternative to the official KinectSDK, compatible with many more devices, and with great support and tutorials!
There are plenty of tutorials out there like this, this and these.
Also, this question is highly related.

Kinect - 2 features simultaneously

I am trying to extract 2 features from the Kinect :
Captured video - I followed this guide:
http://social.msdn.microsoft.com/Forums/en-US/kinectsdk/thread/4ee6e7ca-123d-4838-82b6-e5816bf6529c
and succeeded to use the kinect as webcam and then used DirectShow in order to capture the video. Works just fine.
skeleton - I use the 1.7 Kinect SDK and the skeleton feature works sweet!
The Problem: Those 2 features don't work simultaneously
Each one of them works great by itself, but they just don't work together.
I have also tried checking the captured video in Skype's video settings section, while running the Skeleton Basics in the "Kinect for Windows Developer Toolkit 1.7"
Do you know why that happens and how can I fix that problem and enjoy the 2 features simultaneously?
Thanks a lot,
Guy.
this cannot be happen. I'm also working on a virtual dressing room concept and I could access the kinect joints and also the video stream too. I'm using xna so its cool with me to get the video buffer to the kinectSensor.ColorStream.Enable(ColorImageFormat.RgbResolution640x480Fps30);
kinectSensor.SkeletonStream.Enable(new TransformSmoothParameters()
I don't know what's your approach

Can the Kinect SDK be run with saved Depth/RGB videos, instead of a live Kinect?

This question relates to the Kaggle/CHALEARN Gesture Recognition challenge.
You are given a large training set of matching RGB and Depth videos that were recorded from a Kinect. I would like to use the Kinect SDK's skeletal tracking on these videos, but after a bunch of searching, I haven't found a conclusive answer to whether or not this can be done.
Is it possible to use the Kinect SDK with previously recorded Kinect video, and if so, how? thanks for the help.
It is not a feature within the SDK itself, however you can use something like the Kinect Toolbox OSS project (http://kinecttoolbox.codeplex.com/) which provides Skeleton record and replace functionality (so you don't need to stand in front of your Kinect each time). You do however still need a Kinect plugged in to your machine to use the runtime.