2013-06-17 30 views
9

Yêu cầu là xác định hình chữ nhật quanh mỗi mắt trong không gian 3D. Nên có cách theo dõi mắt bằng cách sử dụng Microsoft Kinect SDK. Theo thisCách theo dõi mắt bằng Kinect SDK?

The Face Tracking SDK sử dụng Kinect hệ ​​tọa độ để ra kết quả theo dõi 3D của nó. Nguồn gốc được đặt tại trung tâm quang học của máy ảnh (cảm biến), trục Z hướng về phía người dùng, trục Y đang trỏ tới . Đơn vị đo lường là mét để dịch và độ cho các góc quay .

Thêm

... 
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); 
} 

để CreateResult() trong Microsoft.Kinect.Toolkit.FaceTracking in

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 

khi SDK bắt đầu theo dõi một khuôn mặt. Tôi có thể sử dụng các tọa độ này để vẽ một hộp xung quanh mỗi mắt nhưng tọa độ Z có thể gần với 1.0, không phải là -0.1 .. hoặc -0.2 .. (dựa trên thiết lập của tôi) vì vậy tôi không tin tưởng những con số. XYZ có phải là vị trí của không gian 3D trong không gian 3D có liên quan đến cảm biến không? Tôi có hiểu nhầm hệ thống tọa độ Kinect không? Tôi có sử dụng Kinect SDK không chính xác không? Tôi có đang sử dụng cảm biến Kinect Xbox 360 không? (Microsoft không đảm bảo khả năng tương thích đầy đủ cho Kinect cho các ứng dụng Windows và Kinect Sensor Xbox 360)

Chỉnh sửa: Thêm này

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); 
} 

để FaceTracker.cs :: Track() in

này
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 
... 

Những con số này có vẻ chính xác dựa trên thiết lập. Tính năng FeaturePoints chỉ in một lần nhưng HeadPoints in liên tục trong khi trackSucceeded. Các giá trị FeaturePoint có liên quan đến HeadPoint không?

+0

Bên ngoài dò tìm khuôn mặt, XYZ được đo bằng milimet từ nguồn gốc Kinect. Tôi đoán các giá trị là như nhau, mặc dù chúng có thể khác biệt so với điểm mặt. Tôi đã không delt trực tiếp với bộ theo dõi khuôn mặt trước để chắc chắn. –

+0

@EvilClosetMonkey: Theo [this] (http://msdn.microsoft.com/en-us/library/jj130970.aspx#ID4EWF) _Các đơn vị đo lường là mét_. – jacknad

+0

Thật vậy, dường như là tính bằng mét cho bộ theo dõi khuôn mặt. Độ sâu thường xuyên [hệ tọa độ] (http://msdn.microsoft.com/en-us/library/hh973078.aspx) báo cáo tính bằng milimét và tôi đã không theo dõi liên kết bạn đã đăng ở trên. Làm thế nào xa Kinect bạn đang ngồi? Lấy một người cai trị! :) –

Trả lời

Các vấn đề liên quan