Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB...

50
Einführung in Visual Computing Einführung in MATLAB Sebastian Zambanini Computer Vision Lab Institut f. Rechnergestützte Automation TU Wien

Transcript of Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB...

Page 1: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

Einführung in Visual Computing

Einführung in MATLABSebastian Zambanini

Computer Vision Lab

Institut f. Rechnergestützte Automation

TU Wien

Page 2: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

Ü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ührung2

Page 3: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

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ührung3

Page 4: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

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

Page 5: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

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ührung5

Page 6: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

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ührung6

Page 7: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

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.pdfErstes 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ührung7

Page 8: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

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ührung8

Page 9: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

MATLAB Desktop

Sebastian Zambanini - EVC - MATLAB Einführung9

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

Page 10: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

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 Editorsedit dateiname.m

Kommentare mit %

Ein Semikolon (;) unterdrückt die Ausgabe in der Kommandozeile

Sebastian Zambanini - EVC - MATLAB Einführung10

Datei mytest.m:

Page 11: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

MATLAB Editor

Sebastian Zambanini - EVC - MATLAB Einführung11

Skript starten (alternativ F5 drücken)

Page 12: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

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ührung12

Page 13: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

Dateneingabe - Vektoren

Eingabe der Werte in

Trennen der Spalten mittels ,

oder Leerzeichen

Trennen der Zeilen mittels ;

Zahlenreihen: von:schrittweite:bis bzw. von:bis

Sebastian Zambanini - EVC - MATLAB Einführung13

Page 14: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

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ührung14

Page 15: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

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ührung15

Page 16: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

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ührung16

Page 17: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

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ührung17

Page 18: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

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ührung18

Page 19: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

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ührung19

Datei absdiff.m:

Page 20: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

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 Workspace

Alle lokalen Variablen werden nach Beendigung der Funktion gelöscht

Anzeigen des Workspaces im Command Window: whos

Sebastian Zambanini - EVC - MATLAB Einführung20

Löschen von Variablen: clear variable

Löschen aller Variablen: clear all

Page 21: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

Programmflusssteuerung

while-Schleife

for-Schleife

if-else-Block

Sebastian Zambanini - EVC - MATLAB Einführung21

Page 22: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

Operatoren

Sebastian Zambanini - EVC - MATLAB Einführung22

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

Page 23: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

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ührung23

Dauert 4,38 s Dauert 0,02 s

Page 24: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

Visualisierung

MATLAB stellt leistungsfähige Funktionen und Tools zur Visualisierung von Daten bereit, unter anderem:

Sebastian Zambanini - EVC - MATLAB Einführung24

2D Plots

BilderMehrere Abbildungen

3D Plots

Page 25: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

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 zurUntersuchung der Daten (Zoomen,Wertebereich anpassen,…)

Sebastian Zambanini - EVC - MATLAB Einführung25

Page 26: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

2D Plots

Plotten von Wertepaaren: plot(x,y,‘formatstring‘)

: rote durch-gängige Linie

Formatierung derPlots: doc plot

Sebastian Zambanini - EVC - MATLAB Einführung26

Page 27: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

2D Plots

Mittels hold on können mehrere Plots überlagert werden

Sebastian Zambanini - EVC - MATLAB Einführung27

Page 28: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

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ührung28

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

Page 29: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

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ührung29

Page 30: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

Bilder - Anzeige

Sebastian Zambanini - EVC - MATLAB Einführung30

Variable bild ist vom Typ uint8

Page 31: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

Bilder - Anzeige

Sebastian Zambanini - EVC - MATLAB Einführung31

imshow erwartet bei double Werte im Bereich 0…1

Die Werte sind aber im Bereich 0…255

Alle Werte >= 1 werden als weiß dargestellt

Page 32: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

Bilder - Anzeige

Sebastian Zambanini - EVC - MATLAB Einführung32

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

Page 33: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

Bilder - Anzeige

Sebastian Zambanini - EVC - MATLAB Einführung33

Automatische Anpassung: maximale Kontrastausnutzung

Page 34: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

Bilder - Anzeige

Sebastian Zambanini - EVC - MATLAB Einführung34

Explizite Angabe des Bereichs: alle Werte >= 100 werden weiß dargestellt

Page 35: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

Bilder - Anzeige

Sebastian Zambanini - EVC - MATLAB Einführung35

Explizite Angabe des Bereichs: alle Werte <= 150 werden schwarz dargestellt

Page 36: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

Farbbilder

imshow interpretiert m x n x 3 Matrizen als Farbbilder

Roter Kanal anzeigen:

Sebastian Zambanini - EVC - MATLAB Einführung36

Page 37: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

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ührung37

Page 38: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

Beispiel: Grauwertumwandlung

Sebastian Zambanini - EVC - MATLAB Einführung38

Page 39: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

Beispiel: Kantendetektion

Sebastian Zambanini - EVC - MATLAB Einführung39

Page 40: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

Resizing & Rotation

Sebastian Zambanini - EVC - MATLAB Einführung40

Page 41: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

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ührung41

Page 42: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

Debugging

Buttons zur Navigation im Debug-Modus

Step, Step in, Continue….

Breakpoints können auch mit Haltebedingungen versehen werden

Sebastian Zambanini - EVC - MATLAB Einführung42

Page 43: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

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ührung43

Page 44: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

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ührung44

Matrix

x

y

Bild

y

x

Page 45: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

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ührung45

Page 46: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

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ührung46

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

Page 47: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

3. Übungsbeispiel (Kamerasensoren): Filtern von Bildern

j k l

m n o

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

Filter3x3 Nachbarschaft

e 3x3 Filter

a b c

d e f

g h i

UrsprünglichePixelwerte

*

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

47 Sebastian Zambanini - EVC - MATLAB Einführung

Page 48: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

3. Übungsbeispiel (Kamerasensoren): Filtern von Bildern

Sebastian Zambanini - EVC - MATLAB Einführung48

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

Page 49: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

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ührung49

Page 50: Einführung in Visual Computing Einführung in MATLAB · 9 Sebastian Zambanini - EVC - MATLAB Einführung Command Window: Eingabe von Befehlen Workspace: Variablen im Speicher Command

Viel Spaß mit MATLAB!