Einfhrung in MATLAB Sebastian Zambanini Computer Vision Lab - - PowerPoint PPT Presentation

einf hrung in matlab
SMART_READER_LITE
LIVE PREVIEW

Einfhrung in MATLAB Sebastian Zambanini Computer Vision Lab - - PowerPoint PPT Presentation

Einfhrung in Visual Computing Einfhrung in MATLAB Sebastian Zambanini Computer Vision Lab Institut f. Rechnergesttzte Automation TU Wien berblick Allgemeines Arbeiten mit MATLAB Dateneingabe Vektoren und Matrizen


slide-1
SLIDE 1

Einführung in Visual Computing

Einführung in MATLAB

Sebastian Zambanini Computer Vision Lab Institut f. Rechnergestützte Automation TU Wien

slide-2
SLIDE 2

Überblick

  • Allgemeines
  • Arbeiten mit MATLAB
  • Dateneingabe
  • Vektoren und Matrizen
  • Programme schreiben in MATLAB
  • Visualisierung/Bilder
  • Häufige Probleme, Tipps & Tricks

Sebastian Zambanini - EVC - MATLAB Einführung 2

slide-3
SLIDE 3

MATLAB-Übungen

  • Benötigte Tools für die Übung: MATLAB und Blender
  • Blender-Einführung morgen (11.3.2015)
  • Angaben für MATLAB-Einführungs-

beispiel ab heute (15 Uhr) verfügbar

  • 4 Teile
  • Basics
  • Triangles
  • Images
  • Transformations
  • Weitere Aufgaben im Laufe des Semesters, die mithilfe von

MATLAB zu lösen sind (Kamerasensoren,…)

Sebastian Zambanini - EVC - MATLAB Einführung 3

slide-4
SLIDE 4
  • MATLAB = MATrix LABoratory
  • Software zur numerischen Berechnung mathematischer Probleme
  • Gegenstück: Mathematica, Maple für symbolische Algebra
  • Alternativen: eigentlich keine wg. des Umfangs

Freier MATLAB-Klon: Octave (für die Übung nicht zu empfehlen, Octave-Lösungen werden nicht akzeptiert)

  • Hersteller: The MathWorks Inc.
  • aktuelle Version 8.4 (R2014b)
  • Viele Toolboxen für verschiedenste Anwendungsbereiche
  • Signalverarbeitung, Bildverarbeitung, Finanzmathematik, …
  • Proprietäre Programmiersprache

Was ist MATLAB?

4 Sebastian Zambanini - EVC - MATLAB Einführung

slide-5
SLIDE 5

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

Sebastian Zambanini - EVC - MATLAB Einführung 5

slide-6
SLIDE 6

Warum soll ich MATLAB erlernen?

  • Um die LVA zu bestehen ;-)
  • MATLAB kann für verschiedene Gebiete verwendet werden (z.B.

Statistik, Optimierung, Signalverarbeitung,…)

  • 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

Sebastian Zambanini - EVC - MATLAB Einführung 6

slide-7
SLIDE 7

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

  • Einführungsbeispiel: MATLAB Basics
  • 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 im Pac-Man-Raum (Favoritenstrasse) zu den betreuten

Übungszeiten

Sebastian Zambanini - EVC - MATLAB Einführung 7

slide-8
SLIDE 8

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 (€ 13,90): http://www.sss.tuwien.ac.at/sss/mla/

  • In den Labors Favoritenstrasse
  • Einloggen per ssh auf Servern thales.inflab.tuwien.ac.at oder

euklid.inflab.tuwien.ac.at

  • In der Linux-Umgebung in der Shell ssh –X thales oder

ssh –X euclid eintippen

  • Account-Daten und Details zur Benützung werden noch

bekannt gegeben

Sebastian Zambanini - EVC - MATLAB Einführung 8

slide-9
SLIDE 9

MATLAB Desktop

Sebastian Zambanini - EVC - MATLAB Einführung 9

Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command History: Liste aller eingegebenen Befehle Current Folder: Dateien im aktuellen Arbeitsverzeichnis Details: Details zu Datei Arbeitsverzeichnis

slide-10
SLIDE 10

Arbeiten mit MATLAB: Befehlseingabe

  • Zwei Möglichkeiten: Eingabe über Command

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

  • Kommentare mit %
  • Ein Semikolon (;) unterdrückt die Ausgabe

in der Kommandozeile

Sebastian Zambanini - EVC - MATLAB Einführung 10

