Getting familiar with Matlab
Princeton has a site license of Matlab, so you can
install it on your own machine - instructions are
Alternatively, Matlab is available on several OIT machines
(look here for
details). You should be able run it remotely from any Unix workstation.
Read through the following for a basic introduction to Matlab:
Work through the following tasks using an image of your choice.
You do not need to submit any results,
but make sure you are comfortable doing the following:
- Read an image into a variable.
Hint #1: "help imread"
Hint #2: Use single quotes around the filename.
Hint #3: Ending a command with a semicolon supresses printing the result.
- Display the image.
Hint: "help imshow"
- Convert the image to grayscale.
Hint: "help rgb2gray"
Note: if your version of Matlab doesn't have the
rgb2gray function, download rgb2gray.m.
Place this in your working directory, and it should be auto-loaded by Matlab.
- Convert the grayscale image to floating point.
Hint #1: "help im2double", and be aware of the difference between im2double(img) and double(img).
Hint #2: imshow is able to also display floating-point images.
- Plot the intensities along one scanline of the image.
Hint #1: Extracting a part of a matrix is done by
matrix2 = matrix1(row_min:row_max,col_min:col_max);
row_max or col_max may be "end" to
indicate the last element.
Just a ":" is equivalent to "1:end".
BIG WARNING: indices in Matlab are 1-based
(not 0-based as in C).
Hint #3: "help plot"
- Store the width and height of the image in variables "width" and "height".
Hint #1: "help size"
Hint #2: Functions in Matlab may return multiple values. You can
get at the values using the notation
[var1, var2] = func(x)
Hint #3: In Matlab, the number of rows is the first dimension and
the number of columns is the second.
- Write a pair of nested "for" loops to set a grid of every 10th pixel
horizontally and every 20th pixel vertically to 0.
Hint #1: "help for"
Hint #2: "start:increment:stop"
- Create a function "maxrow" that takes a matrix and a row index and returns
the brightest pixel in the given row. Store the function in a file called
"maxrow.m" so that Matlab loads it automatically when you call the function.
Hint #1: "help function"
Hint #2: Matlab has many built-in functions that operate
on entire vectors or matrices. There might be one to compute the
- Write the modified image back to a new file.
Hint #1: "help imwrite"
Hint #2: imwrite assumes that intensity ranges of uint8 and floating-point pixels are [0, 255] and [0.0, 1.0], respectively.
If you get stuck on any of these, ask for help on piazza.