2013-06-17 35 views
9

必要条件は、3D空間内の各目の周りに長方形を定義することです。 Microsoft Kinect SDKを使用して目を追跡する方法があるはずです。 thisKinect SDKを使用して目を追跡する方法は?

に係る顔トラッキングSDKは、オンラインショップを出力するように、その 3D追跡結果を座標系を使用します。原点はカメラの光学系の 中心(センサー)にあり、Z軸はユーザーの方を指しており、Y軸は を指しています。測定単位は、 回転角度の変換と度合いのメーターです。 SDKは、顔を追跡開始時Microsoft.Kinect.Toolkit.FaceTrackingでCreateResultに

... 
Debug3DShape("OuterCornerOfRightEye", faceTrackFrame.Get3DShape() 
    [FeaturePoint.OuterCornerOfRightEye]); 
Debug3DShape("InnerCornerRightEye", faceTrackFrame.Get3DShape() 
    [FeaturePoint.InnerCornerRightEye]); 
Debug3DShape("InnerCornerLeftEye", faceTrackFrame.Get3DShape() 
    [FeaturePoint.InnerCornerLeftEye]); 
Debug3DShape("OuterCornerOfLeftEye", faceTrackFrame.Get3DShape() 
    [FeaturePoint.OuterCornerOfLeftEye]); 
... 
private void Debug3DShape(string s, Vector3DF v) 
{ 
    Debug.WriteLine(s + " X " + v.X + " Y " + v.Y + " Z " + v.Z); 
} 

追加

は()

OuterCornerOfRightEye X -0.05728126 Y 0.04850625 Z -0.1144406 
InnerCornerRightEye X -0.01584376 Y 0.04850625 Z -0.1279687 
InnerCornerLeftEye X 0.01584374 Y 0.04850625 Z -0.1279687 
OuterCornerOfLeftEye X 0.05728124 Y 0.04850625 Z -0.1144406 

を印刷します。 私はこれらの座標を使って各目の周りにボックスをペイントすることができるはずですが、 Z座標はおそらく-0.1 ..または-0.2ではなく1.0に近いはずです(私の設定に基づいて)数字。 XYZはセンサーに対する3D空間内のFeaturePointの位置になっていますか? 私はKinect座標系を誤解していますか? Kinect SDKを間違って使用していますか? 私はXbox 360 Kinectセンサーを使用していますか? (MicrosoftがWindowsアプリケーションとXbox 360のKinectセンサーのためのKinectのための完全な互換性を保証するものではありません)

編集:これは FaceTracker.csへ

if (trackSucceeded) { 
    ... 
    if (headPointsObj != null) 
     for (int i = 0; i < 2; i++) 
      DebugHeadPoint(i, headPointsObj.Points); 
} 
private void DebugHeadPoint(int i, Vector3DF[] points) { 
    if (points == null) throw new ArgumentNullException("points"); 
    Debug.WriteLine("HeadPoint[" + i + "] X " + points[i].X + 
     " Y " + points[i].Y + 
     " Z " + points[i].Z); 
} 

::トラック()この

を印刷し追加
HeadPoint[0] X 0.01227657 Y -0.2290326 Z 1.319978 
HeadPoint[1] X 0.00613283 Y -0.02143053 Z 1.280334 
HeadPoint[0] X 0.003939687 Y -0.2297621 Z 1.319813 
HeadPoint[1] X -0.003732742 Y -0.02388078 Z 1.277723 
... 

これらの数字は、セットアップに基づいて正しいようです。 FeaturePointsは1回だけ印刷されますが、ヘッドポイントはtrackSucceeded中に連続して印刷されます。 FeaturePoint値はヘッドポイントを基準にしていますか? MSDNフォーラムで私たちの会話パー

+0

、XYZは、Kinectの原点からミリメートルで測定されます。私は値が同じであると推測しますが、顔のポイントとの違いかもしれません。私は確かめる前に、顔のトラッカーと直接間違ってはいません。 –

+0

@EvilClosetMonkey:[this](http://msdn.microsoft.com/en-us/library/jj130970.aspx#ID4EWF)による_測定単位はメートルです。 – jacknad

+0

確かに、顔のトラッカーにとってはメートル単位のようです。通常の深さ[座標系](http://msdn.microsoft.com/en-us/library/hh973078.aspx)はミリメートル単位で報告していますが、上記のリンクを追跡していませんでした。 Kinectからどのくらい離れて座っていますか?支配者をつかむ! :) –

答えて

関連する問題