Computer Vision 2 Exercise 0. Introduction to MATLAB ( )

Similar documents
Machine Learning Exercise 0

Constraint-based Metabolic Reconstructions & Analysis H. Scott Hinton. Matlab Tutorial. Lesson: Matlab Tutorial

ČVUT v Praze in Prague. Introduction to MATLAB

Image Processing CS 6640 : An Introduction to MATLAB Basics Bo Wang and Avantika Vardhan

HERIOT-WATT UNIVERSITY DEPARTMENT OF COMPUTING AND ELECTRICAL ENGINEERING. B35SD2 Matlab tutorial 1 MATLAB BASICS

Image Processing Matlab tutorial 2 MATLAB PROGRAMMING

MATLAB for Image Processing

Introduction to Matlab/Octave

Lecturer: Keyvan Dehmamy

Matlab Tutorial 1: Working with variables, arrays, and plotting

Lecture 2: Variables, Vectors and Matrices in MATLAB

Intro To MATLAB. CS Fall 2013 Zach Welch

Introduction to. The Help System. Variable and Memory Management. Matrices Generation. Interactive Calculations. Vectors and Matrices

MATLAB Tutorial. Digital Signal Processing. Course Details. Topics. MATLAB Environment. Introduction. Digital Signal Processing (DSP)

Introduction to MATLAB LAB 1

Introduction to MATLAB 7 for Engineers

Some elements for Matlab programming

MAT 275 Laboratory 2 Matrix Computations and Programming in MATLAB

MATLAB Introductory Course Computer Exercise Session

What is Matlab? A software environment for interactive numerical computations

A Guide to Using Some Basic MATLAB Functions

An Introduction to MATLAB

MATLAB for Image Processing. April 2018 Rod Dockter

MATLAB Tutorial EE351M DSP. Created: Thursday Jan 25, 2007 Rayyan Jaber. Modified by: Kitaek Bae. Outline

Fall 2014 MAT 375 Numerical Methods. Introduction to Programming using MATLAB

MAT 343 Laboratory 1 Matrix and Vector Computations in MATLAB

Grace days can not be used for this assignment

CS129: Introduction to Matlab (Code)

Vectors and Matrices. Chapter 2. Linguaggio Programmazione Matlab-Simulink (2017/2018)

Programming in Mathematics. Mili I. Shah

Introduction to Matlab

Matlab Tutorial. Yi Gong

6.094 Introduction to MATLAB January (IAP) 2009

Getting started with MATLAB

Basic MATLAB Intro III

Stokes Modelling Workshop

Learning from Data Introduction to Matlab

Introduction to Matlab

MAT 343 Laboratory 1 Matrix and Vector Computations in MATLAB

Introduction to Matlab. Summer School CEA-EDF-INRIA 2011 of Numerical Analysis

Course Layout. Go to follow instr. Accessible within campus (only for the first download)

Introduction to MATLAB. CS534 Fall 2016

Introduction to MATLAB for Engineers, Third Edition

Matlab Primer. Lecture 02a Optical Sciences 330 Physical Optics II William J. Dallas January 12, 2005

MATLAB Tutorial. Mohammad Motamed 1. August 28, generates a 3 3 matrix.

Teaching Manual Math 2131

Matlab Tutorial, CDS

Matlab is a tool to make our life easier. Keep that in mind. The best way to learn Matlab is through examples, at the computer.

TUTORIAL 1 Introduction to Matrix Calculation using MATLAB TUTORIAL 1 INTRODUCTION TO MATRIX CALCULATION USING MATLAB

Introduction to MATLAB Programming

MAT 343 Laboratory 2 Solving systems in MATLAB and simple programming

MATLAB Basics. Configure a MATLAB Package 6/7/2017. Stanley Liang, PhD York University. Get a MATLAB Student License on Matworks

How to learn MATLAB? Some predefined variables

Matlab course at. P. Ciuciu 1,2. 1: CEA/NeuroSpin/LNAO 2: IFR49

