designing applications that seedesigning applications that ......stanford hci group / cs377s...

35
stanford hci group / cs377s Designing Applications that See Designing Applications that See Lecture 4: Matlab Tutorial Dan Maynes-Aminzade 17 January 2007 17 January 2007 Designing Applications that See http://cs377s.stanford.edu

Upload: others

Post on 02-Jan-2021

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Designing Applications that SeeDesigning Applications that ......stanford hci group / cs377s Designing Applications that SeeDesigning Applications that See Lecture 4: Matlab Tutorial

stanford hci group / cs377s

Designing Applications that SeeDesigning Applications that SeeLecture 4: Matlab Tutorial

Dan Maynes-Aminzade17 January 200717 January 2007

Designing Applications that See http://cs377s.stanford.edu

Page 2: Designing Applications that SeeDesigning Applications that ......stanford hci group / cs377s Designing Applications that SeeDesigning Applications that See Lecture 4: Matlab Tutorial

R i dRemindersA i t # d t T dAssignment #1 due next TuesdayAll the readings are now available, linked g ,from course calendar

17 January 2007 2Lecture 4: Matlab Tutorial

Page 3: Designing Applications that SeeDesigning Applications that ......stanford hci group / cs377s Designing Applications that SeeDesigning Applications that See Lecture 4: Matlab Tutorial

T d ’ G lToday’s GoalsT k th t h i d i th l tTake the techniques covered in the last lecture and learn how to use them in MatlabWork through the process of building a complete example of a simple computercomplete example of a simple computer vision application

17 January 2007 3Lecture 4: Matlab Tutorial

Page 4: Designing Applications that SeeDesigning Applications that ......stanford hci group / cs377s Designing Applications that SeeDesigning Applications that See Lecture 4: Matlab Tutorial

I P i i M tl bImage Processing in Matlab

17 January 2007 4Lecture 4: Matlab Tutorial

Page 5: Designing Applications that SeeDesigning Applications that ......stanford hci group / cs377s Designing Applications that SeeDesigning Applications that See Lecture 4: Matlab Tutorial

I C iImage Conversion

rgb2gray

im2bw

17 January 2007 5Lecture 4: Matlab Tutorial

Page 6: Designing Applications that SeeDesigning Applications that ......stanford hci group / cs377s Designing Applications that SeeDesigning Applications that See Lecture 4: Matlab Tutorial

Dil ti d E iDilation and Erosion

imerode

imdilateimdilate

17 January 2007 6Lecture 4: Matlab Tutorial

Page 7: Designing Applications that SeeDesigning Applications that ......stanford hci group / cs377s Designing Applications that SeeDesigning Applications that See Lecture 4: Matlab Tutorial

C t d C tConnected Components

bwfill, bwselect

17 January 2007 7Lecture 4: Matlab Tutorial

Page 8: Designing Applications that SeeDesigning Applications that ......stanford hci group / cs377s Designing Applications that SeeDesigning Applications that See Lecture 4: Matlab Tutorial

Li Filt iLinear Filtering

10 5 3 0 0 010 5 34 5 11 1 7

7*0 0 00 0.5 0 =

1 1 7 0 1.0 0.5kernel

imfilter filter2imfilter, filter2

17 January 2007 8Lecture 4: Matlab Tutorial

Page 9: Designing Applications that SeeDesigning Applications that ......stanford hci group / cs377s Designing Applications that SeeDesigning Applications that See Lecture 4: Matlab Tutorial

G i K lGaussian Kernel

fspecial(‘gaussian’,...)

17 January 2007 9Lecture 4: Matlab Tutorial

Page 10: Designing Applications that SeeDesigning Applications that ......stanford hci group / cs377s Designing Applications that SeeDesigning Applications that See Lecture 4: Matlab Tutorial

S b l Ed D t tiSobel Edge Detection

121-101

-1-2-1000121

-101-202101

121101Sobel x Sobel y

edge(I, ‘sobel’)

17 January 2007 10Lecture 4: Matlab Tutorial

Page 11: Designing Applications that SeeDesigning Applications that ......stanford hci group / cs377s Designing Applications that SeeDesigning Applications that See Lecture 4: Matlab Tutorial

C Ed D t tiCanny Edge Detection

