1. Trang chủ >
  2. Công nghệ thông tin >
  3. Hệ thống thông tin >

CHƯƠNG 2: CÁC PHƯƠNG PHÁP NÉN DỮ LIỆU

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (285.77 KB, 35 trang )


Trong thực tế, các file hình ảnh, âm thanh hay video được lưu trữ trên máy tính

đều đã được nén có tổn hao để tiết kiệm dung lượng và băng thông. Đối lập với nén

không tổn hao, các phương pháp nén có tổn hao thường gây giảm chất lượng rất

nhanh khi thực hiện nén và giải nén đệ qui nhiều lần. Các mẫu hình ảnh, âm thanh

sẽ được chia thành các phần nhỏ và được biến đổi qua miền khác. Các hệ số biến

đổi này sẽ được lượng tử hóa sau đó được mã hóa bằng mã Huffman hoặc mã hóa

số học.

Các mẫu hình ảnh, âm thanh trước được sử dụng để dự đoán các mẫu tiếp theo.

Sai số giữa dữ liệu dự đoán và dữ liệu thực sẽ được lượng tử hóa rồi mã hóa. Ưu

điểm của nén tổn hao so với nén không tổn hao là nén tổn hao trong nhiều trường

hợp cho tỷ lệ nén cao hơn rất nhiều so với bất cứ thuật toán nén không tổn hao được

biết, trong khi vẫn đảm bảo được chất lượng. Nén tổn hao thường được sử dụng để

nén ảnh, âm thanh, video. Âm thanh có thể nén với tỷ lệ 10:1 mà hầu như không

giảm chất lượng. Video có thể nén với tỷ lệ 300:1 với chất lượng giảm ít.

Các chuẩn nén tổn hao:

1. JPEG (Joint Photographic Experts Group): Phương pháp nén ảnh tĩnh với tỷ lệ

nén lên đến 20 -1 mà không làm mất thông tin đáng kể.

2. LZW (Lempel – Ziv - Welch): Giải thuật này được dùng trong nhiều định

dạng nén, kể cả định dạng có thể trao đổi đồ họa và Tag Image File Format mà

ta thường gọi là TIFF.

3. MPEG (Moving Pictures Experts Group): Phương pháp nén tổn hao dùng cho

video. MPEG -1 dùng cho CD – ROM và video CD. MPEG -2 nén video cho

truyền hình thông thường và độ nét cao.

4. MP3 (MPEG Audio Layer 3): Công nghệ nén âm thanh sử dụng một phần

chuẩn MPEG – 1 để nén âm thanh chất lượng CD với hệ số 12.

5. Fractal: Phương pháp nén tổn hao dữ liệu cho ảnh màu, rất phù hợp với những

đối tượng tự nhiên, tỷ lệ nén có thể lên đến 100 – 1.

6. Wavelet: Phương pháp nén tổn hao sử dụng hàm toán học để nén hình ảnh với

tỷ lệ lớn hơn các phương pháp khác, có thể đạt ¼ kích thước của cùng bức ảnh

nén bằng JPEG.

7. Window Media Technology: Sản phẩm của Microsoft, cho chất lượng âm

thanh tốt hơn MP3 đối với tập tin cùng kích thước, cũng như chất lượng video

gần bằng DVD.

2.1.2. Cách thứ hai dựa vào cách thức thực hiện nén

10



• Phương pháp không gian (Spatial Data Compression): các phương pháp thuộc họ

này thực hiện nén bằng cách tác động trực tiếp lên việc lấy mẫu của ảnh trong

miền không gian.

• Phương pháp sử dụng biến đổi (Transform Coding): các phương pháp tác động

lên sự biến đổi của ảnh gốc mà không tác động trực tiếp như cách phân loại ở

trên.

2.1.3. Cách thứ ba dựa vào lý thuyết mã hóa

• Các phương pháp nén thế hệ thứ nhất: gồm các phương pháp mà mức độ tính

toán là đơn giản như việc lấy mẫu, gán từ mã...

• Các phương pháp nén thế hệ thứ hai: gồm các phương pháp dựa vào mức độ bão

hòa của tỷ lệ nén bằng cách sử dụng các phép toán tổ hợp đầu ra một cách hợp lý

hoặc sử dụng biểu diễn ảnh như: phương pháp kim tự tháp Laplace, phương

pháp dựa vào vùng gia tăng, phương pháp tách hợp.

2.2. Một số phương pháp nén

