**COS 426 Spring 2019: Assignment 1 Gallery**
Winners (+2.0 points)
===============================
ajayp
-----
![](./gallery/ajayp.gif border="1" width="320px")
**ajayp**:
Come with me if you want to live.
eshayes
-----
![](./gallery/eshayes.gif border="1" width="640px")
**eshayes**: Out of admiration for Princeton's commander-in-chief, President Eisgruber (also known as "Eis-Eis-Gruber", or simply "the Grube"), I have created this short animation. It features the President, one of his trendy non-academic alter egos Vanilla Ice, and vanilla ice cream. Further interpretation is left as an exercise for the reader.
This chef-d'oevre was created with a script that expands the capabilities of the morph filter by exploiting the batch feature to allow for morphs across multiple frames of a gif, and morphing between multiple consecutive images or gifs.
Stick around for the plot twist at the end. It's worth the wait.
uuberoy
-----
![](./gallery/uuberoy-1.gif border="1" width="640px") ![](./gallery/uuberoy-2.gif border="1" width="640px")
![](./gallery/uuberoy-3.gif border="1" width="640px") ![](./gallery/uuberoy-4.gif border="1" width="640px")
**uuberoy**:
My custom filter is an extension of my K-Means algorithm that I implemented for Palette. The input value results in values of K ranging from 2 to 10, generating K means for the given image. Using these means, I iterate through each pixel and find the closest mean to each pixel, replacing its color with the mean. This results in the image being segmented into K colors.
I noticed that this effect gave a cartoon-like quality to the images, especially when the value of K is low. To enhance this effect, I applied the edge detection filter on the original image to locate the edges, and set the pixels that were part of an edge to black, giving a stylized, sketchy effect. I also enhanced the colors by increasing the saturation of each pixel by a ratio of 0.8.
jneus
-----
![](./gallery/jneus-1.png border="1" width="640px") ![](./gallery/jneus-2.png border="1" width="640px")
**jneus**:
The impetus for this submission was an extension of the question that dithering answers: given white paper and black ink, how can we best display an image? I've ordered custom printed t-shirts before and am all too familiar with the exorbitant costs of printing graphics in multiple colors. The price seems to double with each additional color. My custom filter for the art contest is a multi-color dithering algorithm of sorts. If our budget allows for printing in k colors, how best can we represent the image? To tackle this problem, I extended on the palette filter. I use the palette filter to find k colors that represent the image. Instead of displaying the colors in boxes, however, I instead set each pixel in the image to its cluster's mean value. This yields a pretty cool looking image with a somewhat flat feel.
The UI requires the user to input a floating point value in [0, 1]. I calculate k as Math.round(10 * value). If you wanted to increase the max value of k, you could increase 10 to a larger number.
![](./gallery/jneus-3.gif border="1" width="640px")
**jneus**: I really like this morph. It uses 25 line correspondances.
ls24
-----
![](./gallery/ls24.gif border="1" width="640px")
**ls24**:
The first image is the product of playing with histogram equalization and matching with different number of frequency bands. This produced two images (one light and one dark) that I though were interesting depictions of two time of days in the Golden Gate bridge. The animation is the result of morphing both images with almost the same lines. The lines were somewhat modified to generate a cloud movement and shadow effect to make the scene look more dynamic.
Runner-ups (+1.5 points)
===============================
amacek
-----
![](./gallery/amacek-1.png border="1" width="640px") ![](./gallery/amacek-2.png border="1" width="640px")
**amacek**:
My custom filter painted the image using a variety of brush shapes that I didn't use in the actual brush filter. One of the brush shapes I used was a heart, which was created similarly to circle brush shape, but using the equation x^2 + y^2 - Math.abs(x)*(-y) < radius. The first heart image has hearts with a larger radius than the second image, which makes it easier to see the brush shape, but harder to see details from the original image.
The disolving effect in the next image was created using a variety of filters. First, I pushed the original image, and then a second copy of the original image, which was painted using the noisy brush with a .75 probability of coloring the pixel, rather than the .5 probablity used in the paint filter. I then used my own set of morph lines, where each of the pictures had the lines at the same location, so that there would be no warping of the image. I then used the morph filter with my morph lines, and animated the morph to create the disolving effect.
bsicim
-----
![](./gallery/bsicim-1.png border="1" width="640px") ![](./gallery/bsicim-2.png border="1" width="640px")
**bsicim**: I obtained the following results while working on the bilateral filter, and having a bug. My bug was caused by not raising the bilateral weight of a pixel to be a power of (-e). However, this error created some interesting results, which reminded me of spraypainting residue. I was fascinated by the output, and wanted to submit these as my art contest entry.
dsawicki
-----
![](./gallery/dsawicki.gif border="1" width="640px")
**dsawicki**: My custom filter mimics the Dents effect in Paintdotnet. The displacement of each pixel is determined using perlin noise to randomly index into sin and cosine tables. For the animation I also pass the image through a saturation filter.
jw60
-----
![](./gallery/jw60.gif border="1" width="640px")
**jw60**: For my art contest submission, I morphed a Corgi into a Shiba.
kolbym
-----
![](./gallery/kolbym.png border="1" width="640px")
**kolbym**: for art contest picture, I first played with contrast set to higher values, then gamme set to higher values, then used white balance to turn the bridge yellow and then played with more contrast, gamma, and saturation filters to try to make it look more natural. My original goal was to try to recreate the image to look the same except with the golden gate bridge recolored to its original golden color but I am not as good with filters as I thought.
ngb
-----
![](./gallery/ngb-1.gif border="1" width="640px") ![](./gallery/ngb-3.gif border="1" width="640px")
![](./gallery/ngb-2.gif border="1" width="320px")
**ngb**:
After I implemented palette, I wanted to see what it would look like if I
transformed each image in-place, setting each pixel to the palette color it's
closest to. This results in images quantized by colors rather than luminance,
and produces some interesting textural effects. I then produced gifs of several
images that show how they change when the number of colors in the palette
increases. This effect especially reminds me of the famous "Hope" poster of
Barack Obama, which motivated me to see how it would look on the image of
Donald Trump.
nshankar
-----
![](./gallery/nshankar.png border="1" width="640px")
**nshankar**:
My art contest uses various filters and morph to show a man with a town in the background. The idea was to create some sort of "movie" poster that you would see on a billboard.
rb25
-----
![](./gallery/rb25.png border="1" width="320px")
**rb25**:
For my art submission, I chose a photo I took from the top of One World Trade Center. I played around with all of the features I implemented, and I ended up sharpening it, changing the contrast to 1, and then applying edge detection. I really like how you can see the outline of the city, but that there is still a lot of color where things become a little more blurred in the real picture.
sahanp
-----
![](./gallery/sahanp-1.png border="1" width="640px") ![](./gallery/sahanp-2.png border="1" width="640px") ![](./gallery/sahanp-5.png border="1" width="640px")
![](./gallery/sahanp-3.png border="1" width="640px") ![](./gallery/sahanp-4.png border="1" width="640px")
**sahanp**:
I was trying to creating to create more of a cartoon effect using flat colors and an outline. Admitidly I sort of failed. However, I think my results are cool non of the less. So I first calculate the k-means (where k=8) of an image and color each pixel with its associated mean. I then use edge detection to find the edges. I sharpen the edges and quantize the edges (though I change the threshold from 0.5 to the value in custom filter) to create an outline. I enchanced the outline by having each part of it also color its neighbors. Lastly, I overlayed the outline on the image.
The first three images are some results of this using a threshold of 0.7. I also attatched two of my bloopers from morph because I thought they were entertaining.
sazam
-----
![](./gallery/sazam.gif border="1" width="640px")
**sazam**:
This happened by accident when I was trying to create my swirl filter. I was incorrectly calculating my rotating factor and ended up getting this.
wsweeny
-----
![](./gallery/wsweeny-2.png border="1" width="640px") ![](./gallery/wsweeny-3.png border="1" width="640px")
![](./gallery/wsweeny-1.png border="1" width="320px")
**wsweeny**:
I had about a bajillion custom filters last time, so I just copy-pasted them over into this assignment.
I won't explain them all in great detail, except for the new ones I've added.
The main new filter I added was a palette dither, which runs k-means on an image to find its palette of colors,
and then sets every pixel of the output image to the mean pixel which was closest to it in RGB space.