Introduction: storing a rule instead of pixels

A digital image usually looks like a huge table of values. Compression represents that table with fewer bits.

JPEG transforms blocks into frequencies and quantizes the coefficients. Other codecs use prediction, wavelets, larger transforms, context models or neural networks.

Fractal compression asks a different question. Can one region be reconstructed from another after scaling, rotation, reflection, contrast change and brightness shift?

Instead of storing the pixels of a target block, the encoder stores an instruction: "Take this larger region, reduce it, rotate it, adjust contrast and brightness, and place it here." A complete image can be described by many such transformations.

The decoder repeatedly executes them. After several iterations, the image stabilizes. The compressed representation behaves like a small program whose output is a fixed point.

How can an image be reconstructed from pieces that do not yet exist at the start of decoding? The fixed-point theorem provides the answer.

An image does not need to be fractal. The practical method exploits approximate local similarities. It does not assume perfect self-similarity of the entire photograph.

An image as a point in a space

A W by H grayscale image can be viewed as a vector with WH components. A distance between images may be based on mean squared error:

d(X,Y) = sqrt[(1/N) Σᵢ (Xᵢ − Yᵢ)²](distance entre images)

A transformation W maps one complete image to another: X_(n+1) = W(X_n). The decoder seeks a fixed point X* such that W(X*) = X*. The code stores W rather than directly storing X*.

The code stores an operator. The decoder does not read the final image. It applies a rule whose reconstructed image is the fixed point.

Contraction and the fixed-point theorem

W is contractive if there is an s with 0 ≤ s < 1 such that:

d(W(X), W(Y)) ≤ s · d(X, Y)(contractivité)

Banach's fixed-point theorem guarantees a unique fixed point, convergence from every initial image, and an error that decreases geometrically. After n iterations:

d(Xₙ, X*) ≤ sⁿ · d(X₀, X*)(convergence géométrique)

If s = 0.5, after ten iterations the maximum gap is divided by about 1,024. If s is close to 1, convergence is much slower.

Contractivity is the guarantee. Without a factor less than 1 in the appropriate metric, the existence and uniqueness of the result are no longer guaranteed.

IFS: a few transformations, one attractor

An IFS contains contractive maps w₁, …, w_K. The Hutchinson operator is:

W(S) = w₁(S) ∪ w₂(S) ∪ … ∪ w_K(S)(opérateur de Hutchinson)

Repeated application converges to an invariant attractor A such that W(A) = A. The Barnsley fern is a famous example. A handful of affine transformations produces a complex shape. The chaos game applies a probabilistically chosen transformation to a point. After a transient, the points draw the fern.

This demonstrates that a short rule set can generate rich geometry. A natural photograph, however, is not an exact global IFS attractor.

IFS Explorer — attractor
Preset :
Iterations : 0

Each point is produced by applying a randomly chosen transformation. The attractor emerges after a few thousand iterations.

The collage theorem: solving the inverse problem

Compression solves the inverse problem. Given a target image X, find W whose fixed point X* is close to X. If W has contraction factor s and d(X, W(X)) ≤ ε, then:

d(X, X*) ≤ ε / (1 − s)(théorème du collage)

The encoder therefore seeks an operator that leaves the target almost unchanged. The theorem is a bound, not an automatic optimal encoder.

Why a photograph is not a perfect fern

Photographs contain textures, shadows, perspective, edges, noise and unique details. Their self-similarity is partial and local. A region may resemble another only after downsampling, rotation, reflection, contrast scaling and brightness shifting.

Jacquin's practical block coding exploits piecewise self-transformability rather than exact global fractality.

From IFS to PIFS

Partitioned IFS coding divides the image into non-overlapping range blocks. For every range block R_i, the encoder searches a larger domain block D_j. After downsampling, geometry and photometric adjustment:

Rᵢ ≈ pᵢ(gᵢ(downsample(Dⱼ)))(approximation PIFS)

A code stores: domain position, symmetry, contrast factor, brightness offset, block size, partition information. All codes together define the global decoder operator.

Range and domain blocks

A 512 by 512 image may use 8 by 8 range blocks and 16 by 16 domains. The domain is reduced to the range size. The larger domain provides cross-scale redundancy and helps spatial contractivity.

For every range, a brute-force encoder may test thousands of domains and eight symmetries. That search dominates runtime.

Range / domain block comparator
Symmetry :
Contrast s = -0.408Brightness o = 0.415Squared error = 0.04037

The encoder searches for the domain block (downsampled to range size) that minimises error after contrast and brightness adjustment.

Geometric transformations

A square block commonly uses eight symmetries:

  • Identity
  • Rotation 90°
  • Rotation 180°
  • Rotation 270°
  • Horizontal reflection
  • Vertical reflection
  • Diagonal reflection
  • Anti-diagonal reflection

More flexible methods may use general affine mappings or irregular partitions. Flexibility improves approximation but increases search and code size.

Contrast and brightness

The photometric mapping is:

r ≈ s · d + o(transformation photométrique)

