BPM aus Kinect Sensordaten berechnen

9

Ich kämpfe mit dem Kinect für Windows SDK, um eine Anwendung für die Durchführung (mit C #) zu erstellen.

Grundsätzlich muss ich eine Hand (normalerweise die richtige) eines Dirigenten verfolgen und seine Geschwindigkeit beim Richten (BPM) erkennen, um diesen Wert über MIDI an eine andere Anwendung zu senden.

Was ich angefangen habe ist, dass SkeletonFramesReadyEvent den JointType.HandRight mit einem DateTime.Now.Ticks Zeitstempel zu einem Verlauf List hinzufügt, der aktualisiert wird und den ersten Eintrag entfernt. Ich behalte die Geschichte von 60 Bildern (2 Sekunden).

Ich berechne den BPM, indem ich nach dem letzten Tief und Hoch von Joint.Position.Y suche und dann die Differenz berechne und bpm = 60*ticksPerSecond/diff dividiere. Das Ergebnis ist jedoch falsch. Gibt es eine andere Möglichkeit, dies zu tun? Was vermisse ich?

Das ist, was ich bis jetzt benutze:

%Vor%     
fdomig 29.06.2012, 16:08
quelle

1 Antwort

2

Ich habe herausgefunden, wie es geht. Ich habe einen Punkt vermisst und den BPM zwischen einer Spitze und einer niedrigen Position der Hand berechnet, was falsch ist. Ich muss den Zeitunterschied zwischen den letzten beiden Tiefpunkten kalkulieren, um das richtige Ergebnis zu erhalten.

Der richtige Weg ist, den Ausgangspunkt zu finden, der der letzte Gipfel ist. Von dort bis zum letzten Tief, dies ist der erste Punkt, um den Unterschied zu berechnen. Gehen Sie zum nächsten Peak und gehen Sie wieder zum nächsten Tief. Dies ist der zweite Punkt, um den Unterschied zu berechnen.

Das Prinzip ist in der folgenden Abbildung dargestellt.

Und das ergibt einen schönen BPM, der wie folgt berechnet wird:

%Vor%

Danke für die Teilnahme trotzdem.

    
fdomig 05.07.2012, 16:08
quelle

Tags und Links