Изчислете скоростта на жеста с ръка

някой, който знае как да изчисли скоростта на жеста на ръката от проследяването на ръката? (използвам обработка 1.5.1 с simpleopenNI 0.27)

Благодаря за вниманието


person Faiz    schedule 13.04.2014    source източник


Отговори (1)


Скоростта е разстоянието за единица време. Следователно скоростта е:

distance_between_hand_in_consecutive_frames/(seconds_per_frame)

За да намерите разстоянието в 3d, използвайте Евклидово разстояние с позицията на ръката в последователни кадри.

РЕДАКТИРАНЕ: Пример за псевдокод.

f1 = get_current_frame_hand_coordinates()
f0 = get_previous_frame_hand_coordinates()

След това имате нужда от функция за изчисляване на разстоянието. Вашият вход трябва да бъде два кортежа, тук a и b, с размер три, т.е. (x,y,z)

e_distance(a,b):
    d = square_root( (a[0]-b[0])^2 + (a[1]-b[1])^2 + (a[2]-b[2])^2 )
    return d

dist = e_distance(f0,f1)

По принцип тук просто включвате стойностите на кортежа в уравнението. Не съм сигурен как е изграден вашият код, това е предназначено за единичен набор от кортежи.

Сега, когато имате разстоянието, трябва само да изчислим скоростта.

speed = distance/seconds_per_frame

Уикипедия казва, че кадровата честота на Kinect е между 9 и 30 Hz. Това означава, че вашето seconds_per_frame е между 1/9 и 1/30 от секундата.

Това само ще ви даде скоростта. Вашият въпрос пита за скорост (която има само величина), но можете също така да получите скорост (която има както величина, така и посока) сравнително лесно с малко задействане.

person Luigi    schedule 13.04.2014
comment
Благодаря ви за отговора. но проблемът ми е как да приложа този метод в код. можеш ли да ми покажеш пример? - person Faiz; 14.04.2014
comment
Няма да го кодирам напълно, но когато стигна до компютър, ще го кодирам псевдокод и се надявам, че това ще ви помогне да го интегрирате във вашия код. - person Luigi; 15.04.2014