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

Skeltrack: Open Source Skeleton Tracking

Skeltrack: Open Source Skeleton Tracking

Slides for the presentation given at Semana da Ciência e Tecnologia da Universidade de Évora, April 17th 2012.

Joaquim Rocha

April 18, 2012
Tweet

More Decks by Joaquim Rocha

Other Decks in Programming

Transcript

  1. Skeltrack - Open Source Skeleton Tracking Joaquim Rocha, Igalia Semana

    da Ciência e Tecnologia Univ. de Évora, April 2012
  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 point in the middle of the path we created with Dijkstra 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)