Karl Hick Project 6


The project pushed us to explore image manipulation with multiple images.  The first few tasks involved the duplication of images, and once they were arranged, we applied a variety of filters to make a collage in the style of Andy Warhol.  After that, we used green screen images from class to try and place ourselves somewhere else.  This involved the selective manipulation of the image's pixels based on their color values.  After that, we had to build some collage using an image and skills from past projects.

Task 1:

I used the line-by-line comments to construct a place image function to place some source image into a destination image using a series of nested loops to transfer the image pixel by pixel.  This requires a ppm file, which is specifically constructed to contain information on every pixel and its placement.

Task 2:

Using the test function sent out by Bruce in the project description, I can test the duplication of the image and its placement.  It created a ppm file called duplicate.ppm upon completion.

Task 3:

I created more filters in addition to the few I had initially created, using the internet to find the best methods of creating a true sepia tint.  As for the others, I simply looked through filters on my phone and just decided to make the most plausible ones by using the (int) function, and by taking fractions/adding the r g b values of the pixels.

Task 4:

This one posed quite a bit of difficulty, but I managed to align the images and apply the filters to a set of clones of the original image.

      ps. The original ppm image is in the project folder

Task 5:

This task required me to take a green screen image of myself, to transfer the non-super-green pixels to some destination image, and to post it all over some other background ppm image.  The initial product was out of line, with part of my lower torso floating over the void, so I doubled the background image by copying each pixel for a space to its right, below it, and to the right below it, essentially creating a larger pixel.

      ps. The original ppm image is in the project folder

Task 6:

This task required me to make a collage of skills from past projects and to include an image in some creative invention.  I decided to not do that, and instead scraped together previous work from THIS project and to apply a filter, a green screen image, and use a second image, which while it satisfies the letter of the law, I'm certain that the spirit is not happy with this one.

      ps. The original ppm image is in the project folder


Extension 1:

Create a heading for each extension.

[[Insert Image for Task]]

Write a description of each extension you undertook, including text output or images demonstrating those extensions. If you added any modules, functions, or other design components, note their structure and the algorithms you used.


  1. What is a pixel?
    A teensy weensy square of light, which, when used in conjunction with tens, hundreds, thousands or more of its brethren, can form collages we can interpret as images using our sight-orbs.
  2. What is the difference between an image filename and an Image object?
    Ah.  Very good question.  I think that the answer is that a filename, or at least as I have been using it, is the literal name of the file, and as such, it can be printed as a string, while the Image object is the image within the function, to be manipulated as you wish and all that.
  3. Why are nested for loops useful for manipulating images?
    Because by using a nested loop, you can describe every x for every y, or vice versa, instead of having to describe the image pixel by pixel.
  4. What is your favorite Andy Warhol print?
    I don't actually like Andy Warhol or his work.  I think that his art was superficially interesting, but lacking in any true substance or meaning.  I think that he might have created his "masterpieces" while under the significant influence of substances, and while he may ascribe meaning to his works, which his cultish art-following happily gobbles up, I don't see a whole lot of value in his copy and paste images, dutifully created by his followers and acolytes.  I agree that he has had a significant impact on the creative landscape of modern art, but I simply don't respect his art.


In conclusion, I have learned how to manipulate images by filtering them, moving them, copying them, and selectively manipulating them based on the values of their pixels.  In addition, I have learned a great deal about command-line arguments and the like.


Bruce Maxwell, Sam Schultz, Riley Chenard, Jake Gray, John Conners


Put the label cs151s20project# on your wiki page.