PREP workshop on the Mathematics of Images, March 14-18

David Mumford and Kathryn Leonard

Expectations and Goals

The primary goal of the PREP workshop is to introduce ways in which the exciting field of Image Analysis fits into a myriad of undergraduate courses. In pursuit of that goal, we also hope to build familiarity with the programming environment Matlab, and to give a flavor of current areas of research in Image Analysis.

The workshop will be organized around an image recognition challenge. Each day will consist of a few lectures and a hands-on activity period. The lectures are intended to explain techniques of image analysis and to point out specific mathematics used in image analysis that naturally fit into particular undergraduate classes. The activity periods are intended to demonstrate computational activities to be included in undergraduate class-work, as well as to build skills that will help participants compete in the challenge.

Before the workshop, we expect participants to familiarize themselves with basic Matlab commands (see Matlab Guide below), to solve a few illustrative Matlab problems, and to read over some introductory texts on Image Processing (see Suggested Readings). During the workshop, participants should anticipate devoting a reasonable amount of time to the image recognition challenge and related Matlab projects. The computer lab will be available after hours to facilitate that work.

On the afternoon of final day of the workshop, participants will discuss what they have learned and ways to incorporate that knowledge into undergraduate classes. At the conclusion of the discussion, we will announce the winners of the recognition challenge and analyze the outcomes of the various approaches to the challenge. We hope to produce an “Image Analysis Activity Book” based on the activities of the workshop and the discussion on the final day.

Click here for the workshop outline

Matlab Guide

A wonderful tutorial for basic Matlab commands is:

http://mathcs.holycross.edu/~spl/MATLAB.

A site that explains how to load and save images is:

http://amath.colorado.edu/courses/4720/2000Spr/Labs/Worksheets/Matlab_tutorial/matlabimpr.html

Some other commands that we recommend exploring (for instance, through the Matlab Help site) are:

quit

rand

use of logical operators to produce binary strings.

find

sort

more (on, off)

If you are interested in playing around with image processing techniques, browsing the image processing toolbox (if you have access to it) is a great way to begin to understand the various ways images can be analyzed and manipulated.

Googling “matlab tutorial” will return many sites, some of which will be more helpful than others. For those of you used to other languages, the biggest surprise is going to be that you can almost always avoid loops, using the built-in parallelism of matrix operations. For speed, you must in fact do this. Thus you can sum 100,000 terms of the harmonic series without a for loop as

sum(1./(1:100000))

Some MatLab problems:

1. How about calculating pi? Take some standard series from calculus and sum as above.

How many decimal places can you get before limitations of time or space stop you? Another way is to use random numbers: rand(1,n) will give you a row vector of n random numbers between 0 and 1. Use 2n random numbers like this to get n random points in the unit square and count how many fall in the positive quadrant of the unit circle!

2. A nice dataset to play with is “topo”, which you get via “load topo”. It is a 180 by 360 matrix of the mean altitude (or depth) of the land (or sea) at the patch of the earth given by that latitude and longitude. It’s fun to do “imagesc(topo)” (you can play with the color map too) or “surf(topo)” (sometimes surf(topo, ‘EdgeColor’, ‘none’) is better to suppress the grid lines). But here’s a multi-variable calculus problem: calculate the volume of the land above sea level and the volume of the water below sea level. What is their ratio? (Hint: ‘.*’ should be used to bring in the jacobian factor.) Another fun thing is to do ‘oceans = topo < 0’ and ‘hist(oceans)’.

3. We have attached 3 pdf’s made with MatLab like this: we took images but considered them as functions of 2 variables and plotted their graphs. Thus white areas are elevated, black depressed. The 1st 2 are our faces and the 3rd is a mystery object. Which face is whose? Can you guess anything about our facial features? What is the mystery object? This is not a MatLab question but is meant to start you thinking of images as functions.

Suggested Readings

The best book on computer vision may be:

Computer Vision: A Modern Approach by David A. Forsyth, Jean Ponce

An excellent introduction to the geometry of imaging is

http://www.robots.ox.ac.uk/~vgg/hzbook/hzbook2/HZintroduction.pdf