MintApps/client
11
21
Fork
You've already forked client
3

Neue App: Videoanalyse-App #204

Closed
opened 2023年07月20日 06:49:56 +02:00 by schilchris · 13 comments
  • 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
- 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
Owner
Copy link

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.

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.
Member
Copy link

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

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
tk100 changed title from (削除) Videoanalyse-App - Was soll sie können? (削除ここまで) to Neue App: Videoanalyse-App 2023年07月24日 08:52:16 +02:00
tk100 added this to the 1.3.0 milestone 2023年07月24日 08:55:44 +02:00
Owner
Copy link

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:

  1. Video im Browser auswählen und "hochladen" und Framerate angeben (es landet ja nicht auf einem Server sondern nur im Browser)
  2. Zeitnullpunkt (t=0) wählen (indem das Video an die richtige Stelle vorgespult wird)
  3. Koordinatenursprung (x=0, y=0) wählen (indem ein Punkt im Video für t=0 markiert wird)
  4. Achsen definieren (indem zwei Richtungen, ausgehend vom Koordinatenursprung definiert werden)
  5. Maßstab setzen (indem eine beliebige Strecke mit zwei Punkten festgelegt und die echte Länge eingegeben wird)
  6. Bewegung nachverfolgen (indem Frame für Frame, beginnend mit t=0 ein Punkt gesetzt wird)
  7. 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?

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: 1. Video im Browser auswählen und "hochladen" und Framerate angeben (es landet ja nicht auf einem Server sondern nur im Browser) 2. Zeitnullpunkt (t=0) wählen (indem das Video an die richtige Stelle vorgespult wird) 3. Koordinatenursprung (x=0, y=0) wählen (indem ein Punkt im Video für t=0 markiert wird) 4. Achsen definieren (indem zwei Richtungen, ausgehend vom Koordinatenursprung definiert werden) 5. Maßstab setzen (indem eine beliebige Strecke mit zwei Punkten festgelegt und die echte Länge eingegeben wird) 6. Bewegung nachverfolgen (indem Frame für Frame, beginnend mit t=0 ein Punkt gesetzt wird) 7. 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?
Member
Copy link

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.

  1. 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...

  1. 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

  2. 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

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. 1. 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... 2. 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 3. 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
Owner
Copy link
  • 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 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?
Owner
Copy link

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.

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.
Owner
Copy link

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.

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.
Owner
Copy link

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)?

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)?
Owner
Copy link

Aktuell gibt es einen kleinen Bug: Die Infotexte zu den einzelnen Schritten fehlen

Aktuell gibt es einen kleinen Bug: Die Infotexte zu den einzelnen Schritten fehlen
Owner
Copy link

Infotexte wieder verfügbar: d51a87f9a9

Infotexte wieder verfügbar: https://codeberg.org/MintApps/client/commit/d51a87f9a903e5481dc3559cfcee7bf0ba74b266
Owner
Copy link

Ich habe die letzten beiden Wochen einige Tests mit interessierten Schüler:innen durchgeführt. Daraus sind folgende Ideen entstanden:

  1. Es sollte möglich sein, auch nur eindimensionale Bewegungen auszuwerten. Anfangs ist die Version mit zwei Dimensionen relativ komplex
  2. Schöne wäre einige Beispielvideos zu ausgewählten Bewegungsvorgängen, die exemplarisch ausgewertet werden können.
Ich habe die letzten beiden Wochen einige Tests mit interessierten Schüler:innen durchgeführt. Daraus sind folgende Ideen entstanden: 1. Es sollte möglich sein, auch nur eindimensionale Bewegungen auszuwerten. Anfangs ist die Version mit zwei Dimensionen relativ komplex 2. Schöne wäre einige Beispielvideos zu ausgewählten Bewegungsvorgängen, die exemplarisch ausgewertet werden können.
Owner
Copy link

Es gibt nur bereits einige Beispiel-Videos

Es gibt nur bereits einige Beispiel-Videos - https://codeberg.org/MintApps/data/commit/61abd87b8766a72e991fe498e2b5cafb31f8b9de - https://codeberg.org/MintApps/client/commit/7cd339dc7684e38fe9fecd11c289a10f50d7948b
Owner
Copy link

abgeschlossen mit e8de0e2029

abgeschlossen mit https://codeberg.org/MintApps/client/commit/e8de0e2029eb3dec13b117c64343bc997228c0c8
Sign in to join this conversation.
No Branch/Tag specified
main
2.2.0
2.1.0
2.0.0
1.4.0
1.3.0
1.20
1.2.0
1.1.0
1.0.0
0.5.3-1
0.5.3
0.5.2
0.5.1
0.5.0
0.4.3
0.4.2
0.4.1
Labels
Clear labels
ask the fediverse comm.
Ask the Fediverse Community over the MintApp-Mastodon-Account.
Component: Client
Issue regarding the (optional) server component.
Component: Server
Issue regarding the (optional) server component.
Kind: Not reproducible
Kind: Accessibility
Kind: Breaking
Kind: Bug
Something is not working
Kind: Documentation
Documentation
Kind: Enhancement
New feature
Kind: Extension
Extension of an existing MintApp.
Kind: Inclusivity
Kind: Maintenance
Kind: Security
Relevant for security.
Kind: UI/UX
Related to UI/UX.
meta
organisational issues
Priority: Critical
This issue has a critical priority
Priority: High
This issue has a high priority.
Priority: Low
This issue has a low priority.
Priority: Medium
This issue has a medium priority
question
More information is needed
Reviewed: Duplicate
This issue or pull request already exists
Reviewed: Invalid
Something is wrong
Reviewed: Won't fix
This won't be fixed
Shelved for lack of staff capacity
It's not that we do not want it done, it's just that we do not have time to do it.
Status: Completed
Status: Contribution welcome
good for new people who would work at MintApps.
Status: help wanted
Need some help
Status: In review
Status: Next Release
Status: Privacy legal clarification
Need for legal clarification w/ regard to privacy
Status: Tests needed
Need tests upcoming features.
Status: Work in progress (wip)
work in progress (wip)
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
4 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
MintApps/client#204
Reference in a new issue
MintApps/client
No description provided.
Delete branch "%!s()"

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?