Datei mytest.m:

slide-11
SLIDE 11

MATLAB Editor

Sebastian Zambanini - EVC - MATLAB Einführung 11

Skript starten (alternativ F5 drücken)

slide-12
SLIDE 12

Dateneingabe - Variablen

  • Keine Variablendeklaration erforderlich
  • Alle Variablen sind standardmäßig Fließkommazahlen doppelter

Präzision (Typ double)

  • Einfache Konvertierung in andere Datentypen möglich (single,

uint8, int16…)

  • Variablennamen sind case-sensitive
  • Falls keine Variable für Rückgabewert

angegeben wird: Standardvariable ans

Sebastian Zambanini - EVC - MATLAB Einführung 12

slide-13
SLIDE 13

Dateneingabe - Vektoren

  • Eingabe der Werte in
  • Trennen der Spalten mittels ,
  • der Leerzeichen
  • Trennen der Zeilen mittels ;
  • Zahlenreihen: von:schrittweite:bis bzw. von:bis

Sebastian Zambanini - EVC - MATLAB Einführung 13

slide-14
SLIDE 14

Dateneingabe - Matrizen

  • Mehrere Zeilen und Spalten
  • Verschiedene Befehle zum Erzeugen von Matrizen
  • Nullermatrix: zeros(zeilen,spalten)
  • Einsermatrix: ones(zeilen,spalten)
  • Matrix mit Zufallszahlen: rand(zeilen,spalten)

Sebastian Zambanini - EVC - MATLAB Einführung 14

slide-15
SLIDE 15

Zugriff auf Matrix- oder Vektor-Elemente

  • Zugriff auf Einzelelemente:

A(zeile,spalte) = wert

  • Indizes beginnen 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

Sebastian Zambanini - EVC - MATLAB Einführung 15

slide-16
SLIDE 16

Zugriff auf Matrix- oder Vektor-Elemente

  • Matrixbereiche 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 :

Sebastian Zambanini - EVC - MATLAB Einführung 16

slide-17
SLIDE 17

Zugriff auf Matrix- oder Vektor-Elemente

  • Zugriff auf Elemente kann auch

über logische Indizierung erfolgen

  • Benutzung einer logischen

Indexvariable derselben Größe

Sebastian Zambanini - EVC - MATLAB Einführung 17

slide-18
SLIDE 18

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

Sebastian Zambanini - EVC - MATLAB Einführung 18

slide-19
SLIDE 19

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

  • Kein expliziter Befehl zur Parameterrückgabe, sondern einfaches

Zuweisen der Rückgabevariable

Sebastian Zambanini - EVC - MATLAB Einführung 19

Datei absdiff.m:

slide-20
SLIDE 20

Workspace

  • Alle über Skripts oder Command

Window erzeugten Variablen bleiben im Workspace, bis sie überschrieben

  • der explizit gelöscht werden
  • Funktionen haben einen lokalen, von

außen unsichtbaren Workspace

  • Alle lokalen Variablen werden nach

Beendigung der Funktion gelöscht

  • Anzeigen des Workspaces im

Command Window: whos

Sebastian Zambanini - EVC - MATLAB Einführung

20

  • Löschen von Variablen: clear variable
  • Löschen aller Variablen: clear all
slide-21
SLIDE 21

Programmflusssteuerung

  • while-Schleife
  • for-Schleife
  • if-else-Block

Sebastian Zambanini - EVC - MATLAB Einführung 21

slide-22
SLIDE 22

Operatoren

Sebastian Zambanini - EVC - MATLAB Einführung 22

< kleiner > größer <= kleiner gleich >= größer gleich == gleich ~= ungleich Vergleichsoperatoren + Addition

  • Subtraktion

* Matrix-Multiplikation / Matrix-Division ^ Matrix-Potenzierung .* Elementweise Multiplikation ./ Elementweise Division .^ Elementweise Potenzierung Arithmetische Operatoren Vergleichsoperatoren können auch element- weise angewendet werden: Unterschied zw. Matrix-Multiplikation und elementweiser Multiplikation:

slide-23
SLIDE 23

Vektorisierung

  • Nahezu alle Funktionen akzeptieren sowohl skalare als auch

mehrdimensionale Eingaben

  • (for-) Schleifen werden sehr ineffizient ausgeführt
  • Schleifen können großteils vermieden werden

Sebastian Zambanini - EVC - MATLAB Einführung 23

