Author: Rob Miles
Publisher: Microsoft Press
Audience: Newcomers to Kinect who already program in C#
Reviewer: Harry Fairhead
A simple book on the Kinect API. Can it help anyone get started?
The Kinect is a wonderful toy and I don't mean as part of video games. You can gain many hours of happy fun just trying to make it do things that only a short time ago were the stuff of science fiction - or at least the preserve of big companies with lots of money.
The Kinect is cheap and easy - well not so easy. The learning curve can be steep. This book tries to lower the barrier to getting started as much as possible. To achieve this, it has to compromise and it inevitably doesn't get very far in its 240 pages. However, if you accept its limitations you might find that it achieves its purpose.
My first impression was that this is a book for people who really don't want to know the details. In fact, it does get to the details it just takes a little longer. Chapter 1 opens with a very general look at the Kinect and how it works. You don't need to know much of this to get started but it is good background material.
Chapter 2 is really where things start and it is important to realize that the whole book is about the Microsoft Kinect API and not any open source software you might have heard about. All of the programs are also written in C# and use a mixture of WPF and XNA. What this means is that if you are looking for a book that introduces you to high performance C++/DirectX Kinect applications then you need to find another book.
However, using C# and the Microsoft API does make programming the Kinect much easier. After telling you how to get the API the first project in Chapter 3 is a simple video camera app. This makes sense as using the depth camera follows the same basic steps but it has slightly more options. The chapter walks you step-by-step through building the application and most of the instructions are explained - except when we get to working with the video data which is just presented as a "do this and it works". At first I thought this was a failing, but as more details are revealed as you progress it seems a reasonable approach.
Chapters 4 and 5 begin a new section of the book called "Using the Kinect Sensor". First we have a recap of using the video sensor by way of a small project to take a snapshot when anything moves. This includes a section on writing unsafe code and using pointers to speed things up and even on using threads to do the processing.
Chapter 6 looks at the depth sensor and here we get into the details of the image formats etc. The projects are about detecting intruders. drawing in the air, and an XNA game controller.
Chapter 7 looks at the sound sensor and is mainly about recording sound and building an XNA oscilloscope style display of the input. This part of the book doesn't go far enough but all is well because the subject is picked up again in Chapter 9 where speech recognition is introduced.
The next section is called "Creating Advanced User Interfaces" and it moves up to a much more exciting level of applications. Chapter 8 deals with body tracking, Chapter 9 covers voice control and Chapter 10 is an augmented reality project.
The final two chapters bring the book to a close with a look at some hardware mods and real world control and an overview of what to do next - complete with short examples of using features such as sound location.
And then the book comes to an end ... which will be a disappointment for many readers. It's not often that I conclude that a book would be better with another 100 pages, but this one would be. What is missing are any of the fun things you can do with Kinect and 3D displays - no point cloud, for example. However, I have to admit that this is going into material beyond "Start Here" so it isn't a real criticism.
To get anything at all from this book you do need reasonable skills at programming in C#. The programming examples aren't complex, and they are well explained, but this book does not teach you to program. However, the first two or three chapters might be sufficient motivation for you to go and find out how to program as they are easy enough to give you a glimpse of what lies over the horizon.
On the other hand don't bother with this book if you are an expert C# programmer and capable of reading the API documentation. You simply won't need such a steadily paced introduction.
If you do fit the profile of wanting to get started with the Kinect in a painless way, then this book comes highly recommended.
Practical Windows Kinect In C#