Image Filter Project

“You don’t take a photograph, you make it.” – Ansel Adams

https://www.youtube.com/embed/p5QQNmkSE5Y

All digital media consists of bits and their abstractions. Manipulating bits can make abstractions more useful, usable, or beautiful. Much like wizards in a fantasy setting, programmers are able to change the very core representations of reality.

Computer scientists manipulate bits to achieve a wide variety of outcomes. Image editors can transform many characteristics of images with ease. Productivity software can perform complex mathematical functions automatically. Video game environments can be rendered dynamically, and more.

With computational thinking and the proper programming skills, anyone can manipulate bits.

Assignment

Create a filter to transform digital images by programmatically manipulating pixels.

Working in pairs, your task is to design and develop a program for filtering digital images. More specifically, you must use the Processing programming language to code a program capable of systematically transforming an image by mathematically manipulating its bits. Your program must allow users to upload original digital images of various formats, perform transformations on these images programmatically, and save the manipulated results. How will your image filter program function? What image features, attributes, and representations will it transform, and how will it transform them? As you work through this module, continuously think about how the skills and knowledge you gain may apply to your project.

Submission

Your submission will be an original program coded with the Processing language. You must submit the “sketchbook” .pde file, along with documentation describing its functionality. Download, execute, and build upon this starter code:

Click to Download: FilterProjectStarter

Your image filter program must:

  • Perform two tasks on an image at the pixel level.
  • Perform one task on an image by reordering pixels.
  • Use Processing constructs to accomplish this task, including:
    • the setup() and draw() functions,
    • branching control flow (if/else),
    • color functions (color(), red(), green(), etc.), and
    • mouse/keyboard interaction.
  • Include documentation detailing its use, appropriately using key terminology as necessary.
  • Your program should be aesthetically pleasing and easy to use.

When you are finished, you will submit the source code of your Processing program, which will be graded using the attached rubric. You will then review one other group’s submission, and reflect upon any differences from your own work.

Learning Goals

Over the course of this module and this project, you will learn to:

  • use a text-based programming language (Processing)
  • use appropriate computer science terminology
  • represent color using the RGB color model
  • create vector and raster-based images
  • transform behaviors by manipulating underlying representations
  • create and modify digital audio
  • analyze the costs and benefits of encoding schemes
  • evaluate ethical practices related to digital media production, consumption, and ownership.

Rubric

Content Area Performance Quality
Loops and Conditionals
Both loops and conditionals have been added to the program.

AND

All loops and conditionals are used effectively and correctly with purpose in the program.

Loops or conditionals (but not both) have been added to the program AND all loops or conditionals are used effectively and correctly with purpose in the program.

OR

Both loops and conditionals have been added to the program but not all loops or conditionals are used effectively and correctly with purpose in the program.

Loops or conditionals (but not both) have been added to the program.

AND

Not all loops or conditionals are used effectively and correctly with purpose in the program.

Not enough criteria are met in order to award any credit.
Filter 1
Program includes an image filter that alters the image at the pixel level (not using a built-in Processing filter function).

AND

The filter uses Processing constructs appropriately and effectively.

Program includes an image filter that alters the image at the pixel level (not using a built-in Processing filter function).

AND

The filter uses Processing constructs appropriately.

Program includes an image filter that alters the image at the pixel level (not using a built-in Processing filter function), but Processing constructs are not used appropriately.

Not enough criteria are met in order to award any credit.
Filter 2
Program includes a second image filter that alters the image at the pixel level (not using a built-in Processing filter function).

AND

The filter uses Processing constructs appropriately and effectively.

Program includes a second image filter that alters the image at the pixel level (not using a built-in Processing filter function).

AND

The filter uses Processing constructs appropriately.

Program includes a second image filter that alters the image at the pixel level (not using a built-in Processing filter function), but Processing constructs are not used appropriately.

Not enough criteria are met in order to award any credit.
Filter 3
Program includes a third image filter that alters the image by reordering pixels (not using a built-in Processing filter function).

AND

The filter uses Processing constructs appropriately and effectively.

Program includes a third image filter that alters the image by reordering pixels (not using a built-in Processing filter function).

AND

The filter uses Processing constructs appropriately.

Program includes a third image filter that alters the image by reordering pixels (not using a built-in Processing filter function), but Processing constructs are not used appropriately.

Not enough criteria are met in order to award any credit.
Aesthetics and Functionality
All filters created in the program are aesthetically pleasing.

AND

Provides a name for all of the filters (e.g., sepia, blur, shiny) and changes the values of the buttons to match.

AND

Program is easy to use and allows multiple filters to be applied simultaneously.

All filters created in the program are aesthetically pleasing.

AND

Some of the filters have been provided names (e.g., sepia, blur, shiny) and the values of the buttons are changed to match.

AND

Program is somewhat easy to use and may allow multiple filters to be applied simultaneously.

Some filters created in the program are aesthetically pleasing.

AND

Some of the filters have been provided names (e.g., sepia, blur, shiny) and the values of the buttons are changed to match.

OR

Program is somewhat easy to use and may allow multiple filters to be applied simultaneously.

Not enough criteria are met in order to award any credit.
Documentation
Explains each filter’s functionality and purpose

AND

Describes the major code segments within the program.

Explains each filter’s functionality and purpose

OR

Describes the major code segments within the program.

Documentation exists, but does not explain each filter’s functionality and purpose or any major code segments within the program.

Not enough criteria are met in order to award any credit.