Why the Kinect Matters
The Kinect announces a revolution in technology akin to those that shaped the most fundamental breakthroughs of the 20th century. Just like the premiere of the personal computer or the Internet, the release of the Kinect was another moment when the fruit of billions of dollars and decades of research that had previously only been available to the military and the intelligence community fell into the hands of regular people.
Face recognition, gait analysis, skeletonization, depth imagingthis cohort of technologies that had been developed to detect terrorists in public spaces could now suddenly be used for creative civilian purposes: building gestural interfaces for software, building cheap 3D scanners for personalized fabrication, using motion capture for easy 3D character animation, using biometrics to create customized assistive technologies for people with disabilities, etc.
While this development may seem wide-ranging and diverse, it can be summarized simply: for the first time, computers can see. While weve been able to use computers to process still images and video for decades, simply iterating over red, green, and blue pixels misses most of the amazing capabilities that we take for granted in the human vision system: seeing in stereo, differentiating objects in space, tracking people over time and space, recognizing body language, etc. For the first time, with this revolution in camera and image-processing technology, were starting to build computing applications that take these same capabilities as a starting point. And, with the arrival of the Kinect, the ability to create these applications is now within the reach of even weekend tinkerers and casual hackers.
Just like the personal computer and Internet revolutions before it, this Vision Revolution will surely also lead to an astounding flowering of creative and productive projects. Comparing the arrival of the Kinect to the personal computer and the Internet may sound absurd. But keep in mind that when the personal computer was first invented, it was a geeky toy for tinkerers and enthusiasts. The Internet began life as a way for government researchers to access one anothers mainframe computers. All of these technologies only came to assume their critical roles in contemporary life slowly as individuals used them to make creative and innovative applications that eventually became fixtures in our daily lives. Right now it may seem absurd to compare the Kinect with the PC and the Internet, but a few decades from now, we may look back on it and compare it with the Altair or the ARPAnet as the first baby step toward a new technological world.
The purpose of this book is to provide the context and skills needed to build exactly these projects that reveal this newly possible world. Those skills include:
Working with depth information from 3D cameras
Analyzing and manipulating point clouds
Tracking the movement of peoples joints
Background removal and scene analysis
Pose and gesture detection
The first three chapters of this book will introduce you to all of these skills. Youll learn how to implement each of these techniques in the Processing programming environment. Well start with the absolute basics of accessing the data from the Kinect and build up your ability to write ever more sophisticated programs throughout the book. Learning these skills means not just mastering a particular software library or API, but understanding the principles behind them so that you can apply them even as the practical details of the technology rapidly evolve.
And yet even mastering these basic skills will not be enough to build the projects that really make the most of this Vision Revolution. To do that, you also need to understand some of the wider context of the fields that will be revolutionized by the cheap, easy availability of depth data and skeleton information. To that end, this book will provide introductions and conceptual overviews of the fields of 3D scanning, digital fabrication, robotic vision, and assistive technology. You can think of these sections as teaching you what you can do with the depth and skeleton information once youve gotten it. They will include topics such as:
Building meshes
Preparing 3D models for fabrication
Defining and detecting gestures
Displaying and manipulating 3D models
Designing custom input devices for people with limited ranges of motion
Forward and inverse kinematics
In covering these topics, our focus will expand outward from simply working with the Kinect to using a whole toolbox of software and techniques. The last three chapters of this book will explore these topics through a series of in-depth projects. Well write a program that uses the Kinect as a scanner to produce physical objects on a 3D printer, well create a game that will help a stroke patient with physical therapy, and well construct a robot arm that copies the motions of your actual arm. In these projects, well start by introducing the basic principles behind each general field and then seeing how our newfound knowledge of programming with the Kinect can put those principles into action. But we wont stop with Processing and the Kinect. Well work with whatever tools are necessary to build each application, from 3D modeling programs to microcontrollers.
This book will not be a definitive reference to any of these topics; each is vast, comprehensive, and filled with its own fascinating intricacies. This book aims to serve as a provocative introduction to each areagiving you enough context and techniques to start using the Kinect to make interesting projects and hoping that your progress will inspire you to follow the leads provided to investigate further.
Who This Book Is For
At its core, this book is for anyone who wants to learn more about building creative interactive applications with the Kinect, from interaction and game designers who want to build gestural interfaces to makers who want to work with a 3D scanner to artists who want to get started with computer vision.
That said, you will get the most out of it if you are one of the following: a beginning programmer looking to learn more sophisticated graphics and interactions techniques, specifically how to work in three dimensions, or an advanced programmer who wants a shortcut to learning the ins and outs of working with the Kinect and a guide to some of the specialized areas that it enables.
You dont have to be an expert graphics programmer or experienced user of Processing to get started with this book, but if youve never programmed before, there are probably other much better places to start.
As a starting point, Ill assume that you have some exposure to the Processing creative coding language (or can teach yourself that as you go). You should know the basics from Getting Started with Processing by Casey Reas and Ben Fry (http://shop.oreilly.com/product/0636920000570.do),