Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Skeltrack - Open Source Skeleton Tracking

Skeltrack - Open Source Skeleton Tracking

Presentation of Skeltrack -- the only Open Source library for skeleton tracking.

Joaquim Rocha

May 26, 2012
Tweet

More Decks by Joaquim Rocha

Other Decks in Programming

Transcript

  1. Guten Tag! ✩ I am a developer at Igalia ✩

    I like doing innovative stuff like OCRFeeder and SeriesFinale ✩ and today I am presenting my latest project: Skeltrack
  2. This originated Open Source projects like the libfreenect, a library

    to control the Kinect device and get its information
  3. GFreenect offers asynchronous functions (and some synchronous as well) and

    makes it easy to use with other GNOME technologies
  4. What we wanted: ✩ A shared library, no fancy SDK

    ✩ Device independent ✩ No pattern matching, no databases ✩ Easy to use (everybody wants that!)
  5. After some investigation we found Andreas Baak's paper "A Data-Driven

    Approach for Real-Time Full Body Pose Reconstruction from a Depth Camera"
  6. Choose a starting point and calculate Dijkstra to each point

    of the graph; choose the furthest point. There you got your extrema!
  7. Then create an edge between the starting point and the

    current extrema point with 0 cost and repeat the same process now using the current extrema as a starting point.
  8. Baak chooses a centroid as the starting point We choose

    the bottom-most point starting from the centroid (this showed better results for the upper body extremas)
  9. For each extrema we look for the points in places

    where the shoulders should be, checking their distances between the extrema and between each other.
  10. The closest extrema to any of the shoulders is either

    a hand of an elbow of that shoulder
  11. If the distance between the extrema and the shoulder is

    less than a predefined value, then it is an elbow. Otherwise it is a hand.
  12. If it is a hand, we find the elbow by

    choosing the first point (in the path we created with Dijkstra before) whose distance exceeds the elbow distance mentioned before
  13. Hands from elbows: If one of the extremas is an

    elbow, we need to infer where the hand is
  14. Skeleton Joint: ID: HEAD, LEFT_ELBOW, RIGHT_HAND, ... x: X coordinate

    in real world (in mm) y: Y coordinate in real world (in mm) screen_x: X coordinate in the screen (in pixels) screen_y: Y coordinate in the screen (in pixels)