Introduction to MATLAB

SECTION 1: INTRODUCTION. ENGR 112 Introduction to Engineering Computing

Introduction to MATLAB

MATLAB TUTORIAL WORKSHEET

Digital Image Analysis and Processing CPE

Math 375 Natalia Vladimirova (many ideas, examples, and excersises are borrowed from Profs. Monika Nitsche, Richard Allen, and Stephen Lau)

Getting started with MATLAB

Introduction to Matlab. By: Hossein Hamooni Fall 2014

Interactive Computing with Matlab. Gerald W. Recktenwald Department of Mechanical Engineering Portland State University

Mathematical Operations with Arrays and Matrices

Designing Applications that See Lecture 4: Matlab Tutorial

GRAPHICS AND VISUALISATION WITH MATLAB Part 2

Due date for the report is 23 May 2007

Introduction to Matlab

1 Introduction to Matlab

MAT 275 Laboratory 2 Matrix Computations and Programming in MATLAB

function [s p] = sumprod (f, g)

Introduction in MATLAB (TSRT04)

Introduction and MATLAB Basics

MATLAB GUIDE UMD PHYS375 FALL 2010

Medical Image Processing - Project Image Processing in Matlab

Matlab Tutorial: Basics

MATLAB GUIDE UMD PHYS401 SPRING 2012

MATLAB Premier. Middle East Technical University Department of Mechanical Engineering ME 304 1/50

MATLAB SUMMARY FOR MATH2070/2970

Experiment 1: Introduction to MATLAB I. Introduction. 1.1 Objectives and Expectations: 1.2 What is MATLAB?

MATLAB: The Basics. Dmitry Adamskiy 9 November 2011

MAT 275 Laboratory 2 Matrix Computations and Programming in MATLAB

MATLAB Vocabulary. Gerald Recktenwald. Version 0.965, 25 February 2017

Introduction to MatLab. Introduction to MatLab K. Craig 1

Introduction to MATLAB programming: Fundamentals

McTutorial: A MATLAB Tutorial

ECE Lesson Plan - Class 1 Fall, 2001

MATLAB Lesson I. Chiara Lelli. October 2, Politecnico di Milano

Getting Started with MATLAB

Introduction to MATLAB for Numerical Analysis and Mathematical Modeling. Selis Önel, PhD

Introduction to Matlab

Chapter 1 Introduction to MATLAB

Mathworks (company that releases Matlab ) documentation website is:

This is a basic tutorial for the MATLAB program which is a high-performance language for technical computing for platforms:

MATLAB Fundamentals. Berlin Chen Department of Computer Science & Information Engineering National Taiwan Normal University

CME 192: Introduction to Matlab

Introduction to MATLAB

Introduction to MATLAB

A very brief Matlab introduction

EE 301 Signals & Systems I MATLAB Tutorial with Questions

Transcription:

Computer Vision 2 Exercise 0 Introduction to MATLAB (21.04.2016) engelmann@vision.rwth-aachen.de, stueckler@vision.rwth-aachen.de RWTH Aachen University, Computer Vision Group http://www.vision.rwth-aachen.de

Organization Exercises Preferably 3 students per group Coarsely every 2 weeks Turn in the night before exercise slot Exercises are not mandatory for exam participation (but strongly recommed) Who has worked with MATLAB already? 2

Got MATLAB? Numerical Programming Environment CampusLicense for RWTH students Download through CampusOffice Software Shop: http://www.matlab.rwth-aachen.de CampusLicense requires connection to license server from within the RWTH network - use VPN To borrow a license directly from the server for offline work look into the MATLAB documentation for details Available also in CIP Pool (E1 & E2 building) MATLAB Tutorial, see course website: http://www.vision.rwth-aachen.de/course/9/ 3

Important Commands help Get help for any command doc Get help (help browser) lookfor Search for keywords clear/clear x Erase all variables/variable x close/close h Close current figure/figure h clc whos save load keyboard Clear command window List variables in workspace Save the workspace Load a saved workspace Enter debugging (until dbquit) 4

