- schnelle manuelle Analyse von Bewegungen (automatisch wird wohl schwierig sein)
- Stroboskopbilder erstellen
- Mehrere Objekte in einem Video gleichzeitig erfassen
- Diagramme erstellen (auch mit Polarkoordinaten) und z. B. mit Ausgleichsgerade auswerten
- auch Geschwindigkeitsverlauf darstellen
Neue App: Videoanalyse-App #204
Schritt 1: Ich werde mich mal in die Grundlagen einarbeiten und prüfen, ob im Browser Videos hochgeladen und Frame für Frame angezeigt werden können. Wenn das klappt, kann ich einen ersten Prototyp für den ersten Punkt "schnelle manuelle Analyse von Bewegungen (automatisch wird wohl schwierig sein)" erstellen.
Darf ich zu zwei Bibliotheken raten? Bei beiden bin ich mir nicht 100% sicher, ob sie die Anforderungen abdecken.
Bibliothek 1: OpenCV.js ist die mächtigere Bib von beiden und der Klassiker (ursprünglich aus der C/C++ Welt) und ich denke auch mittlerweile sehr erprobt. Damit könnte man Objekterfassung und Stroboskopbilder erstellen
Bibliothek 2: MediaPipe ist die neuere Bib von beiden und potentiell auch besser zum Analysieren von Bewegungen (sie wurde auch vor ca. 2 Jahren ziemlich gehypt). Anwendungsgebiet hier: Analyse von Bewegungen
Ich habe erste Tests durchgeführt, grundsätzlich ist es möglich Videos im Browser hochzuladen und Frame für Frame abzuspielen (allerdings mit einigen Tricks und nicht 100% zuverlässig).
Um eine vollständige Videoanalyse eines Bewegungsvorgangs durchzuführen, sind aus meiner Sicht folgende Schritte nötig:
- Video im Browser auswählen und "hochladen" und Framerate angeben (es landet ja nicht auf einem Server sondern nur im Browser)
- Zeitnullpunkt (t=0) wählen (indem das Video an die richtige Stelle vorgespult wird)
- Koordinatenursprung (x=0, y=0) wählen (indem ein Punkt im Video für t=0 markiert wird)
- Achsen definieren (indem zwei Richtungen, ausgehend vom Koordinatenursprung definiert werden)
- Maßstab setzen (indem eine beliebige Strecke mit zwei Punkten festgelegt und die echte Länge eingegeben wird)
- Bewegung nachverfolgen (indem Frame für Frame, beginnend mit t=0 ein Punkt gesetzt wird)
- Auswertung (Diagramme x-y, t-x, t-y, t-vx, t-vy, letztere durch numerische Ableitung)
Ich habe aktuell leider noch keine Idee, wie ich diese Abfolge in der Oberfläche gut nachvollziehbar umsetzen kann. Dabei müssten wir beachten:
- Von einem Punkt soll es mittels einer "Weiter" Funktion möglich sein, zum nächsten zu springen (z.B. von 4 auf 5)
- Außerdem soll es stets möglich sein von einem Punkt zu einem beliebigen bereits erledigten zurück zuspringen (z.B. von 6 auf 3)
- Das ganze muss irgendwie in das Kartenlayout der MintApps passen
- Die Verwendung sollte auch am Handy möglich sein (wo alle Karten untereinander liegen)
Habt ihr dazu Ideen?
Zum Verständnis: der Framerate entspricht der Stroboskopeffekt?
Wäre es dann nicht wichtig, zuerst den Zeitnullpunkt zu wählen und dann über die Framerate die folgenden Bilder?
Mein inneres Bild: Es braucht 3 Karten mit Videobilder(n) und zu jeder dieser Karte auch einige Einstellungen.
- Karte: Einrichten des Startes Zeitnullpunkt und
ein Kalibrieren von Koordinatenursprung, der Achsen
(soll es dabei auch möglich sein, die Achsen nicht orthogonal zu wählen?)
Vermutlich ist es von den Controls einfacher, Winkel zu nehmen in Bezug auf die Ausrichtung des Videos
Maßstab soll in x und y Richtung gleich sein oder gewählt werden können?
Denkbarer Controls echte Länge entspricht xx Pixels
Ebenso kann auf dieser Ebene festgelegt werden, wieviele Objekte beobachtet werden.
Können / sollen es mehr als ein Objekt sein?
Der zweidimensionale Stoß macht es ja mit 2en vor...
-
Karte dient dazu, die Bewegung nachzuverfolgen
D.h. es wird das nächste ,,Stroboskopbild'' gezeigt und die Objekte sind zu identifizieren (Frage: Sollen dann auch schon die Koordinatenachsen eingeblendet sein? Oder wird dadurch das Bild unübersichtlicher?)
Vermutlich wird dafür ja auch die Zoomfunktion nutzbar sein.
D.h. dieses Fenster bietet dann die Möglichkeit, pro gezeigtem Frame (=Stroboskopbild) genau x Punkte zu markieren, x=Anzahl Objekte -
Karte bietet die Auswertungsfunktionen an,
d.h. es ist dort möglich Schritt(e) vor und zurück zu springen und auch eine Zeit gezielt anzuzeigen und sich weitere Diagramme zeigen zu lassen
- Die Framerate bezeichnet hier tatsächlich die Bilder pro Sekunde, die der Film enthält. Ein typischer Wert ist 30/s. Leider bietet die API im Browser keine Möglichkeit, diesen Wert auszulesen, daher muss der Anwender ihn angeben.
- Gute Idee, es sollten auch nicht orthogonale Achsen unterstützt werden, da die Kamera nicht immer exakt gerade gehalten werden kann!
- Ich würde zunächst nur mit einem Maßstab und einem Objekt beginnen, eine Erweiterung könnten wir später andenken.
- Danke für die Idee zu den Karten, evtl. könnte ich die 1. und 2. zusammenfassen da beide das Video-Bild nutzen
- Optional könnte ich auch eine "Kochrezept"-Karte anzeigen, auf der alle Schritte aufgelistet sind und ein Marker den Fortschritt markiert?
Die erste Version kann unter https://kippenbergs.de/mint-video-analysis getestet werden. Das größte Problem ist, dass die Browser jeweils nur verschiedene Videoformate unterstützen.
Nun gibt es eine zweite Version:
- Integrierter Video-Rekorder
- Info-Text
- Automatische Frame-Erkennung
- Zweite Ableitung
- Kurvenanpassung mit Konstante
Kurzer Hintergrund zu Frames und Framerate: Leider ist der Abstand von Bildern im Film nicht wirklich konstant. So kam es bei der manuellen Festsetzung der Framerate oft dazu, dass einzelne Frames fehlten oder doppelt erkannt wurden. Daher durchsucht nun die App in Schritt 2 automatisch das gesamte Video. Das ist leider sehr zeitaufwändig - aber es geht nicht anders.
Dritte Version:
- Bessere Fehler-Erkennung (Danke an @HGU), leider wird es dank der unvollständigen Browser-Unterstützung aber niemals zu 100% richtig funktionieren :-(
- Ausführlichere Anleitung
- Einstellung der Framerate in der integrierten Kamera (man kann z.B. am iPad jetzt auch mit 10 fps aufnehmen)
Idee:
@MiSp88 oder @schilchris : Wäre es evtl. sinnvoll, eine Reihe von Muster-Filmen anzubieten, die zur Auswertung bereit stehen? Falls ja, könntet Ihr euch vorstellen, diese zu erstellen (Container Format mp4 und Code H264, sonst läufts im Safari nicht)?
Aktuell gibt es einen kleinen Bug: Die Infotexte zu den einzelnen Schritten fehlen
Infotexte wieder verfügbar: d51a87f9a9
Ich habe die letzten beiden Wochen einige Tests mit interessierten Schüler:innen durchgeführt. Daraus sind folgende Ideen entstanden:
- Es sollte möglich sein, auch nur eindimensionale Bewegungen auszuwerten. Anfangs ist die Version mit zwei Dimensionen relativ komplex
- Schöne wäre einige Beispielvideos zu ausgewählten Bewegungsvorgängen, die exemplarisch ausgewertet werden können.
Es gibt nur bereits einige Beispiel-Videos
abgeschlossen mit e8de0e2029
No due date set.
No dependencies set.
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?