CS 1501: Algorithm Implementation LZW Data Compression.

Slides:



Advertisements
Similar presentations
Michael Alves, Patrick Dugan, Robert Daniels, Carlos Vicuna
Advertisements

CSCI 3280 Tutorial 6. Outline  Theory part of LZW  Tree representation of LZW  Table representation of LZW.
Huffman Encoding Dr. Bernard Chen Ph.D. University of Central Arkansas.
Greedy Algorithms (Huffman Coding)
Lempel-Ziv-Welch (LZW) Compression Algorithm
Lempel-Ziv Compression Techniques Classification of Lossless Compression techniques Introduction to Lempel-Ziv Encoding: LZ77 & LZ78 LZ78 Encoding Algorithm.
A Data Compression Algorithm: Huffman Compression
Lempel-Ziv-Welch (LZW) Compression Algorithm
Lempel-Ziv Compression Techniques
Data Representation CS105. Data Representation Types of data: – Numbers – Text – Audio – Images & Graphics – Video.
Klara Nahrstedt Spring 2014
Data dan Teknologi Multimedia Sesi 08 Nofriyadi Nurdam.
Lossless Compression Multimedia Systems (Module 2 Lesson 3)
Yehong, Wang Wei, Wang Sheng, Jinyang, Gordon. Outline Introduction Overview of Huffman Coding Arithmetic Coding Encoding and Decoding Probabilistic Model.
Representation of Strings  Background  Huffman Encoding.
Spring 2015 Mathematics in Management Science Binary Linear Codes Two Examples.
Lecture 10 Data Compression.
Efficient encoding methods  Coding theory refers to study of code properties and their suitability to specific applications.  Efficient codes are used,
Compression Algorithms
Chapter 2 Source Coding (part 2)
Text Compression Spring 2007 CSE, POSTECH. 2 2 Data Compression Deals with reducing the size of data – Reduce storage space and hence storage cost Compression.
 Refers to sampling the gray/color level in the picture at MXN (M number of rows and N number of columns )array of points.  Once points are sampled,
