1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

ĐIỆN tử VIỄN THÔNG bài 3 lossless compression khotailieu

35 49 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 35
Dung lượng 1,06 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

 Compression: the process of coding that will effectively reduce the total number of bits needed to represent certain information..  The entropy η specifies the lower bound for the ave

Trang 1

Multimedia Engineering

-Lecture 3: Lossless Compression

Techniques

Lecturer: Dr Đỗ Văn Tuấn

Department of Electronics and Telecommunications

Email: tuandv@epu.edu.vn

Trang 3

 Compression: the process of coding that will effectively reduce the total

number of bits needed to represent certain information

 If the compression and decompression processes induce no information loss,

then the compression scheme is lossless; otherwise, it is lossy

0

B

1

B

Trang 5

 The entropy η of an information source with alphabet

is

– probability that symbol will occur in S

– indicates the amount of information (self-information)

contained in , which corresponds to the number of bits needed to

encode

Basics of Information Theory

n

s s

Trang 6

6

 The figure below shows the histogram of an image with uniform distribution

of gray-level intensities, i.e., pi = 1/256 (i=1:256) Hence, the entropy of this

image is log2256 = 8

Distribution of Grey Level Intensities

Figure: Histograms for Two Gray-level Images

Trang 7

 The entropy η is a weighted-sum of terms; hence it represents the average

amount of information contained per symbol in the source S.

 The entropy η specifies the lower bound for the average number of bits to

code each symbol in S, i.e., η ≤ ave(len)

 The entropy is greater when the probability distribution is flat and smaller

Entropy and Code Length

Trang 9

 Rationale for RLC: if the information source has the property that symbols

tend to form continuous groups, then such symbol and the length of the group can be coded

 Run-length encoding (RLE) is a very simple form of data compression in

which runs of data (that is, sequences in which the same data value occurs in many consecutive data elements) are stored as a single data value and count, rather than as the original run

Example:

Text to be coded (length: 67)

Text after coded (length: 18)

Run-Length Coding

WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWW

WW

12W1B12W3B24W1B14W

Trang 11

A top-down approach

 Sort the symbols according to the frequency count of their occurrences

 Recursively divide the symbols into two parts, each with approximately the

same number of counts, until all parts contain only one symbol

Shannon – Fano Algorithm

Trang 12

12

1 For a given list of symbols, develop a corresponding list of probabilities or

frequency counts so that each symbol’s relative frequency of occurrence is known

2 Sort the lists of symbols according to frequency, with the most frequently

occurring symbols at the left and the least common at the right

3 Divide the list into two parts, with the total frequency counts of the left part

being as close to the total of the right as possible

4 The left part of the list is assigned the binary digit 0, and the right part is

assigned the digit 1 This means that the codes for the symbols in the first part will all start with 0, and the codes in the second part will all start with 1

5 Recursively apply the steps 3 and 4 to each of the two halves, subdividing

groups and adding bits to the codes until each symbol has become a

corresponding code leaf on the tree

Shannon – Fano Algorithm

Trang 13

Shannon – Fano – Example (wiki)

A sequence of symbols describing the table below:

Output codes

Average bit number

Trang 14

 Repeat until the list has only one symbol left:

 From the list pick two symbols with the lowest frequency counts Form a

Huffman sub-tree that has these two symbols as child nodes and create a parent node

 Assign the sum of the children’s frequency counts to the parent and insert

it into the list such that the order is maintained

 Delete the children from the list

 Assign a codeword for each leaf based on the path from the root

Trang 15

Huffman Coding – Example (wiki)

A sequence of symbols describing the table below:

Output codes

Average bit number

Trang 17

 Arithmetic coding is a more modern coding method that usually out-performs

Huffman coding

 Huffman coding assigns each symbol a codeword which has an integral bit

length Arithmetic coding can treat the whole message as one unit

A message is represented by a half-open interval [a, b) where a and b are

real numbers between 0 and 1 Initially, the interval is [0, 1)

 When the message becomes longer, the length of the interval shortens and the

