Es gibt eine Reihe von Videos, die ich von verschiedenen Videospielen verarbeiten möchte, um verschiedene "Zustände" in ihnen zu erkennen.
Das erste Spiel, das ich in Angriff nehme, ist eine Ausgabe von Super Street Fighter 4 .
Darin möchte ich erkennen, wann der Bildschirm "vs" angezeigt wird. Hier ist ein Beispiel für einen Frame des Videos:
(aus ~ 10s markiert von diesem Video )
Wenn ich das "vs" erkennen könnte, könnte ich erkennen, dass es sich bei dem Videobild tatsächlich um den "vs" -Bildschirm handelt, auf dem ich nach anderen Informationen suchen kann (sagen wir, ich werde es vorerst verwenden, um es zu verwenden) Ermitteln Sie den Zeitstempel im Video, in dem das Spiel beginnen soll.
Das heißt, hier ist, was über die Frames aus den Videos, die ich verarbeiten werde, angenommen werden kann (dies ist nicht das einzige Video, es gibt Tausende, wenn nicht Zehntausende oder Hunderttausende von Videos, aber das Problem der Skalierung bei der Verarbeitung davon viele Videos sind eine ganz andere Domain):
- Ich würde es vorziehen (aber es ist nicht notwendig), das Bild mit der niedrigsten Auflösung mit zuverlässigen Ergebnissen zu verarbeiten (niedrigere Auflösungen = schnellere Verarbeitungszeit). Das obige Bild ist 480 x 270 Pixel groß ( aus einem YouTube-Video mit einer
fmt
18 ), aber sie können in verschiedenen Größen vorliegen (ich habe YouTube-Videos mitfmt
18, aber Abmessungen 640 x 360 Pixel). - Die meisten Videos werden direkt eingezogen
- Die meisten Videos haben ein Seitenverhältnis von 16: 9
- Der rötliche Hintergrund wird animiert, befindet sich jedoch im Allgemeinen in dieser orangeroten Farbe (es sind Flammen).
- Manchmal wird ein Abzeichen über dem unteren Teil des "vs" ein- und ausgeblendet, um eine Version anzuzeigen (die wichtig ist, aber momentan nicht), die das "vs" wie folgt verschleiern könnte:
(entnommen aus der ~ 3s-Markierung in diesem Video ; beachten Sie auch, dass die oben genannte Auflösung 640 x 360 Pixel beträgt)
- Die Größe und Position des "vs" wird im Verhältnis zu anderen Direkt-Feed-Videos ungefähr gleich sein (ich habe dies noch nicht überprüft, aber ich weiß, dass es sich nicht bewegt)
- Die Zeichen werden aus einem Pool von mehr als 30 auf jeder Seite ausgewählt (mit anderen Worten, diese Bereiche des Rahmens variieren)
- Die Videos sind in der Regel zwei bis vier Minuten lang und liegen zwischen 4.000 und 6,00 Bildern. Es kann jedoch längere Videos geben (möglicherweise zwei Stunden), in denen verschiedene andere Spiele und Live-Action eingeschnitten sind. Diese Videos sind nicht so wichtig, aber wenn mir eine Lösung sagt, wo ein bestimmtes Spiel im größeren Gesamtvideo auftaucht, ist das großartig
- Die native Auflösung der Aufnahmen beträgt 720p, sodass ein Basisbild des "vs" in einer Größe aufgenommen werden kann, die als "native" Größe angesehen wird.
Letztlich bin ich diese Pipeline in .NET - Code suchen, aber das ist nicht Super wichtig, die Proof-of-concept ist hier wichtiger als auch das Verständnis der beteiligten Techniken , so dass ich übersetzen kann und optimieren es für .NET sowie für andere Videos anderer Spiele des gleichen Genres (wenn ich die signifikanten Diskriminatoren heraussuchen kann, und Videos von beispielsweise Ultimate Marvel gegen Capcom 3 , Street Fighter x Tekken , BlazBlue: Continuum Shift usw.).
Ich tauche auch meine Zehen in Mathematica ein und habe Home-Version 8.0, daher ist ein Proof-of-Concepts in dieser Umgebung ebenfalls mehr als willkommen.