Image Compression. Chapter 8 江铭炎教授 / 博导. Digital Image Processing Using MATLAB 网址 : 信息学院 => 精品课程 => 数字图像处理. Chapter 8 Image Compression

Similar documents
Topic 5 Image Compression

Image Coding and Compression

CHAPTER 6. 6 Huffman Coding Based Image Compression Using Complex Wavelet Transform. 6.3 Wavelet Transform based compression technique 106

Digital Image Representation Image Compression

IMAGE COMPRESSION- I. Week VIII Feb /25/2003 Image Compression-I 1

IMAGE PROCESSING (RRY025) LECTURE 13 IMAGE COMPRESSION - I

Data and information. Image Codning and Compression. Image compression and decompression. Definitions. Images can contain three types of redundancy

Image Compression Compression Fundamentals

1.Define image compression. Explain about the redundancies in a digital image.

Image compression. Stefano Ferrari. Università degli Studi di Milano Methods for Image Processing. academic year

CS 335 Graphics and Multimedia. Image Compression

So, what is data compression, and why do we need it?

IMAGE COMPRESSION. Chapter - 5 : (Basic)

Digital Image Processing

DigiPoints Volume 1. Student Workbook. Module 8 Digital Compression

IMAGE COMPRESSION. Image Compression. Why? Reducing transportation times Reducing file size. A two way event - compression and decompression

Wireless Communication

CMPT 365 Multimedia Systems. Media Compression - Image

Image Compression Algorithm and JPEG Standard

Fundamentals of Video Compression. Video Compression

IMAGE COMPRESSION TECHNIQUES

15 Data Compression 2014/9/21. Objectives After studying this chapter, the student should be able to: 15-1 LOSSLESS COMPRESSION

Image coding and compression

A Image Comparative Study using DCT, Fast Fourier, Wavelet Transforms and Huffman Algorithm

06/12/2017. Image compression. Image compression. Image compression. Image compression. Coding redundancy: image 1 has four gray levels

CoE4TN4 Image Processing. Chapter 8 Image Compression

IMAGE COMPRESSION. October 7, ICSY Lab, University of Kaiserslautern, Germany

Features. Sequential encoding. Progressive encoding. Hierarchical encoding. Lossless encoding using a different strategy

Introduction ti to JPEG

IMAGE COMPRESSION USING HYBRID QUANTIZATION METHOD IN JPEG

FRACTAL IMAGE COMPRESSION OF GRAYSCALE AND RGB IMAGES USING DCT WITH QUADTREE DECOMPOSITION AND HUFFMAN CODING. Moheb R. Girgis and Mohammed M.

Robert Matthew Buckley. Nova Southeastern University. Dr. Laszlo. MCIS625 On Line. Module 2 Graphics File Format Essay

PSD2B Digital Image Processing. Unit I -V

Index. 1. Motivation 2. Background 3. JPEG Compression The Discrete Cosine Transformation Quantization Coding 4. MPEG 5.

Lecture 5: Compression I. This Week s Schedule

Compression Part 2 Lossy Image Compression (JPEG) Norm Zeck

AN ANALYTICAL STUDY OF LOSSY COMPRESSION TECHINIQUES ON CONTINUOUS TONE GRAPHICAL IMAGES

7.5 Dictionary-based Coding

JPEG: An Image Compression System. Nimrod Peleg update: Nov. 2003

Multimedia Communications. Transform Coding

Lecture 8 JPEG Compression (Part 3)

ROI Based Image Compression in Baseline JPEG

JPEG: An Image Compression System

Sparse Transform Matrix at Low Complexity for Color Image Compression

MRT based Fixed Block size Transform Coding

Digital Image Processing

Multimedia Systems Image III (Image Compression, JPEG) Mahdi Amiri April 2011 Sharif University of Technology

DIGITAL IMAGE PROCESSING WRITTEN REPORT ADAPTIVE IMAGE COMPRESSION TECHNIQUES FOR WIRELESS MULTIMEDIA APPLICATIONS

Lossless Compression Algorithms

Compression II: Images (JPEG)

Compression of Stereo Images using a Huffman-Zip Scheme

Comparison of Image Compression Techniques: Huffman and DCT

Digital Image Processing

compression and coding ii

