Kinect for Windows version 2: overview

Kinect 2 unboxed

NOTE: This is preliminary software and/or hardware and APIs are preliminary and subject to change.

Well, I have been lucky enough since Microsoft selected me for early access to the new Kinect for Windows version 2 sensor. Today, I want to share some facts and figures regarding the new device.

The hardware

The new sensor features a radically different hardware design. First thing to notice is that the tilt motor is now gone. However, the new cameras provide a wider field of view and feature frames of higher resolution. Above, you can see my Developer Preview unit, unboxed. Below, you can watch a quick video I made, demonstrating the new color, depth, infrared and body streams.

And here are the differences between the old and the new sensor.

Version 1 Version 2
Depth range 0.4m → 4.0m 0.4m → 4.5m
Color stream 640×480 1920×1080
Depth stream 320×240 512×424
Infrared stream None 512×424
Audio stream 4-mic array 4-mic array
USB 2.0 3.0

The software

The new API is quite similar to the old one, however, the projects developed using Kinect SDK v1 will not run as-is on the new sensor. Some class names and methodologies have been changed, so a plain recompile won’t do the job. Do not worry though. Throughout the upcoming series of blog posts, I will try to explain every difference and guide you step-by-step on creating your Kinect v2 projects.

So, here are my highlights:

Better camera streams

Kinect combines a color, a depth and an infrared camera at an affordable price. Version 1 had low specification cameras, even though the results were stunning. The second version of Kinect doubles the color camera resolution and almost-doubles the depth camera resolution. The data are processed faster and the accuracy is radically increased.

Kinect 2 depth stream

More joints

Yeah, the new sensor tracks up to 25 body joints, along with their corresponding orientations. There are some joint renames as well.

Kinect 2 body stream

Hand tracking

That’s right! Except from joint tracking, the new sensor lets us determine the state of the users’ hands. The state is just an enumeration with values of “Open”, “Closed”, “Lasso”, “Unknown” and “NotTracked”. This is really useful for creating smoother natural user interfaces. For example, we can now determine that the user is performing a wave gesture when the hand joint is moving AND the hand state is “Open”. If you need more advanced finger tracking, consider Candescent NUI.

Facial expressions

Kinect for Windows version 1 could track 40 points of the human face. Kinect for Windows version 2 goes one step further and can even recognize some very basic facial expressions, activities and accessories! Here are supported facial data:

  • Eyes closed
  • Eyes looking away
  • Mouth open
  • Mouth moved
  • Glasses accessory
  • Happy expression
  • Neutral expression
Kinect 2 eye closed
Kinect 2 mouth open

Potential? Unlimited! Personally, I control the lights of my house using gestures in front of my Kinect sensor. Now, I can just blink my eye and the living room spots turn on! (More on this at a later blog post)

Overall

Let me clarify that I am not paid by Microsoft, though Kinect for Windows version 2 is my gadget of choice for 2014. Everything has been dramatically improved and new features will be popping all the time. Now, the only limit of software is your imagination.

PS: Vitruvius

If you enjoyed this post, consider checking Vitruvius. Vitruvius is a set of powerful Kinect extensions that will help you build stunning Kinect apps in minutes. Vitruvius includes avateering, HD Face, background removal, angle calculations, and more. Check it now.

Author Vangos Pterneas

Vangos Pterneas is an award-winning Microsoft Most Valuable Professional. He is helping companies from all over the world grow their revenue by creating profitable software products. He loves Motion Technology and Mixed Reality. Vangos is the CEO of LightBuzz Inc and author of The Dark Art Of Freelancing.

More posts by Vangos Pterneas

Join the discussion 16 Comments

  • Nazli says:

    About USB 3.0 requirement, I was wondering if a USB 3.0 Card Adapter works for Kinect v2 or not. My machine does not have the hardware requirements right now, and I am not sure if a card adapter and the power supply would be compatible with v2 or not.
    Thanks

    • Hi Nazli,

      I have not tested Kinect v2 with a USB 3 card adapter. The release notes require “Built-in USB 3.0 host controller (Intel or Renesas chipset)”.

      Currently, Kinect for Windows v2 is under Developer Preview, so the final requirements will most probably change by summer.

  • Diego says:

    Hello Vangos,

    I’ve just started working with the Kinect SDK 1.8, but I will be switching to the new version later this month. I’m interesting in the facil expressions and looks like the improvement was amazing. From 40 points to 2000, it will really give us way more facial details.
    Just one question, the app that you have used to recongnize your left eye and mouth open in your post, is it a sample project available in the new sdk tookit?

    Thank you!
    – Diego

  • Erfan says:

    Hi Vangos,

    I am new with Kinect, and I have problem with missing hands and wrists locations. I am trying to collect data for my project which is gesture detection and recognition using skeleton tracker of Microsoft, but there are lots of missing data. How can I solve the problem? Is there any way that I could correct my previous data as well as changing the code so that I could collect reliable data? Would new connect be helpful?

    -Erfan

  • Jony Yang says:

    Hi Vangos,
    I am trying to modify Candescent NUI in order to make it work with Kinect V2. But it turned out very difficult to a starter like me because I don’t have experience in V1 SDK and now I can’t sort out all the new names/places for V1 classes/objects. I konw some of them have been either replaced by or removed from V1, Do you know where I can find a change list for all the difference? For example, what is it in V2 for DepthImageFrame.PlayerIndexBitmask in V1

    • Hi Jony. There is now equivalent to the PlayerIndexBitmask. Instead, you can use the BodyIndexFrame that is new to Kinect v2. BodyIndexFrame works like the color, depth and infrared frames and provides useful information about the bodies. Check the CoordinateMapping Basics example from the Kinect v2 samples.

  • huda says:

    hi ..
    how could i program Kinect v2 to compare the user movement with pre-stored movement . & how could i store movement & whats the best method to add graphics and with which graphic program ?!
    PS : i’m new to programming stuff 😀

  • vahid says:

    hi
    Recently i purchase a new kinect for windows (V2). i need to capture depth data. therefore i installed SDK 2 for this reason. i captured depth data with Depth D2D or WPF in SDK 2. but i see the depth data that kinect captured,is very different from real depth. also we can see that many depth data will change suddenly into a random value of pixel(something like above 238, 140 or 3). And we also find that many black and white pixel appear on the display which also means that there exists an extreme sudden change between zero and a great value.
    What makes this happen and how can I filter it if I don’t need this sudden change?

  • Ashish Narnoli says:

    Hi Vangos,

    Thanks for writing a truly amazing blog on Kinect!

    I am very new to Kinect. I just purchase XBox One + Kinect Sensor. Only I need to purchase Kinect Adapter to connect with PC. I need to start a project which will work on many POS (Point of Sale) with a common data center. The application will capture the human motions, body tracking etc. and send it to the data center.

    Can you please suggest me should I go with WPF application or with HTML5 applications. Which one is preferable for my purpose?

    I have my PC with WIndows 8.1 and SDK 2.0 installed.

    Thanks!
    Ashish

    • Hi Ashish,

      Thank you very much for your comment. Kinect uses a lot of CPU resources. So, I suggest you go for a native (WPF) solution. You can transmit data over the web, but that would make your applications slightly slower.

Leave a Reply