Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8189201
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 7, 20262026-06-07T03:11:43+00:00 2026-06-07T03:11:43+00:00

Lately I have been working on trying facial recognition with the Kinect, using the

  • 0

Lately I have been working on trying facial recognition with the Kinect, using the new Developer Toolkit (v1.5.1). The API for the FaceTracking tools can be found here: http://msdn.microsoft.com/en-us/library/jj130970.aspx. Basically what I have tried to do so far is attain a “facial signature” unique to each person. To do this, I referenced these facial points the Kinect tracks: (http://i.msdn.microsoft.com/dynimg/IC584330.png) .

Then I tracked my face (plus a couple friends) and calculated the distance between points 39 and 8 using basic algebra. I also attained the values for the current depth of the head. Heres a sample of the data I obtained:

DISTANCE FROM RIGHT SIDE OF NOSE TO LEFT EYE: 10.1919198899636
CURRENT DEPTH OF HEAD: 1.65177881717682
DISTANCE FROM RIGHT SIDE OF NOSE TO LEFT EYE: 11.0429381713623
CURRENT DEPTH OF HEAD: 1.65189981460571
DISTANCE FROM RIGHT SIDE OF NOSE TO LEFT EYE: 11.0023324541865
CURRENT DEPTH OF HEAD: 1.65261101722717

These are just a few of the values I attained. So my next step was plotting them using excel. My expected result was a very linear trend between depth and distance. Because as depth increases, the distance should be smaller and vice versa. So for person X’s data the trend was fairly linear. But for my friend (person Y) the plot was all over the place. So I came to conclude that I can’t use this method for facial recognition. I cannot get the precision I need to track such a small distance.

My goal is to be able to identify people as they enter a room, save their “profile”, and then remove it upon once they exit. Sorry if this was a bit much, but I’m just trying to explain the progress I have made thus far. SO, what do you guys think about how I can implement facial recognition? Any ideas/help will be greatly appreciated.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-07T03:11:46+00:00Added an answer on June 7, 2026 at 3:11 am

    If you use a EnumIndexableCollection<FeaturePoint, PointF>
    so you can use a FaceTrackFrame‘s GetProjected3DShape() method.
    You use it like this:

      private byte[] colorImage;
    
      private ColorImageFormat colorImageFormat = ColorImageFormat.Undefined;
    
      private short[] depthImage;
    
      private DepthImageFormat depthImageFormat = DepthImageFormat.Undefined;
    
      KinectSensor Kinect = KinectSensor.KinectSensors[0];
    
      private Skeleton[] skeletonData;
    
      colorImageFrame = allFramesReadyEventArgs.OpenColorImageFrame();
      depthImageFrame = allFramesReadyEventArgs.OpenDepthImageFrame();
      skeletonFrame = allFramesReadyEventArgs.OpenSkeletonFrame();
      colorImageFrame.CopyPixelDataTo(this.colorImage);
      depthImageFrame.CopyPixelDataTo(this.depthImage);
      skeletonFrame.CopySkeletonDataTo(this.skeletonData);
      skeletonData = new Skeleton[skeletonFrame.SkeletonArrayLength];
    
      foreach(Skeleton skeletonOfInterest in skeletonData)
      {
           FaceTrackFrame frame = faceTracker.Track(
               colorImageFormat, colorImage, depthImageFormat, depthImage, skeletonOfInterest);
      }
    
      private EnumIndexableCollection<FeaturePoint, PointF> facePoints = frame.GetProjected3DShape();
    

    Then you can use each of the points in your image.
    I would have a const double preferedDistance that you can multiply the current
    depth and x and y of the different points to find the preferred version of the
    x and y’s and the depth by the formula

    preferredDistance / currentDistance

    Example:

            const double preferredDistance = 500.0;//this can be any number you want.
    
            double currentDistance = //however you are calculating the distance
    
            double whatToMultiply = preferredDistance / currentDistance;
    
            double x1 = this.facePoints[39].X;
            double y1 = this.facePoints[39].Y;
            double x2 = this.facePoints[8].X;
            double y2 = this.facePoints[8].Y;
    
            double result = whatToMultiply * //however you are calculating distance.
    

    Then you can have a List<> of what the distances are to search.
    I would also suggest that you have a List<> of bool which coorispond to the
    distances to set to true if the result matches, so you can keep track of which
    bool is true/false.

    Example:

            List<double> DistanceFromEyeToNose = new List<double>
            {
                1,
                2,
                3 //etc
            };
    
    
            List<bool> IsMatch = new List<bool>
            {
                false,
                false,
                false //etc
            };
    

    Then search it by using a for loop.

            for (int i = 0; i < DistanceFromEyeToNose.Count; i++)
            {
                if (result == DistanceFromEyeToNose[i]) IsMatch[i] = true;
            } 
    

    Hope this Helps!

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have been working with SharpSVN quite a bit lately and I'm currently trying
I am currently working on a website and lately have been using GD with
I am working in C++ and have been using pointers a lot lately. I
I'm pretty new to web development. Lately I have been making a site using
I have been working lately on a number of iterative algorithms in MATLAB, and
I have been working with Exceptions lately. I think it makes sense to log
Situation I have been working on a project lately where the UI development seems
I've been having some strange errors lately. I have a working install of Git,
Lately I have been trying my hands on Eclipse IDE for java development. I
I've been using Mercurial for some development lately and have been loving it. I'm

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.