2.2.1. Phương pháp mã hóa Shannon – Fano

Vào những năm 1940, những năm đầu phát triển của ngành Lý thuyết thông tin,

ý tưởng phát triển một phương pháp mới để mã hóa dữ liệu đã bắt đầu xuất hiện, sau

khi các nhà nghiên cứu đã khám phá ra Entropy và độ dư thừa dữ liệu.

Phương pháp mã hóa đầu tiên được nhiều người biết đến vào cuối những năm

1940 là phương pháp mã hóa Shannon – Fano. Phương pháp này được 2 nhà nghiên

cứu Claude Shnnon và R.M Fano đưa ra gần như đồng thời. Kỹ thuật mã hóa này dựa

trên tần suất xuất hiện của mỗi ký tự trong nguồn số liệu cần được mã hóa. Từ bảng

chứa các tần suất đó, bảng mã sẽ được xây dựng dựa vào các tính chất quan trọng sau:

- Các mã khác nhau có các bít biểu diễn khác nhau.

- Ký tự có tần suất xuất hiện càng cao thì mã càng ngắn (ít bít) và ngược lại.

- Các mã có độ dài bit khác nhau.

• Thuật toán:

Các bước thực hiện mã hóa theo thuật toán Shannon – Fano:

-



Bước 1: Thiết lập bảng sắp xếp các ký tự theo thứ tự giảm dần.

Bước 2: Tính xác suất.

Bước 3: Đệ quy làm 2 phần, mỗi phần có tổng xác suất gần bằng nhau. Mã



-



hóa phần trên bằng bit 0 ( hoặc bit 1), phần dưới bằng bit 1 ( hoặc bit 0).

Bước 4: Vẽ sơ đồ cây.

Bước 5: Tính Entropy, số bít mã hóa trung bình và số bít mã hóa thông



thường.

• Ví dụ:

Thống kê lượng tin:

11



Ký hiệu

Số lần xuất hiện



A

15



B

7



C

6



D

5



E

6



Mã hóa lượng tin:

Ký hiệu

A

B

C

D

E



Đếm

15

7

6

6

5



Pi

15/39

7/39

6/39

6/39

5/39



Log2(1/pi)

1.38

2.48

2.7

2.7

2.96





0

0

1

1

1



0

1

0

1

1



0

1



Tổng bít

30

14

12

18

15



Số bít sử dụng trung bình: (tổng bít/ số lần xuất hiện).

R = (30 + 14 + 12 + 18 + 15) / 39 = 2.29 bít

• Ưu nhược điểm:

- Ưu điểm:

Đơn giản, dễ thực hiện.

- Nhược điểm:

Thuật toán Shannon – Fano có hệ số nén khá thấp và yêu cầu khá phức tạp

nên hiếm khi được sử dụng.

2.2.2. Phương pháp mã hóa Huffman

• Nguyên tắc

Phương pháp mã hóa Huffman là phương pháp dựa trên mô hình thống kê. Dựa

vào dữ liệu gốc, người ta tính tần suất xuất hiện của các ký tự. Việc tính tần suất

được thực hiện bằng cách duyệt tuần tự tệp gốc từ đầu đến cuối. Việc xử lý ở đây

tính theo bit. Trong phương pháp này, người ta gán cho các ký tự có tần suất cao

một từ mã ngắn, các ký tự có tần suất thâp một từ mã dài. Nói cách khác, các ký tự

có tần suất càng cao được gán mã càng ngắn và ngược lại. Rõ ràng với cách thức

này, ta đã làm giảm chiều dài trung bình của từ mã bằng cách dùng chiều dài biến

đổi. Tuy nhiên, trong một số tình huống khi tần suất là rất thấp, ta có thể không thu

được lợi một chút nào, thậm chí còn bị thiệt một ít bit.

• Thuật toán nén

Thuật toán gồm 2 bước chính:

- Bước 1: tính tần suất của các ký tự trong dữ liệu gốc

Duyệt tệp gốc một cách tuần tự từ đầu đến cuối để xây dựng bảng mã. Tiếp

-



sau đó là sắp xếp lại bảng mã theo thứ tự tần suất giảm dần.

Bước 2: mã hóa

Duyệt bảng tần suất từ cuối lên đầu để thực hiện ghép 2 phần tử có tần suất

thấp nhất thành một phần tử duy nhất. Phần tử này có tần suất bằng tổng 2 tần

suất thành phần. Tiến hành cập nhật lại bảng và đương nhiên loại bỏ 2 phần