edge(I, ‘canny’)

17 January 2007 11Lecture 4: Matlab Tutorial

Page 12: Designing Applications that SeeDesigning Applications that ......stanford hci group / cs377s Designing Applications that SeeDesigning Applications that See Lecture 4: Matlab Tutorial

H h T fHough Transform

houghlines(BW,theta, rho, peaks)

17 January 2007 12Lecture 4: Matlab Tutorial

Page 13: Designing Applications that SeeDesigning Applications that ......stanford hci group / cs377s Designing Applications that SeeDesigning Applications that See Lecture 4: Matlab Tutorial

O tliOutlineM tl b f d t l *Matlab fundamentals*Walkthrough of developing a computer vision

li ti i M tl b*application in Matlab*Designing an image processing algorithmBuilding a GUIRunning on live videoDeploying an application

*Based on slides by Christopher Rasmussen (University of Delaware)

*Based on “Image Processing” seminar by Bruce Tannenbaum(M thW k I )(MathWorks, Inc.)

17 January 2007 13Lecture 4: Matlab Tutorial

Page 14: Designing Applications that SeeDesigning Applications that ......stanford hci group / cs377s Designing Applications that SeeDesigning Applications that See Lecture 4: Matlab Tutorial

Wh t i M tl b?What is Matlab?A hi h l l l f t i l l tiA high-level language for matrix calculations, numerical analysis, & scientific computingLanguage features

No variable declarationsAutomatic memory management (but preallocation helps)p pVariable argument lists control function behaviorVectorized: Can use for loops, but largely unnecessary (and less efficient)y

17 January 2007 14Lecture 4: Matlab Tutorial

Page 15: Designing Applications that SeeDesigning Applications that ......stanford hci group / cs377s Designing Applications that SeeDesigning Applications that See Lecture 4: Matlab Tutorial

N d M tl b H l ?Need Matlab Help?I M tl bIn Matlab

Highlight a term, right-click, and select “help”Type “help” to get a listing of topics“help <topic>” gets help for that topichelp <topic> gets help for that topic

On the webCS377S Resources page has linksIn particular, the MathWorks help desk: p , p

www.mathworks.com/access/helpdesk/help/helpdesk.shtml

17 January 2007 15Lecture 4: Matlab Tutorial

Page 16: Designing Applications that SeeDesigning Applications that ......stanford hci group / cs377s Designing Applications that SeeDesigning Applications that See Lecture 4: Matlab Tutorial

E t i V i blEntering VariablesE t i t t iEntering a vector, matrixV = [10, 4.5, 1];M = [3, 4 ; -6, 5];

