Lossy JPEG
This coding exercise was inspired by "macroblocking," a side-effect of the lossy video compression algorithms that enable streaming video over limited bandwidth.
There are many flavors of such algorithms, some even proprietary, but most are in some way based on the Discrete Cosine Transform (DCT) which is the foundation also for the ubiquitous jpeg format.
It works by breaking an image into squares of pixels -- 8x8 in the case of jpeg -- and performing the transform on the pixel values.
The transform itself is a kind of spectral analysis, much like the fourier transform.
The result is an image with about the same dimensions, but with cryptic monochromatic patterns replacing the original subject.
Normally this cryptic format is purposely simplified to save memory, before the computer attempts to translate it back into an image.
Usually the translation successfully recovers most of the image, but sometimes there are noticeable defects.
By reproducing the basic algorithm, I was able to produce my own artifacts deliberately.
The results are fascinating portraits of a computer playing a game of telephone with itself.