Videoanwendungen stellen häufige, aber komplexe Probleme dar, die flexible Analyse- und Verarbeitungsfunktionen erfordern. Mit MATLAB- und Simulink-Produkten können Sie Lösungen für häufig auftretende Fragestellungen in der Videoverarbeitung entwickeln, wie die Videostabilisierung, Videomosaikbildung, Zielerkennung und Objektverfolgung.
Objektverfolgung
Die Objektverfolgung ist ein wesentlicher Teil vieler Anwendungen, wie dem Ausweichen vor Fußgängern, der Sicherheit und Überwachung und der Augmented Reality. In diesem Beispiel wird ein kleiner Ball mit einer Kalman-Filterung verfolgt.
Objekterkennung und -zählung
Videoverarbeitung kann verwendet werden, um Objekte zu erkennen und zu zählen, die sich in Videosequenzen bewegen. In dieser Fallstudie verwenden Wissenschaftler in Australien Videomaterial, um die Wildpopulation von Wasservögeln zu schätzen.
MATLAB bietet Tools und Algorithmen, mit denen Sie Videos anzeigen, analysieren, lesen und schreiben können. Videoverarbeitung kann beispielsweise in folgenden Anwendungen nützlich sein:
- Objekterkennung mit Deep Learning
- Bewegungsschätzungsverfahren, wie z. B. optischer Fluss
- Gesichtserkennung und -verfolgung
Videoverarbeitung in vier einfachen Schritten
Die Videoverarbeitung in MATLAB umfasst die folgenden Schritte:
- Lesen des Videos
- Anzeigen des Videos
- Verarbeiten des Videos
- Schreiben des Videos
Schritt 1: Lesen des Videos
Sie können Videos aus Dateien oder direkt von Kameras lesen.
Mit einem einzigen MATLAB-Befehl können Sie Videos aus einer Datei einlesen:
>> vid = VideoReader('filename.avi')
MATLAB unterstützt Webcams für die Videoverarbeitung, und die Image Acquisition Toolbox ermöglicht die Live-Erfassung von vielen industriellen und wissenschaftlichen Kameras.
Mit MATLAB können Sie Videodateien mit zahlreichen unterschiedlichen Codecs lesen, darunter betriebssystemspezifischen Codecs für Microsoft® Windows®, Mac und Linux®.
Schritt 2: Anzeigen des Videos
Es gibt zwei Methoden zum Anzeigen von Videos in MATLAB:
deployableVideoPlayer
: Effizientes Anzeigen einer Reihe von Video-Framesimplay
: Starten der Video Viewer-App zum Anzeigen von Videos
Die Video Viewer-App, die MATLAB-Filme, -Videos oder -Bildsequenzen wiedergibt. Mit der App können Sie ein Video starten, stoppen, mit unterschiedlichen Geschwindigkeiten wiedergeben und zu einem bestimmten Abschnitt des Videos springen.
Schritt 3: Verarbeiten des Videos
Ein Video ist eine Sequenz von einzelnen Video-Frames oder -Bildern. Dies bedeutet, dass ein Algorithmus, der für die Kantenerkennung für Bilder entwickelt wurde, schnell in einen Algorithmus umgewandelt werden kann, der die Kantenerkennung für Videos durchführt.
Einzelnes Bild lesen |
Bildframe aus Video lesen |
---|---|
|
|
Eine Videoverarbeitung kann sehr einfach sein, wie in dem Beispiel mit der Kantenerkennung, oder wesentlich komplexer, wie beispielsweise bei Tracking-Algorithmen, die die Position eines Objekts in früheren Frames berücksichtigen müssen.
Weitere Informationen zur fortgeschrittenen Videoverarbeitung finden Sie in folgenden Beispielen:
Schritt 4: Schreiben des Videos
Nach der Verarbeitung können Sie jeden Frame eines Videos in eine Datei zurückschreiben. Mit der folgenden Funktion können Sie eine Videodatei erstellen:
>> vid_w = VideoWriter('newfile.avi'); >> open(vid_w)
Mit der Variablen vid_w
können Sie neue Frames sammeln, um ein Video zu erstellen.
Ein vollständiges MATLAB-Beispiel
Setzen wir nun alle Komponenten zusammen und sehen uns ein vollständiges Beispiel an, um die Schritte des Lesens, Anzeigens, Verarbeitens und Schreibens eines Videos zu zeigen:
%% Video in MATLAB einlesen und verarbeiten % Einrichtung: Video-Lese- und -Schreibfunktion erstellen videoFileReader = VideoReader('tilted_face.avi'); myVideo = VideoWriter('myFile.avi'); % Einrichtung: bereitstellbare Videowiedergabe und Gesichtserkennung erstellen depVideoPlayer = vision.DeployableVideoPlayer; faceDetector = vision.CascadeObjectDetector(); open(myVideo); %% Gesichter in jedem Frame erkennen while hasFrame(videoFileReader) % Video-Frame lesen videoFrame = readFrame(videoFileReader); % Frame verarbeiten bbox = faceDetector(videoFrame); videoFrame = insertShape(videoFrame, 'Rectangle', bbox); % Video-Frame auf Bildschirm anzeigen depVideoPlayer(videoFrame); % Frame in fertige Videodatei schreiben writeVideo(myVideo, videoFrame); pause(1/videoFileReader.FrameRate); end close(myVideo)
Sie können diesen Code in MATLAB Central herunterladen.
Videoverarbeitungsalgorithmen für Computer Vision
MATLAB-Algorithmen, die zeitliche Korrelationen für die Videoverarbeitung verwenden, basieren auf dem Konzept des „Zustands“, also der Idee, dass der Algorithmus an einem aktuellen Video-Frame arbeitet, aber auch frühere Frames verwendet, um seine Ausgabe zu bestimmen. Dies ist entscheidend für Objektverfolgungsalgorithmen, die frühere Informationen als Grundlage für zukünftige Aktionen nutzen. Ein häufiges Beispiel für das Tracking ist der KLT-Algorithmus, der einzelne Punkte in einem Objekt verfolgt, um dessen Position zu verfolgen.
Entwickler von Videoverarbeitungsalgorithmen können auch die Vision-spezifischen Algorithmen in der Computer Vision System Toolbox verwenden. Mit den Algorithmen können Sie hochauflösende Videos schnell und speichereffizient lesen und anzeigen. Die Toolbox enthält auch Algorithmen für die Verarbeitung von 3D-Punktwolken, Stereo Vision, die Objekterfassung, -verfolgung und -erkennung und andere Anwendungen.