"This article explains how to write a custom Java 2D
image-processing class by implementing the BufferedImageOp
interface. It uses a 2D cellular automaton (CA) — cyclic
space — in constructing the image-processing application. The
CA "operates" on an image (for example, a JPEG file), causing the
image to transform in interesting ways over time. I hope the
article will open your eyes to the possibility of writing a whole
new class of image-processing applications.
"2D cellular automata
"2D cellular automata are composed of cells in a 2D grid
commonly called the universe. Each cell has a state, which you can
think of as an integer between 0 and n. Listing 1 shows how to
declare a cellular automaton universe in Java code:"