12



tử đã xét. Quá trình được lặp lại cho đến khi bảng chỉ còn 1 phần tử. Quá

trình này gọi là quá trình tạo cây mã Huffman vì việc tập hợp được tiến hành

nhơ một cây nhị phân với 2 nhánh. Phần tử có tần suất thấp ở bên phải, phần

tử kia ở bên trái. Với cách tạo cây này, tất cả các bit dữ liệu/ ký tự là nút lá,

các nút trong là các nút tổng hợp. Sau khi cây đã tạo xong, người ta tiến hành

gán mã cho các nút lá. Việc mã hóa rất đơn giản: mỗi lần xuống bên phải ta

thêm 1 bit “1” vào từ mã, mỗi lần xuống bên trái ta thêm 1 bit “0”. Tất nhiên

có thể làm ngược lại, chỉ có giá trị mã thay đổi còn tổng chiều dài là không

đổi. Cũng chính vì lý do này mà cây có tên gọi là cây mã Huffman.

Quá trình giải nén tiến hành theo chiều ngược lại khá đơn giản. Người ta cũng

phải dựa vào bảng mã tạo ra trong giai đoạn nén.

• Ví dụ

Một tệp dữ liệu mà tần suất các ký tự cho bởi:

Ký tự

“1”

“2”

“3”

“4”

“5”

“6”

“7”

“8”

“9”

“0”

“.”

“+”

“-”

“”



Tần suất

152

323

412

226

385

602

92

112

87

1532

536

220

315

535



Bảng tần suất sắp xếp theo thứ tự giảm dần:

Ký tự

“0”

“6”

“.”

“”

“3”

“5”

“2”

“-”

“4”

“+”

“1”

“8”

“7”



Tần suất

1532

602

536

535

412

385

323

315

226

220

152

112

92



Xác suất

0.2770

0.1088

0.0969

0.0967

0.0746

0.0696

0.0585

0.0569

0.0409

0.0396

0.0275

0.0203

0.0167

13



“9”



87



0.0158



Lưu ý rằng, trong phương pháp Huffman, mã của ký tự là duy nhất và không mã

nào là phần bắt đầu của mã khác. Vì vậy, khi đọc tệp nén từng bit từ đầu đến cuối ta có

thể duyệt cây mã cho đến một lá, tức là ký tự đã được giải nén.



Cây mã Huffman

Bảng từ mã gán cho các ký tự bởi mã hóa Huffman:

Ký tự

“0”

“6”

“.”

“”

“3”

“5”

“2”

“-”

“4”

“+”

“1”

“8”

“7”

“9”



Từ mã

10

010

001

000

1110

1100

0111

0110

11110

11011

111111

111110

110101

110100



• Thuật toán giải nén

- Bước 1: Đọc lần lượt từng bit trong tập tin nén và duyệt cây nhị phân đã được

-



xác định cho đến khi hết một lá. Lấy ký tự ở lá đó ghi ra tệp giải nén.

Bước 2: Trong khi chưa hết tập tin nén thì thực hiện bước một, ngược lại thì



-



thực hiện bước 3.

Kết thúc thuật toán.

14



• Ưu nhược điểm:

Ưu điểm:

Thuật toán Huffman có ưu điểm là hệ số nén tương đối cao, phương pháp thực

hiện tương đối đơn giản, đòi hỏi ít bộ nhớ, có thể xây dựng dựa trên các mảng bé

hơn 64KB.

Nhược điểm:

- Mã Huffman chỉ thực hiện được khi biết tần suất xuất hiện của các ký tự.

- Mã Huffman chỉ giải quyết được độ dư thừa phân bố ký tự.

- Huffman tĩnh đòi hỏi phải xây dựng cây nhị phân sẵn chứa các khả năng.

Điều này đòi hỏi thời gian không ít do ta không biết trước kiểu dữ liệu sẽ

-



được thực hiện nén.

Quá trình giải nén phức tạp do chiều dài mã không biết trước cho đến khi ký



tự đầu tiên được tìm ra.

2.2.3. Phương pháp mã hóa RLE

Mã hóa loạt dài RLE là một phương pháp nén ảnh dựa trên sự cắt bớt các dư thừa

về không gian (một vài hình ảnh có vùng màu lớn không đổi đặc biệt là ảnh nhị phân).

Loạt được định nghĩa là dãy các phần tử điểm ảnh (pixel) liên tiếp có cùng chung một

