Lecture3 - Computer Vision Lab. POSTECH

Matlab
• Scientific programming language specialized in
CSED441:Introduction to Computer Vision (2015S)
Lecture3: Matlab Tutorial
 Numerical computing and optimization
 Matrix & vector operations
• Interface with other programming languages such as
 C/C++
 Fortran
• Having powerful toolboxes such as
Bohyung Han
CSE, POSTECH
bhhan@postech.ac.kr





Image processing and computer vision
Optimization
Statistics
Parallel programming
etc.
• Able to build a standalone executable file
2
Variables
Vectors
≫ x = 15+0.1
x =
15.1000
• Construction
 Defined with assignment operator (=)
 Used without declaration
≫ class(x)
ans =
double
≫ x = true
x =
1
≫ class(x)
ans =
logical
≫ x = x+1
ans =
2
≫ class(x)
ans =
double
• Type
 The type of variables can be changed at any time.
 Implicit type conversion occurs frequently.
3
CSED441: Introduction to Computer Vision
by Prof. Bohyung Han, Spring 2015
CSED441: Introduction to Computer Vision
by Prof. Bohyung Han, Spring 2015
≫ x = [2.0 3.1 5.4]
• Representation
x =
 Square bracket []
 Maybe separated by white space ( ) or comma (,)
 Apostrophe: transpose operator
2.0000
3.1000
5.4000
≫ x = [2.0 3.1 5.4]’
x =
2.1000
3.1000
5.4000
≫ y = [1 ; 2 ; 3];
≫ y(2:3)
y =
2
3
≫ x’*y =
ans =
24.4000
• Accessing elements
 Parenthesis ()
• Accessing sub‐vector
 Parenthesis (indices)
4
CSED441: Introduction to Computer Vision
by Prof. Bohyung Han, Spring 2015
Matrices
Built‐in Functions
≫ A = [3 4 5 ; 1 2 3]
• Representation
• Basic built‐in functions
A =
 Square bracket []
 Changing rows by semi‐colon (;)
 Maybe separated by white space ( ) or comma (,)
 Apostrophe: transpose operator







Size, length
Norm
Rank
Determinant
Inverse matrix
Eigen‐decomposition
Singular value decomposition (SVD)
 Condition number
 Pseudo random number generator
 Many others
3
4
5
1
2
3
≫ y = [2.0 3.1 5.4]’;
≫ z = A*y
z =
45.4000
24.4000
≫ A(1,2)
ans =
4
≫ A(1:2,[1 3])
ans =
3
5
1
3
• Accessing elements
 Parenthesis ()
• Accessing sub‐matrix
 Parenthesis & comma (row_indices, col_indices)
5







Size, length
Norm
Rank
Determinant
Inverse matrix
Eigen‐decomposition
Singular value decomposition (SVD)
 Condition number
 Pseudo random number generator
 Many others
12
≫ A = [3 0 1 ; 0 5 3 ; 1 3 9];
≫ r = rank(A)
r =
3
≫ [V, D] = eig(A)
V =
-0.8512
0.5122
0.1141
-0.4109
-0.7858
0.4623
0.3265
0.3466
0.8794
D =
2.6165
0
0
0
3.6767
0
0
0
10.7068
CSED441: Introduction to Computer Vision
by Prof. Bohyung Han, Spring 2015
Conditions & Loops
≫ A = [3 0 1 ; 0 5 3 ; 1 3 9];
≫ [r, c] = size(A)
r =
3
c =
3
≫ det(A)
ans =
103
≫ inv_A = inv(A)
inv_A =
0.3495
0.0291
-0.0485
0.0291
0.2524
-0.0874
-0.0485
-0.0874
0.1456
7
n =
6
CSED441: Introduction to Computer Vision
by Prof. Bohyung Han, Spring 2015
Built‐in Functions
• Basic built‐in functions
≫ n = norm([3 4 5], 1)
CSED441: Introduction to Computer Vision
by Prof. Bohyung Han, Spring 2015
•
•
•
•
≫
≫
≫
≫
≫
if / elseif / else
switch
for loop
while loop
a = rand(100,1);
b = rand(100,1);
c = 0;
for i=1:100,
c = c+a(i)*b(i);
end
≫
≫ c = 0;
≫ cnt = 0;
≫
≫ while cnt < 100
cnt = cnt+1;
c = c+a(cnt)*b(cnt);
end
• Almost similar to C/C++
8
CSED441: Introduction to Computer Vision
by Prof. Bohyung Han, Spring 2015
Help
• Manual for each function





