Understand the IFS in 5 easy minutes




Fractal image compression is based on concept of an Iterated Function System. Thus, it is important to understand the Iterated Function System(IFS). The copy machine in the picture accepts an image as an input. It then produces 3 small copies of the input image. The copy machine arranges the small copies in a triangle.

The ouput of the copy image is then fedback into the input. This is known as a unity feedback system. The second output of the system is then fed back into the input again. The second output is shown in the picture as well. If the output of the system is repeatedly fed back into the system, the output will be as shown below.



The final output of the copy machine is called the attractor. The attractor above is called the Sierpinski triangle. It is a fractal.

The copy machine in the first figure accepted a circle as the first image. However the final output (attractor) only depends on the fact that the copy machine arranged the outputs in a triangle formation. If the initial image had been a square or a hexagon, the final output(attractor) would have still been the same Sierpinski triangle. ANY INITIAL PICTURE WOULD GIVE THE SAME FINAL IMAGE(ATTRACTOR)

Now for the fun fact. Let us say that we wanted to store a picture of the Sierpinski triangle. It is a fractal image. We could store it as a jpeg, gif etc. However we are now smarter than that. We could simply store the set of transformations used to generate it. The transformation went something like this. "Make 3 small copies of it and put them in an equilateral triangle". All we have to do to generate the Sierpinski triangle, is to repeatedly apply the transformation to any input image ( box, circle, whatever). This will generate the Sierpinski triangle perfectly. The image compression is huge, since you are only storing a few coefficients representing the transformation.

Purely fractal images like the Sierpinski triangle can be compressed with great efficiency. We now turn to every everyday images ( people, trees, dogs etc). It turns out that these images have some fractal structure to them. Thus it may be possible to store a set of transformations to represent them. In practice, fractal coders look for sets of transformations that link one part of the image to another. These transformations and the location of the blocks that relate to each other are all that is stored.