What to Do

You will create a command-line program that uses two-dimensional arrays or matrices to process images. You cannot simply call graphics libraries to manipulate the images directly but must implement the functions with your own algorithms. The input to each operation is an image (you choose to support any of JPEG, PNG) and the output is the modified image. The idea is to have a final project which shows your mastery of the topics in this course.


Example run

./imagetrans half -i inputfile.jpg -o outputfile.jpg

In this example, the "half size" function will be applied to the inputfile.jpg and create the file outputfile.jpg. The program should exit with warning if that output file already exists.

Specification Details

  • First task is form a team and send Ken both of your GitHub users so he can create your repository (with the starting codebase). Deadline of October 22nd.
  • Deadline for submission: before midnight November 25, 2015
  • All code must be on GitHub. Ken will create a repository and add each of the team members as contributors. Part of the mark is the consistent submission of code changes over the time for the project.
    We expect to see a balance of commits from each member as well.
  • Teams of two people (from either of my 2 groups of the course).
  • Both members need to understand the code, you can (and should) import libraries for your work but not to do the actual image manipulation.
  • Half the image (in both dimensions)
  • Switch to black and white

Simplified (*new). You only need to do the two above, the rest below (4 items) are optional.

  • Rotate 90, 180 or 270 degrees clockwise
  • Flip across vertical axis (left to right, right to left)
  • Flip across horizontal axis (upside down)
  • Strip one of the RGB components (red or green or blue, can implement as separate functions).

Video Explanation (coming soon)


  • 5 marks - meets minimum functionality requested.
  • 5 marks - blog post describing your experience of the project which will include your "log" of weekly activities over the 5 weeks of the project.
  • 3 marks - code style. Did you follow best practice? See Mastery#08
  • 2 marks - constant work and commits to GitHub. The commits should definitely be spread well over the last 4 weeks of the course and not just "at the last moment" in the last week.

What to Submit

As usual, create a blog post (or series of posts) explaining what you did, where you found resources (books, videos, web pages, friends) to help you solve this.

The commits to your GitHub repository are your submissions of code. I will use the state of the GitHub repository at the deadline for marking purposes.

And of course, leave any questions here as well as asking those questions on Twitter with the hashtag #TC1017 so we all see your question posted there.

Also put a #PROJECT hashtag to identify it as the project.

Team GitHub Repositories

Coming soon.

CC BY 4.0 TC1017 Final Project – Image Processing by Ken Bauer is licensed under a Creative Commons Attribution 4.0 International License.