giá trị. Phương pháp mã hóa loạt dài lúc đầu được phát triển dành cho ảnh nhị phân

như các văn bản trên nền trắng, trang in, các bức vẽ kỹ thuật.

• Nguyên tắc

Phát hiện một loạt các bit lặp lại, thí dụ như một loạt các bit 0 nằm giữa 2 bit 1

hay ngược lại, một loạt bit 1 nằm giữa 2 bit 0. Ví dụ: 110000000000000011. Dãy các

bit lặp gọi là loạt hay mạch (run). Tiếp theo, thay thế chuỗi đó bởi một chuỗi mới gồm

2 thông tin: chiều dài chuỗi và bit lặp (ký tự lặp). Như vậy, chuỗi thay thế sẽ có chiều

dài ngắn hơn chuỗi cần thay.

-



Ví dụ:



Cho một chuỗi nguồn d:

d= 5 5 5 5 5 5 5 5 5 5 19 19 19 19 19 0 0 0 0 0 0 0 23 23 23 23 23 23 23 23

Ta sẽ có chuỗi mới là: (10 5) (5 19) (7 0) (8 23)

Tỷ số nén = 30/8 = 3.75

Đối với ảnh đen trắng chỉ sử dụng 1 bit để biểu diễn 1 điểm ảnh thì phương pháp

này tỏ ra rất hiệu quả.

-



Ví dụ:



Cho một chuỗi nguồn:

d= 000000000000000111111111100000000001111111111000000000000000

15



Ta có chuỗi mới: (15, 10, 10, 10, 15)

Tỷ số nén = 60/(5*4) = 3 (chỉ sử dụng 4 bit để thể hiện độ dài loạt và không thể

hiện giá trị loạt vì ảnh đen trắng chỉ có 2 giá trị bit là 0 hoặc 1).

• Chú ý:

- Cần lưu ý rằng, đối với dữ liệu ảnh, chiều dài của chuỗi lặp có thể lớn hơn

255, nếu ta dùng một byte để lưu trữ chiều dài thì không đủ. Giải pháp được

dùng là tách chuỗi đó thành 2 chuỗi: một chuỗi có chiều dài 255, chuỗi kia là

-



số bit còn lại.

Phương pháp này chỉ có hiệu quả khi chiều dài dãy lặp lớn hơn một ngưỡng

nào đó hay nói cách khác trong ảnh cần nén phải có nhiều điểm ảnh kề nhau

có cùng giá trị màu. Do đó, phương pháp này không đem lại cho ta kết quả

một cách ổn định vì nó phụ thuộc hoàn toàn vào ảnh nén, chỉ thích hợp cho



-



ảnh đen trắng hay ảnh đa cấp xám.

Ví dụ:



Ta có một chuỗi nguồn:

d = 5 7 9 11 13 18 28 38 48 58 30 35 40 45

Chuỗi kết quả sau khi mã hóa:

1 5 1 7 1 9 1 11 1 3 1 18 1 28 1 38 1 48 1 58 1 30 1 35 1 40 1 45

Tỷ số nén = 14/ 28 = 0.5

Như vậy, chuỗi sau khi mã hóa lớn hơn nhiều chuỗi nguồn ban đầu. Do đó, cần

phương pháp cải tiến để xử lý những trường hợp như trên tránh làm mở rộng chuỗi dữ

liệu nguồn nghĩa là chỉ mã hóa độ dài loạt dữ liệu lặp lại. Người ta đưa ra cách là thêm

ký tự tiền tố vào trước độ dài loạt, việc giải mã được thực hiện nếu gặp ký tự tiền tố

với độ dài loạt và giá trị điểm ảnh theo sau.

-



Ví dụ:



Ta có chuỗi nguồn:

d= 5 8 4 8 8 8 8 8 8 8 8 10 10 10 10 10 10 10 10 10

Giả sử ký tự tiền tố là “@” ta có chuỗi sau khi mã hóa: 5 8 4 @ 7 8 @ 9 10

Tỷ số nén = 19/9/ 2.1

Tuy nhiên, trong một số trường hợp các điểm ảnh có độ tương quan với nhau về

giá trị mức xám như trong ví dụ dưới đây ta có thể tiến hành xử lý như sau:

-



Ví dụ:



Ta có một chuỗi nguồn:

16



d= 5 7 9 11 13 18 28 38 48 58 55 60 65 70 75 80 85 90 95 100

Ta dựa vào độ tương quan này để có được hiệu quả nén cao, bằng việc áp dụng

