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