where s changes contrast and o changes brightness. Contractive coding typically restricts |s| < 1.

If s = 1 and o = 0, intensities are preserved. If s = 0, the block produces a uniform region equal to o. Values must also be quantized and clamped.

Fitting a transformation by least squares

For domain values dᵢ and range values rᵢ, minimize:

E(s, o) = Σᵢ (rᵢ − s · dᵢ − o)²(erreur quadratique)

The optimum is:

s = [n Σ dᵢrᵢ − (Σdᵢ)(Σrᵢ)] / [n Σ dᵢ² − (Σdᵢ)²](contraste optimal)
o = (Σrᵢ − s Σdᵢ) / n(luminosité optimale)

Uniform domains require robust special handling. The chosen s is clamped to the contractive range before error evaluation.

The encoding algorithm

For every range block: enumerate candidate domains, downsample each domain, test symmetries, fit s and o, compute error, keep the best code.

Encoding searches, decoding executes. This asymmetry explains both the elegance of the decoder and the historical cost of the encoder.

Why encoding is expensive

The complexity is roughly:

O(N_R · N_D · K · P)(complexité de l'encodage)

Decoding applies known transformations. Encoding must discover them. Acceleration methods include block classification, variance and moment signatures, smaller domain pools, nearest-neighbor search, k-d trees, vector quantization, quadtrees, approximate search, GPU parallelism.

Quadtree and adaptive partitioning

A fixed partition wastes bits in simple regions and undersamples complex ones. A quadtree begins with large ranges. If the approximation error is too high, split the block into four.

Lower thresholds create more blocks, higher bitrate and better fidelity. Higher thresholds create smaller files with larger error. The partition itself must also be encoded.

Quadtree — rate–distortion trade-off
Error threshold0.080
LowHigh
Blocks : 0Estimated bits : 0Estimated PSNR : 0.0 dB

A lower threshold creates more blocks, higher bitrate and better fidelity. A higher threshold creates a smaller file with larger error. The partition itself must also be encoded.

The decoding algorithm

The decoder may start from black, white, noise or any arbitrary image. For every code: read its domain from X_n, downsample, apply symmetry, apply s and o, write the range into X_(n+1). Then X_(n+1) = W(X_n).

Two buffers should be used so one iteration does not depend on write order.

Iterative decoder — forgetting the initial image
Iteration : 0

Black

White

Noise

Checkerboard

Regardless of the starting image, iterations converge to the same attractor. The stable information is in the transformations, not in the initial pixels.

Why the initial image barely matters

For two initial images X₀ and Y₀:

d(Wⁿ(X₀), Wⁿ(Y₀)) ≤ sⁿ · d(X₀, Y₀)(oubli de l'état initial)

Their difference vanishes geometrically. After enough iterations, both produce essentially the same decoded image. The stable information is in the transformations, not in the starting pixels.

Convergence speed and contraction factor

To reach tolerance τ:

n ≥ ln(τ) / ln(s_max)(nombre d'itérations)

A contraction of 0.5 converges quickly. A contraction near 0.9 may require many more iterations. A noncontractive case should be demonstrated only as a failure mode outside the codec guarantee.

Measuring distortion: MSE, PSNR, SSIM and bitrate

Mean squared error:

MSE = (1/N) Σᵢ (Xᵢ − X̂ᵢ)²(MSE)

For 8-bit images:

PSNR = 10 · log₁₀(255² / MSE)(PSNR)

SSIM compares local luminance, contrast and structure. Bitrate is bpp = compressed bits / pixel count. Fair comparison requires rate–distortion curves under one protocol. No single quality number tells the whole perceptual story.

A good image does not prove a good codec. Bitrate, distortion, time, memory and protocol must be compared across multiple images.

Typical artifacts

  • Repeated textures
  • Softened edges
  • Synthetic-looking detail
  • Block boundaries
  • Flattened areas
  • Contrast errors
  • Substituted unique features
  • Painted or artificial appearance

Texture-rich and repetitive regions may work well. Fine text, faces, symbols and unique details are harder.

Fractal zoom: promise and limit

The transformation code can be evaluated on a finer grid. This creates scale-consistent interpolation. It does not recover missing truth. The new details are generated by the model. They may be plausible but not authentic.

Fractal zoom must never be treated as forensic or medical detail recovery. The details are generated, not recovered.

JPEG versus fractal compression

JPEG stores quantized transform coefficients. Fractal coding stores relations between image regions and decodes iteratively.

JPEG benefits from fast encoding, standardization and hardware support. Fractal coding offers a generative fixed-point interpretation and strong encoder–decoder asymmetry. Neither method is universally superior.

Why the method did not dominate

  • Expensive encoding
  • Variable image-dependent quality
  • Difficult rate control
  • Strong competition from standards
  • Proprietary and patent history
  • Exaggerated historical claims

The method remains scientifically valuable because it frames compression as inverse modeling.

Contributions to computer science

Fractal compression illustrates:

  • An image as a program
  • Fixed-point decoding
  • Nonlocal prediction
  • Cross-scale redundancy
  • Multiresolution representation
  • Nearest-neighbor optimization
  • The overlap between modeling and compression

Relation to modern generative representations

There is a conceptual resemblance between fractal codes and modern implicit or learned representations. Both store parameters and execute a decoder. The mechanisms differ. A classical PIFS uses explicit transformations and contractivity. A neural representation learns a function by optimization and need not be contractive or interpretable.

This is an analogy, not an automatic historical lineage.

Where is the spiral?

Fractal compression is mainly about convergence, not visible spirals. A rotating contraction:

x_(n+1) = a · R_θ · x_n + b(contraction avec rotation)

with |a| < 1. The distance to the fixed point decreases as |a|ⁿ while the angle increases by θ. The trajectory forms a discrete spiral.

Image decoding follows a trajectory in a very high-dimensional space. That trajectory is not necessarily a geometric spiral. The shared structure is contraction plus convergence.

Convergence, not obligatory spiral. The fixed point is central. A spiral trajectory only appears if the contraction also includes a rotational component.

Conclusion

Fractal compression replaces a storage problem with a generation problem. It asks which transformations have an image as an approximate fixed point.

The encoder searches for self-transformations. The decoder iterates them. Contractivity removes the initial state. The fixed point appears.

The method did not become the dominant general-purpose codec, but it remains one of the clearest demonstrations that data can be represented as a dynamical system rather than a list of values.

References

  1. [ ]
    Hutchinson, J. E.. (1981). Fractals and Self Similarity. Indiana University Mathematics Journal, 30(5), p. 713–747. DOI: 10.1512/iumj.1981.30.30055Hutchinson operator, attractors and self-similarity.
  2. [ ]
    Barnsley, M. F., & Demko, S.. (1985). Iterated Function Systems and the Global Construction of Fractals. Proceedings of the Royal Society of London A, 399(1817), p. 243–275. DOI: 10.1098/rspa.1985.0057Global construction of fractals and IFS.
  3. [ ]
    Barnsley, M. F., & Sloan, A. D.. (1988). A Better Way to Compress Images. BYTE, 13(1), p. 215–223Historical presentation of fractal compression.
  4. [ ]
    Jacquin, A. E.. (1992). Image Coding Based on a Fractal Theory of Iterated Contractive Image Transformations. IEEE Transactions on Image Processing, 1(1), p. 18–30. DOI: 10.1109/83.128028Practical fractal block coding method.
  5. [ ]
    Fisher, Y. (ed.). (1995). Fractal Image Compression: Theory and Application. Springer. DOI: 10.1007/978-1-4612-2472-3Theory, implementation and reference methods.
  6. [ ]
    Barnsley, M. F., & Hurd, L. P.. (1993). Fractal Image Compression. A K PetersHistorical and theoretical development.
  7. [ ]
    Saupe, D., & Hamzaoui, R.. (1994). A Review of the Fractal Image Compression Literature. ACM SIGGRAPH Computer Graphics, 28(4), p. 268–276. DOI: 10.1145/193234.193246Literature review and limitations.
  8. [ ]
    Saupe, D.. (1995). Accelerating Fractal Image Compression by Multi-Dimensional Nearest Neighbor Search. Proceedings of the Data Compression ConferenceReducing the cost of domain–range search.
  9. [ ]
    Saupe, D.. (1997). Variance-Based Quadtrees in Fractal Image Compression. Electronics Letters, 33(1). DOI: 10.1049/el:19970052Variance-guided quadtree partitioning.
  10. [ ]
    Banach, S.. (1922). Sur les opérations dans les ensembles abstraits et leur application aux équations intégrales. Fundamenta Mathematicae, 3, p. 133–181Origin of the contraction principle.
  11. [ ]
    Wang, Z., Bovik, A. C., Sheikh, H. R., & Simoncelli, E. P.. (2004). Image Quality Assessment: From Error Visibility to Structural Similarity. IEEE Transactions on Image Processing, 13(4), p. 600–612. DOI: 10.1109/TIP.2003.819861SSIM.
  12. [ ]
    Wallace, G. K.. (1992). The JPEG Still Picture Compression Standard. IEEE Transactions on Consumer Electronics, 38(1), p. xviii–xxxiv. DOI: 10.1109/30.125072JPEG operation and context.
  13. [ ]
    Lu, N.. (1997). Fractal Imaging. Academic PressTheory and applications of fractal imaging.
  14. [ ]
    Welstead, S. T.. (1999). Fractal and Wavelet Image Compression Techniques. SPIE PressComparison of fractals and wavelets.
  15. [ ]
    Barnsley, M. F.. (1993). Fractals Everywhere, 2nd edition. Academic PressIFS, collage theorem and fractal modeling.
  16. [ ]
    Kiselyov, O., & Fisher, P.. (2000). Image Compression with Iterated Function Systems, Finite Automata and Zerotrees: Grand Unification. arXiv. https://arxiv.org/abs/cs/0003065Conceptual relations between self-similarity, wavelets and zerotrees.