始める前に、Kinectにアクセスするために使用するソフトウェアを決定する必要があります。最も人気のある2つの選択肢は次のとおりです。
libfreenectもありますが、それは生の深度データのみを提供し、私の意見では、上記の2つよりも使いにくいです。
Kinect for Windows SDKとOpenNIはどちらもスケルトントラッキングを提供します。これは、ユーザーの場所とユーザーの体の一部を詳細に検出するための非常に便利な方法です。ただし、プロジェクトの場合、Kinectが天井に取り付けられて下向きになっているため、スケルトントラッキングが正しく機能しない可能性があります。提供されている追跡アルゴリズムは、ユーザーと直接向き合う場合、および体の大部分が見える場合(fを除く)に最適に機能します。
プロジェクトでは、おそらくスケルトントラッキングはまったく必要ありません(Kinect for Windows SDK / OpenNIで非アクティブ化できます)。頭のてっぺんから考えられるアプローチは次のとおりです。
- アプリケーションの開始時に、Kinectから画像を投影する表面までの距離を測定して、ソフトウェアを調整します。
- Kinectから受け取る新しい深度フレームごとに、現在のフレームとキャリブレーションフレームの違いを確認します。キャリブレーションフレームよりも現在のフレームのセンサーに近いピクセルのチャンクがある場合、それはオブジェクトであると見なすことができます。
もちろん、Kinectの深度測定は完全ではありません。誤検知を除外するには、ある種のエラー訂正を提供する必要があります。
このアプローチを使用すると、表面上に座っている、または表面上を移動しているほとんどのオブジェクトを検出できます。