Getting familiar with Matlab

Princeton has a site license of Matlab, so you can install it on your own machine - instructions are here.

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:

  1. 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.

  2. Display the image.
    Hint: "help imshow"

  3. 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.
  4. 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.

  5. 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".
    Hint #2: BIG WARNING: indices in Matlab are 1-based (not 0-based as in C).
    Hint #3: "help plot"

  6. 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.

  7. 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"

  8. 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 maximum...

  9. 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.