Platzhalter für Bild, Bild auf Titelfolie hinter das Logo einsetzen
Grundlagen der Bildverarbeitung WS 2014/2015: Matlab Einführung Daniel Fecker
20.11.2013 | Daniel Fecker | Grundlagen der Bildverarbeitung WS 2013/2014: Matlab Einführung | 2/42
1. Umgebung 2. Ausdrücke 3. Matrizen 4. Skripte und Funktionen 5. Grafiken 6. Bilder in Matlab 7. Bildverarbeitung in Matlab
(Image Processing Toolbox) 8. Links
20.11.2013 | Daniel Fecker | Grundlagen der Bildverarbeitung WS 2013/2014: Matlab Einführung | 3/42
1. Umgebung
Benutzer: cipuser01 … cipuser18 Password: pic01 … pic18
(auf IfNCIP und nicht lokal)
MATLAB R2012b vom Desktop starten >> demo
20.11.2013 | Daniel Fecker | Grundlagen der Bildverarbeitung WS 2013/2014: Matlab Einführung | 4/42
2. Ausdrücke
Variablen Zahlen
Operatoren
Vordefinierte Funktionen und Konstanten
20.11.2013 | Daniel Fecker | Grundlagen der Bildverarbeitung WS 2013/2014: Matlab Einführung | 5/42
Variablen
Variablen sind Zeichenketten von denen Matlab maximal 31 Zeichen berücksichtigt. Matlab unterscheidet Groß- und Kleinschreibung!!! Variablen können mit dem Gleichheitszeichen (=) Werte (meist
Matrizen) zugeordnet werden.
>> A=22;
>> B=2.2
B = 2.2000
>> C=A-B
C = 18.8000
20.11.2013 | Daniel Fecker | Grundlagen der Bildverarbeitung WS 2013/2014: Matlab Einführung | 6/42
Zahlen
Zahlen werden in Dezimalschreibweise mit einem (optionalen) Punkt und führendem Vorzeichen (+/-) angegeben , Oder in wissenschaftlicher Darstellung mit einem e oder E zwischen
Mantisse und Exponent. Komplexe Zahlen können mit i oder j als imaginäre Einheit
angegeben werden. Intern arbeitet Matlab mit doppeltgenauen Fließkommazahlen, d.h. mit
einer endlichen Genauigkeit von ca. 16 signifikanten Dezimalstellen. Der mögliche Bereich von Zahlen erstreckt sich von
1.0E-308 bis 1.0E+308.
20.11.2013 | Daniel Fecker | Grundlagen der Bildverarbeitung WS 2013/2014: Matlab Einführung | 7/42
Operatoren I
Matlab kennt die arithmetischen Standardoperatoren und deren Ausführungsregeln, die für Zahlen (Skalare) und Matrizen gelten:
+ Addition und Matrixaddition
- Subtraktion und Matrixsubtraktion
* Multiplikation und die nicht kommutative Matrixmultiplikation
/ bzw. \ Division und die Matrixrechts- bzw. Linksdivision
^ Potenzieren von Zahlen und Matrizen ‘ Komplex konjugierte, transponierte Matrix
20.11.2013 | Daniel Fecker | Grundlagen der Bildverarbeitung WS 2013/2014: Matlab Einführung | 8/42
Operatoren II
Sollen die Operationen elementenweise auf Matrizen angewendet werden, verwendet man die Punkt-Operatoren
.* Elementenweise Multiplikation zweier Matrizen
./ , .\ Elementenweise Division zweier Matrizen
.^ Elementenweise Exponentation zweier Matrizen
.‘ Nicht komplex konjugierte, transponierte Matrix
20.11.2013 | Daniel Fecker | Grundlagen der Bildverarbeitung WS 2013/2014: Matlab Einführung | 9/42
Vordefinierte Funktionen und Konstanten
Eine Liste der elementaren Funktionen erhält man in Matlab mit:
>> help elfun Eine Liste speziellerer Funktionen mit:
>> help specfun Eine Liste besonderer Funktionen für Matrizen mit:
>> help elmat
20.11.2013 | Daniel Fecker | Grundlagen der Bildverarbeitung WS 2013/2014: Matlab Einführung | 10/42
3. Matrizen
Elementare Operationen Zugriff auf Matrix-Elemente
Vektoren
Vektorisierung und Schleifen
20.11.2013 | Daniel Fecker | Grundlagen der Bildverarbeitung WS 2013/2014: Matlab Einführung | 11/42
Elementare Operationen I
Wertzuweisung: Elemente zeilenweise in eckigen Klammern vorgeben (Zeilen mit Semikolon getrennt).
=
84
73
62
51
A
A = [1 2 3 4; 5,6,7,8]
A = [1 2 3 4 5 6 7 8 ]
A = [1:4; 5:8]
20.11.2013 | Daniel Fecker | Grundlagen der Bildverarbeitung WS 2013/2014: Matlab Einführung | 12/42
Elementare Operationen II
Null- bzw. Eins-Matrizen: Angabe der Matrixdimensionen: Zeile, Spalte.
=
11
11
11
11
BB= ones(2,4)
C = zeros(3,3)
=
000
000
000
CC = zeros(3)
20.11.2013 | Daniel Fecker | Grundlagen der Bildverarbeitung WS 2013/2014: Matlab Einführung | 13/42
Elementare Operationen III
Zahlenreihen: von:schrittweite:bis bzw. von:bis
Diagonalmatrizen
=
300
020
001
D
F= 1:5 F = (1 2 3 4 5)
E= 5:-0.5:4 E = (5 4.5 4)
D= diag(1:3)
20.11.2013 | Daniel Fecker | Grundlagen der Bildverarbeitung WS 2013/2014: Matlab Einführung | 14/42
Zugriff auf Matrix-Elemente I
Zugriff auf Einzelelemente: A(zeile, spalte) = wert Matrixbereiche ansprechen
=
0500
0000
A
=
000
000511011
A
A = zeros(2,4); A(2,3) = 5
=
000
000500000
A A(1:2,1:2) = ones(2,2)
20.11.2013 | Daniel Fecker | Grundlagen der Bildverarbeitung WS 2013/2014: Matlab Einführung | 15/42
Zugriff auf Matrix-Elemente II
Beim Überschreiten der Indexgrenzen wird die Matrixgröße angepasst
=
000
002500000
A
=
0500
0000
A A(3,1) = 2
20.11.2013 | Daniel Fecker | Grundlagen der Bildverarbeitung WS 2013/2014: Matlab Einführung | 16/42
Vektoren - 1D-Matrizen
Vektoren = 1D-Matrizen Spaltenvektor ≠ Zeilenvektor Vektoren/Matrizen transponieren: A'
Spaltenvektor = Zeilenvektor'
( )321A=
=
321
BA = 1:3; B = A'
20.11.2013 | Daniel Fecker | Grundlagen der Bildverarbeitung WS 2013/2014: Matlab Einführung | 17/42
Vektorisierung und Schleifen I
Um einen Vektor oder eine Matrix zu besetzten, können alle Elemente der Reihe nach in einer Schleife mit dem for … end Konstrukt zugewiesen werden.
Soll z.B. von allen Werten zwischen 0 und 2*pi in Schritten von 0.6 der Sinus gebildet und in einem Vektor S gespeichert werden, kann man folgende Befehle eingeben:
i=0; for t=0 : .6 : 2*pi i=i+1; S(i)=sin(t); end
20.11.2013 | Daniel Fecker | Grundlagen der Bildverarbeitung WS 2013/2014: Matlab Einführung | 18/42
Vektorisierung und Schleifen II
Die Länge des Vektors S ist bei Beginn der Schleife unbestimmt. Matlab muss also bei jedem Durchlauf der Schleife Speicher beschaffen.
Funktionen wie sin verarbeiten ganze Vektoren als Argument und geben
auch Vektoren aus. Hierbei werden optimierte Verfahren eingesetzt, die sehr viel schneller als Schleifen arbeiten.
t=[0:.6:2*pi]; S=sin(t)
20.11.2013 | Daniel Fecker | Grundlagen der Bildverarbeitung WS 2013/2014: Matlab Einführung | 19/42
Matlab-optimiert programmieren
(for-) Schleifen werden sehr ineffizient ausgeführt !
Schleifen vermeiden wo immer es geht ! Nahezu alle Funktionen akzeptieren sowohl skalare als auch
vektorielle Eingaben. Statt für alle Elemente eines Vektors eine Operation einzeln
durchzuführen, kann die Operation einmal auf dem gesamten Vektor angewandt werden.
20.11.2013 | Daniel Fecker | Grundlagen der Bildverarbeitung WS 2013/2014: Matlab Einführung | 20/42
4. Skripte und Funktionen
Skripte Funktionen
Anweisungen: if; switch ;for; while
20.11.2013 | Daniel Fecker | Grundlagen der Bildverarbeitung WS 2013/2014: Matlab Einführung | 21/42
Skripte I
Skripte sind Textdateien, die einfach zeilenweise eine Folge von Matlab-Befehlen enthalten. Diese Dateien können einfach mit dem Text-Editor erstellt und mit einem
Namen der Form name.m als m-file abgespeichert werden. In einem Matlab-Fenster wird dann die Folge der Matlab-Befehle
abgearbeitet, wenn der Dateiname name (ohne .m) eingegeben wird.
20.11.2013 | Daniel Fecker | Grundlagen der Bildverarbeitung WS 2013/2014: Matlab Einführung | 22/42
Skripte II
Die Datei muss im Suchpfad enthalten sein. An Skripte lassen sich keine Parameter übergeben.
Definierte Variable werden im globalen Workspace abgelegt, auf
welchen vom Skript auch zugegriffen werden kann.
20.11.2013 | Daniel Fecker | Grundlagen der Bildverarbeitung WS 2013/2014: Matlab Einführung | 23/42
Funktionen I
Funktionen werden wie Skripte erzeugt, abgespeichert und aufgerufen. Es lassen sich aber Parameter übergeben, lokale und globale
Variablen und lokale Unterprogramme erzeugen.
20.11.2013 | Daniel Fecker | Grundlagen der Bildverarbeitung WS 2013/2014: Matlab Einführung | 24/42
Funktionen II
Funktionsdefinition function var = fname(p1,p2,...) function ist ein Schlüsselwort var ist eine beliebig benannte Ausgabevariable p1,p2,… sind die Übergabeparameter Kommentare Kommentar-Zeichen ist %-Zeichen
20.11.2013 | Daniel Fecker | Grundlagen der Bildverarbeitung WS 2013/2014: Matlab Einführung | 25/42
Funktionen III
function W=linear(Z) %LINEAR linare Funktion % LINEAR(Z) berechnet die lineare Funktion % mit den Parametern: … a=1/2*exp(i*pi/3); b=1+i; W=a.*Z+b;
20.11.2013 | Daniel Fecker | Grundlagen der Bildverarbeitung WS 2013/2014: Matlab Einführung | 26/42
Anweisungen: if, else, elseif
if logische Bedingung 1 Matlab-Befehle … elseif logische Bedingung 2 Matlab-Befehle ... else Matlab-Befehle ... end
20.11.2013 | Daniel Fecker | Grundlagen der Bildverarbeitung WS 2013/2014: Matlab Einführung | 27/42
Anweisungen: switch, case
switch Ausdruck case Wert1 Matlab-Befehle case Wert2 Matlab-Befehle . . . otherwise Matlab-Befehle end
20.11.2013 | Daniel Fecker | Grundlagen der Bildverarbeitung WS 2013/2014: Matlab Einführung | 28/42
Anweisungen: for-Schleifen
for index=Anfangswert:Schrittweite:Endwert Matlab-Befehle … end Die Schrittweite muss nicht angegeben werden und ist dann 1. Sie kann
positiv oder negativ gewählt werden. !!! Vektorisierte Statements sind oft viel schneller als Schleifen. !!!
20.11.2013 | Daniel Fecker | Grundlagen der Bildverarbeitung WS 2013/2014: Matlab Einführung | 29/42
Anweisungen: while-Schleifen
while Bedingung Matlab-Befehle … end break beendet while- und for-Schleifen
20.11.2013 | Daniel Fecker | Grundlagen der Bildverarbeitung WS 2013/2014: Matlab Einführung | 30/42
5. Grafiken
Grafiken werden in Matlab in einem Extrafenster dargestellt. Das Fenster hat eine Nummer, die mit dem Kommando
gcf herausgefunden wird. Ein neues Fenster lässt sich mit dem Kommando figure erzeugen. Hat
dieses die Nummer n, kann man es jederzeit mit figure(n) zum aktuellen Fenster machen, in welches geplottet wird.
20.11.2013 | Daniel Fecker | Grundlagen der Bildverarbeitung WS 2013/2014: Matlab Einführung | 31/42
2D-Grafiken
plot Standard 2D-Plot mit linearen Achsen fplot Funktions-2D-Plot mit linearen Achsen loglog Doppeltlogarithmischer Plot semilogx Plot mit logarithmischer X-Achse semilogy Plot mit logarithmischer Y-Achse fill Plot von Polygonen
20.11.2013 | Daniel Fecker | Grundlagen der Bildverarbeitung WS 2013/2014: Matlab Einführung | 32/42
2D-Grafiken: Beispiel
x=-pi:.1:pi; y=sin(x); plot(x,y)
oder
fplot('sin(x)',[-pi pi])
20.11.2013 | Daniel Fecker | Grundlagen der Bildverarbeitung WS 2013/2014: Matlab Einführung | 33/42
3D-Grafiken
plot3 Analogon zum 2D plot-Kommando. Eignet sich zur parametrischen Darstellung von Kurven im Raum. mesh Gitterlinen- oder Netz plotsurf Flächenplot contour Kontur- oder Höhenlinenplot pcolor Pixelplot surfc Flächen- und Konturplot
20.11.2013 | Daniel Fecker | Grundlagen der Bildverarbeitung WS 2013/2014: Matlab Einführung | 34/42
3D-Grafiken: Beispiel
t=[-10:.1:10]; x=sin(t); y=cos(t); plot3(x,y,t)
20.11.2013 | Daniel Fecker | Grundlagen der Bildverarbeitung WS 2013/2014: Matlab Einführung | 35/42
Nützliche Befehle zum „Aufräumen“
close all Schließen aller geöffneten Figures clc Löschen aller Ausgaben im Command Window
clear Löschen aller Variablen im Workspace
20.11.2013 | Daniel Fecker | Grundlagen der Bildverarbeitung WS 2013/2014: Matlab Einführung | 36/42
6. Bilder in Matlab
imshow(I,[ ]): Matrix I als Graustufenbild darstellen. Bilder laden: A = imread('bildname.tif');
20.11.2013 | Daniel Fecker | Grundlagen der Bildverarbeitung WS 2013/2014: Matlab Einführung | 37/42
Befehle
axis Koordinatenachse
image Bildanzeigen mit Koordinatenachse
imshow Bildanzeigen mit Koordinatenachse
imread Einlesen von Bilddateien
imwrite Schreiben von Bilddaten
20.11.2013 | Daniel Fecker | Grundlagen der Bildverarbeitung WS 2013/2014: Matlab Einführung | 38/42
Beispiel I
I = imread('rice.png'); J = imnoise(I,'salt & pepper',0.05); figure(1);imshow (I) figure(2);imshow (J) imwrite (J, 'rice_noise.bmp');
20.11.2013 | Daniel Fecker | Grundlagen der Bildverarbeitung WS 2013/2014: Matlab Einführung | 39/42
7. Bildverarbeitung in Matlab
Die Toolboxen beinhalten „zahlreiche anwendungsspezifische Diagrammtypen, Darstellungsfunktionen und interaktive Schnittstellen“ zur Anzeige und Auswertung von Ergebnissen.
Bildverarbeitung Image Processing Toolbox Signalverarbeitung Signal Processing Toolbox …
20.11.2013 | Daniel Fecker | Grundlagen der Bildverarbeitung WS 2013/2014: Matlab Einführung | 40/42
Operationen
Filterung und Entwurf zweidimensionaler Filter Morphologische Operationen an Schwarzweißbildern Rauschunterdrückung und Verbesserung der Bildqualität Bildumwandlungen Bildanalyse und Statistik Blockverarbeitung Geometrische Operationen Bearbeitung der Farbpalette Verarbeitung ausgewählter Bereiche Konvertierung des Farbraums Unterstützung von 8- und 16-Bit Integer- oder double precision-Daten
20.11.2013 | Daniel Fecker | Grundlagen der Bildverarbeitung WS 2013/2014: Matlab Einführung | 41/42
8. Links
www.mathworks.com (z.B. user community) http://www.math.ufl.edu/help/matlab-tutorial/
http://www.eng.auburn.edu/~sjreeves/Classes/IP/IP.html …
20.11.2013 | Daniel Fecker | Grundlagen der Bildverarbeitung WS 2013/2014: Matlab Einführung | 42/42
Vielen Dank für Ihre Aufmerksamkeit.
Dipl.-Ing. Daniel Fecker [email protected]