e(i) = d(i) – d(i-1) sẽ thu được:

5 2 2 2 2 5 10 10 10 10 10 -3 5 5 5 5 5 5 5 5 5

Áp dụng phương pháp nén RLE ta thu được:

(1 5)(4 2)(1 5)(5 10)(1 -3)(9 5)

2.2.4. Phương pháp mã hóa LZ78

• Mô hình từ điển (Dictionary – based compression):

Có 2 loại:

-



Mã hóa từ điển tĩnh ( Static dictionary coding)

Mã hóa từ điển động ( Dynamic dictionary coding)



Có rất nhiều thuật toán áp dụng kỹ thuật này như: LZ77, LZK, LZSS, LZH…

nhưng trong bài này chúng ta chỉ đề cập đến hai thuật toán chính là:

-



Thuật toán LZ78

Thuật toán LZW



Jacob Ziv và Abraham Lempel đã mô tả kỹ thuật dựa trên từ điển bằng mã hóa

LZ77 và LZ78. Ý tưởng dựa trên việc thay thế 1 cụm ký tự bằng một con trỏ, trỏ đến

vị trí xuất hiện trước đó của cụm ký tự.

LZW là mã hóa trong họ LZ, hoàn thiện hơn LZ77 – LZ78 và đang được sử dụng

phổ biến hiện nay.

• Nguyên tắc:

Thay vì thông báo vị trí đoạn văn lặp lại trong quá khứ, mã LZ78 đánh số tất cả

các đoạn văn sao cho mỗi đoạn ghi nhận số hiệu đoạn văn lặp lại trong quá khứ

cộng với một ký tự mà nó làm cho đoạn đó khác với đoạn trong quá khứ. Như vậy,

mỗi đoạn mới là một đoạn ký tự trong quá khứ cộng với một ký tự trong quá khứ.

Chính vì thế đoạn mới khác với đoạn cũ trong quá khứ.

• Ví dụ:

Giả sử ta có đoạn văn bản sau: “aaabbabaabaaabab”

Theo thuật toán LZ78 thì chúng được phân thành các đoạn như sau:

Input



a



aa



b



ba



baa



baaa



bab



Đoạn



1



2



3



4



5



6



7



Output



0+a



1+a



0+b



3+a



4+a



5+a



4+b



Như vậy, bản nén của chúng ta là: (0, a); (1, a); (0, b); (3, a); (4, a); (5, a); (4, b)

17



Nói chung thuật toán LZ78 là một thuật toán nén vă bản khá tốt, có thời gian

chạy chương trình tương đối nhanh, tuy nhiên khả năng tiết kiệm chưa được khai thác

tối đa.

2.2.5. Phương pháp mã hóa LZW

Khái niệm nén từ điển được Jocob Lempe và Abraham Ziv đưa ra lần đầu tiên

năm 1977 và lấy tên là LZ77. Năm 1978 cải tiến dựa trên LZ77 và lấy tên là LZ78.

Năm 1984, Welch đã cải tiến giải thuật LZ thành giải thuật mới hiệu quả hơn và được

đặt tên là LZW (Lempe – Ziv - Welch). Phương pháp này xây dựng từ điển lưu các

chuỗi ký tự có tần suất lặp lại cao và thay thế bằng từ mã tương ứng mỗi khi gặp lại

chúng, nó hay hơn các phương pháp trước đó ở kỹ thuật tổ chức từ điển cho phép nâng

cao tỷ lệ nén.

Giải thuật LZW được dùng cho tất cả các loại file nhị phân, thường được dùng để

nén các loại dữ liệu như: văn bản, ảnh đen trắng, ảnh màu, ảnh đa cấp xám… và là

chuẩn nén cho các dạng ảnh GIF và TIFF. Số bit/pixel không ảnh hưởng đến hiệu quả

của LZW.

• Nguyên tắc

Giải thuật nén LZW xây dựng một từ điển lưu các mẫu có tần suất xuất hiện cao

trong ảnh. Từ điển là tập hợp những cặp từ vựng và nghĩa của từ vựng. Trong đó, từ

vựng sẽ là các từ mã được sắp xếp theo thứ tự nhất định, nghĩa là một chuỗi con trong

dữ liệu ảnh, từ điển được xây dựng song song với quá trình đọc dữ liệu. Sự xuất hiện

của chuỗi con trong từ điển khẳng định rằng chuỗi đó đã từng xuất hiện trong phần dữ

