042 -- Pixels II: Content-Based Image Filtering: Due 10/20
Find a photograph whose dimensions are roughly 400x400. Create a program which applies a custom filter to this image. Your program could be time-based, or static.
Read up about image filtering at the HIPR. Your filter could be a simple linear convolution, such as a blur, gradient, edge-detection, etc., or it could be a filter with non-linear effects on pixel neighborhoods, such as a median-filter, erosion/dilation, or something of your own design. Indeed, it is not strictly necessary for your filter to use pixel-rewriting: your filter could instead be accomplished with a process in which the original photo becomes warped, or over-written by synthetic graphics.
Ok, now the twist: develop your program so that it applies this filter "selectively" or "intelligently", depending on some kind of image content that you are able to detect algorithmically.
For some hypothetical explanatory illustrations of what I mean: You could write a program to turn all blueberries into redberries, without otherwise changing their surrounding muffin. Or you could write a program to detect the ridgepole (top edge) of a house's roof, and automatically place bird images there. Or you could write a program that used color-criteria to find people's faces; and you could then selectively blur those face-pixels in order to hide people's identities. Or you could somehow detect people's eyes, and then use this knowledge to warp the size of their eyes like a cartoon character. These are just examples.
To put this another way, try to think of easily-detectable classes of pixel-based phenomena; then try to think of image-based transformations that would be conceptually interesting to apply to those phenomena, exclusively.