Computer Graphics, Fall 2002
Z Sweedyk


Project 1: Image Processing

Due: 9/23/02 at 11:59 PM

Overview

This assignment is adopted, with some minor modifications, from COS426 at Princeton as taught by Tom Funkhouser. In this assignment you will create a simple image processing program. Most of the operations you will implement are filters that take an input image and process it to produce an output image. To allow you to focus on image processing, you are provided with an OpenGL framework and an image class. This code is available in /cs/cs155/proj1/src/ on the graphics machines.

A full implementation of this image processor is available for your use here. Information about this program can be found in its manual.

A gallery of images created by previous semesters of this class is maintained here for motivation.

Getting Started

You should use the code available at /cs/cs155/proj1/src on the graphics machines as a starting point for your assignment. We provide you with several files, but you should only change ip.cpp and ip.h. Following is a description of the various files we provide.

After you copy the provided files to your directory, the first thing to do is compile the program. An executable called ip will be created. Run the executable. Right click in the display window to view menu options. At this point only the options under the File submenu are implemented. Load an image file in ppm or bmp format. (You can convert many image formats to ppm or bmp using the programs xv, gimp, or convert)

The Makefile supports a few operations...make will build all necessary objects and the executable. make clean will remove the executable and all object files. make depend will create header dependency information. make fresh is the same as make clean ; make depend ; make.

What You Have to Do

The assignment is worth 20 points. The following is a list of features that you may implement. The number in front of the feature corresponds to its point value. The features in bold face are required. The other ones are optional. Examples of most filters are provided here. Information on filter design can be found in the lecture notes and implementation details can be found in the ip manual.

For any feature that involves resampling (i.e., scale, rotate, warp, and morph), you have to provide three sampling methods: nearest point sampling, bilinear sampling, and Gaussian sampling.

Filters should operate on 1-channel and 3-channel images. (In cases where this doesn't make sense, e.g. extract on a 1-channel image, use your own judgement as to how to handle.)

By implementing all the required features, you get 12.5 points. There are many ways to get more points:

The code provided reads the input paramters for most of the filters but does no error checking. That is your responsibility. In addition, you must request and read parameters for any filters you design. (Do this in ip.cpp!)

It is possible to get more than 20 points. However, after 20 points, each point is divided by two, and after 22 points, each point is divided by four.

What to Submit

You should submit:

Some Rules

Read the following carefully.

Notes

Links


Last Update: 9/8/02