Videoverarbeitung mit MATLAB

Anwendungen, Beispiele und Techniken

Häufige Anwendungen

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 Conference 2017 Australia Dr. Shannon Dundas, NSW Department of Primary Industries

Videoverarbeitung in MATLAB

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:

Videoverarbeitung in vier einfachen Schritten

Die Videoverarbeitung in MATLAB umfasst die folgenden Schritte:

  1. Lesen des Videos
  2. Anzeigen des Videos
  3. Verarbeiten des Videos
  4. 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-Frames
  • implay: Starten der Video Viewer-App zum Anzeigen von Videos
video-viewer-app

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

current_image = imread('flowers.png');
edge(current_image);

current_image = readFrame(vid);
edge(current_image);

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.

Komplexere Methoden

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.

Erfahren Sie mehr über die Videoverarbeitung

Verwenden Sie den GPU-Coder, um CUDA-Code aus einem in MATLAB geschriebenen Nebelkorrektur-Algorithmus zu generieren.
Machen Sie sich mit den Überlegungen, dem Workflow und den Techniken für die Übertragung eines Bildverarbeitungsalgorithmus auf FPGA-Hardware vertraut.
Erfahren Sie, wie MATLAB häufige Herausforderungen bei der Entwicklung von Objekterkennungssystemen löst, und lernen Sie neue Funktionen für Deep Learning, Machine Learning und Computer Vision kennen.