Useful Things to Remember Index always starts with 1 and not 0 % is used for comments not # or // You can divide the code into different cells with %% While writing a long Matlab statement that becomes too long for a single line use at the of the line to continue on next line A semicolon (;) at the of a statement means that Matlab will not display the result of the evaluated statement. For debugging it is useful to emit the semicolon to display the output (No need for print or disp command) Images are matrices, so x/y coordinates are flipped (compared to a standard coordinate system): first line (y), then column (x) when indexing image(-matrices) 5

Basic Operations % Scalars L = 2; C = 3; % Basic operations sum_ = L + C; prod = L * C; % functions T = tan(l / C); E = exp(l C); % For loop sum_ = 0 for i = 1:100 sum_ = sum_ + i; % If statement number = 13; if isprime(number) disp('prime number'); else if odd(number) disp('odd number'); else disp('none of the above'); 6

Everything is a Matrix % Line vector lv = [1 2 3]; lv = [1,2,3]; lv = 1:3; % from 1 to 3 lv = 1:1:3; % step size 1 lv = linspace(1,3,3); >> lv lv = 1 2 3 % Column vector cv = [1;2]; cv = (1:2) ; % transpose >> size(cv) ans = 2 1 >> cv cv = 1 2 % Different ways of defining % the same matrix: M = [1 2 3; 4 5 6]; M = zeros(2,3); for l=1:l for c=1:c M(l,c) = ((l-1)*3)+c; M = reshape(1:l*c,c,l)'; >> M M = 1 2 3 4 5 6 7

Accessing Elements >> M = [1 2 3; 4 5 6] M = 1 2 3 4 5 6 % M(line,column) >> M(1,3) ans = 3 >> M(1,) ans = 3 >> M(5) ans = 3 >> M(1,:-1:1) ans = 3 2 1 8 >> M(1,1:3) ans = 1 2 3 >> M(1,1:) ans = 1 2 3 >> M(1,:) ans = 1 2 3 >> M(1:2,1:2) ans = 1 2 4 5 >> M(M > 4) ans = 5 6

Manipulating Matrices >> A = [1 4;0 3] A = 1 4 0 3 >> B = [1 0;0-1] B = 1 0 0-1 % Matrix multiplication >> A*B ans = 1-4 0-3 % Elementwise multiplication >> A.*B ans = 1 0 0-3 9 % Concatenation >> C = [A B] C = 1 4 1 0 0 3 0-1 >> C = [A;B] C = 1 4 0 3 1 0 0-1 >> C = repmat(a,1,2) ans = 1 4 1 4 0 3 0 3

Manipulating Matrices >> A = [1 4;0 3] A = 1 4 0 3 >> B = [1 0;0-1] B = 1 0 0-1 >> A/B % = A * inv(b) ans = 1-4 0-3 % Elementwise division >> R = A./B % 1/0 = Inf, 0/0=NaN R = 1 Inf NaN -3 10 >> isinf(r) ans = 0 1 0 0 >> isnan(r) ans = 0 0 1 0 % Use logical indexing to % replace NaN with 0 >> R(isnan(R))=0 R = 1 Inf 0-3 % Find non-zero elements indices >> find(r) ans = 1 3 4

Try to code in matrix ways >> A = [1 2;3 4]; >> B = [1 1;2 2]; % With for loops S = zeros(2); for l = 1:2 for c = 1:2 S(l,c) = A(l,c) + B(l,c); % Better use matrix C = A + B; >> C = 2 3 5 6 % Matlab functions usually work on matrices, not only on scalars, for example: C = A^2; %(matrix-multiplication) D = sqrt(b); %(element-wise) % Be careful which functions operate element-wise, on a line/column or on the whole matrix: E = sum(a) %column-wise >> E = 4 6 E = sum(sum(a)) >> E = 10 E = sum(a(:)) >> E = 10 11