liệu đã được đọc qua.Thuật toán liên tục tra cứu và sau mỗi lần đọc một ký tự ở dữ liệu

đầu vào thì tiến hành cập nhật lại từ điển.

Do giới hạn của bộ nhớ và để đảm bảo tốc độ tìm kiếm nhanh, từ điển chỉ có giới

hạn 4096 phần tử dùng để lưu trữ giá trị của các từ mã. Như vậy, độ dài lớn nhất của

từ mã là 12 bit (4096 =



). Cấu trúc từ điển như sau:



18



- 256 từ mã đầu tiên theo thứ tự từ 0…255 chứa các số nguyên từ 0…255. Đây là

mã của 256 ký tự cơ bản trong bảng mã ASCII.

- Từ mã 256 chứa một mã đặc biệt là mã xóa (CC – Clear Code). Khi số mẫu lặp

lớn hơn 4096 thì người ta sẽ coi ảnh gồm nhiều mảnh ảnh và từ điển sẽ gồm

nhiều từ điển con. Khi hết một mảnh ảnh sẽ gửi 1 mã xóa CC để báo hiệu kết

thúc mảnh ảnh cũ và bắt đầu mảnh ảnh mới đồng thời sẽ khởi tạo lại từ điển.

- Từ mã thứ 257 chứa mã kết thúc thông tin (EOI – End Of Information). Thông

thường một file ảnh GIF có thể chứa nhiều mảnh ảnh, mỗi mảnh ảnh này sẽ được

mã hóa riêng. Chương trình giải mã sẽ lặp đi lặp lại thao tác giải mã từng ảnh cho

đến khi gặp mã kết thúc thông tin thì dừng lại.

- Các từ mã còn lại (từ 258 đến 4095) chứa các mẫu thường lặp lại trong ảnh. 512

phần tử đầu tiên của từ điển biểu diễn bằng 9 bit. Các từ mã từ 512 đến 1023 biểu

diễn bởi 10 bit, từ 1024 đến 2047 biểu diễn bởi 11 bit và từ 2048 đến 4095 biểu

diễn bởi 12 bit.

• Ví dụ

Cho chuỗi đầu vào: “HELLOHELLOHELL”

Từ điển ban đầu đã gồm 256 ký tự cơ bản.

Kích thước đầu vào: 14 x 8 = 112 bit

Đầu vào

H(72)

E(69)



Đầu ra

72



Thực hiện

H đã có trong từ điển -> đọc tiếp

Thêm vào từ điển mã 258 đại diện chuỗi HE



L(76)



69



Thêm vào từ điển mã 259 đại diện chuỗi EL

19



L



76



Thêm vào từ điển mã 260 đại diện chuỗi LL



O(79)



76



Thêm vào từ điển mã 261 đại diện chuỗi LO



H



79



Thêm vào từ điển mã 262 đại diện chuỗi OH



E



HE đã có trong từ điển -> đọc tiếp



L



258



Thêm vào từ điển mã 263 đại diện chuỗi HEL



L



LL đã có trong từ điển -> đọc tiếp



O



260



Thêm vào từ điển mã 264 đại diện chuỗi LLO



H



OH đã có trong từ điển -> đọc tiếp



E



262



Thêm vào từ điển mã 265 đại diện chuỗi OHE



L



EL đã có trong từ điển -> đọc tiếp



L



259



Thêm vào từ điển mã 266 đại diện chuỗi ELL



76



Input = FALSE



EOI



Chuỗi đầu ra là: 72 69 76 76 79 258 260 262 259 76

Kích thước đầu ra: 6 x 8 + 4 x 9 = 84 bit

Tỷ số nén = 112/ 84 = 1.3

Quá trình giải nén thực hiện như sau:

Code



Outbuff()



72

69

76

76

79

258

260

262

259

76

EOI



H

E

L

L

O

HE

LL

OH

EL

L



AddToDictionary()

CodeWord

String

258

259

260

261

262

263

264

265

266



HE

EL

LL

LO

OHE

HEL

LLO

OHE

ELL



Chuỗi thu được sau giải nén: “HELLOHELLOHELL”

2.3. Chọn phương pháp nén

Qua ba phương pháp nén được dùng phổ biến trên, ta thấy rằng, thuật toán nén

độ dài loạt (Runlength) không thể áp dụng cho mhiều loại tập tin được, ví dụ như tập

20



Xem Thêm
Tải bản đầy đủ (.doc) (35 trang)

×