Upon completing this assignment, you will be able to:


In this assignment, you will create a dynamic composition which displays the result of different image processing algorithms on a single input image.


Your assignment must fufill the following requirements:

  1. Your program must have at least 3 modes which each display a different variation of the same input image. You may decide what triggers the change from one mode to another. By "variation", we mean that the output images look visually different from each other somehow. It is OK for the variations to be riffs on the same idea.
  2. All variations will be generated by systematically altering the color tones in the image, i.e. that change some or all colors to different colors. The image will be processed by using its pixels[] array. It is OK to process a carefully selected subpiece of the image, instead of the whole image.
  3. At least one of the variations must decide a pixel's new color based at least in part on a pixel at a different location in the old image. Note that edge detection, mirroring, and rotation are all examples of doing this that we covered in class.
  4. Each variation will be generated by defining and using a function that takes the parameters of your choice and returns a new color.
  5. None of the 3 required variations may be identical to examples we covered in class. They may be similar; for example, you could do posterization with a different number of levels than what we covered.
  6. As always, your code must be clean, clear, and well-documented. You should use functions where necessary to make your code more understandable.

To receive an A on this assignment, there must be something interesting about your composition. This does not mean that the assignment needs to be beautiful. Rather, it means demonstrating that you are moving beyond simply implementing whatever's easiest to thinking about and then executing the effect you want to achieve.


You may proceed in any way that you wish to accomplish the requirements of this assignment. One way to do this assignment is as follows (get each step working and debugged before moving on to the next):

  1. Load the image into your program and display it on the screen.
  2. Decide on and write the first way you would like to transform your image. Display the transformed image.
  3. Adapt your code so that you are using a function as described above to generate your transformation.
  4. Adapt your code so that you are using modes. For now, you might want to just switch between the untransformed and the transformed image.
  5. Write a second transformation, using a function, and display it in the 2nd mode.
  6. Adapt your code as desired to perfect your composition.
  7. Double-check you have fulfilled all the requirements. Clean up your code so that it is logical, clean, and elegant. Add any functions you may need to modularize your code. Fix any formatting problems and make sure it is adequately documented.

For this assignment, please submit a zipped sketch folder which includes both your processing file and the image(s) you are using.

Grading scheme

A+ - All required elements included, plus an interesting and creative approach to fulfilling the assignment requirements.

A - All required elements included and functioning correctly. Code is clean, clear and well-documented. Clear thought went into the selection of algorithmsused and they demonstrate mastery of image processing.

B - Competent response to the assignment showing overall mastery of course material, with some small errors that do not greatly affect the quality of the assignment. For example, the code may be somewhat baroque (too complex for what it does), the choice of algorithms appears accidental, or the code may be formatted incorrectly.

C - Some bigger errors, or a larger collection of smaller errors, but with potential to develop into a competent response. For example, the code may not run, but with a few small syntactical fixes would properly fulfill the assignment; the code may work but not be comprehensibly written; only one or two of the variations show independent understanding of image processing, or the code completely misses on one of the requirements, but still shows some understanding of the unit's material.

D - Serious errors show clear effort, but serious gaps in understanding, such as code that does not run and is not close to being correct, fulfills only part of a requirement, or is copied fairly directly from examples used in class.

F - Little demonstrated effort, or clear effort with no understanding, such as code fragments submitted which are only the start of a response to the assignment.