Kinectプログラミングをより楽しむための、新分野入門の勧め
この記事はOpenNI Advent Calendarの15日目の記事です。
さて、この記事をチェックされる様な方であれば、ある程度はKinectセンサーとそのドライバについて知識はあると思います。さらに、それらを使って何かを作りたいと考えている人も多いでしょう。Kinectはとても魅力的なデバイスです、ある程度のプログラミング経験があればモーションキャプチャセンサーとして使えてしまう環境が整っており、デバイスを使った開発などした事もない人間でも簡単に扱えます。
しかし、実際にアプリケーションを作ってみようとすると、全く未経験の領域に足を突っこむ事に気がつきます。画像処理、音声処理、機械学習、コンピュータインタラクション etc…。それらについて既に習熟していれば問題は無いのですが、私の様な大学で生物を専攻してしまった*1人間には全くもって未知の分野。ここからは、私の経験を元にKinectプログラミングに関係するいくつかの分野に足を踏みいれるのに役に立ちそうな書籍や情報源を紹介します。
画像処理
なにはともあれ最初は画像処理でしょう。Kinect SDKやNITEのボーントラッキング、ユーザー認識は高度な画像処理技術によって実現されています。深度画像を表示したい、加工したい、といった場合。Kinect SDKで深度画像とビデオカメラの像を合せたい、という時に必要になる知識です。
他の本は読んでいないのでわかりませんが、CV界隈の偉い人がオススメしていたので良い本なんだろうなと。本と並行してOpenCVを触ってみると、動作イメージが掴めるかと。
音声処理
画像処理よりもさらに経験した事のある人は少ないであろう音声処理について。Kinectといえばボーントラッキングみたいな印象があるけど、Kinect SDKは録音、音声認識、ビームフォーミングといったAudio APIもあります。
表現
openFrameworksやProcessingといったヴィジュアルプログラミングフレームワークの使い方は、プログラミング経験があるのであれば本よりもネットに公開されている動画とコードを読むのがてっとり速いです。最初はパーティクル飛ばしから。
フィルムアート社
売り上げランキング: 230935
コンピュータインタラクション
(Computer Science Library)
(有斐閣アルマ―Specialized)
機械学習
Kinect SDKのボーントラッキングに使われているあれ。顔認識や手書き文字認識も機械学習で実装されます。
OpenCVだと学習データ作って何個かコマンドを打てば検出器ができてしまうのですが、それがどの様に実現されているのか知りたくもなります。
本は読んでいないのですが、スタンフォード大学のオンライン講義に機械学習のクラスがあったので受けています。3週目に手書き文字認識の実装という課題が出ました。来季も機械学習のコースはあります。
とにかく数式が出てくるので、数式アレルギーの荒治療としても効果的。
まとめ
これだけの分野を全て習得するのは難しいでしょうが、一つでも深くやりこめば相当面白い物が作れると思います。OpenNIの使い方を覚えたら、次は上のどれかの分野に足を突っ込んでみてはいかがでしょうか。
*1:今でも後悔している