number of bits needed to represent the interval increases

Arithmetic Coding

Trang 18

18

Arithmetic Coding Encoder

Trang 19

Table: Probability distribution of symbols

Example: Coding in Arithmetic Coding

Trang 20

20

Example: Coding in Arithmetic Coding

Figure: Graphical display of shrinking ranges

Trang 21

Table: Now low, high and range generated

Example: Coding in Arithmetic Coding

Trang 22

22

Arithmetic Coding Decoder

Trang 23

If the alphabet is [A, B, C] and the probability distribution is

p A = 0.5, p B = 0.4, p C = 0.1, then for sending BBB,

 Huffman coding: 6 bits

 Arithmetic coding: 4 bits

 Arithmetic coding can treat the whole message as one unit In practice, the

input data is usually broken up into chunks to avoid error propagation

Arithmetic Coding Decoder

Trang 25

 LZW uses fixed-length codewords to represent variable-length strings of

symbols/characters that commonly occur together, e.g., words in English text

 The LZW encoder and decoder build up the same dictionary dynamically

while receiving the data

 LZW places longer and longer repeated entries into a dictionary, and then

emits the code for an element, rather than the string itself, if the element has already been placed in the dictionary

 The predecessors of LZW are LZ77 and LZ78, due to Jacob Ziv and Abraham

Lempel in 1977 and 1978

 Terry Welch improved the technique in 1984

 LZW is used in many applications, such as UNIX compress, GIF for image,

V.42 bis for modems, and others

Lempel-Ziv-Welch Algorithm

Trang 26

26

Lempel-Ziv-Welch Algorithm

Trang 27

 Example: LZW compression for string “ABABBABCABABBA”

 Let’s start with a very simple dictionary (also referred to as a “string table”),

initially containing only 3 characters, with codes as follows:

 Now if the input string is “ABABBABCABABBA”, the LZW compression

algorithm works as follows:

Lempel-Ziv-Welch Algorithm

Trang 28

28

 ABABBABCABABBA: The output codes are: 1 2 4 5 2 3 4 6 1 Instead of

sending 14 characters, only 9 codes need to be sent (compression ratio = 14/9

= 1.56)

Lempel-Ziv-Welch Algorithm

Trang 29

Lempel-Ziv-Welch Algorithm

Example: LZW decompression for string “ABABBABCABABBA” Input codes

to the decoder are 1 2 4 5 2 3 4 6 1 The initial string table is identical to what is used by the encoder

Trang 31

 The above simple version will reveal a potential problem In adaptively

updating the dictionaries, the encoder is sometimes ahead of the decoder

 For example, after ABABB, the encoder will output code 4 and create a

dictionary entry with code 6 for the new string ABB

 After receiving the code 4, the output will be AB, and the dictionary is

updated with code 5 for a new string, BA

 Welch points out that the simple version will break down when the following

scenario occurs

 Input= ABABBABCABBABBAX

 Whenever the sequence is Character, String, Character, String, Character,

and so on, the encoder will create a new code to represent Character + String + Character and use it right away, before the decoder has had a chance to create it!

Lempel-Ziv-Welch Algorithm

Trang 32

32

Lempel-Ziv-Welch Algorithm

Trang 33

 This is only case will fail When this occurs, the variable

S= Character + String A modified version can handle this exceptional case by

checking whether the input code has been defined in the decoder’s dictionary

If not, it will simple assume that the code represents the symbols s + s[0]; that

is

Character + String + Character

In real applications, the code length l is kept in the range of [l 0 , l max] The

dictionary initially has a size of 2lo.When it is filled up, the code length will

be increased by 1; this is allowed to repeat until l = l max

When l max is reached and the dictionary is filled up, it needs to be flushed (as

in Unix compress, or to have the LRU (least recently used) entries removed

Lempel-Ziv-Welch Algorithm

Trang 34

34

Lempel-Ziv-Welch Algorithm

Trang 35

End of the lecture

Ngày đăng: 12/11/2019, 13:26

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w