Plotting & Graphic
≫ help det
Function prototype
Usages & examples
Related functions
References
Link to Matlab document (very powerful and containing rich description)
DET
Determinant.
DET(X) is the determinan
t of the square matrix X.
Use COND instead of DET
to test for matrix singula
rity.
See also cond.
Reference page in Help b
rowser
doc det
9
≫ [X,Y] = meshgrid(-10:0.25:10,-10:0.25:10);
≫
≫
≫
≫
f = sinc(sqrt((X/pi).^2+(Y/pi).^2));
surf(X,Y,f); axis([-10 10 -10 10 -0.3 1]);
xlabel('{\bfx}‘); ylabel('{\bfy}');
zlabel('{\bfsinc} ({\bfR})')
10
CSED441: Introduction to Computer Vision
by Prof. Bohyung Han, Spring 2015
Image Processing Toolbox
• Image I/O
 imread
 Imwrite
• Image manipulation
 imtransform
 imresize
 imfilter
• Image display
 imshow
• Image processing
≫ img = imread(‘test.jpg’);
≫ size(img)
ans =
240 320
3
≫ imwrite(img, ‘out.png’, ‘png’);
≫ rimg = imresize(img, 0.5);
≫ size(img)
ans =
120 160
3
≫ imshow(rimg);
≫ gimg = rgb2gray(img);
≫ edge(gimg);
 edge
 imerode, imdilate: morphological operators
11
CSED441: Introduction to Computer Vision
by Prof. Bohyung Han, Spring 2015
CSED441: Introduction to Computer Vision
by Prof. Bohyung Han, Spring 2015
Script and Function
• Matlab source code
 File extension: *.m
 Script or function
mscript1.m
c = 3+4;
d = 3-4;
mathop.m
[c,d] = function mathop(a,b)
c = a+b;
d = a-b;
12
≫ mscript1
c =
7
d =
-1
≫ [p,q] = mathop(3,4)
p =
7
q =
-1
CSED441: Introduction to Computer Vision
by Prof. Bohyung Han, Spring 2015
Matlab and C/C++
Important Tip 1
• Matlab compatibility with C/C++
• Use loops as LEAST as possible
 You can call C/C++ functions from Matlab
 Advanced resource: http://classes.soe.ucsc.edu/ee264/Fall11/cmex.pdf
hello.c
#include "mex.h" /* Always include this */
void mexFunction(int nlhs, mxArray *plhs[],
int nrhs, const mxArray *prhs[])
{
mexPrintf("Hello, world!\n");
return;
}
≫ mex hello.c
≫ hello
Hello, world!
13
CSED441: Introduction to Computer Vision
by Prof. Bohyung Han, Spring 2015
Important Tip 2
 Loops are particularly slow in Matlab.
≫
≫
≫
≫
a = rand(10000000,1);
b = rand(10000000,1);
c1 = 0;
tic;
for i=1:10000000,
c1 = c1+a(i)*b(i);
end;
toc;
Elapsed time is 8.096525 seconds.
≫ tic; c2 = a’*b; toc;
Elapsed time is 0.026638 seconds.
14
CSED441: Introduction to Computer Vision
by Prof. Bohyung Han, Spring 2015
Important Tip 3
• The orders and kinds of computations matter.
• Do NOT to increase the size of a matrix or vector inside loop.
 Do matrix‐vector multiplication first.
 Use Gaussian elimination instead of inverse matrix.
 Matlab can allocate only consecutive memory.
≫ A = rand(3000,3000);
≫ B = rand(3000,3000);
≫ c = rand(3000,1);
≫ tic; A*B*c; toc;
Elapsed time is 7.645052
≫ tic; A*(B*c); toc;
Elapsed time is 0.024930
≫tic; inv(A)*c; toc;
Elapsed time is 9.363578
≫ tic; A\c; toc;
Elapsed time is 2.992717
≫ a = rand(1,100000);
≫ tic; for i=1:100000, b(i) = a(i); end; toc;
Elapsed time is 15.336680 seconds.
≫ c = zeros(1,100000);
≫ tic; for i=1:100000, c(i) = a(i); end; toc;
Elapsed time is 0.082945 seconds.
15
seconds.
seconds.
seconds.
seconds.
CSED441: Introduction to Computer Vision
by Prof. Bohyung Han, Spring 2015
16
CSED441: Introduction to Computer Vision
by Prof. Bohyung Han, Spring 2015
Octave
• Matlab‐like programming language
• Most Matlab programs are portable to Octave.
• Free (http://www.gnu.org/software/octave/)
17
CSED441: Introduction to Computer Vision
by Prof. Bohyung Han, Spring 2015
18