CodePlex:Kinect Audio Positioning
昨日の「Kinect for Window SDK をつかおう!」セミナーで紹介した Kinect マイクロフォンアレイを使った音源位置検出(正確には角度検出)の WPF サンプルを KinectAudionPosition.CodePlex にアップロードしました。
ビームフォーミング技術を使って角度を検出しているそうです。上図の緑の線がビームです。音源がどのビーム(青色)にいるかと、ビーム間のどのあたりかも予測値(オレンジ色)として分かるようになっています。
InotifyPropertyChanged を継承した KinectMicArray クラスを作成しました。このクラスでは BackgroundWorker でオーディオをサンプリングして(実際にはオーディオストリームは使いませんが)、KinectAudioSource.SoundSourcePosition プロパティ(音源予測角度)と、BeamChanged イベント ハンドラーで得たMicArrayBeamAngle を取得します。取得したことを Progress Report として UI スレッドに報告して、UI スレッドで PropertyChanged イベントを発生させています。これは BackgroundWorker(別スレッド)では PropertyChanged イベントを発生させることができないためです。
メインウィンドウでは、(WPF アプリらしく)直線の角度とこれらの角度をバインディングして、自動的にアニメーションができるようにしました。このサンプルではコード(C#)で書きましたが、XAML でも書けるはずです。