Image Compression Techniques

Image Compression - An Overview Jagroop Singh 1

A new predictive image compression scheme using histogram analysis and pattern matching

A HYBRID DPCM-DCT AND RLE CODING FOR SATELLITE IMAGE COMPRESSION

Welcome Back to Fundamentals of Multimedia (MR412) Fall, 2012 Lecture 10 (Chapter 7) ZHU Yongxin, Winson

2-D SIGNAL PROCESSING FOR IMAGE COMPRESSION S. Venkatesan, Vibhuti Narain Rai

13.6 FLEXIBILITY AND ADAPTABILITY OF NOAA S LOW RATE INFORMATION TRANSMISSION SYSTEM

Optimization of Bit Rate in Medical Image Compression

IMAGE COMPRESSION TECHNIQUES

Review and Implementation of DWT based Scalable Video Coding with Scalable Motion Coding.

Image Coding and Data Compression

Affable Compression through Lossless Column-Oriented Huffman Coding Technique

Digital Image Processing (EI424)

JPEG Compression Using MATLAB

Video Compression An Introduction

JPEG 2000 compression

Lecture 8 JPEG Compression (Part 3)

Cosine Transform Priors for Enhanced Decoding of Compressed Images.

3. (a) Prove any four properties of 2D Fourier Transform. (b) Determine the kernel coefficients of 2D Hadamard transforms for N=8.

Fundamentals of Multimedia. Lecture 5 Lossless Data Compression Variable Length Coding

ISSN (ONLINE): , VOLUME-3, ISSUE-1,

Statistical Image Compression using Fast Fourier Coefficients

Professor Laurence S. Dooley. School of Computing and Communications Milton Keynes, UK

Ian Snyder. December 14, 2009

Multimedia Signals and Systems Still Image Compression - JPEG

MULTIMEDIA COMMUNICATION

Digital Video Processing

Stereo Image Compression

Source Coding Techniques

APPM 2360 Project 2 Due Nov. 3 at 5:00 PM in D2L

Lossless Image Compression having Compression Ratio Higher than JPEG

An Improved Complex Spatially Scalable ACC DCT Based Video Compression Method

AN APPROACH FOR COLOR IMAGE COMPRESSION OF BMP AND TIFF IMAGES USING DCT AND DWT

A Novel Image Compression Technique using Simple Arithmetic Addition

EE67I Multimedia Communication Systems Lecture 4

Biomedical signal and image processing (Course ) Lect. 5. Principles of signal and image coding. Classification of coding methods.

INF5063: Programming heterogeneous multi-core processors. September 17, 2010

A COMPRESSION TECHNIQUES IN DIGITAL IMAGE PROCESSING - REVIEW

DCT Based, Lossy Still Image Compression

Video Compression MPEG-4. Market s requirements for Video compression standard

Interframe coding A video scene captured as a sequence of frames can be efficiently coded by estimating and compensating for motion between frames pri

REVIEW ON IMAGE COMPRESSION TECHNIQUES AND ADVANTAGES OF IMAGE COMPRESSION

The DCT domain and JPEG

Optical Storage Technology. MPEG Data Compression

Chapter 1. Digital Data Representation and Communication. Part 2

ELE 201, Spring 2014 Laboratory No. 4 Compression, Error Correction, and Watermarking

Transcription:

Digital Image Processing Using MATLAB Chapter 8 Image Compression 江铭炎教授 / 博导 网址 : 信息学院 => 精品课程 => 数字图像处理 1/ 53

Preview Image compression addresses the problem of reducing the amount of data required to represent a digital image. Compression is achieved by the removal of one or more of three basic data redundancies: (1). coding redundancy; (2). interpixel redundancy; (3). psychovisual redundancy. 2/ 53

Preview In this chapter 1). Examine each of these redundancies, 2). Describe a few of the many techniques that can be used to exploit them 3). Examine two important compression standards JPEG and JPEG 2000. 3/ 53

8.1 Background Image compression system are composed of two distinct structural blocks: an encoder and a decoder. 4/ 53

5/ 53

compression ratio: CR=n1/n2 where n1 and n2 denote the number of information carrying units in the original and encoded images respectively. 6/ 53

