2014年10月10日金曜日

KinectにてColorFrameに対応するDepthFrameのPlayer情報を入手する方法

KinectではDepthカメラとColorカメラに座標のズレが有るため、v1.6から下記の座標変換系のメソッドがあります。(Kinect.CoordinateMapperクラスより)
  • MapColorFrameToDepthFrame 
  • MapColorFrameToSkeletonFrame 
  • MapDepthFrameToColorFrame 
  • MapDepthFrameToSkeletonFrame
  • MapDepthPointToColorPoint 
  • MapDepthPointToSkeletonPoint  
  • MapSkeletonPointToColorPoint 
  • MapSkeletonPointToDepthPoint
しかしこれはよく見ると、ColorPointから変換するメソッドがありません。つまり、Colorイメージのある座標をとることができない?実は、MapColorFrameToDepthFrameを利用すれば変換できるんですが、このメソッドで出力されるDepthImagePointについては、
  •  DepthImagePointクラスではPlayerIndexがとれない。(Depthはとれる)
という訳の分からない仕様になっています。ですので、一般的にはPlayer情報を取ってくるには、DepthImageのループから該当する箇所のColorImage座標を取ってくるという手法が取られてます。しかし、逆のことがしたいことってあるはずです。

解決策は、前記事にヒントがあります
つまり、ColorImageに合わせたマスクをあらかじめ作っておくことで、任意の座標からPlayer情報の有無を呼び出すことが可能です。実は前記事は、画像のマスクとした扱えるように2値化してますが、もっとシンプルな形式で保存しても構わないと思います。


0 件のコメント:

コメントを投稿