Intro Graphics Assignment 2
Image Processing
Due: September 15, 2005


Overview

In this assignment you will create a simple image processing program. The operations that you implement will be mostly filters which take an input image, process the image, and produce an output image.

Getting Started

You should use the following skeleton code as a starting point for your assignment. We provide you with several files, but you should only change image.cpp.

You can find starter images here, or use Google Image Search. This image is also a good choice.

A sample implementation for Windows is here.

A sample implementation for MacOS X is here.

How the Program Works

The user interface for this assignment was kept to the simplest possible, so you can concentrate on the image processing issues. The program runs on the command line. it performs operations in the order that they appear in the arguments. For example, to increase the brightness of the image in.bmp by 10%, and save the result in the image out.bmp, you would type:

% image -input in.bmp -brightness 1.1 -output out.bmp

Notie that the input parameter must appear first. Remember, everything happens in the order specified. First input the image, then change the brightness, then write it back out.

For many image filters, there are one or more corresponding arguments. To see the complete list of options, type:

% image -help
If you specify more than one option, the options are processed in the order that they are found. For example,
% image -input in.bmp -contrast 0.8 -scale 0.5 0.5 -output out.bmp

would first decrease the contrast of the input image by 20%, and then scale down the result by 50% in both x and y directions. It is also possible to specify -output multiple times, to save out intermediate results:

% image -input in.bmp -blur 5 -output blurred.bmp -edgeDetect -output edges.bmp -rotate 30 -output whatever.bmp

What You Have To Do

The following is a list of features that you may implement (listed roughly from easiest to hardest). The number in front of the feature corresponds to how many points the feature is worth. For any feature that involves resampling (e.g., scale, rotate, fun), you have to provide three sampling methods: point sampling, bilinear sampling, and Gaussian sampling.

Submission

You should create a web page with:

Hints