Presentation is loading. Please wait.

# A Study on Fractal Image Compression

## Presentation on theme: "A Study on Fractal Image Compression"— Presentation transcript:

A Study on Fractal Image Compression
-By Darshan Alagud Under THE guidance of K.R.Rao. Fall 09, Electrical Engineering Department, University of Texas at Arlington

Proposal Fractal-Based Compression using Partitioned Iterative Function Systems (PIFS) approach and fixed-size partitioning will be studied and compression and decompression of sample images using these methods will be demonstrated. Performance parameters such as MSE[16], PSNR[17], SSIM[12] will be calculated for sample images and for different number of iterations. Also compression ratio, compression time and decompression time will be measured for these images. Using these parameters FIC is then compared with a standard frequency domain based compression standard, JPEG[18].

Introduction What is a fractal?
A fractal is a geometrical shape that is self-similar. Example: The Sierpinski triangle[11]:

Introduction Most physical processes in nature yield fractal structures. FIC exploit self-similarity in images of natural scenes like clouds, hills, trees, bushes and textures for compression. FIC technique represents images in terms of fractal codes or iterated function systems (IFS) that can be used to generate the original image.

Mathematical representation
A grayscale image S maybe thought of as a subset of R3 (3D vectors of real numbers). Each point represented in R3 as (x, y, I(x, y)). An IFS is a set of contraction mappings: w1,w2…,wn that when iteratively applied to any initial image S0 results in a finite fixed set image S. The contractive mapping theorem guarantees the existence of such a fixed set for contractive mappings. Contractive mappings are transforms on points in metric spaces such that the distance between the transformed points is less than that between original points.

Mathematical representation
The contractive mappings in an IFS used in FIC are affine transformations of the type [3]: wi = contractive mapping applied on domain block Di. (x, y) are the pixel co-ordinates and z is the gray-level of pixel. i varies from 1 to number of domain blocks used in the partition. The ai1,ai2,ai3,ai4,di1,di2 specify the geometrical part of the transformation. In the algorithm used in the project, ai1 = ai2 = ai3 = ai4 = 0.5. di1, di2 are determined by the position of the top left corner of the domain block. ci represents contrast factor and bi the brightness offset.

Construction of an image using IFS of 2 affine functions.
In the diagram above, the functions are represented by their effect on a square (each function transforms the outlined square into the shaded square). Both functions are applied to the input image and a union of the resulting images is formed in each iteration. First three iterations are shown, and then the final image (fixed point) after several iterations is shown. This image is taken from Creative Commons, author: Scott Draves [11].

Encoding The encoding involves choosing the IFS (coefficients of affine transforms) such that its fixed set approximates the input image S. In real images, textures vary from one part to other (Eg: skin, hair, clouds). Hence instead of mapping whole image to parts of images, larger parts are mapped to smaller parts. In this project, the algorithm used is known as PIFS, which finds contractive mappings from large parts of input image to smaller parts of the image.

Illustration of range and domain blocks matching in PIFS. ([7])
In the image below, the green outlined parts match due to ordinary similarity and the red outlined parts due to self-similarity.

Encoding Domain image is generated by taking the average of 4 neighboring pixels in range image (down-sampling and low-pass filtering). Partition range and domain images into blocks of size 16X16. (Fixed size partitioning approach). The most closest blocks are chosen( in the LMSE sense) and the corresponding coefficients of transforms that would transform block Di in domain image into block Rj in range image is stored in the file. Number of range blocks = 4 * number of domain blocks used in this algorithm. Indices i and j are used to number the domain and range blocks with least value as 1. -Illustrate encoding with example images.

Generation of domain and range images using Fixed-Size Partitioning
The image above shows 4 neighboring pixels in range image (outlined in red) being averaged to give 1 pixel (blue) of domain image. Domain blocks before and after down-sampling are outlined in green and Range blocks are outlined in black.

Encoding: Finding ci and bi for each range and domain block pair
The coefficients of the IFS will be of the form: aij = dij = (depends upon the position of range block to which the domain block is mapped). The coefficients ci and bi (contrast and brightness settings) are calculated for each (Ri, Dj) by minimizing the sum of squared errors given by[3]: E(ci,bi) =  Nk=1 (ci*dk + bi – rk) 2 Which gives: ci = ( N Nk=1(rk dk) - ( Nk=1rk) ( Nk=1dk) ) / ( N Nk=1dk2 - ( Nk=1dk)2 ) bi = ( Nk=1rk - ci Nk=1dk) / N Where dk, rk, are the pixel values in the domain and range blocks being compared. N = number of pixels in range/domain block (= 256 in this project). The above coefficients are quantized and stored in a compressed file. -Illustrate encoding with example images.