Dauert 4,38 s Dauert 0,02 s

slide-24
SLIDE 24

Visualisierung

  • MATLAB stellt leistungsfähige Funktionen und Tools zur

Visualisierung von Daten bereit, unter anderem:

Sebastian Zambanini - EVC - MATLAB Einführung 24

2D Plots Bilder Mehrere Abbildungen 3D Plots

slide-25
SLIDE 25

Figures

  • Visualisierungen werden in eigenen Fenstern (sog. figures)

gezeichnet

  • figure öffnet ein 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,…)

Sebastian Zambanini - EVC - MATLAB Einführung 25

slide-26
SLIDE 26

2D Plots

  • Plotten von Wertepaaren: plot(x,y,‘formatstring‘)
  • : rote durch-

gängige Linie

  • Formatierung der

Plots: doc plot

Sebastian Zambanini - EVC - MATLAB Einführung 26

slide-27
SLIDE 27

2D Plots

  • Mittels hold on können mehrere Plots überlagert werden

Sebastian Zambanini - EVC - MATLAB Einführung 27

slide-28
SLIDE 28

Bilder – Einlesen und Speichern

  • Bilder sind Matrizen!
  • Grauwert: m x n
  • Farbbild (RGB): m x n x 3
  • Einlesen von Bildern: imread
  • Kennt alle gängigen Formate

(jpg,png,tif,…)

Sebastian Zambanini - EVC - MATLAB Einführung 28

  • 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

  • Speichern von Bildern: imwrite
slide-29
SLIDE 29

Bilder - Anzeige

  • Darstellen von Bildern/Matrizen: 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 automatische Kontrastanpassung an den

Wertebereich der Matrix (min. Wert: schwarz, max. Wert: weiß)

Sebastian Zambanini - EVC - MATLAB Einführung 29

slide-30
SLIDE 30

Bilder - Anzeige

Sebastian Zambanini - EVC - MATLAB Einführung 30

  • Variable bild ist vom Typ

uint8

slide-31
SLIDE 31

Bilder - Anzeige

Sebastian Zambanini - EVC - MATLAB Einführung 31

  • imshow erwartet bei

double Werte im Bereich 0…1

  • Die Werte sind aber im

Bereich 0…255

  • Alle Werte >= 1 werden als

weiß dargestellt

slide-32
SLIDE 32

Bilder - Anzeige

Sebastian Zambanini - EVC - MATLAB Einführung 32

  • Mit expliziter Angabe des

Bereichs 0…255 wird das double-Bild korrekt dargestellt

  • im2double konvertiert

uint8-Bilder so, dass das Bild im Bereich 0…1 ist

slide-33
SLIDE 33

Bilder - Anzeige

Sebastian Zambanini - EVC - MATLAB Einführung 33

  • Automatische Anpassung:

maximale Kontrastausnutzung

slide-34
SLIDE 34

Bilder - Anzeige

Sebastian Zambanini - EVC - MATLAB Einführung 34

  • Explizite Angabe des

Bereichs: alle Werte >= 100 werden weiß dargestellt

slide-35
SLIDE 35

Bilder - Anzeige

Sebastian Zambanini - EVC - MATLAB Einführung 35

  • Explizite Angabe des

Bereichs: alle Werte <= 150 werden schwarz dargestellt

slide-36
SLIDE 36

Farbbilder

  • imshow interpretiert m x n x 3

Matrizen als Farbbilder

  • Roter Kanal anzeigen:

Sebastian Zambanini - EVC - MATLAB Einführung 36

slide-37
SLIDE 37

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

Sebastian Zambanini - EVC - MATLAB Einführung 37

slide-38
SLIDE 38

Beispiel: Grauwertumwandlung

Sebastian Zambanini - EVC - MATLAB Einführung 38

slide-39
SLIDE 39

Beispiel: Kantendetektion

Sebastian Zambanini - EVC - MATLAB Einführung 39

slide-40
SLIDE 40

Resizing & Rotation

Sebastian Zambanini - EVC - MATLAB Einführung 40

slide-41
SLIDE 41

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

Sebastian Zambanini - EVC - MATLAB Einführung 41

slide-42
SLIDE 42

Debugging

  • Buttons zur Navigation im Debug-Modus
  • Step, Step in, Continue….
  • Breakpoints können auch mit Haltebedingungen versehen

werden

Sebastian Zambanini - EVC - MATLAB Einführung 42

slide-43
SLIDE 43

