Horizontal gesture detection with Kinect

The skeleton of a person detected by Kinect has the information of the coordinates (x, y) of all of its joints.

Moves (gestures) can be recognized watching these coordinates over time. And these recognized gestures are use as interface actions.

For example, to identify the horizontal displacement of the hand, just look at the coordinates of the corresponding joint and see if after a while, there has been an increase of X in a remarkable way. Obviously you should consider that the increase in Y is minimal, or what is the same, it is within an acceptable threshold.

In my case, for an application in which I made a model changed his clothes with horizontal gestures of the user, the algorithmic implementation was something like this:

structure( position:point2D; time: time;): Gesture;
var gestures:Gesture[];
 
For each interval of time:
{
    var length:integer = length(gestures);
    Si(length >= 30)
        ShiftGesture();
    gestures[length - 1].position = CurrentHandPosition();
    gestures[length - 1].time = CurrentTime();
 
    var dX:integer = CalculateDXValid();
    var dY:integer = CalculateDYValid();
 
    If(dX >= tDX && dY <= tDY)
    {
        print("Horizontal gesture recognized");
        ResetGestures();
    }
}

The idea is to have an array of gestures that stores time to time the hand position and time. When this array is filled, the first position is lost (ShiftGesture), and all values ​​are read then are placed in the last position.

Then, the array is evaluated. If there are any offset too much big for x or y, the values are ignored to avoid consider false positives, for example abrupt gestures like the hand jumping from one position to another in a short period of time.

I have been testing a couple of games to see how well are gestures recognition implemented. And the truth is I got disappointed. For instance, XBOX 360 Dance Central. They make you repeat the movements of a puppet on the screen as a dance. However its only necessary copy the skeleton joins positions with you body.I mean, look at that dancing puppet, he’s dancing like a pro while you are only moving the feet and arms. You must have a lot of imagination …

Anyway I wan’t the only one who has been frustrated in that sense. While I was searching in Google for Kinect tutorials I found this, where a good man decides to play to win without moving a hair, literally:

This entry was tagged as , , ,

Leave a Reply

Your email address will not be published.