Encoding: Range block splitting
If the mean square error per pixel between the range and domain block exceeds a minimum mean square error per pixel specified by a parameter called q (quality), the range block is further split into 4 more blocks and the best affine map is again computed for each block. This process is repeated recursively until the quality q is met or the range block size reduces to 4X4 pixels. -Illustrate encoding with example images.

Decoding Starting with any random image, apply the affine transforms with coefficients as encoded in the compressed file, repeatedly for several iterations (around 8-9 produces good quality). An image with maximum grey level value of 255 for all pixels is chosen in this project as the initial image. The size of the initial image is equal to that of the original image unless the image is to be scaled, in which case a larger image is chosen. The algorithm is guaranteed to converge to an image that is similar to the original image. Convergence guaranteed by Collage Theorem. Illustrate Image decoding using example images.

Sample input image 1 used in the project
balloons.pgm [7] (at 50% magnification or size 320 X 240 pixels) : Convergence guaranteed by Collage Theorem. Illustrate Image decoding using example images.

Sample input image 2 used in the project
columns.pgm [7] (at 50% magnification or size 320 X 240 pixels) :

Decoded image after n iterations
Convergence guaranteed by Collage Theorem. Illustrate Image decoding using example images.

Decoded image after n iterations
Convergence guaranteed by Collage Theorem. Illustrate Image decoding using example images.

Decoded image after n iterations
Convergence guaranteed by Collage Theorem. Illustrate Image decoding using example images.

Decoded image after n iterations
Convergence guaranteed by Collage Theorem. Illustrate Image decoding using example images.

MSE Variation versus n (for balloons.pgm)

PSNR versus n (for balloons.pgm)

SSIM versus n (for balloons.pgm)

Compression ratio versus q for PIFS
Try and find Compression and Decompression times by adding statements that read system time in .C files. And also find JPEG corresponding values.

MSE versus q (n=12) for PIFS
Try and find Compression and Decompression times by adding statements that read system time in .C files. And also find JPEG corresponding values.

PSNR versus q (n=12) for PIFS
Try and find Compression and Decompression times by adding statements that read system time in .C files. And also find JPEG corresponding values.

SSIM versus q (n=12) for PIFS
Try and find Compression and Decompression times by adding statements that read system time in .C files. And also find JPEG corresponding values.

Compression ratio versus QF for JPEG
Try and find Compression and Decompression times by adding statements that read system time in .C files. And also find JPEG corresponding values.

MSE versus QF for JPEG Try and find Compression and Decompression times by adding statements that read system time in .C files. And also find JPEG corresponding values.

PSNR versus QF for JPEG Try and find Compression and Decompression times by adding statements that read system time in .C files. And also find JPEG corresponding values.

SSIM versus QF for JPEG Try and find Compression and Decompression times by adding statements that read system time in .C files. And also find JPEG corresponding values.

Compression time versus q for PIFS
Try and find Compression and Decompression times by adding statements that read system time in .C files. And also find JPEG corresponding values.

Decompression time versus q (n=12) for PIFS
Try and find Compression and Decompression times by adding statements that read system time in .C files. And also find JPEG corresponding values.

Compression time versus QF for JPEG
Try and find Compression and Decompression times by adding statements that read system time in .C files. And also find JPEG corresponding values.

Decompression time versus QF for JPEG
Try and find Compression and Decompression times by adding statements that read system time in .C files. And also find JPEG corresponding values.

Comparison of JPEG (left) and PIFS (right) images at compression ratio = 10 : 1
Try and find Compression and Decompression times by adding statements that read system time in .C files. And also find JPEG corresponding values. Compression standard MSE PSNR (in dB) SSIM QF q JPEG 0.6524 0.9887 86 - PIFS 5.7599 0.9653 1.9

Comparison of JPEG (left) and PIFS (right) images at compression ratio = 20 : 1
Try and find Compression and Decompression times by adding statements that read system time in .C files. And also find JPEG corresponding values. Compression standard MSE PSNR (in dB) SSIM QF q JPEG 1.9090 0.9728 53 - PIFS 6.8777 0.9530 4.5

Comparison of JPEG (left) and PIFS (right) images at compression ratio = 30 : 1
Try and find Compression and Decompression times by adding statements that read system time in .C files. And also find JPEG corresponding values. Compression standard MSE PSNR (in dB) SSIM QF q JPEG 3.9671 0.9499 26 - PIFS 9.1227 0.9354 6.8

Comparison of JPEG (left) and PIFS (right) images at compression ratio = 40 : 1
Try and find Compression and Decompression times by adding statements that read system time in .C files. And also find JPEG corresponding values. Compression standard MSE PSNR (in dB) SSIM QF q JPEG 7.4093 0.9199 15 - PIFS 0.9213 8.8

Comparison of JPEG (left) and PIFS (right) images at compression ratio = 60 : 1
Try and find Compression and Decompression times by adding statements that read system time in .C files. And also find JPEG corresponding values. Compression standard MSE PSNR (in dB) SSIM QF q JPEG 0.8239 5 - PIFS 0.8977 12.8

