Transcript
Page 1: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

Skeltrack - Open Source Skeleton Tracking

Joaquim Rocha, IgaliaGUADEC 2012 - A Coruña

Page 2: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

Igalia's Interactivity Team was on to investigateimmersive applications using FOSS

Page 3: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

These applications representnew/different ways of interaction for users

Page 4: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

Those can go from entertainment to more serious applications

Page 5: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)
Page 6: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

The Kinect

Page 7: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

Microsoft's Kinect was the first camerawith a price affordable to the public

Page 8: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

The USB connection is open and thus hackable

Page 9: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

This originated Open Source projects like the libfreenect,a library to control the Kinect device and get its information

Page 10: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

We created a GLib wrapper for libfreenect called GFreenect

Page 11: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

GFreenect offers asynchronous functions (and some synchronous aswell) and makes it easy to use with other GNOME technologies

Page 12: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

GObject Introspection opens these technologies for users ofPython, Javascript, Vala, etc.

Page 13: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

The Kinect has a structured light camera which gives depth information

Page 14: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

But that's raw information... values from 0-2048

Page 15: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

libfreenect/GFreenect can give those values in mm

Page 16: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)
Page 17: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

Still...

Page 18: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

It does NOT tell you there is a person in the picture

Page 19: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

Or a cow

Page 20: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

Or a monkey

Page 21: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

Let alone a skeleton and where its joints are!

Page 22: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

For this you need a skeleton tracking solution

Page 23: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

Skeleton Tracking

Page 24: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

Three proprietary/closed solutions exist:

Page 25: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

Microsoft Kinect SDK: non-commercial only

Page 26: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

OpenNI: commercial compatible

Page 27: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

Kinect for Windows: commercial use allowedbut incompatible with the XBox's Kinect

Page 28: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)
Page 29: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

Conclusion: There were no Free solutions toperform skeleton tracking... :(

Page 30: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

So Igalia built one!

Page 31: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

Enter Skeltrack

Page 32: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

What we wanted:✩ A shared library, no fancy SDK✩ Modular (do one thing)✩ Device independent✩ No pattern matching, no databases✩ Easy to use (everybody wants that!)

Page 33: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

Not as easy as it sounds!

Page 34: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

The current version tracks up to 7 joints:✩ Head;✩ Shoulders;✩ Elbows;✩ Hands.

Page 35: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

Smoothing is implemented usingHolt's Double Exponential formulas

Page 36: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

Smoothing and heuristics usedcan be tweaked using GObject properties

Page 37: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

There are still some things missing...

Page 38: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

Future work

Page 39: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

Hands from elbows: If one of the extremas is an elbow, weneed to infer where the hand is

Page 40: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

Robustness: Use restrictions to ignore objects that are notthe user

Page 41: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

Multi-user: Track more than one person at a time

Page 42: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

And of course, get the rest of the joints: hips, knees, etc.

Page 43: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

How to use it?

Page 44: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

First reduce the depth buffer's dimension

Reducing the buffer's dimension will make things faster

Page 45: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

While at it, it's wise to also apply a depth threshold

Page 46: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

Asynchronous API

Page 47: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

SkeltrackSkeleton *skeleton = SKELTRACK_SKELETON (skeltrack_skeleton_new ());skeltrack_skeleton_track_joints (skeleton, depth_buffer, buffer_width, buffer_height, NULL, on_track_joints, NULL);

Page 48: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)
Page 49: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

Synchronous API

Page 50: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

SkeltrackJointList list;list = skeltrack_skeleton_track_joints_sync (skeleton, depth_buffer, buffer_width, buffer_height, NULL, NULL);

Page 51: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

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)

Page 52: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

Join us!

https://github.com/joaquimrocha/Skeltrack

Page 53: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

Nifty Tools for Development:

GFreenect: https://github.com/elima/GFreenect

GFreenect Utils: https://github.com/joaquimrocha/gfreenect-utils

Page 54: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

GFreenect Python Example

Page 55: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

Tool: depth-file-viewer

Page 56: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

Tool: record-depth-file

Page 57: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

Demo?

Warning: Might go wrong!

Page 58: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

Questions?

Page 59: Skeltrack: A Free Software library for skeleton tracking (GUADEC 2012)

Creative Commons pictures from flickr:Kinect: Auxo.co.krMonkey: nothingtosayKid Playing: Rob WelshSkeleton: Dark Botxy

Other non CC images:Doctor: http://research.microsoft.com/en-us/projects/touchless/Minority Report:http://www.ovelf.com/2010/04/14/oblong-tan-g-speak-arttirilmis-gerceklikte-hareketlerin-3-boyutta-yorumlanmasi/


Top Related