Documente Academic
Documente Profesional
Documente Cultură
INTRODUCTION
INTRODUCTION- A
Popular Compression standards based on modifying the transform of an image is the JPEG Compression .The objective are to introduce 2-D transforms in image compression to reduce the image redundancies and are designed to handle a wide range of image types and compression requirements. In transform coding a reversible,a linear transform like the DFT(Discrete fourier transform) or the discrete cosine transform(DCT) T(u,v) = cos[(2x+1)u/2M]cos[(2y+1)v/2N]
Where (u) =
u=1,2..M-1
[and similarly for (v)] is used to map an image into a set of transform coefficients, which are then quantized and coded. For most natural images, a significant number of the coefficients have small magnitudes and can be coarsely quantized(or discarded entirely)with little image distortion.
JPEG- One of the most popular and comprehensive continuous tone,still frame compression
standards is the JPEG(for JOINT PHOTOGRAPHIC EXPERTS GROUP) standard. In the JPEG baseline coding system, which is based on the discrete cosine transform and is most adequate for most compression applications, the input and output images are limited to 8 bits,while the quantized DCT coefficient values are restricted to 11 bits. As can be seen in the simplified block diagram of figure 1, the compression itself is performed in four sequential steps: 88 subimage extraction, DCT computation, quantization and variable-length code assignment. The first step in the JPEG compression process is to subdivide the input image into non overlapping pixel blocks of size 88. They are subsequently processed left to right, top to bottom. As each 88 block or subimage is processsed ,its 64 pixels are level shifted by ,where is the number of gray levels in the image, and its 2-D discrete subtracting cosine transform is computed. The resulting coefficients are then simultaneously normalized and quantized in accordance with T(u,v) for u,v =0,1.7 are the resulting normalized and quantized coefficients T(u,v) is the DCT of an 88 block of image f(x,y) and Z(u,v) is a transform normalization array. By scaling Z(u,v), a variety of compression rates and reconstructed image qualities can be achieved.
After each blocks DCT coefficients are quantized,the elements of T(u,v) are reordered in accordance with the zigzag pattern. Since the resulting one-dimensionally reordered array (of quantized coefficients) is qualitatively arranged according to increasing spatial frequency, the symbol encoder of figure1 is designed to take advantage of the long runs of zeros that normally result from the reordering. In particular the nonzero AC coefficients[ie, all T(u,v) except u=v=0] are coded using a variable-length code that defines the coefficients value and number of preceding zeros. The DC coefficient [ie., all T(0,0)] is difference coded relative to the DC coefficient of the previous subimage.Default AC and DC Huffman coding tables are provided by the standard, but the user is free to construct custom tables, as well as normalization arrays, which may in fact be adapted to the characterstics of the image being compressed.
Compressed image
i/p
image
compressed image
Symbol Decoder
Denormaliz er
Inverse DCT
image
In accordance with the block diagram of figure 1(a) function im2jpeg processes distinct 88 sections or blocks of input image one block at a time(rather than the entire image at once) .Two specialized block processing functions blkproc and im2col- are used to simplify the computations. Function blkproc, whose standard syntax is B = blkproc(A, [ M N], FUN, P1,P2,),
Streamlines or automates the entire process of dealing with images in blocks. It accepts an input image A, along with the size ([M N]) of the blocks to be processed, a function(FUN) to use in processing them, and some number of optional input parameters P1,P2,.. for block processing function FUN. Function blkproc then breaks A into MN blocks (including any zero padding that may be necessary), calls function FUN with each block and parameters P1,P2,.. and reassembles the results into output image B. The second specialized block processing function used by im2jpeg is function im2col. When blkproc is not appropriate for implementing a specific block-oriented operation,im2col can be often be used to rearrange the input so that the operation,im2col can often be used to rearrange the input so that the operation can be coded in a simpler and more efficient manner (e.g, by allowing the operation to be vectorized). The output of im2col is a matrix in which each column contains the elements of one distinct block of the input image. Its standardized format is B=im2col(A , [M,N], distinct) where parameters A,B and [M,N] are as were defined previously for function blkproc. String distinct tells im2col that the blocks to be processed are nonoverlapping; alternative string sliding signals the creation of one column in B for pixel in A(as though a block were slid across the image). In im2jpeg, function blkproc is used to facilitate both DCT computation and coefficient denormalization and quantization, while im2col is used to simplify the quantized coefficient reordering and zero run detection. Unlike the JPEG standard,im2jpeg detects only the final run of zeroes in each reordered coefficient block, replacing the entire run with the single eob (end of block) symbol. Finally we note that although MATLAB provides an efficient FFT-based function for large image DCTs,im2jpeg uses an alternate matrix formulation: T=HF where F is an 88 block of image f(x,y),H is an 88 DCT transformation matrix
generated by dctmtx(8) and T is the resulting DCT of F. Note that the T is used to denote the transpose operation .In the absence of quantization, the inverse DCT of T is F= TH . This formulation is particularly effective when transforming small square images(like JPEGs 88 DCTs) .Thus the statement y=blkproc(x,[8 8], P1*x*P2,h,h) computes the DCTs of image x in 88 blocks, using DCT transform matrix h transpose h as parameters P1 and P2 of the DCT matrix multiplication, P1*x*P2. Similar block processing and matrix based transformations are required to decompress an im2jpeg compressed image. Function jpeg2im, next performs the necessary sequence of inverse operations(with the obvious exception of quantization). It uses generic function A=col2im (B,[M,N],[MM,NN], distinct) to recreate a 2-D image from the columns of matrix z, where each 64-element column is an 88 block of the reconstructed image. Parameters A,B,[M
N], and distinct are as defined for function im2col,while array[MM NN] specifies the dimensions of output image A. The two JPEG coded and subsequently decoded approximations of the monochrome image results provides a compression ratio of about 18 to1 was obtained by direct application of the normalization array. The second which compresses the original image by a ratio of 42 to 1 was generated by multiplying(scaling) the normalization array by 4. The differences between original image and reconstructed images are clearly evident. Both images have been scaled to make the errors more visible. The corresponding rms errors are 2.5 and 4.4 gray levels. The impact of these errors on picture quality is more visible in the zoomed images. These images show a magnified section respectively and allow a better assessment of the subtle differences between the reconstructed images. These results differ from those that would be obtained in a real JPEG baseline coding environment because im2jpeg approximates the JPEG standards Huffman encoding process. Two principal differences are clearly noteworthy (1) In the standard all runs of coefficient zeroes are Huffman coded while im2jpeg encodes only the terminating run of each block and (2) the encoder and decoder of the standard based on a known (default) Huffman code ,while im2jpeg carries the information needed to reconstruct the encoding Huffman code words on an image by Image basis. Using the standard, the compression ratios noted above would be approximately doubled.
JPEG 2000
JPEG 2000 is based on the idea that the coefficients of a transform that decorrelates the pixels of an image can be coded more efficiently than the original pixels themselves. If the transform basis function- wavelets in the JPEG 2000 case- pack most of the important visual information into a small number of coefficients can be quantized coarsely or truncated to zero with little image distortion. The first step of the encoding process as in the original JPEG standard is to level shift the pixels of the image by subtracting ,where is the number of gray levels in the image. The onedimensional discrete wavelet transform of the rows and the columns of the image can then be computed. For error free compression , the transform used is biorthogonal with a 5-3 coefficient scaling and wavelet vector. In lossy applications coefficient scaling-wavelet vector is employed. In either case, the initial decomposition results in four subbands a low resolution approximation of the image and the images horizontal ,vertical , and diagonal frequency characterstics.
JPEG 2000 decoders simply invert the operations by decoding the arithmetically coded coefficients, a user-selected number of the originals number of the original images subbands are reconstructed. The denormalized coefficients are then inverse transformed and level shifted to yield an approximation of the original image. The principal difference between the wavelet based JPEG 2000 system and the DCT based JPEG system is the omission of the latters subimage processing stages. Because wavelet transforms are both computationally efficient and inherently local(ie their basis function are limited in duration),subdivision of the image into blocks is unnecessary. The removal of the subdivision step eliminates the blocking artifact that characterizes DCT-based approximations at high compression ratios.