Einführung in MATLAB Sebastian Zambanini Computer Vision Lab Institut f. Rechnergestützte Automation TU Wien
Überblick Allgemeines Arbeiten mit MATLAB Dateneingabe Vektoren und Matrizen Programme schreiben in MATLAB Visualisierung Plots Bilder Häufige Probleme, Tipps & Tricks 2
Was ist MATLAB? MATLAB = MATrix i LABoratory t Software zur numerischen Berechnung mathematischer Probleme Gegenstück: Mathematica, Maplefür symbolische Algebra Alternativen: eigentlich keine wg. des Umfangs Freier MATLAB Klon: Octave (für die Übung nicht zu empfehlen) Hersteller: The MathWorks Inc. aktuelle Version 7.14 (R2012a) Viele Toolboxen für verschiedenste Anwendungsbereiche Signalverarbeitung, Bildverarbeitung, Finanzmathematik, Proprietäre Programmiersprache Ausführliche Dokumentation 3
Was ist MATLAB? Vorteile Interpreter und interaktive Befehlseingabe: Schnelle und einfache Entwicklung von Programmen (Rapid Prototyping) Gutes Hilfesystem Sehr umfangreich und mächtig dank zahlreicher Toolboxen Erweiterbarkeit: C oder FORTRAN Code durch mex Bibliotheken Grafische Ausgaben: Bilder, 3D Plots,. Nachteile Nicht frei verfügbar Durch Interpretersprache vergleichsweise langsame Ausführung von Programmen 4
Warum soll ich MATLAB erlernen? Um die LVA zu bestehen ; ) MATLAB kann für verschiedene Gebiete verwendet werden (z.b. Statistik, Optimierung, ) Kann auch für spätere LVAs hilfreich sein und wird auch teilweise verwendet MATLAB wird gerade in den Bereichen Bildverarbeitung, Computer Vision und Mustererkennung sehr häufig eingesetzt Studierende des Bakk Studiums 532 Medieninformatik und Visual Computing sowie Master Studium 932 Visual Computing 5
Wie kann ich MATLAB erlernen? Die heutige Einführung ist ein guter Start Aber wie immer: Learning by doing Probieren Sie die heute vorgestellten Code Beispiele zuhause oder im Labor aus MATLAB Primer http://www.mathworks.com/help/pdf_doc/matlab/getstart.pdf Erstes Kapitel: Quick Start MATLAB ist leicht zu erlernen und bietet ein umfangreiches Hilfesystem help befehl bzw. doc befehl Wenn Sie nicht mehr weiterwissen Google www.informatik forum.at Tutoren in den Labors Favoritenstrasse 6
Benützung von MATLAB für die LVA Lokale Installation auf eigenem Rechner MATLAB Studentenversion für Windows, Mac und Linux über ZID erhältlich (online: 13,90, DVD: 18, ): http://www.sss.tuwien.ac.at/sss/mla/ Inden LaborsFavoritenstrasse Einloggen per ssh auf Servern thales.inflab.tuwien.ac.at oder euclid.inflab.tuwien.ac.at In der Linux Umgebung in der Shell ssh X thales oder ssh X euclid eintippen 7
MATLAB Desktop Arbeitsverzeichnis Current Folder: D t i i Dateien im aktuellen Arbeitsverzeich nis Workspace: Variablen im Speicher Command Window: Eingabe von Command Window: Eingabe von Befehlen Command History: Liste aller aller eingegebenen Befehle Details: Details Details: Details zu Datei 8 MATLAB Einführung
Arbeiten mit MATLAB: Befehlseingabe Zwei Möglichkeiten: EingabeüberCommand Window oder Skriptdatei (sog..m File) 1. Command Window Befehl wird nach dem Enter Zeichen sofort ausgeführt 2. Skript Durch den Befehl wird das gleichnamige.m File gestartet, welches wiederum eine Folge von Befehlen enthält. Erzeugen von.m Files mithilfe des Editors edit dateiname.m m Kommentare mit % Ein Semikolon (;) unterdrückt die Ausgabe in der Kommandozeile Datei mytest.m: 9
Dateneingabe Variablen Keine Ki Variablendeklaration i erforderlich Alle Variablen sind standardmäßig mehrdimensionale Felder von Fließkommazahlen doppelter Präzision (Typ double) Einfache Konvertierung in andere Datentypen möglich (single, uint8, int16 ) ) Variablennamen sind case sensitive Fallskeine Variable für Rückgabewert angegeben wird: Standardvariable ans 10
Dateneingabe Vektoren Eingabe der Werte in Trennen der Spalten mittels, Trennen der Zeilen mittels ; Zahlenreihen: von:schrittweite:bis bzw. von:bis 11
Dateneingabe Matrizen Mh Mehrere Zil Zeilen und Spalten Verschiedene Befehle zum Erzeugen von Matrizen Nullermatrix: zeros(zeilen,spalten) Einsermatrix: ones(zeilen,spalten) Matrix mit Zufallszahlen: rand(zeilen,spalten) 12
Zugriff auf Matrix oder Vektor Elemente Zugriff auf Einzelelemente: l A(zeile,spalte) = wert Indizesbeginnen bei 1! Beim Überschreiten der Indexgrenzen wird die Matrixgröße angepasst und Elemente mit 0 aufgefüllt Matrixbereiche ansprechen: Angabe der Zeilen und Spalten als Vektor 13
Zugriff auf Matrix oder Vektor Elemente Matrixbereiche i können auch mit einem skalaren Wert befüllt werden end: max. Indexwert Transponieren (Zeilen und Spalten vertauschen) mittels Alle Zeilen bzw. Spalten ansprechen mittels : 14
Bilder und Mehrdimensionale Arrays Grauwertbild: Matrix (2D Array) Es sind auch Arrays mit mehr als 2 Dimensionen möglich Beispiel: RGB Bild (3 Dimensionen) Größe des Bildes anzeigen und roten Kanal extrahieren: Bildauschnitt extrahieren 15
Funktionen Funktionen sind.m Skripts mit Eingabe und Rückgabewerten Name der Funktion = Dateiname Funktionen können auch Unterfunktionen haben, von außen ist aber nur die Hauptfunktion aufrufbar Ki Kein expliziter it Befehl Bfhlzur Parameterrückgabe, sondern einfaches Zuweisen der Rückgabevariable Datei absdiff.m: 16
Workspace Alle über Skripts oder Command Window erzeugten Variablen bleiben im Workspace, bis sie überschrieben oder explizit gelöscht werden Funktionen haben einen lokalen, von außen unsichtbaren ihtb Workspace Alle lokalen Variablen werden nach Beendigung der Funktion gelöscht Anzeigen des Workspaces im Command Window: whos Löschen von Variablen: clear variable Löschen aller Variablen: clear all 17
Programmflusssteuerung while Schleife Shlif for Schleife if else Block 18
Operatoren Vergleichsoperatoren < kleiner > größer <= kleiner gleich >= größer gleich == gleich ~= ungleich gec Arithmetische Operatoren + Addition - Subtraktion * Matrix Multiplikation / Matrix Division ^ Matrix Potenzierung.* Elementweise Multiplikation./ Elementweise Division.^ Elementweise Potenzierung Vergleichsoperatoren können auch element weise angewendet werden: Unterschied zw. Matrix Multiplikation und elementweiser Multiplikation: 19
Vektorisierung Nahezu Nh alle Funktionen akzeptieren sowohl skalare kl als auch mehrdimensionale Eingaben (for ) Schleifenwerden sehr ineffizientausgeführt Schleifen können großteils vermieden werden Dauert 4,38 s Dauert 0,02 s 20
Visualisierung MATLAB stellt leistungsfähige Funktionen und Tools zur Visualisierung von Daten bereit, unter anderem: 2D Plots 3D Plots Bilder Mehrere Abbildungen 21
Figures Visualisierungen i werden in eigenen Fenstern (sog. figures) gezeichnet figure öffnet einneues neues Fenster figure(n) wählt das n te Fenster zum Zeichnen aus oder öffnet es, falls noch nicht vorhanden close n schließt das n te Fenster close all schließt alle Fenster Eine figure bietet zahlreiche Tools zur Untersuchung der Daten (Zoomen, Wertebereich anpassen, ) 22
2D Plots Plotten von Wertepaaren: plot(x,y, formatstring ) ) r- : rote durch gängige Linie i Formatierung der Plots: doc plot 23
2D Plots Mittels hold on können mehrere Plots überlagert werden 24
Mehrere Abbildungen subplots subplot(x,y,index) teilt das Fenster in x mal y Unterbereiche auf Mit index kann man den aktiven Unterbereich selektieren, auf dem gezeichnet werden soll Der Index läuft dabei zeilenweise durch die Subplots 25
Bilder Einlesen Bildersind Matrizen! Grauwert: m x n Farbbild (RGB): m x n x 3 Einlesen von Bildern: imread Kennt alle gängigen Formate (jpg,png,tif, ) png Typ der Variable von Bildformat abhängig, in der Regel aber uint8 (0 255) Viele Bildoperationen verlangen Fließkommawerte, daher Umwandlung in double oder single sinnvoll 26
Bilder Anzeige Darstellen von Bildern/Matrizen: i imshow imshow nimmt Werte zw. 0 255 (uint8) bzw. 0 1 (single, double) an Alles darüber oder darunter wird als schwarz bzw. weiß angezeigt Darzustellender Wertebereich kann in [] angegeben werden Leere [] bedeuten automatischekontrastanpassung anden Wertebereich der Matrix (min. Wert: schwarz, max. Wert: weiß) 27
Bilder Anzeige Variable bild ist vom Typ uint8 28
Bilder Anzeige imshow erwartet bei double Werte im Bereich 0 1 Die Werte sind aber im Bereich 0 255 Alle Werte >= 1 werden als weiß dargestellt 29
Bilder Anzeige Mit expliziter Angabe des Bereichs 0 255 wird das double Bild korrekt dargestellt 30
Bilder Anzeige Automatische Anpassung: maximale Kontrastausnutzung 31
Bilder Anzeige Explizite Angabe des Bereichs: alle Werte >= 100 werden weiß dargestellt 32
Bilder Anzeige Explizite Angabe des Bereichs: alle Werte <= 150 werden schwarz dargestellt 33
Farbbilder imshow interpretiert ti t m x n x 3 Matrizen als Farbbilder Roter Kanal anzeigen: 34
Image Processing Toolbox Import und Export von Bildern Vor und Nachbearbeitung von Bildern Bildanalysen Anzeige und Auswertung von Bildern und Videos Räumliche Transformationen und Bildregistrierung 35
Beispiel: Grauwertumwandlung 36
Beispiel: Kantendetektion 37
Resizing & Rotation 38
Lineares Gleichungssystem lösen Ein lineares Gleichungssystem Ax=b kann in Matlab mit dem Befehl x=a\b gelöst werden Ist A eine n x n Matrix, so wird die Lösung mitgauß Eliminationbestimmt Ist A eine n x m Matrix mit n ungleich m, wird die Ausgleichslösung gdes über bzw. unterbestimmten Gleichungssystems berechnet, d.h. es wird iddie euklidische Norm des Fehlers Ax b bzw. der Lösung x minimiert. 39
Debugging Setzen von Breaktpoints in MATLAB Skripts (Klick neben Zeilennummer) Die Ausführung der Funktion/Skripts wird am Breaktpoint angehalten Im Command Window können nun Variablen untersucht und verändert werden K: Debug Modus 40
Debugging Buttons zur Navigation i im Debug Modus Db Step, Step in, Continue. Breakpoints können auch mit Haltebedingungen versehen werden 41
Wichtige und nützliche Befehle Details Dtilzu den Befehlen: Bfhl siehe ih Hilfe Länge eines Vektors: length Speichern von Variablen in.mat Datei: save Laden von Variablen aus.mat Datei: load Vektor mitlinear an /absteigenden Werten: linspace Neue Matrix aus Kopien einer Matrix erzeugen: repmat Mauscursor mit Anzeige von Pixelkoordinaten und Pixelwerten: impixelinfo Filter erzeugen: fspecial Bild filtern: imfilter Bild speichern: imwrite 42
Häufige Probleme, Tipps & Tricks Das angezeigte Bild ist komplett weiß/schwarz Das Problem ist wahrscheinlich imshow Ist das Bild wirklich weiß/schwarz? > Werte der Matrix anschauen Darzustellenden Wertebereich bei imshow in [] angeben Achtung: InMATLAB sind Matrixkoordinaten ungleich Bildkoordinaten Funktionen der ImageProcessing y Matrix Toolbox arbeiten mit Bildkoordinaten, x y z.b. impixelinfo Bild x 43
Häufige Probleme, Tipps & Tricks Obwohl MATLAB es erlaubt: Variablen sollten nicht nach Funktionsnamen benannt werden! Dasführt zu schwer auffindbaren Fehlern Beispiel: Variable mit selben Namen wie Funktion für Cosinus Berechnet nicht den Cosinus von 2, sondern gibt das Element an der 2. Stelle des Vektors zurück Für Operationen, die Fließkomma Arithmetik ih ikverlangen, ki keine Integer Variablen verwenden Ki Keine Fhl Fehlermeldung, ld aber unerwartete tt Ergebnisse 44
Weitere (für die LVA irrelevante) Konzepte von MATLAB Objektorientierte i Programmierung Einbindung von C Code: mex Funktionen GUI Programmierung Error Handling (try catch) Arrays von Matrizen unterschiedlicher Größe cells Laufzeitanalyse: Profiler 45
Viel Spaß mit MATLAB!