Grundlagen der Videotechnik (Angewandte Mediensysteme/Prof. Schuller) Einführung Dipl.-Ing. Marco Niehaus marco.niehaus@tu-ilmenau.de Büro: H 3523 Tel.: 69-1673 25.10.2012 Slide 1 Marco Niehaus Grundlagen der Videotechnik Seminar 1
MatLab / Octave Einführung Installation MatLab Studentenlizenz inklusive wichtiger Toolboxen (89$) http://www.mathworks.de/academia/student_version/ MatLab Bücher http://www.mathworks.de/products/matlab/books.html GNU Octave 3.6.2 Windows Binaries Octave 3.6.2 VisualStudio Installer (Stand 25.10.2012) http://sourceforge.net/projects/octave/files/ Installation von Packages http://sourceforge.net/projects/octave/files/octave%20forge%20packages/individual %20Package%20Releases/ 25.10.2012 Page 2 Marco Niehaus Grundlagen der Videotechnik Seminar 1
Octave Installierte Packages Manuelle Installation 25.10.2012 Page 3 Marco Niehaus Grundlagen der Videotechnik Seminar 1
Octave Hinweis für langsame Plot-Ansicht: 25.10.2012 Page 4 Marco Niehaus Grundlagen der Videotechnik Seminar 1
Octave 25.10.2012 Page 5 Marco Niehaus Grundlagen der Videotechnik Seminar 1
Current Folder Current Folder Beispiel Grafikausgabe Workspace Commands Editor Command History 25.10.2012 Page 6 Marco Niehaus Grundlagen der Videotechnik Seminar 1
Einführung a) MatLab Central http://www.mathworks.com/matlabcentral/ b) => Markieren + F1 c) Command prompt: >> doc int >> help plot >> who >> whos var >> lookfor image >> close all, clear (var od. all), clc 25.10.2012 Page 7 Marco Niehaus Grundlagen der Videotechnik Seminar 1
Speichern/Pfade Abspeichern/Laden der Daten z.b.: >> save (C:\Users\CADuser\Documents\MATLAB\ueb, var) >> save (datafile.txt, var, ASCII) >> load ueb Suchpfade >> path >> addpath C:\Verzeichnis\meinOrdner >> savepath 25.10.2012 Page 8 Marco Niehaus Grundlagen der Videotechnik Seminar 1
Syntax & Grundlagen Commands Syntax (Funktionen) function [output1,output2, ] = command(input1,input2, ); Beispiele: figure, rand, ls Variablen x, data, var etc (keine Typ Angabe! z.b.: int var) Kommentare % mein Kommentar steht hier % und hier etc function [output1,output2, ] = command(input1,input2, ); rand(2); linspace(1,2*pi); %Überladen (Vektor von 1 bis 2*pi) fun = @fft(x); %Funktionshandle 25.10.2012 Page 9 Marco Niehaus Grundlagen der Videotechnik Seminar 1
Syntax & Grundlagen function [output1,output2, ] = command(input1,input2, ); x = rand([1,2]); im = imread( lena1.jpg ); [sizex sizey] = size(im); Geschachtelte Commands: function[output1,output2, ] = command(command2(),input2, ); plot(sort(rand([1 100]))); 25.10.2012 Page 10 Marco Niehaus Grundlagen der Videotechnik Seminar 1
Skalar/Vektoren/Matrizen Skalar x = 5; Vektor v = [ 1 2 3 4 5]; v = v(:); v= v ; v1 = [1:5]; v2 = [1:2:10]; Matrix m = [1 2; 4 5]; Inverse inv(m); Transponierte m ; Matrix Multiplikation m * inv(m); Elementweise a = 1:2:10, b = 1:5 a.* b Betrag y = 5 * 3; abs(y); 25.10.2012 Page 11 Marco Niehaus Grundlagen der Videotechnik Seminar 1
Skalar/Vektoren/Matrizen Datenschachtelung m1v = [a;b]; %vertikal m1h = [a b]; %horizontal Matrixzugriff y = m(1); y = m(1,3); y = m(1,:); %1.Reihe y = m(:,1); %1.Spalte x = rand(10); x(1:2, 3:5); %1+2.Spalte % Werte 3bis5 x(1:2, :); Wert ändern x(3,2) = 7 Wert löschen x(:,1) = []; %1.Spalte Dimension size(x); Eins-/Null-/Einheitsmatrix ones(3); zeros(3); eye(3); Diagonale diag(x); 25.10.2012 Page 12 Marco Niehaus Grundlagen der Videotechnik Seminar 1
Schleifen If / else x = input('enter a number and then enter '); if(x > 9) else end; % This code will only execute if x > 9 disp('number is greater than 9'); % This code will only execute if x ~= 9 disp('number is less than 9'); 25.10.2012 Page 13 Marco Niehaus Grundlagen der Videotechnik Seminar 1
Schleifen for figure; hold on; %hält Grafik geöffnet a = [0 100 0 100]; axis(a); %Achsen for i = 1:10 %Maus/Keyboard Eingabe [x(i) y(i)] = ginput(1); plot(x,y,'*'); axis(a); end 25.10.2012 Page 14 Marco Niehaus Grundlagen der Videotechnik Seminar 1
Schleifen Wichtige Operatoren == gleich ~= ungleich < kleiner > größer <= kleiner gleich >= größer gleich & logisches und logisches oder ~ logisches nicht Weitere Schleifen/Anweisungen while try/catch %Zur Fehlererkennung switch/case tic, toc %Zeitmessung 25.10.2012 Page 15 Marco Niehaus Grundlagen der Videotechnik Seminar 1
Anweisung Switch / case x = input('type in a number and press <enter> '); switch(x) case(1) disp('one'); case(2) disp('two'); case(3) disp('three'); otherwise disp('more than three'); end; 25.10.2012 Page 16 Marco Niehaus Grundlagen der Videotechnik Seminar 1
Scripte & Funktionen Funktionsdefinition m File mit Namen Funktionsname.m Funktionsdeklaration muss in der ersten Zeile stehen! function Funktionsname(input1,input2,...,inputn); function output1=funktionsname(input1,input2,...,inputn); function [output1,...,outputm]=funktionsname(input1,...,inputn); Bsp.: f(x) = x 2 *sin(x) soll berechnet werden function y = f(x); y = x.^2.*sin(x); Speichern unter f.m Aufruf: var = f(2.4); 25.10.2012 Page 18 Marco Niehaus Grundlagen der Videotechnik Seminar 1
Scripte & Funktionen Funktionsdefinition 1 Input / 2 Output function [y, ys] = meinefunktion(x) %Dieser Kommentar ist für die Hilfe %Dieser auch y = sin(x); ys = cos(x); Aufruf: >> [a, b] = meinefunktion(1.3); >> help meinefunktion; 25.10.2012 Page 19 Marco Niehaus Grundlagen der Videotechnik Seminar 1
Ploten/Grafiken x = 0:0.5:6; y = sqrt(x); plot(x,y) x = 0:0.5:6; y = sqrt(x); plot(x,y,'*') plot(x,y); xlabel('zeit'), ylabel('spannung') title('abb. 1') text(-0.8,0.5, 'x*sin(x)^2') Subplot: x=linspace(-pi,pi,30); y = sin(x); z = cos(x); subplot(2,1,1); plot(x,y); subplot(2,1,2); plot(x,z); 25.10.2012 Page 20 Marco Niehaus Grundlagen der Videotechnik Seminar 1
Aufgaben 1. Funktion i. Schreiben Sie eine Funktion myfunc ii. Die Funktion soll zwei input-parameter a=20, b=5 besitzen iii. Die Funktion soll Matrix A=[1,2;5,2] und B=[a,b;7,1] a) Addieren b) Multiplizieren c) Elementweise Multiplizieren d) Invertieren iv. Die Rechenergebnisse sollen in einer ASCII-Datei gespeichert werden. 2. Lesen Sie das Bild lena.bmp ein. i. Wandeln Sie es in ein Graustufenbild (rgb2gray) ii. Stellen Sie das Graustufenbild dar (figure, imshow) iii. Transformieren Sie das Bild in den Frequenzbereich (fft2) iv. Verschieben Sie die zero-frequency Komponente in die Mitte des Plotts (fftshift, plot, subplot) 25.10.2012 Page 22 Marco Niehaus Grundlagen der Videotechnik Seminar 1