In the first stage of the encoding process,the mapper transforms the input image into a format designed to reduce interpixel redundancies. The second stage,or quantizer block,reduces the accuracy of the mapper s output in accordance with a predefined fidelity criterion-attempting to eliminate only psychovisually redundant data.it is irreversible. The third stage of the process,a symbol coder creates a code for the quantizer output and maps the output in accordance with the code. 7/ 53

function cr = imratio (f1, f2) imratio compute the ratio of the bytes in two images/variables. For example, the compression of the JPEG encoded image in fig.2.4(c) of chapter 2 can be computed via r = imratio(imread( bubbles25.jpg ), bubbles25.jpg ) r = 35.1612 8/ 53

Information preserving or lossless; lossy compression Define e(x,y) between f(x,y) and f^(x,y): e(x,y) = f^(x,y)- f(x,y) e rms = 1 MN M 1 N 1 [ x 0 y 0 [ fˆ( x, y) f ( x, y)] 2 ] 1 2 The following M-function computes e rms and displays both e(x,y) and its histogram. function rmse = compare(f1, f2, scale) %compare computes and displays the error between two matrices. 9/ 53

8.2 coding redundancy p r (r k ) = n k /n k = 1,2,, L p r (r k ) represent the gray level of an L-graylevel image. n k is the number of times that the kth gray level appears in the image n is the total number of pixels in the image. 10 / 53