Without semi colon input is echoed (this isWithout semi-colon, input is echoed (this is bad when you’re loading images!)Comma to separate statements on same linesize: Number of rows, columns

17 January 2007 16Lecture 4: Matlab Tutorial

Page 17: Designing Applications that SeeDesigning Applications that ......stanford hci group / cs377s Designing Applications that SeeDesigning Applications that See Lecture 4: Matlab Tutorial

C t ti M t iConstructing MatricesB i b ilt iBasic built-ins:

All zeroes, ones: zeros, onesIdentity: eyeRandom: rand (uniform) randn (unit normal)Random: rand (uniform), randn (unit normal)

Ranges: m:n, m:i:n (i is step size)

Composing big matrices out of small matrix blocksblocksrepmat(A, m, n): “Tile” a big matrix

ith i f Awith m x n copies of A17 January 2007 17Lecture 4: Matlab Tutorial

Page 18: Designing Applications that SeeDesigning Applications that ......stanford hci group / cs377s Designing Applications that SeeDesigning Applications that See Lecture 4: Matlab Tutorial

M lti li ti & C l l tiMultiplications & CalculationsT (‘) i (i )Transpose (‘), inverse (inv)Matrix arithmetic: +, -, *, /, ^Elementwise arithmetic: .*, ./, .^

FunctionsVectorizedsin, cos, etc.

17 January 2007 18Lecture 4: Matlab Tutorial

Page 19: Designing Applications that SeeDesigning Applications that ......stanford hci group / cs377s Designing Applications that SeeDesigning Applications that See Lecture 4: Matlab Tutorial

D t ti M t iDeconstructing MatricesI d i i di id l t i b lIndexing individual entries by row, col: A(1, 1) is upper-left entryRanges: e.g., A(1:10, 3), A(:, 1)

M t i t t d i b lMatrix to vector and vice versa by column: B = A(:), A(:) = B

Transpose to use row order

find: Indices of non-zero elementsfind: Indices of non zero elements

17 January 2007 19Lecture 4: Matlab Tutorial

Page 20: Designing Applications that SeeDesigning Applications that ......stanford hci group / cs377s Designing Applications that SeeDesigning Applications that See Lecture 4: Matlab Tutorial

M t i A l iMatrix AnalysisB i (b l )Basics (by column)norm

imax, minsum

More advancedLinear systems: A\b solves A*x = b

QR decomposition: qrSingular value decomposition: svdEigenvalues: eigEtc.Etc.

17 January 2007 20Lecture 4: Matlab Tutorial

Page 21: Designing Applications that SeeDesigning Applications that ......stanford hci group / cs377s Designing Applications that SeeDesigning Applications that See Lecture 4: Matlab Tutorial

C t l St tControl StructuresE i l ti ( > | & f ti t )Expressions, relations (==, >, |, &, functions, etc.)if/while expression statements end

Use comma to separate expression from statements if on same lineif a == b & isprime(n), M = inv(K); else M = K; end

blfor variable = expression statements endfor i=1:2:100, s = s / 10; end

17 January 2007 21Lecture 4: Matlab Tutorial

Page 22: Designing Applications that SeeDesigning Applications that ......stanford hci group / cs377s Designing Applications that SeeDesigning Applications that See Lecture 4: Matlab Tutorial

Th M FilThe M-FilesA t t fil di i “ ”Any text file ending in “.m”Use path or addpath to tell Matlab where code is (or select in directory window)Script: Collection of command line statementsScript: Collection of command line statementsFunction: Take argument(s), return value(s). Fi t li d fiFirst line defines:

function y = foo(A)function [x, y] = foo2(a, M, N)

Comment: Start line with %

17 January 2007 22Lecture 4: Matlab Tutorial

Page 23: Designing Applications that SeeDesigning Applications that ......stanford hci group / cs377s Designing Applications that SeeDesigning Applications that See Lecture 4: Matlab Tutorial

Pl ttiPlotting2 D vectors plot(x y)2-D vectors: plot(x, y)

plot(0:0.01:2*pi, sin(0:0.01:2*pi))

3 D l t3( )( )3-D: plot3(x, y, z)(space curve)Surfaces

i k f f l t itmeshgrid makes surface from axes, mesh plots it[X,Y] = meshgrid(-2:.2:2, -2:.2:2);Z X * e p( X ^2 Y ^2)Z = X .* exp(-X.^2 - Y.^2);mesh(Z)

surf Solid version of meshsurf: Solid version of meshSaving figures, plots: print –depsc2 filename

17 January 2007 23Lecture 4: Matlab Tutorial

Page 24: Designing Applications that SeeDesigning Applications that ......stanford hci group / cs377s Designing Applications that SeeDesigning Applications that See Lecture 4: Matlab Tutorial

I P i T lbImage Processing ToolboxL di di l i iLoading, displaying images: I=imread(‘im1.jpg’), imshow(I)

Saving images:imwrite(I ‘newim jpg’)imwrite(I, newim.jpg )

Image representationGrayscale: Matrix of uint8

Color: Stack of 3 matrices for R, G, and BColor: Stack of 3 matrices for R, G, and B

Conversion: I2 = double(I1)

17 January 2007 24Lecture 4: Matlab Tutorial

Page 25: Designing Applications that SeeDesigning Applications that ......stanford hci group / cs377s Designing Applications that SeeDesigning Applications that See Lecture 4: Matlab Tutorial

B ildi E l A li tiBuilding an Example ApplicationI l i ith th M tl b IImage analysis with the Matlab Image Processing ToolboxGetting live data with the Matlab Image Acquisition ToolboxAcquisition ToolboxBuilding a GUI with GUIDEDeploying an application with the Matlab compilercompilerTry to follow along!

17 January 2007 25Lecture 4: Matlab Tutorial

Page 26: Designing Applications that SeeDesigning Applications that ......stanford hci group / cs377s Designing Applications that SeeDesigning Applications that See Lecture 4: Matlab Tutorial

M tl b W kflMatlab Workflow

17 January 2007 26Lecture 4: Matlab Tutorial

Page 27: Designing Applications that SeeDesigning Applications that ......stanford hci group / cs377s Designing Applications that SeeDesigning Applications that See Lecture 4: Matlab Tutorial

I P i T lbImage Processing ToolboxI i li tiImage visualizationImage pre- and post-processingg p p p gImage analysis

l fSpatial transformationsColor processingColor processing

17 January 2007 27Lecture 4: Matlab Tutorial

Page 28: Designing Applications that SeeDesigning Applications that ......stanford hci group / cs377s Designing Applications that SeeDesigning Applications that See Lecture 4: Matlab Tutorial

Traditional Image Processing TasksTraditional Image Processing Tasks

17 January 2007 28Lecture 4: Matlab Tutorial

Page 29: Designing Applications that SeeDesigning Applications that ......stanford hci group / cs377s Designing Applications that SeeDesigning Applications that See Lecture 4: Matlab Tutorial

I A i iti T lbImage Acquisition ToolboxSt id d i i t M tl bStream video and images into MatlabSupports a wide variety of frame grabbers pp y gand digital camerasC fi d iConfigure device propertiesLive video previewingBackground imageBackground imageacquisition

17 January 2007 29Lecture 4: Matlab Tutorial

Page 30: Designing Applications that SeeDesigning Applications that ......stanford hci group / cs377s Designing Applications that SeeDesigning Applications that See Lecture 4: Matlab Tutorial

D i i GUI ith GUIDEDesigning a GUI with GUIDED i d dit GUIDesign and edit GUIAdd buttons, pull-down menus, etc., p ,Generate Matlab code

h h d lfFinish the code yourself

17 January 2007 30Lecture 4: Matlab Tutorial

Page 31: Designing Applications that SeeDesigning Applications that ......stanford hci group / cs377s Designing Applications that SeeDesigning Applications that See Lecture 4: Matlab Tutorial

Ni Thi b t M tl bNice Things about MatlabU ifi d i tUnified environmentQuick iteration through different algorithmsQ g gInteractive graphics and visualizations

h l l lHigh level languageLots of built-in routines, useful ToolboxLots of built in routines, useful Toolbox functions, and code available on the web

17 January 2007 31Lecture 4: Matlab Tutorial

Page 32: Designing Applications that SeeDesigning Applications that ......stanford hci group / cs377s Designing Applications that SeeDesigning Applications that See Lecture 4: Matlab Tutorial

T L MTo Learn More…Di it l I P i U i M tl bDigital Image Processing Using Matlabby Gonzalez, Woods, and Eddins

17 January 2007 32Lecture 4: Matlab Tutorial

Page 33: Designing Applications that SeeDesigning Applications that ......stanford hci group / cs377s Designing Applications that SeeDesigning Applications that See Lecture 4: Matlab Tutorial

T t i l FilTutorial FilesD l d th t t i l filDownload the tutorial files:

http://cs377s.stanford.edu/code/matlab-tutorial.zip

Copy them to your Matlab working di t ( b bl C \MATLAB701\ k)

p // / / p

directory (probably C:\MATLAB701\work)

17 January 2007 33Lecture 4: Matlab Tutorial

Page 34: Designing Applications that SeeDesigning Applications that ......stanford hci group / cs377s Designing Applications that SeeDesigning Applications that See Lecture 4: Matlab Tutorial

D i i GUI ith GUIDEDesigning a GUI with GUIDED i d dit GUIDesign and edit GUIAdd buttons, pull-down menus, etc., p ,Generate Matlab code

h h d lfFinish the code yourself

17 January 2007 34Lecture 4: Matlab Tutorial

Page 35: Designing Applications that SeeDesigning Applications that ......stanford hci group / cs377s Designing Applications that SeeDesigning Applications that See Lecture 4: Matlab Tutorial

T L MTo Learn More…Di it l I P i U i M tl bDigital Image Processing Using Matlabby Gonzalez, Woods, and Eddins

17 January 2007 35Lecture 4: Matlab Tutorial