Scripts and Functions Scripts are.m-files containing MATLAB statements. Functions are like any other m-file, but they accept arguments. Name the function file should be the same as the function name if you want to call that function. Variables in a script file are global and will change the value of variables of the same name in the environment of the current Matlab session. A script with name script1.m can be invoked by typing script1 in the command window. 12

Image-Specific Functions Three ways to display an image imshow Display an image imshow(img); imshow(img,[low high]); image Display a matrix as image image(mat); Elements of mat are used as indices into the current colormap. imagesc Display a matrix as image imagesc(img); Same as image, but data is scaled to use the full colormap. colormap Define the colormap to use map = colormap; map1 = map(:-1:1,:); colormap(map1); 13

Some Nuisances Type issues imread stores (most) images as type uint8 Many other matrix functions require type double Solution: conversion - double_img = im2double(img); Colormap issues colormap works differently for different image formats (gif, jpg, png). If something doesn t work as expected, one of the above issues is often the cause. 14

Other Visualization Functions figure Open a new window or select an existing one figure; figure(1); h = figure; figure(h); plot Plots one or more vectors on a x-y axis. plot(y); plot(x,y); plot(x,y, b.- ); plot(x1,y1, b.-, x2, y2, ro:, ); 15 figure; hold on; plot(x1,y1, b.- ); plot(x2,y2, ro: ); hold off;

Other Visualization Functions Variations on plots: plot3 (3D line plot) plotyy (2 y-axes) semilogx, semilogy, loglog (logarithmic axes) bar Display a bar diagram bar(x,y); scatter Display a scatter plot scatter(x,y); scatter(x,y,s,c); Matlab is a great tool for such visualizations. 16

MATLAB: Statistical Functions Matlab provides built-in routines for common tasks o mean(x) mean o var(x) variance o hist(x) - plots a histogram of the vector Other useful functions o Eigen value decomposition/ SVD (Singular value decomposition) o Pre-defined filters : Gaussian, Laplacian, Sobel... Special Matrix Operations o inv(m) % inverse of matrix M o ones(n, m) % matrix with n rows m column and all the entries 1 o zeros(n, m) %matrix with n rows m column and all the entries 0 o rand(n,m) % matrix with random numbers within the range of (0,1) o det(determinant), eye( identity matrix), norm, rank 17

MATLAB is Different - Find the Mistake (1) N = 5; A = zeros(n,1); for n = 0:N-1 A(n) = n; 18

MATLAB is Different - Find the Mistake (1) N = 5; A = zeros(n,1); for n = 0:N-1 A(n) = n; >>??? Attempted to access A(0); index must be a positive integer or logical. 19

MATLAB is Different - Find the Mistake (1) N = 5; A = zeros(n,1); for n = 0:N-1 A(n) = n; N = 5; A = zeros(n,1); for n = 1:N A(n) = n-1; >>??? Attempted to access A(0); index must be a positive integer or logical. Indices start with 1! 20

MATLAB is Different - Find the Mistake (2) A = 0; for n = 1:N A(n) = n-1; 21

MATLAB is Different - Find the Mistake (2) A = 0; N = 5; for n = 1:N A(n) = n-1; N = 5; A = zeros(n,1); for n = 1:N A(n) = n-1; This works! You can always ext a variable s size or overwrite it with a new type. But: New memory is allocated for the vector A in every loop iteration and this is time consuming. Better allocate enough memory from the start. 22

MATLAB is Different - Find the Mistake (3) % #students in lectures students = [20;40;20]; % #teachers in lectures teachers = [1;4;2]; % #students per teacher ratio = students/teachers; 23

MATLAB is Different - Find the Mistake (3) % #students in lectures students = [20;40;20]; % #teachers in lectures teachers = [1;4;2]; % #students per teacher ratio = students/teachers; >> ratio = 0 5 0 0 10 0 0 5 0 24

