GUI-Version von OpenCV für das Prototyping von Feature-Detection (SIFT usw.) vor der eigentlichen Projektentwicklung?

StackOverflow https://stackoverflow.com/questions/4842864

Frage

Ich hatte eine Idee, für die ich bestimmte Objekte oder Modelle aus einem gerenderten dreidimensionalen digitalen Film erkennen muss.

Nach begrenzten Recherchen weiß ich jetzt, dass das, was ich brauche, als Feature-Erkennung im Bereich Computer Vision bezeichnet wird.

Also, was ich tun möchte, ist:

  1. Erstellen Sie einige Screenshots eines bestimmten Charakters im Film (z. B. vorne / hinten / leftSide / rightSide)
  2. Film abspielen
  3. Erstellen Sie während der Wiedergabe des Films kontinuierlich neue Screenshots des Films
  4. Führen Sie für jeden Screenshot eine Feature-Erkennung durch (SIFT?, mit openCV?), um festzustellen, ob eines unserer Zeichen vorhanden ist (sie müssen noch erkannt werden, wenn das Zeichen weiter entfernt ist und daher kleiner erscheint oder wenn das Zeichen vorhanden ist zB im Liegen).
  5. Geben Sie eine Benachrichtigung, wenn der Charakter gefunden wird

    Dies wäre mit OpenCV möglich, oder?

    Das "Problem" ist, dass ich C ++ oder Python lernen müsste, um diese Anwendung zu entwickeln. Dies ist kein Problem, wenn mein Film und meine Screenshots für das gelten, was ich tun möchte.

    Also möchte ich zuerst meine Screenshots des Films testen. Gibt es eine GUI-Version von OpenCV, über die ich meine Testdaten eingeben und die Feature-Erkennungsalgorithmen als Prototyping-Verfahren manuell ausführen kann?

    Feedback ist willkommen. Danke.

War es hilfreich?

Lösung

Es gibt keine OpenCV-Benutzeroberfläche, die das tun kann, was Sie wollen. Sie können OpenCV für einige Aspekte Ihres Problems verwenden, aber dort wartet keine fertige Lösung auf Sie.

Während es definitiv möglich ist, Ihr Problem zu lösen, ist die Lernkurve für dieses Problem ziemlich lang. Wenn Sie ein Profi sind, besteht eine Alternative zum Selbstlernen darin, einen Experten zu beauftragen, der dies für Sie erledigt. Es würde Geld kosten, aber Sie sparen Zeit.

EDIT

Was den Vorlagenabgleich betrifft, würden Sie ihn normalerweise nicht verwenden, um ein solches Problem zu lösen, da Sie nach Aussehen und Form suchen. Es sind eigentlich keine "dynamischen Parameter einzustellen". Das nächste, was Sie versuchen könnten, ist eine massive Vorlagensammlung, die versucht, die erwarteten Formen abzudecken, die Ihr Ziel annehmen könnte. Aber es wäre kaum eine elegante Lösung. Außerdem würde es nicht skalieren.

Weiter zu Ihrem Punkt zur Gesichtserkennung. Dies ist verwandt, aber die meisten Gesichtserkennungsanwendungen befassen sich mit einer kontrollierten Umgebung: Beleuchtung, Entfernung, Pose, Winkel usw. Außerhalb dieser kontrollierten Umgebung nimmt die Wirksamkeit der Gesichtserkennung erheblich ab. Wenn Sie Objekte in einem Film erkennen, wird Ihre Umgebung nicht wirklich kontrolliert.

Möglicherweise möchten Sie zunächst ein einfacheres Problem versuchen, wo sich die Zeichen befinden, genau zu erkennen, ohne zu bestimmen, wer sie sind (im Wesentlichen Videoüberwachung). Es mag einfach klingen, aber Sie werden feststellen, dass es für beliebige Szenen eigentlich nicht trivial ist. Das Ergebnis der Lösung dieses Problems kann bei der Identifizierung der Zeichen hilfreich sein.

Andere Tipps

Nun, mit OpenCV würden Sie einen Frame einer Videodatei nehmen und alle Berechnungen daran durchführen.

Sie können verschiedene Methoden zum Erkennen eines Zeichens auf diesem Bild ausführen, aber es ist nicht so einfach, es so flexibel zu gestalten, dass Sie diese Person sogar erhalten können, wenn sie beispielsweise auf dem Boden liegt, wenn Sie nur Referenzbilder von eingegeben haben dieser Charakter steht.

Grundsätzlich können Sie versuchen, alle wichtigen Merkmale aus Ihren Referenzbildern zu extrahieren und einen (in Ihrem Fall überwachten) Lernalgorithmus verwenden zu lassen, der einen guten Merkmalsvektor dieses Zeichens zur Klassifizierung erhält.

Sie müssen dann Ihren Code schreiben, der das Video abspielt und einen Videorahmen benötigt, beispielsweise alle 500 ms (oder einen anderen, wie Sie möchten), eine Segmentierung des Objekts erhält, das Sie als Zeichen verwenden würden, und es mit der Referenz vergleichen Werte, die Sie von Ihrem Lernalgorithmus erhalten. Wenn es eine Übereinstimmung gibt, kann Ihr Code "Yehaaawww!" oder andere Dinge tun ...

All dies hängt jedoch davon ab, wie flexibel dies sein soll. Sie können auch eine Vorlagenübereinstimmung oder Kreuzkorrelation versuchen, bei der die Referenzbilder über den Rahmen verschoben werden und überprüft wird, wie gleich beide Teile sind. Aber dies ist leider sehr empfindlich für Rotation, Verformungen oder andere Geräusche ... so dass Sie diese Person nicht bekommen würden, wenn sie sich hinlegt. Und ich bezweifle, dass Sie all diese Berechnungen in Echtzeit durchführen können ...

Grundsätzlich gilt: Ja OpenCV eignet sich gut für Ihre Bildverarbeitungs- / Computer Vision-Aufgaben. Aber es bietet viele Methoden und Wege und Sie müssten einen Weg finden, der für Ihre Bilder funktioniert ... es ist jedoch keine triviale Aufgabe ...

Hoffe das hilft ...

Es gibt Objekt suchen von Mathieu Labbé .Es war sehr hilfreich für mich, die Deskriptoren zu verstehen, da Sie sie ändern können, während Ihr Video läuft, um zu sehen, was passiert.

Dies ist wahrscheinlich zu spät, kann aber jemand anderem bei der Suche nach einer Lösung helfen.

Haben Sie versucht, einige Arbeiten der Oxford Visual Geometry Group zu betrachten?

Ihr Video Google -System beschreibt weitgehend, wasSie möchten, Instanzerkennung.

Ihre Arbeit in Personen in Fernsehsendungen benennen ist auch ziemlich relevant.Eine Pipeline zur Gesichtserkennung und Gesichtsfunktion ist enthalten, die von Matlab aus ausgeführt werden kann.Kennen Sie Matlab?

Haben Sie Computer Vision Frameworks wie Cassandra ausprobiert?Dort können Sie das genau mit wenigen Mausklicks tun.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top