**CMSC
426**

Image
Processing

Autumn
2011

**Instructor:** Yiannis
Aloimonos (yiannis@cs.umd.edu)
**Lecture:** TuTh 12:30 pm-1:45 pm - CSI
2120 **Office Hours:** Tu 11:00am-12:00 am Th 2:00-3:00
pm- AVW
4475

**Teaching Assistant:** Chengxi Ye
(cxy@cs.umd.edu) **Office
Hours:** Tu 9:00 am -11:00 am

**Important
Anouncements !**

(Please,
**reload**
everytime you check the
announcements)

(Aug 31) Welcome to CMSC426

(Sep 8) How to get matlab: http://www.it.umd.edu/vcl/index.php

(Sep 28) How to learn matlab: press F1 and open the help browser.

Course Outline

In this class we will cover the following topics:

- 1. Introduction:
- What is Computer Vision? Ongoing Research and Application Areas.
- 2. Image Formation:
- Geometric aspects, Radiometric Aspects, Digital Images, The Human Eye, Camera parameters
- 3. Filters:
- Linar Filters and Convolution, Spatial Frequency and Fourier Transform, Sampling and Aliasing, Noise Reduction small
- 4. Edge Detection:
- Gradient based edge Detectors, Laplacian, Parametric Models
- 5. Other Image Features:
- Hough Transform, Ellipse fitting, Deformable contours
- 6. Lightness and Color:
- Surface Reflectance, Recovering Lightness, The Physics of Color, Human Color Perception, Color Representations
- 7.Camera Calibration :
- Intrinsic Parameters, Extrinsic Parameters
- 8. Multiple View Geometry:
- Stereo, The Correspondence Problem, Epipolar Geometry, 3D Reconstruction
- 9. Motion:
- The Image Motion Field, Estimation of 3D Motion and Structure, Segmentation on the basis of different Motion, Image Compression
- 10. Shape from Single Image Cues:
- Surface Descriptions, Shape from Contours, Shape from Shading, Shape from Texture.
Reading List

There is no required text. We will distribute material from a variety of sources.

Grading

Midterm: 25%, Final: 25%, Projects/Homework: 50%

Lecture Notes

Lecture 1: Intoduction pdf

Lecture 2: Image formation 1 pdf ppt

Lecture 3: Image formation 2: Radiometry pdf ppt

Lecture 4: Linear algebra review and Introduction to Matlab Linear algebra tutorial (from PennState) Matlab script 1 Matlab script 2 (some image operations)

Lectures 5 and 6: Camera Calibration ppt Some linear algebra for solving equations ppt

Lecture 7: Filtering filter.ppt filter2.ppt

Lectures 8 and 9 and some of 10: Edge detection ppt Canny edge detection m-file

Lecture 10: Resampling ppt (Slides from Univ. of Washington)

Lecture 11: Image motion ppt

Lecture 12: Statistics on image features: Review of statistical concepts ppt Web site on illusions

Lecture 13: Stereopsis ppt

Lecture 14: Projective Geometry ppt (10 MB )

Lectures 15 and 18: Epipolar Geometry ppt (8 MB )

Lectures 19 and 20: Interpretation of image motion fields ppt

Lecture 21: 3D motion estimation from image derivatives ppt

Lecture 23: Shape from Shading pdf (from Daniel DeMenthon)

Lecture 24: Texture ppt (5.5 MB)

Lecture 25: Tracking with Kalman Filters pdf (from Daniel DeMenthon)

Course Projects

Here is the first project. The goal is to create a
panorama (mosaic),

given the images in the attachment. These
images were obtained

by a rotating camera.

I also attach a
paper containing basic information as well as an

algorithm for
the creation of the mosaic.

The basic idea is that the
transformation between any two of the images

is a homography. By
estimating such homographies, you will be able

to take each image
and put it in some coordinate system, thus creating

the mosaic.

Project 2: Repeat the mosaic project but make the process completely automatic.

Project 3:

Write a program that makes an autostereogram. This program must be automatic, and take in a depth map, and (perhaps a texture source, or you can generate the texture randomly). You turn in a web page, with your favorite (2 or 3) example outputs (and the depth map they came from).

Program input: depth map, such as those available from:

http://www.dbki.de/tutorials/eng/landscape/pic/depth.jpg (where dark should be closer) or any thing else you can find.

The depth map is usually a grayscale picture, and you need to map the

color (probably from 0-256) to a distance (how far apart the next

pixel should be over). Often mapping depths of 0-256 into the range

of disparities of 100-250 pixels is about right, but it depends on

your monitor/printer.

Vague Algorithm:

Start at the left pixel of each row. (ie, let x = 1)

randomly pick color C **.

color location x with color C.

look up the depth (Z) at pixel location x on that row.

map Z onto a displacement d (something like d = 100 + Z/2).

x = x + d.

if x is still in the image

(that is, if you haven't gone off the right edge)

then loop to "color location x..."

if x isn't still in the image, set x to the position of the

leftmost pixel that isn't colored at all yet,

loop to "randomly pick color C"

end

** you do have to choose a color, but it does not have to be random.

Extensions (extra credit).

Moving autostereograms (good java choice). The idea here is to create a depth map that changes through time, and then show the autostereogram images through time (so that you see a moving depth map). This might entail creating a depth map that is a mathematical function that depends on time (or frame number t): d(x,y) = 4 + sin( (x+t) /150) Now, continually update the autostereograms as the depth map changes. This would be a nice java applet, or you could save the results as a movie (mpeg or avi).

Explore transparency in autostereograms. If you have a partially transparent surface over a more "solid" surface, we can often see both depths at once. The Project is to explore this idea in the following way: make one autostereogram. make another one with a smaller depth. make the second one slightly (or very, I don't know) transparent, and put it one top of the first autostereogram. How can you make it transparent? Option 1, only use every 5th pixel (or so)... for the second autostereogram. Option 2, instead of completely coloring the pixels, have the transparent layer only partially change the colors of the pixels. Make a collection of "2 layer autostereograms" and answer the following questions: ..) does it matter if neither, one, or both of the two autostereograms is random dot (ie, does it help if they have more structure? ...) how separated, in depth, can the two surfaces be?

Project 4: Implement your favorite stereo algorithm and apply it to two Middlebury sequences. Compare with the ground truth.

Homework

Additional Resources

Questions and concerns to cxy@cs.umd.edu

Designed by Gutemberg Guerra-Filho