Wichtige und nützliche Befehle

  • Details zu den Befehlen: siehe Hilfe
  • Länge eines Vektors (Anzahl der Elemente): length
  • Speichern von Variablen in .mat-Datei: save
  • Laden von Variablen aus .mat-Datei: load
  • Mauscursor mit Anzeige von Pixelkoordinaten und

Pixelwerten: impixelinfo

  • Neue Matrix aus Kopien einer Matrix erzeugen: repmat
  • Matrizen zusammenfügen: cat
  • Filter erzeugen: fspecial
  • Bild filtern: imfilter

Sebastian Zambanini - EVC - MATLAB Einführung 43

slide-44
SLIDE 44

Häufige Probleme, Tipps & Tricks

  • Problem: das angezeigte Bild ist komplett weiß/schwarz
  • Das Problem ist wahrscheinlich imshow
  • Ist das Bild wirklich weiß/schwarz? -> Werte der Matrix

untersuchen

  • Darzustellenden Wertebereich bei imshow in []

angeben

  • Achtung: In MATLAB sind Matrixkoordinaten ungleich

Bildkoordinaten

  • Funktionen der Image Processing

Toolbox arbeiten mit Bildkoordinaten, z.B. impixelinfo

Sebastian Zambanini - EVC - MATLAB Einführung 44

Matrix x y Bild y x

slide-45
SLIDE 45

Häufige Probleme, Tipps & Tricks

  • Tipp: Möglichkeiten der MATLAB-Programmiersprache

ausnutzen

  • Elementweise Operationen
  • multiplizieren der Pixelwerte eines Bildes mit einer

Konstante

  • Binäres Bild mit logical-Werten, bei denen alle Werte

größer 100 auf 1 (true) gesetzt werden

  • alle Werte kleiner 0 auf 0 setzen

Sebastian Zambanini - EVC - MATLAB Einführung 45

slide-46
SLIDE 46

Häufige Probleme, Tipps & Tricks

  • Obwohl MATLAB es erlaubt: Variablen sollten nicht nach

Funktionsnamen benannt werden!

  • Das führt zu schwer auffindbaren Fehlern
  • Beispiel:
  • Für Operationen, die Fließkomma-Arithmetik verlangen, keine

Integer-Variablen verwenden

  • Keine Fehlermeldung, aber unerwartete Ergebnisse

Sebastian Zambanini - EVC - MATLAB Einführung 46

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

slide-47
SLIDE 47
  • 3. Übungsbeispiel (Kamerasensoren): Filtern von

Bildern

j k l m n

  • p

q r

x y Bild f(x, y)

eneu = n∙e + j∙a + k∙b + l∙c + m∙d + o∙f + p∙g + q∙h + r∙i

Filter

3x3 Nachbarschaft e 3x3 Filter

a b c d e f g h i

Ursprüngliche Pixelwerte

*

Diese Operation wird für jeden Pixel im Bild durchgeführt, um das gefilterte Bild zu erhalten

47 Sebastian Zambanini - EVC - MATLAB Einführung

slide-48
SLIDE 48
  • 3. Übungsbeispiel (Kamerasensoren): Filtern von

Bildern

Sebastian Zambanini - EVC - MATLAB Einführung 48

  • Filtern von Bildern in MATLAB: imfilter bzw. conv2
  • Beispiel: Interpolieren fehlender Werte (0) über Werte

der Nachbarpixel

Filter 5∙0 + 0∙0.25 + 10∙0 + 0∙0.25 + 3∙1 + 0∙0.25 + 4∙0 + 0∙0.25 + 2∙0 + 0∙0 = 3 bild = imfilter(bild,[0 0.25 0;0.25 1 0.25;0 0.25 0],‘same‘); 0∙0 + 5∙0.25 + 0∙0 + 7∙0.25 + 0∙1 + 3∙0.25 + 0∙0 + 4∙0.25 + 0∙0 = 4.75

slide-49
SLIDE 49

Weitere (für die LVA irrelevante) Konzepte von MATLAB

  • Objektorientierte Programmierung
  • Einbindung von C-Code: mex Funktionen
  • GUI-Programmierung
  • Error Handling (try-catch)
  • Arrays von Matrizen unterschiedlicher Größe – cells
  • Laufzeitanalyse: Profiler

Sebastian Zambanini - EVC - MATLAB Einführung 49

slide-50
SLIDE 50

Viel Spaß mit MATLAB!