MATLAB is Different - Find the Mistake (3) % #students in lectures students = [20;40;20]; % #teachers in lectures teachers = [1;4;2]; % #students per teacher ratio = students/teachers; >> ratio = 0 5 0 0 10 0 0 5 0 % #students in lectures students = [20;40;20]; % #teachers in lectures teachers = [1;4;2]; % #students per teacher ratio = students./teachers; >> ratio = 20 10 10 B/A Solves xa = B A\B solves Ax = B Use./ for element-wise matrix operations. 25

MATLAB is Different - Find the Mistake (4) figure; imshow(img); plot(box(1,:),box(2,:), g ); 26

MATLAB is Different - Find the Mistake (4) figure; imshow(img); plot(box(1,:),box(2,:), g ) Box function draws a box around given coordinates of given dimension. If you want to display several things in the same figure use hold on. figure; imshow(img); hold on; plot(box(1,:),box(2,:), g ) 27

MATLAB is Different - Find the Mistake (5) 1 plot = figure; 2 imshow(img); 3 hold on; 4 plot(x,y, g ); 5 % save figure 6 imwrite(plot, plot1, jpg ); 28

MATLAB is Different - Find the Mistake (5) 1 plot = figure; 2 imshow(img); 3 hold on; 4 plot(x,y, g ); 5 % save figure 6 imwrite(plot, plot1, jpg );??? Attempted to access plot(240,320); index out of bounds because numel(plot)=1. Error in ==> example at 4 29

MATLAB is Different - Find the Mistake (5) 1 plot = figure; 2 imshow(img); 3 hold on; 4 plot(x,y, g ); 5 % save figure 6imwrite(plot, plot1, jpg );??? Attempted to access plot(240,320); index out of bounds because numel(plot)=1. Error in ==> example at 4 1 plot1 = figure; 2 imshow(img); 3 hold on; 4 plot(x,y, g ); 5 % save figure 6 imwrite(plot1, plot1, jpg ); It is not possible to use the same name for variables and functions. (The variable name overwrites the function name and you cannot call the function later.) 30

MATLAB is Different - Find the Mistake (6) for n = 1:N A = something(n); for n = 1:N display(n); display(a(n)); 31

MATLAB is Different - Find the Mistake (6) for n = 1:N A = something(n); for n = 1:N display(n); display(a(n)); for n = 1:N A = something(n); for m = 1:N display(m); display(a(m)); The scope of a variable is the whole function. Be careful with frequently used variable names. They may overwrite existing variables. 32

MATLAB is Different - Find the Mistake (7) lines = n/m; lines = int(lines); vect = zeros(lines,1); 33

MATLAB is Different - Find the Mistake (7) lines = n/m; lines = int(lines); vect = zeros(lines,1);??? Undefined function or method 'int' for input arguments of type 'double'. 34

MATLAB is Different - Find the Mistake (7) lines = n/m; lines = int(lines); vect = zeros(lines,1);??? Undefined function or method 'int' for input arguments of type 'double'. lines = n/m; lines = uint8(lines); vect = zeros(lines,1); % use uint8, uint16, uint32, uint64, int8, int16, int32 or int64 for type conversion to (unsigned) integer int is not the function for type conversion to integer. 35

MATLAB is Different - Find the Mistake (8) img = double(imread(name)); figure; imshow(img); 36

MATLAB is Different - Find the Mistake (8) img=double(imread(name)); figure; imshow(img); imshow, image and imagesc expect an image with type double to consist of values between 0 and 1. % im2double also rescales img=im2double(imread(name)); figure; imshow(img); % or rescale manually imshow(img/255); % or convert back to integer imshow(uint8(img)); 37

MATLAB is Different - Find the Mistake (9) img = imread(name); % compute center x = size(img,1)/2; y = size(img,2)/2; imshow(img); hold on; plot(x,y,. ); 38

MATLAB is Different - Find the Mistake (9) img = imread(name); % compute center x = size(img,1)/2; y = size(img,2)/2; imshow(img); hold on; plot(x,y,. ); img = imread(name); % compute center x = size(img,2)/2; y = size(img,1)/2; imshow(img); hold on; plot(x,y,. ); Matrices are accessed with (row,column), i.e. (y,x)! 39