Page 110/6/2015 CSE 40373/60373: Multimedia Systems So far  Audio (scalar values with time), image (2-D data) and video (2-D with time)  Higher fidelity.
1 Analysis of Algorithms Chapter - 08 Data Compression.
Lecture 29. Data Compression Algorithms 1. Commonly, algorithms are analyzed on the base probability factor such as average case in linear search. Amortized.
Fundamental Structures of Computer Science March 23, 2006 Ananda Guna Lempel-Ziv Compression.
Fundamental Data Structures and Algorithms Aleks Nanevski February 10, 2004 based on a lecture by Peter Lee LZW Compression.
1 Strings CopyWrite D.Bockus. 2 Strings Def: A string is a sequence (possibly empty) of symbols from some alphabet. What do we use strings for? 1) Text.
Multimedia Specification Design and Production 2012 / Semester 1 / L3 Lecturer: Dr. Nikos Gazepidis
Image Compression (Chapter 8) CSC 446 Lecturer: Nada ALZaben.
Compression.  Compression ratio: how much is the size reduced?  Symmetric/asymmetric: time difference to compress, decompress?  Lossless; lossy: any.
The LZ family LZ77 LZ78 LZR LZSS LZB LZH – used by zip and unzip
COMPRESSION. Compression in General: Why Compress? So Many Bits, So Little Time (Space) CD audio rate: 2 * 2 * 8 * = 1,411,200 bps CD audio storage:
Msccomputerscience.com. Compression is a key aspect of multimedia It is a technique used in almost all multimedia application Compression is done on source.
Huffman Code and Data Decomposition Pranav Shah CS157B.
Fundamental Data Structures and Algorithms Margaret Reid-Miller 24 February 2005 LZW Compression.
Data Compression Meeting October 25, 2002 Arithmetic Coding.
Data Compression Reduce the size of data.  Reduces storage space and hence storage cost. Compression ratio = original data size/compressed data size.
CS Spring 2011 CS 414 – Multimedia Systems Design Lecture 6 – Basics of Compression (Part 1) Klara Nahrstedt Spring 2011.
Lecture 4: Lossless Compression(1) Hongli Luo Fall 2011.
1 Chapter 7 Skip Lists and Hashing Part 2: Hashing.
Multimedia – Data Compression
Comp 335 File Structures Data Compression. Why Study Data Compression? Conserves storage space Files can be transmitted faster because there are less.
Data Compression 황승원 Fall 2010 CSE, POSTECH 2 2 포항공과대학교 황승원 교 수는 데이터구조를 수강하 는 포항공과대학교 재학생 들에게 데이터구조를 잘해 야 전산학을 잘할수 있으니 더욱 열심히 해야한다고 말 했다. 포항공과대학교 A 데이터구조를.
Characters CS240.
Multi-media Data compression
Page 1KUT Graduate Course Data Compression Jun-Ki Min.
Huffman code and Lossless Decomposition Prof. Sin-Min Lee Department of Computer Science.
CS 1501: Algorithm Implementation
Computer Sciences Department1. 2 Data Compression and techniques.
IS502:M ULTIMEDIA D ESIGN FOR I NFORMATION S YSTEM M ULTIMEDIA OF D ATA C OMPRESSION Presenter Name: Mahmood A.Moneim Supervised By: Prof. Hesham A.Hefny.
Data Compression: Huffman Coding in Weiss (p.389)
Generic Trees—Trie, Compressed Trie, Suffix Trie (with Analysi
CSE 589 Applied Algorithms Spring 1999
Textbook does not really deal with compression.
Data Compression.
Lesson Objectives Aims You should know about: 1.3.1:
Applied Algorithmics - week7
Lempel-Ziv Compression Techniques
Information of the LO Subject: Information Theory
Why Compress? To reduce the volume of data to be transmitted (text, fax, images) To reduce the bandwidth required for transmission and to reduce storage.
Data Compression Reduce the size of data.
Compression, Lossy, Lossless
Lempel-Ziv Compression Techniques
Strings CopyWrite D.Bockus.
UNIT IV.
CSE 589 Applied Algorithms Spring 1999
فشرده سازي داده ها Reduce the size of data.
Data Compression.
Huffman Coding Greedy Algorithm
Presentation transcript:

CS 1501: Algorithm Implementation LZW Data Compression

Data Compression Reduce the size of data ◦ Reduces storage space and hence the cost ◦ Reduces time to retrieve and transmit data Compression ratio = original data size / compressed data size

Lossless and Lossy Compression compressedData = compress(originalData) decompressedData = decompress(compressedData) Lossless compression  originalData = decompressedData Lossy compression  originalData  decompressedData

Lossless and Lossy Compression Lossy compressors generally obtain much higher compression ratios as compared to lossless compressors e.g. 100 vs. 2 Lossless compression is essential in applications such as text file compression. Lossy compression is acceptable in many audio and imaging applications ◦ In video transmission, a slight loss in the transmitted video is not noticable by the human eye.

Text Compression Lossless compression is essential Popular text compressors such as zip and Unix’s compress are based on the LZW (Lempel-Ziv-Welch) method. LZW Compression Character sequences in the original text are replaced by codes that are dynamically determined. The code table is not encoded into the compressed text, because it may be reconstructed from the compressed text during decompression.

LZW Compression Assume the letters in the text are limited to {a, b} ◦ In practice, the alphabet may be the 256 character ASCII set. The characters in the alphabet are assigned code numbers beginning at 0 The initial code table is: code key 0 a 1 b

Original text = abababbabaabbabbaabba Compression is done by scanning the original text from left to right. Find longest prefix p for which there is a code in the code table. Represent p by its code pCode and assign the next available code number to pc, where c is the next character in the text to be compressed. LZW Compression code key 0 a 1 b

Original text = abababbabaabbabbaabba p = a pCode = 0 Compressed text = 0 c = b Enter p | c = ab into the code table. 2 ab LZW Compression code key 0 a 1 b

Original text = abababbabaabbabbaabba Compressed text = 0 code key 0 a 1 b 2 ab 3 ba p = b pCode = 1 Compressed text = 01 c = a Enter p | c = ba into the code table.

Original text = abababbabaabbabbaabba Compressed text = 01 code key 0 a 1 b 2 ab 3 ba p = ab pCode = 2 Compressed text = 012 c = a Enter aba into the code table 4 aba

Original text = abababbabaabbabbaabba Compressed text = 012 code key 0 a 1 b 2 ab 3 ba p = ab pCode = 2 Compressed text = 0122 c = b Enter abb into the code table. 4 aba 5 abb

Original text = abababbabaabbabbaabba Compressed text = 0122 code key 0 a 1 b 2 ab 3 ba p = ba pCode = 3 Compressed text = c = b Enter bab into the code table. 4 aba 5 abb 6 bab

Original text = abababbabaabbabbaabba Compressed text = code key 0 a 1 b 2 ab 3 ba p = ba pCode = 3 Compressed text = c = a Enter baa into the code table. 4 aba 5 abb 6 bab 7 baa

Original text = abababbabaabbabbaabba Compressed text = code key 0 a 1 b 2 ab 3 ba p = abb pCode = 5 Compressed text = c = a Enter abba into the code table. 4 aba 5 abb 6 bab 7 baa 8 abba

Original text = abababbabaabbabbaabba Compressed text = code key 0 a 1 b 2 ab 3 ba p = abba pCode = 8 Compressed text = c = a Enter abbaa into the code table. 4 aba 5 abb 6 bab 7 baa 8 abba 9 abbaa

Original text = abababbabaabbabbaabba Compressed text = code key 0 a 1 b 2 ab 3 ba p = abba pCode = 8 Compressed text = c = null No need to enter anything to the table 4 aba 5 abb 6 bab 7 baa 8 abba 9 abbaa

Code Table Representation Dictionary. ◦ Pairs are (key, element) = (key, code). ◦ Operations are: get(key) and put(key, code) Limit number of codes to 2 12 Use a hash table ◦ Convert variable length keys into fixed length keys. ◦ Each key has the form pc, where the string p is a key that is already in the table. ◦ Replace pc with (pCode)c code key 0 a 1 b 2 ab 3 ba 4 aba 5 abb 6 bab 7 baa 8 abba 9 abbaa

Code Table Representation code key 0 a 1 b 2 ab 3 ba 4 aba 5 abb 6 bab 7 baa 8 abba 9 abbaa code key 0 a 1 b 2 0b 3 1a 4 2a 5 2b 6 3b 7 3a 8 5a 9 8a

LZW Decompression Original text = abababbabaabbabbaabba Compressed text = Convert codes to text from left to right. pCode=0 represents p=a DecompressedText = a code key 0 a 1 b

LZW Decompression Original text = abababbabaabbabbaabba Compressed text = pCode=1 represents p = b DecompressedText = ab lastP = a followed by first character of p is entered into the code table (a | b) code key 0 a 1 b 2 ab

Original text = abababbabaabbabbaabba Compressed text = pCode = 2 represents p=ab DecompressedText = abab lastP = b followed by first character of p is entered into the code table (b | a) code key 0 a 1 b 2 ab 3 ba

Original text = abababbabaabbabbaabba Compressed text = pCode = 2 represents p = ab DecompressedText = ababab. lastP = ab followed by first character of p is entered into the code table ( ab | a ) code key 0 a 1 b 2 ab 3 ba 4 aba

Original text = abababbabaabbabbaabba Compressed text = pCode = 3 represents p = ba DecompressedText = abababba. lastP = ab followed by first character of p is entered into the code table code key 0 a 1 b 2 ab 3 ba 4 aba 5 abb

Original text = abababbabaabbabbaabba Compressed text = pCode = 3 represents p = ba DecompressedText = abababbaba. lastP = ba followed by first character of p is entered into the code table. code key 0 a 1 b 2 ab 3 ba 4 aba 5 abb 6 bab

Original text = abababbabaabbabbaabba Compressed text = pCode = 5 represents p = abb DecompressedText = abababbabaabb. lastP = ba followed by first character of p is entered into the code table. code key 0 a 1 b 2 ab 3 ba 4 aba 5 abb 6 bab 7 baa

Original text = abababbabaabbabbaabba Compressed text = code key 0 a 1 b 2 ab 3 ba 4 aba 5 abb 6 bab 7 baa 8 represents ??? When a code is not in the table (then, it is the last one entered), and its key is lastP followed by first character of lastP lastP = abb So 8 represents p = abba Decompressed text = abababbabaabbabba 8 abba

Original text = abababbabaabbabbaabba Compressed text = pCode= 8 represents p=abba DecompressedText= abababbabaabbabbaabba. lastP = abba followed by first character of p is entered into the code table ( abba | a ) code key 0 a 1 b 2 ab 3 ba 4 aba 5 abb 6 bab 7 baa 8 abba 9 abbaa

Code Table Representation Dictionary. ◦ Pairs are (code, what the code represents) = (code, key). ◦ Operations are : get(code, key) and put(key) Code is an integer 0, 1, 2, … Use a 1D array codeTable. E.g. codeTable[code] = Key Each key has the form pc, where the string p is a codeKey that is already in the table; therefore you may replace pc with (pCode)c code key 0 a 1 b 2 ab 3 ba 4 aba 5 abb 6 bab 7 baa 8 abba 9 abbaa

Time Complexity Compression Expected time = O(n) where n is the length of the text that is being compressed. Decompression O(n), where n is the length of the decompressed text.