COS 426:
Computer Graphics
Spring 2013


General | Syllabus | Assignments | Final Project


Assignment 1: Image Processing

Part A: C++ programming / HTML / Dropbox

Due Tuesday, Feb. 12, 11:59 PM

The purpose of this part is to ensure that you have a C++ compiler installed and are familiar with C++, HTML, and Dropbox. Overall, assignment 1 is worth 20 points. Part A is worth 3 of the 20 points.

Task List
  1. Download the following skeleton code: cos426_assignment1.zip. Read over the FILE STRUCTURE section in 01AREADME.txt to learn the functions of the different files and directories.
  2. Read and follow the instructions in the HOW TO PROCEED section in 01AREADME.txt. For this part of the assignment, you are required to implement the following methods in R2Image.cpp (point values in parentheses):

Part B: Image Processing

Due Thursday, Feb. 21, 11:59 PM

In this part of the assignment, you will add to the code you submitted for part A to implement a simple image processing program. This part is worth 17 of the 20 points, with the opportunity for extra credit. 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. The features in bold face are required. The other ones are optional. Refer to the examples web page for more details on the implementation of each filter and example output images. This part will likely take longer than part A, so get started early.

By implementing all the required features in Part B, you get 13 points. There are many ways to get more points:

It is possible to get more than 20 points for this assignment including Part A and B. However, implementing more than 4 points worth of non-required features incurs diminishing returns: each successive point is worth 3/4 as much as the previous one. Thus, the adjusted extra credit score is computed according to the following formula:

extra credit = 3 * (1 - pow(0.75, points - 4))

Extra credit points cannot replace the required features (bold items). Your final score will be calculated by adding your score on the required features (up to 16 points) to your score on the optional features (up to 7 points, with diminishing returns past 4).

Submitting

This assignment is due in two parts. Part A is due Tuesday, Feb. 12 at 11:59 PM. Part B is due Thursday, Feb. 21 at 11:59 PM. Please see these slides for details about submitting and the assignments page for details on the late and collaboration policies.

For each part of the assignment, please submit a single .zip file named [your NetID]_cos426_assignment1[A or B].zip containing the starter code with the following modifications:

We will test your code on Linux by running make in your src/ subdirectory, followed by make in the main assignment directory to create the output images. Please ensure that your code builds/runs in this way before submitting. Your Makefile should generate the images in the output directory that your writeup references.

Note that you are expected to use good programming style at all times, including meaningful variable names, a comment or three describing what the code is doing, etc.

Submit your assignments here:
part A
part B

writeup.html should be an HTML document demonstrating the effects of the features you have implemented. For some features (e.g., black & white), you can simply show the input and output of your program. However, for features that take an input parameter (e.g., blur), you should provide a series of images showing at least three settings of the input parameter to demonstrate that your code is working properly. You can start from the skeleton writeup.html provided with the distribution as a template -- simply add sections to that HTML file for the features you implement in the following format:

We remind you that you are expected to use good programming style at all times, including meaningful variable names, a comment or three describing what the code is doing, etc. We will test your code by running make in the main assignment directory to build the code in src/ and create the output images. Please ensure that your code builds/runs in this way.