Comparison of JPEG (left) and PIFS (right) images at compression ratio = 68 : 1
Try and find Compression and Decompression times by adding statements that read system time in .C files. And also find JPEG corresponding values. Compression standard MSE PSNR (in dB) SSIM QF q JPEG 0.7883 3 - PIFS 0.8904 14.3

Illustration of Resolution Independent decoding (RID) (See [9] for original source).
Uncompressed original image[9]: Fractal decoded image (bottom left) and ordinary zoom(bottom right) (‘Nearest neighbor’ interpolation: replicating the nearest pixels of the original image) using Imagemagik at 2X[9]. (Note: pX indicates p times the original image height and p times the original image width.) Find out what ‘Nearest Neighbour’ approach and mention it in the slides.

Fractal decoded image (bottom left) and ordinary zoomed image (bottom right) using Imagemagik at 4X.[9]

Fractal decoded image (bottom left) and ordinary zoomed image (bottom right) using Imagemagik at 8X [9]:

Conclusions The PIFS algorithm can achieve high compression ratios that the frequency-domain-based programs such as JPEG cannot achieve without huge loss in image quality. This might be suitable for some applications where high-fidelity is not an important factor. Fractal encoding is highly computationally intensive, but decoding is very fast and hence maybe better suited for storage in image databases (websites) and storage media such as CD-ROMs. Resolution independence means higher magnified images are generated with more details visible as compared to ordinary zoom (‘nearest neighbor’ interpolation) which blurs out gradually. Hybrid methods of image compression that exploit redundancy due to similarity between parts of the image and also psycho-visual redundancy might be possible. -Mention application examples: such as FIF in Microsoft Encarta. -Example image for illustrating resolution independence.

Applications OnOnesoftware, developed under license from Iterated Systems Inc., which is a photoshop plugin capable of saving files in compressed FIF (Fractal Image Format) [10]. ClearVideo — also known as RealVideo (Fractal) — and SoftVideo were early fractal video compression products [10]. Also used in a opensource codec called FIASCO (Fractal Image and sequencing coded)[19]. Fractal Image compression is especially useful when images are compressed only once but decoded several times (Ex: storage media like CD ROMs, or world-wide web applications). To date the most successful use of fractal image compression is by Microsoft in its Encarta multimedia encyclopedia which had images in FIF format [10]. -Please provide links (websites) for above applications. -Also provide links for Barnsley’s department websites and Find out what Iterated Function Systems Inc. is working on these days.

References [1] Y.Fisher, Fractal Image Compression, SIGGRAPH’92, course notes. [2] K.R.Rao and P.C.Yip, The Transform and Data Compression Handbook, Boca Raton, FL, Academic Press, 2000. [3] M.Nelson and J.L.Gailly, The Data Compression Book, Second edition, New York, M&T books, 1996. [4] M.F.Barnsley and A.D.Sloan, A better way to compress images, Byte, pp , 1988. [5] N.Lu, Fractal Imaging, Chestnut Hill, MA, USA, Academic Press, 1997. [6] Texas Instruments, An introduction to fractal image compression, Literature Number: BPRA065, TI Europe, October From the following link: [7] Sample PGM images (balloons.pgm and columns.pgm) taken from from Iowa state university mathematics department site:

References [8] Image Sierpinski_Triangle.svg (released under public domain) taken from Wikipedia from the following link: [9] Baboon Images taken from McCormick Northwestern Electrical and Computer Science engineering website: [10] [11] [12] SSIM index.m downloaded from site:http://www.ece.uwaterloo.ca/~z70wang/research/ssim/ (Authors: Zhou Wang, Alan C. Bovik, Hamid R. Sheikh and Eero P. Simoncelli) [13] Z. Wang, A. C. Bovik, H. R. Sheikh and E. P. Simoncelli, Image quality assessment: From error visibility to structural similarity, IEEE Trans. on Image Processing, vol. 13, no. 4, pp , Apr

References [14] (website of interwoven, formerly Iterated Systems Inc.) [15] M.Barnsley’s university webpage, Mathematical Sciences Institute (MSI): [16] Mean Square error definition: [17] PSNR definition: [18] JPEG software (version 8b) taken from the following site (Independent JPEG Group): [19] FIASCO : An open-source Fractal Image and Sequence Codec: [20] C. Christopoulos, A. Skodras and T. Ebrahimi, “The JPEG2000 still image coding system: and overview , IEEE Trans. On Consumer Electronics, vol.46, pp , Nov [21] ] G. K. Wallace, “The JPEG still picture compression standard”, Communication of the ACM, vol. 34, pp , April 1991.

Download ppt "A Study on Fractal Image Compression"

Similar presentations

Ads by Google