MATLAB is Different - Find the Mistake (10) img = imread(name); % compute center x = size(img,2)/2 y = size(img,1)/2 40

MATLAB is Different - Find the Mistake (10) img = imread(name); % compute center x = size(img,2)/2 y = size(img,1)/2 >> x = 320 y = 240 This works! Note: If there is no semicolon at the of a command Matlab prints the result/value of the variable. 41

MATLAB is Different - Find the Mistake (11) for i = 1:n for j = 1:m A(i,j) = i*j; for ind1 = 1:n A(ind1,ind2) =... ind1*ind2; 42

MATLAB is Different - Find the Mistake (11) for i = 1:n for j = 1:m A(i,j) = i*j; This works! But: i and j are constants for the imaginary unit i. If you overwrite them you cannot use complex numbers in your program. for ind1 = 1:n for ind2 = 1:m A(ind1,ind2) =... ind1*ind2; 43

How to Make MATLAB Code Faster: Vectorization for ind1 = 1:n for ind2 = 1:m A(ind1,ind2) = 2*B(ind1,ind2); for more tips see: http://www.mathworks.de/de/help/matlab/matlab_prog/vectorization.html 44

How to Make MATLAB Code Faster: Vectorization Slow Matlab code for ind1 = 1:n for ind2 = 1:m A(ind1,ind2) = 2*B(ind1,ind2); Fast Matlab code A = 2*B; for more tips see: http://www.mathworks.de/de/help/matlab/matlab_prog/vectorization.html 45

How to Make MATLAB Code Faster: Vectorization i = 0; for t = 0:.01:10 i = i + 1; y(i) = sin(t); for more tips see: http://www.mathworks.de/de/help/matlab/matlab_prog/vectorization.html 46

How to Make MATLAB Code Faster: Vectorization Slow Matlab code i = 0; for t = 0:.01:10 i = i + 1; y(i) = sin(t); Fast Matlab code t = 0:.01:10; y = sin(t); for more tips see: http://www.mathworks.de/de/help/matlab/matlab_prog/vectorization.html 47

How to Make MATLAB Code Faster: Vectorization for n = 1:1000 V(n) = pi*(d(n)^2)*h(n); for more tips see: http://www.mathworks.de/de/help/matlab/matlab_prog/vectorization.html 48

How to Make MATLAB Code Faster: Vectorization Slow Matlab code for n = 1:1000 V(n) = pi*(d(n)^2)*h(n); Fast Matlab code V = pi*(d.^2).*h; for more tips see: http://www.mathworks.de/de/help/matlab/matlab_prog/vectorization.html 49

How to Make MATLAB Code Faster: Vectorization for i = 1:n for j = 1:m if A(i,j) > 255 A(i,j) = 255; for more tips see: http://www.mathworks.de/de/help/matlab/matlab_prog/vectorization.html 50

Some More Useful Stuff toc prints the time that elapsed since the last tic dir lists all files in a directory Cell arrays c = cell(n) creates an n-by-n cell array of empty matrices c = cell(m,n) creates an m-by-n cell array of empty matrices the contents of a cell array can be of different size and type Structs s = struct('field1', values1, 'field2', values2, ) creates a structure array with the specified fields and values. Or simply write: s.field1 = values1; s.field2 = values2; Cell arrays and structs can be combined c{1}.field = values1; c{2}.field = values2; 51

Questions? Other useful MATLAB resources: MATLAB documentation http://www.mathworks.com/help/index.html File Exchange http://www.mathworks.com/matlabcentral/fileexchange/ Code Vectorization Guide http://www.mathworks.com/support/tech-notes/1100/1109.html Writing Fast MATLAB code http://www.mathworks.com/matlabcentral/fileexchange/5685 MATLAB array manipulation tips and tricks http://home.online.no/~pjacklam/matlab/doc/mtt/index.html 52