Вычислите скорость жеста руки

кто-нибудь, кто знает, как рассчитать скорость жеста руки по отслеживанию рук? (я использую обработку 1.5.1 с simpleopenNI 0.27)

Спасибо за внимание


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


Ответы (1)


Скорость - это расстояние в единицу времени. Следовательно, скорость равна:

distance_between_hand_in_consecutive_frames/(seconds_per_frame)

Чтобы найти расстояние в 3D, используйте евклидово расстояние с положением руки в последовательных кадрах.

EDIT: пример псевдокода.

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 Гц. Это означает, что ваш 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