11 / 53 the average number of bits required to represent each pixel is L avg = L avg = = 3(0.1875)+1(0.5)+3(0.125)+2(0.1875) = 1.8125 ) ( ) ( 2 4 1 k r k r p k l ) ( ) ( 2 1 k r l k r p k l

function h = entropy(x,n) %entropy computes a first-order estimate of the entropy of a matrix. 12 / 53

Example 8.1 computing first-order entropy estimates. Consider a simple 4*4 image whose histogram models the symbol probabilities in Table 8.1. >>f = [119 123 168 119; 123 119 168 168]; >>f = [f ; 119 119 107 119; 107 107 119 119] p = hist(f(:),8); p = p / sum(p) p = 0.1875 0.5 0.125 0 0 0 0 0.1875 h = entropy(f) h = 1.7806 13 / 53

8.2.1 huffman codes huffman codes contain the smallest possible number of code symbols per source symbol subject to the constraint that the source symbols are coded one at a time. (the first step,.the second step ) 14 / 53

15 / 53

The source reduction and code assignment procedures just described are implemented by the following M-function, which we call huffman: function CODE = huffman(p) huffman builds a variable-length Huffman code for a symbol source. 16 / 53

The following command line sequence uses huffman to generate the code in Fig.8.2: >>p = [0.1875 0.5 0.125 0.1875] >>c = huffman(p) c = 011 1 010 00 17 / 53

global X Y Z This statement makes variables X, Y, and Z available to the function in which they are declared. In huffman, CODE is initialized using the cell function, whose syntax is x = cell(m, n) It creates an m*n array of empty matrices that can be referenced by cell or by content. In each iteration of the loop, vector p is sorted in ascending order of probability. This is done by the sort function, whose syntax is [y, i] = sort (x) 18 / 53

Figure 8.3 shows the final output of the process for the symbol probabilities in table 8.1 and fig.8.2(a). Figure 8.3(b) and(c) were generated by inserting between the last two statements of the huffman main routine. 19 / 53

(1) Each two-way branch in the tree corresponds to a two-element cell array in s; (2) Each two-element cell array contains the indices of the symbols that were merged in the corresponding source reduction. 20 / 53

Table 8.2 details the sequence of makecode calls that results for the source reduction cell array in fig.8.3. 21 / 53

8.2.2 Huffman Encoding Example 8.2: variable-length code mappings in MATLAB. Consider the simple 16-bytes 4*4 image: >>f2 = unit8([2 3 4 2 ; 3 2 4 4 ; 2 2 1 2 ; 1 1 2 2]) f2 = 2 3 4 2 3 2 4 4 2 2 1 2 1 1 2 2 >>whos( f2 ) name size bytes class f2 4*4 16 unit8 array Grand total is 16 elements using 16 bytes >>c = huffman(hist(double(f2(:)), 4) c = 011 1 010 00 22 / 53

function y = mat2huff(x) % mat2huff huffman encodes a matrix. Example 8.3: encoding with mat2huff to illustrate further the compression performance of Huffman encoding, consider the 512*512 8-bit monochrome image of fig 8.4(a). The compression of the image using mat2huff is carried out by the following command sequence: >>f = imread( Tracy.tif ); >>c = mat2huff(f); >>cr1 = imratio(f, c); cr1 = 1.2191 23 / 53

We write it to disk using the save function: >>save SqueezeTracy c; >>cr2 = imratio( Tracy.tif, SqueezeTracy.mat ) cr2 = 1.2365 24 / 53

8.2.3 Huffman decoding function x = huff2mat(y), can be broken into five basic steps: 1. Extract dimension m and n, and minimum value xmin (of eventual output x) from input structure y. 2. Re-create the Huffman code that was used to encode x by passing its histogram to function huffman. The generated code is called map in the listing. 3. Build a data structure (transition and output table link) to streamline the decoding of the encoded data in y. code through a series of computationally efficient binary searches. 4. Pass the data structure and the encoded data to C function unravel. This function minimizes the time required to perform the binary searches, creating decoded output vector x of class double. 5. Add xmin to each element of x and reshape it to match the dimensions of the original x. 25 / 53

function x = huff2mat(y) huffman decodes a Huffman encoded matrix. 26 / 53

Table 8.3 shows the link table that is generated for the Huffman code in Example 8.2. If each link index is viewed as a decoding state,i, each binary coding decision and/or Huffman decoded output is determined by link(i): 1. If link(i) < 0, a Huffman code word has been decoded. The decoded output is link, where denotes the absolute value. 2. If link(i) > 0 and the next encoded bit to be processed is a 0, the next decoding state is index link(i). That is, we let i = link(i). 3. If link(i) > 0 and the next encoded bit to be processed is a 1, the next decoding state is index link(i)+1. That is, i = link(i)+1. 27 / 53

28 / 53

A MATLAB external function produced from C or Fortran source code. It has a platform dependent extension. For example, we type >>mex unravel.c A MEX-file named unravel.dll with extension.dll will be created. Like all C MEX-files, C MEX-file unraval. C consists of two distinct parts: a computational routine and a gateway routine. The computational routine, also named unravel, contains the C code that implements the link-based decoding process of fig.8.5. The gateway routine, which must always be named mexfunction, interfaces C computational routine unravel to M-file calling function, huff2mat. 29 / 53

30 / 53

Example 8.4 decoding with huff2mat The Huffman encoded image of example 8.3 can be decoded with the following sequence of commands: >>load SqueezeTracy; >>g = huff2mat(c); >>f = imread( Tracy.tif ); >>rmse = compare(f, g) rmse = 0 Function load file reads MATLAB variables from disk file file.mat and loads them into the workspace. The variable names are maintained through a save/load sequence. 31 / 53

8.3 Interpixel Redundancy As fig 8.7 (b) and (d) show, they have virtually identical histograms. 32 / 53

>>f1 = imread( Random Matches.tif ); >>c1 = mat2huff(f1); >>entropy(f1) ans = 7.4253 >>imratio(f1, c1) ans = 1.0704 >>f2 = imread( Aligned Matches.tif ); >>c2 = mat2huff(f2); >>entropy(f2) ans = 7.3505 >>imratio(f2, c2) ans = 1.0821 33 / 53

A simple mapping procedure is illustrated in fig.8.8. prediction error: e n =f n -f^n 34 / 53

function y = mat2lpc(x, f) mat2lpc compresses a matrix using 1-D lossless predictive coding. function x = lpc2mat(y, f) lpc2mat decompresses a 1-D lossless predictive encoded matrix. 35 / 53

Example 8.5 lossless predictive coding Consider encoding the image of fig.8,7(c) using the simple first-order linear predictor f^(x,y) = round[af(x, y - 1)] Fig.8.9(a) shows the prediction error image that result with a = 1 >>f = imread( Aligned Matched.tif ); >>e = mat2lpc(f); >>imshow(mat2gray(e)); >>entropy(e) ans = 5.9727 >>c = mat2huff(e); >>cr = imratio(f, c) cr = 1.3311 36 / 53

>>[h, x] = hist(e(:) * 512, 512); >>figure; bar(x, h, k ); >>g = lpc2mat(huff2mat(c)); >>compare(f, g) ans = 0 37 / 53

8.4 Psychovisual Redundancy Psychovisual Redundancy is associated with real or quantifiable visual information. Example 8.6: compression by quantization. Consider the image in fig 8.10. Figure 8.10(a) shows a monochrome image with 256 gray level. Figure 8.10(b) is the same image after uniform quantization to four bits or 16 possible levels. The resulting compression ratio is 2:1. Figure 8.10(c) illustrates the significant improvements possible with quantization that takes advantage of the peculiarities of the human visual system. The method used to produce fig.8.10(c) is called improved grayscale quantization. 38 / 53

quantize function y = quantize(x, b, type) %quantizes the elements of a UINT8 matrix. 39 / 53

Example 8.7: Combining IGS quantization with lossless predictive and Huffman coding. The following sequence of command combines IGS quantization, lossless predictive coding, and Huffman coding to compress the image of fig.8.10(a) to less than a quarter of its original size: >>f = imread( Brushes.tif ); >>q = quantize(f, 4, igs ); >>qs = double(q) / 16; >>e = mat2lpc(qs); >>c = mat2huff(e); >>imratio(f, c) ans = 4.1420 >>ne = huff2mat(c); >>nqs = lpc2mat(ne); >>nq = 16*nqs; >>compare(q, nq); ans = 0 >>rmse = compare(f, nq) rmse = 6.8382 40 / 53

8.5 JPEG Compression 8.5.1 JPEG JPEG(for Joint Photographic Expert Group) In the JPEG baseline coding system, which is based on the discrete cosine transform and limited to 8 bits, while the quantized DCT coefficient values are restricted to 11 bits. 41 / 53

42 / 53

T^(u, v) = [T(u, v)/z(u, v)] T^(u, v) for u, v = 0, 1,., 7 are the resulting normalized and quantized coefficients,t(u, v) is the DCT of an 8*8 block of image f(x, y), and Z(u, v) is a transform normalization array like that of fig.8.12(a). 43 / 53

function y = im2jpeg(x, quality) im2jpeg compressed an image using a JPEG approximation. 44 / 53

Example 8.8: JPEG compression Fig.8.13 (a) and (b) show two JPEG coded and subsequently decoded approximations of the monochrome image in Fig.8.4(a). >>f = imread( Tracy.tif ); >>c1 = im2jpeg(f); >>f1 = jpeg2im(c1); >>imratio(f, c1) ans = 18.2450 >>compare(f, f1, 3) ans = 2.4675 45 / 53

>>c4 = im2jpeg(f, 4); >>f4 = jpeg2im(c4); >>imratio(f, c4) Ans = 41.7862 >>compare(f, f4, 3) Ans = 4.4184 46 / 53

8.5.2 JPEG 2000 Figure 8.14 show a simplified JPEG 2000 coding system (absent several optional operation). 47 / 53

48 / 53

function y = im2jpeg2k(x, n, q) im2jpeg2k compresses an image using a JPEG 2000 approximation. 49 / 53

Example 8.9:JPEG 2000 compression >>f = imread( tracy.tif ); >>c1 = im2jpeg2k(f, 5, [8 8.5]); >>f1 = jpeg2k2im(c1); >>rms1 = compare(f, f1) rms1 = 3.6931 >>cr1 = imratio(f, c1) cr1 = 42.1589 >>c2 = im2jpeg2k(f, 5, [8 7]); >>f2 = jpeg2k2im(c2); >>rms2 = compare(f, f2) rms2 = 5.9172 >>cr2 = imratio(f, c1) cr2 = 87.7323 50 / 53

>>c3 = im2jpeg2k(f, 1, [1 1 1 1]); >>f3 = jpeg2k2im(c3); >>rms3 = compare(f, f3) rms3 = 1.1234 >>cr3 = imratio(f, c3) cr3 = 1.6350 51 / 53

52 / 53

summary The material in this chapter introduces the fundamentals of digital image compression through the removal of coding, interpixel, and psychovisual redundancy. Matlab procedures are developed. An overview of the popular JPEG and JPEG2000 image compression standards is given. 53 / 53