1. Trang chủ
  2. » Thể loại khác

www.tinhgiac.com de tai lempel ziv encoding

24 82 0
Tài liệu được quét OCR, nội dung có thể không chính xác

Đ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 24
Dung lượng 4,95 MB

Nội dung

www.tinhgiac.com de tai lempel ziv encoding tài liệu, giáo án, bài giảng , luận văn, luận án, đồ án, bài tập lớn về tất...

Trang 1

TRƯỜNG ĐẠI HỌC ĐIỆN LỰC Khoa Điện Tử Viên Thông

- && lL &<s -

=,

DAI HOC DIEN LUC

ELECTRIC POWER UNIVERSITY

BAI TAP NHOM MON LY THUYET THONG TIN

DE TAI :“LEMPEL-ZIV ENCODING”

Gling vién b§ mén: Vit Ngọc Cham Nhóm Sink Vién Thc ên: Nhóm to

Sink vién Kip: D 2ZÐ7/ V7?

Trang 2

TRUONG DAI HQC DIEN LUC Khoa Điện Tử Viên Thông

MON LY THUYET THONG TIN

LEMPEL-ZIV ENCODING

Danh Sách Các Thành Viên Nhóm Số 10 1: NGUYEN QUOC QUAN

2: NGUYEN VAN HUNG 3: NGUYEN VAN KHOAI 4: HOANG VAN LAM

5: NGUYEN VAN TIEN LAM

Hà nội ngày II tháng 9 năm 2012

Trường Đựi Học Điện Lực Khoa Điện Tử Viễn T: hông Nhớm 10

Trang 3

Muc Luc

1.Danh sach thanh vién trong nhóm 10 1 2.Lời g1ới thiỆU - chê 2 3.Tổng quan về nén giữ liệu .- - << 4

4 Cơ sở một số phương pháp nén 5

5 Tổng quan về Lempel-ziv coding .- - 6 6.Từ điển mã hóa . - - ST 222122211111 cày 7

7 Họ thuật toán Lempel-Z⁄1v - 8 + Thuật toán LZ78 0 occ cece eee eee ceeenneeeeveeueuueseeens 8

+Thuật toán LZW HS ve 11

S.Kt LUan eee cecccececcceeeeeeececeeeeeseeeeeseeeeeeeeeeeeeeeass 19

9.,Tài liệu tham khảo .-. -. - 21 2.Mục lục QQ nen 22

Trường Đựi Học Điện Lực Khoa Điện Tử Viễn T: hông Nhớm 10

Trang 4

| ời giới thiệu

Ngàu nau thông tín là một phan gan kết không thê thiếu của con người

trong cuộc song hiện đại việc trao đôi thông tín là công việc thường xuuên và được coi như là bình thường của mỖi chúng ta.C_ó rất nhiều hình thức thể hiện khác nhau của thông tín như âm thanh, hình ảnh,tiếng nóí,chữ viết và các loại kú tự C hinh vi vay ma cling nay sinh ra rất nhiều vẫn đề bức thiết xung quanh việc chuyén tai thông tín từ người nàu tới người khác cũng như đến vẫn đề lưu trữ bạn không thể bỏ 2o Gigabyte dung lugng 6 nhớ máu ví tính của bạn ra chỉ để lưu trữ và ghi nhớ một thông tin không quan trọng lắm, hoặc trong việc lưu trữ nó \/¡ dụ như dung lượng tập tín mà quá lớn nó sẽ ảnh hưởng vân đề trao đối thông tín bạn không thể chờ cả ngàu dé cap nhap một lượng tín quá lớn mà không cần thiết lắm cho cuộc sống của

ban.C hinh vi vậu mà người ta mới nghĩ ra một thuật toán mà làm thế nào đó để có thê giảm dung lượng thông tin cần trao đôi đó xuống nhằm mục đích đơn giản và thuận tiện hơn trong việc trao đôi và lưu trữ thông tin Dé giải quuêt vẫn đề đó, các thuật toán nén đã được ra đời

Ban đầu với phương pháp mã hóa loạt dai REC (Run | ength Coding),

phat hiện một loạt các bít lặp lại Day la phuong pháp đơn giản nhất

Nguuên tắc cơ bản của phương pháp nàu là phát hiện một kú tự có số lần xuất hiện liên tiếp vượt qua một ngưỡng cô định nào đó _] rong trường hợp nàu day sẽ được thau thế bằng 5 kú tự: Ky tự thứ nhất là kú tự đặc

biệt,thông báo day tiếp là day đặc biệt Ky tự thứ hai chỉ số lần lặp Ky tự thứ ba chỉ kú tự lap Nhu vay tu tưởng của phuong pháp nàu là thau thế một day bang một day khác ngắn hơn tuân theo một ngưỡng nào đó, và

thông thường ngưỡng có giá trị là +Kéế đến là phương pháp Fluffman, dựa

vào mô hình thong kê, tính tần suất xuất hiện của các kú tu, rồi gán cho các

Trường Đựi Học Điện Lực Khoa Điện Tử Viễn T: hông Nhớm 10

Trang 5

ky tự có tần suất cao một từ mã ngắn, các kú tự tần suất thập từ mã dài [hương pháp nàu phải lưu giữ lại bảng mã gan kèm cùng với dữ liệu nén Một phương pháp nén hoàn toàn khác là thuật toán nén dữ liệu theo từ

điền cơ sở: (Dictionary-based compression) (62 loai:

Ma 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 Ap dung kỹ thuật nàu như| Z77,LZR, L799, | ZƑ] nhưng trong nỘi dung bài báo cáo nàu, chúng ta chỉ đề cập đến hai thuật toán chình la:

+ | hudt Toán] /78 + Thuât toán | Z/\W

Nhin chung khong có phương pháp nén tong quat nao cho két qua la tốt

đối với tất cả các loại tập tín mà ta cần mã hóa cả.Năm 1985 Sperry nop một bằng sáng chế cho một thuật toán phát triển bởi | erry Welch, mét

nhân viên tại | rung tam nghién cứu Sperry Thuật toán nàu la bién thé

trên một kỹ thuật nén dữ liệu lần đầu tiên được đề xuất bởi Jakob Ziv va Abraham | empel năm ¡978 của Welch Kỹ thuật cua Welch la ca hai don gian hon va nhanh hon Ong đã xuất bản một bài báo trong van dé 19384

của Tap chi may tinh IF FF mo ta kỹ thuật Kỹ thuật nàu của erry Welch tré nén rat phô biến và được chấp nhận rộng rãi Đó chính là thuật toán mã hóa mà ngàu nau người ta gọi nó với cái tên là | empel-Ziv-Welch

Ƒla nội ngàu ï Ï tháng 9 nam 2012

C ác thành viền nhóm 1O

Trường Đựi Học Điện Lực Khoa Điện Tử Viễn T: hông Nhớm 10

Trang 6

I: TONG QUAN VE NEN GIU LIEU

I.1:Nén giữ liệu là gì?

Nén giữ liệu được định nghĩa đơn giản như sau: Nén đữ liệu là quá trình làm giảm lượng thông tin “dự thừa” trong dữ liệu gốc và do vậy, thông tin thu được sau nén thường nhỏ hơn dữ liệu gốc rất nhiễu

Ngoài thuật ngữ “nén dữ liệu ”, do bản chất của kỹ thuật này nó còn

có một số tên gọi khác như: giảm độ dự thừa, mã hóa ảnh gốc

1.2:Ty Số Nén ( Compression rate )

Compression rate được định nghĩa như sau: Tỷ số nén là tý lệ giữa kích thước file đã nén và kích thước file khi mà chưa nén + Công thức tỷ số nén như sau:

Compressed Size

Compression Ratio = P Uncompressed Size =

Chú thích: + Compression rate: Tỷ số nén

+Compressed Size: Kich cé file sau nén +Uncompressed Size :Kich cé file truéc nén +Don vi thuong ky hiéu là tỳ số ví dụ như 1/5 +Ví dụ ở đây ta có một file gốc kích thước 10M sau khi nén thì dung lượng giảm xuống còn 2M.Vậy rõ ràng Tỷ số nén ở đây là 2/10=1/5 Và thường được ký hiệu là tỷ lệ rõ ràng là 1/5

I3: Khoảng Tiết Kiệm Khong Gian (Space savings)

M@ Space savings: được định nghĩa như sau nó là sự giảm kích thước tương đối so với kích thước không nén, đơn vị ở đây được dùng là don v1 % +Công thức tính như sau Compressed Size Space Savings = 1 — = = Uncompressed Size

Chú thích: +Space Savings : Khoảng tiết kiệm không gian

+Compressed Size: Kich cỡ file sau nén +ƯUncompressed S1ze :Kích cỡ file trước nén +Đơn vị thường ký hiệu

+Ví dụ Ta có tỷ lệ nén là 1/5 thì sẽ mang lại một khoảng tiết kiệm không gian là 1 - 1/5 = 0.8, vậy sau khi nén ta tiết kiệm được 80% không gian bộ nhớ so với trước khi nén

Đối với các tín hiệu của kích thước không xác định, chẳng hạn như tuyén âm thanh và video, tỉ lệ nén được định nghĩa về tốc độ đữ

Trường Đựi Học Điện Lực Khoa Điện Tử Viễn T: hông Nhớm 10

Trang 7

liệu khi không nén và khi đã nén thay vì kích thước đữ liệu như tài liệu đã nêu ở trên Và thay vì tiết kiệm không gian, người ta nói về tốc

độ đữ liệu tiết kiệm, được định nghĩa là giảm tốc độ đữ liệu liên quan đến tốc độ đữ liệu không nén

+ Công thức tính trong trường hợp này sẽ là:

Compressed Data Rate

Compression Ratio =

Uncompressed Data Rate

Và Tỷ lệ tiết kiệm giữ liệu Data rate saving sẽ là:

Compressed Data Rate

Data Rate Savings = Ì —

= Uncompressed Data Rate Chu thich: + Compression ratio : Ty sé nén

+Compressed Data Rate : Toc d6 nén giữ liệu

+Uncompressed S1ze :Tôc độ khi chưa nén giữ liệu

+ Vĩ dụ, bài hát không nén ở định dạng CŨ có tốc độ đữ liệu 16 bit / kênh x

2 kénh x 44,1 kHz = 1,4 Mbit/s, trong khi AAC cac tap tin trén iPod thường

được nén đến 128 kbit/s, ty lé nang suất nén của 0,09, một khoản tiết kiệm

dit liéu toc độ 0,91, hoặc 91%

+ Khi tý lệ dữ liệu không nén được biết, ty lé nén co thé duoc suy ra tu tốc độ dữ liệu nén

H: CƠ SỞ CỦA MỘT SỐ PHƯƠNG PHÁP NÉN

Nguyên tắc của các chương trình nén nói chung giống nhau: Tận

dụng sự lặp lại của đữ liệu, các chuôi đữ liệu lặp lại được thay thê bởi

con trỏ chung có độ đài bé hon

Néớn nhằm mục đích giảm kích thước đữ liệu bằng cách loại bỏ dự thừa dữ liệu Việc xác định bản chất các kiểu dự thừa đữ liệu rất có

ích cho việc xảy dựng các phương pháp nén dữ liệu khác nhau Nói một cách khác, các phương pháp nén đữ liệu khác nhau là do sử dụng các kiểu dự thừa đữ liệu khác nhau.Người ta coi có 4 kiểu dự thừa giữ liệu và chính vì thế cũng có bốn phương pháp mã hóa cơ bản hiện nay đó là:

Trường Đựi Học Điện Lực Khoa Điện Tử Viễn T: hông Nhớm 10

Trang 8

LI.1:Phương pháp m4 hoa Huffman

Trong một dãy ký tự, có một số ký tự có tân suất xuất hiện nhiều hơn một số dãy khác Do vậy, ta có thê mã hoá dữ liệu một cách cô đọng hơn Các

dãy ký tự có tần xuất cao được thay bởi một từ mã nhị phân với số bít nhỏ;

ngược lại các dãy có tân xuất thấp sẽ được mã hoá bởi từ mã có nhiều bít

hơn Đây chính là bản chất của phương pháp mã hoá Huffman

LI.2: Phương pháp mã hoá Run Length Coding

Trong một số tình huống như trong ảnh, 1 ký hiệu (bít "0" hay bít "1") được lặp đi lặp lại một số lần Kỹ thuật nén dùng trong trường hợp này là thay dãy lặp đó bởi dãy mới gồm 2 thành phân: số lần lặp và kí hiệu dùng để mã Phương pháp mã hoá kiểu này có tên là mã hoá loạt dài RLC (Run Length Coding)

II3:Phương pháp mã hóa Lempel-Ziv Welch

Có thể có dãy ký hiệu nào đó xuất hiện với tần suất tương đỗi cao Do vậy, có thê mã hoá bởi ít bít hơn Đây là cơ sở của phương pháp mã hoá kiểu từ điển do Jacob Ziv và Abraham Lempel đề ra vào năm 1977-1978 và do đó có tên gọi là phương pháp nén LZ77, LZ7§ Năm 1984, Terry Welch đã cải tiến hiệu quả hơn và đặt tên là LZW (Lempel-Ziv- Welch).Do đó kỹ thuật

được cải thiện hơn và nhanh hơn H4: Phương pháp mã hoá dự đoán

Do sự phụ thuộc lẫn nhau của đữ liệu, đôi khi biết được ký hiệu (giá trỊ)

xuất hiện tại một vị trí, đồng thời có thể đoán trước sự xuất hiện của các giá

trị ở các vị trí khác nhau một cách phù hợp.Chắng hạn, ảnh biểu diễn trong

một lưới hai chiều, một số điểm ở hàng dọc trong một khối đữ lệu lại xuất

hiện trong cùng vị trí ở các hàng khác nhau.Do vậy, thay vì lưu trữ dữ liệu,

ta chỉ cần lưu trữ vị trí hàng và cột.Phương pháp nén dựa trên sự dư thừa này

gọi là phương pháp mã hoá dự đoán

Trường Đựi Học Điện Lực Khoa Điện Tử Viễn T: hông Nhớm 10

Trang 9

Ill: TONG QUAN VE LEMPEL-ZIV CODING

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 cum ki tự bang mot con trỏ, trỏ đến vị trí xuất hiện trước đó cha cum kí tự.LZW là mã hóa trong ho

LZ, hoan thién hon LZ77-LZ78 va dang được sử dụng phố biến hiện nay

LIL1: Lempel-Ziv (LZ)

Thuật toán L⁄⁄ (Lempel-Z1v): là thuật toán nén dữ liệu theo từ điên cơ so (Dictionary-based compression)

Được tính bằng tỷ số giữa tổng số bit cần nén 1 từ hay 1 văn bản (vd:mã ascci-7bit) và số bít sử dụng đề nén trong bộ từ điển đó Sử dụng một bảng chứa tất cả các chuỗi ký tự có thể xuất hiện trong

văn bản và được chứa trên cả bộ mã hóa và giải mã

Bộ mã hóa thay vì gửi các từ riêng lẻ, nó chỉ gửi chỉ số của từ được

lưu trong bảng Bộ giải mã sẽ truy cập vào báng xử lý để tái tạo lại

văn bản đó

Như các thuật toán tĩnh khác, thuật toán L⁄Z sử dụng Ì từ điển chung

cho cả mã hóa và giải mã

Một số gói xử lý từ có liên quan tới từ điển được sử dụng cho việc

kiêm tra chính tả và nén văn bán Thông thường trong khu vực gồm

khoảng 25000 từ, do đó cần đùng15 bit để mã hóa Vì vậy nếu dùng

thuật toán L⁄Z để nén từ “multimedia” ta sử dụng 15 bit Thay vì khi sử dụng mã ASCII (mỗi từ mã dùng 7 bit) ta sẽ phải sử dụng 70 bit — Compression ratio = 70/15 = 4.7:1

Những từ ngắn hơn sẽ có tỉ lệ nén nhỏ hơn so và những từ dài hơn sẽ có tỉ lệ nén lớn hơn

Thuật toán LZ được phát triển, là sử dụng một bộ từ điển động được

xây dựng trên cả bộ mã hóa và giải mã Do đó kích thước của từ điển sẽ được tôi ưu hơn so với từ điển tĩnh thông thường

III.2: Lempel-Ziv-Welch( LZW)

Phương pháp nén LZW được phát minh bởi Lempel - Zip va Welch Nó hoạt động đựa trên một ý tưởng rất đơn giản là người mã hoá và người giải mã cùng xây dựng bản mã

Trang 10

Chúng ta có thê thấy, các từ lưu trữ trong từ điển xuất hiện thường

xuyên trong văn bản thì mức độ nén cao hơn

IV: TU DIEN MA HOA (DICTIONNARY CODING)

Từ điển mã hóa( Dictionnary coding) gom có hai loại là từ điển tĩnh (static dictionary coding) va tu điển động (dynamic dictionary coding) hai loại từ điển này gộp chung lại và người ta gọi nó là từ điển cơ sở (Dictionary-based compression), hay hiểu một cách đơn giản từ điển cơ sở là loại từ điển mà bao gôm có hai phân kết hợp tạo thành là từ điển tĩnh và từ điển động IV.1: Statie coding : Dành cho các ứng dụng trong các văn bản biết được các đặc điểm của kí tự và tần suất xuất hiện của chúng Thay vì sử dụng các

từ mã có chiều dài cô định, ta sử dụng bộ từ mã tối ưu có chiều dài thay đôi

Từ mã ngắn nhất sử dụng đề biểu diễn cho văn bản

IV.2: Dynamic hodc adaptive coding : Dành cho các ứng dụng tông quát hơn trong các văn bản có thê bị chuyên từ dạng này sang dạng khác và bộ từ mã tôi ưu cũng thay đôi từ dạng này sang dạng khác

V:HO THUAT TOAN LEMPEL-ZIV

Co rat nhiéu thuat toản áp dụng kỹ thuật nay nhu LZ77, LZR, LZSS, LZH duoc mo ta trong hinh 1 L777 ¬< LZFG L2 LZSS | [ LZH | | LZB j ee LZW LZMW Applications: Applications: e zip e GIF e gzip e V.42 e Stacker e compress

Hình 1:Ho thuat toan Lempel-Ziv

Trong bài báo cáo này chúng ta chỉ đê cập đến hai thuật toán chính và được ứng dụng nhiêu trong thực tế hiện nay là:

Trường Đựi Học Điện Lực Khoa Điện Tử Viễn T: hông Nhớm 10

Trang 11

+Thuật Toán LZ76 + Thuật toán LZW

V.1: Thuật Toán LZ78

Nói chung thuật toán LZ78 là một thuật toán nén văn 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

Phương Pháp Nén: Thay vì thông báo vị trí đoạn văn lặp lại trong

quá khứ, mã L/Z78 đá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 :” aaabbabaabaaabab” Theo thuật toán LZ.78 thì chúng được phân đoạn như sau: Input A Aa b Ba baa baaa bab Doan 1 2 3 4 5 6 7 output 0+a l+a 0+b 3+a 4+a S+a 4+b

Bảng bÌ Mơ phỏng thuật toan LZ78 Bảng bl: Mô tả thuật toan LZ78

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)

- Thuật toán nén: Thuật toán nén bao bồm 3 bước

Bước 1: Đọc một ký tự -> ch, đoạn được gán bằng 1, kết nạp ký tự đó vào từ điên, w=ch;

Bước 2: While not eof() do

Trường Đựi Học Điện Lực Khoa Điện Tử Viễn T: hông Nhớm 10

Trang 12

Begin

Doc tiép ký tự tiếp theo w:= ww+ch; Ifw thuộc từ điển then ww:=w; Else begin Code(w.J); Ghi j và ch vào tệp nén Thêm w vào từ điển End; End; Bước 3: Dừng chương trình

- Thuật toán giải nén: Thuật toán giải nén cũng bao gồm 3 bước

Bước 1: Doc thong tin về từ điển đã được lưu trong tệp nén, tÌ:=false;

Trang 13

Else Begin WW:=S; End; End; Bước 3: Dừng chương trình V.2: Thuật Toán LZW

Thuật toán nén LZWW có các wu điểm là hệ số nén tương đối cao, trong tập tin nén không cân phải chứa bảng mã Nhược điểm của thuật toán này là

ton nhiễu bộ nhớ, khó thực hiện dựa trên các mang don giản (bé hơn 64KB)

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 dữ liệu Từ điển là tập hợp những cặp từ vựng và nghĩa của nó 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 đữ liệu, từ điển được xây dựng đông thời với

quá trình đọc đữ liệu sự có mặt của một chuỗi con trong từ điển khẳng định rằng chuỗi đó đã từng xuất hiện trong phan đữ liệu da doc Thudat toan lién tục “tra cứu ` và cập nhật từ điên sau môi lân đọc một ký tự đữ liệu đâu vào

Do kích thước bộ nhớ không phải vô hạn va dé dam bảo tốc độ tìm kiếm,

từ điển chỉ giới hạn 4096 ở phân tử dùng để lưu lớn nhất là 4096 giá trị của

các từ mã Như vậy độ dài lớn nhất cia tie ma la 12 bits (4096 = 212 ) Cau

trúc từ điển như sau 256 từ mã đấu tiên theo thứ tự từ 0 255 chứa các số

nguyen tur 0 255 Day la ma cua 256 ky tu co ban trong bang ma ASCIL Tv mã thứ 256 chứa một mã đặc biệt là “mã xoá” (CC- Clear Code) Mục đích

việc dùng mã xoá nhằm khắc phục tình trạng SỐ mẫu lặp trong ảnh lớn hơn 4096 Khi đó một ảnh được quan niệm là nhiều mảnh ảnh, và từ điển là một bộ từ điên gôm nhiễu từ điên con Cứ hêt một mảnh ảnh người ta lại gui mét

Trường Đựi Học Điện Lực Khoa Điện Tử Viễn T: hông Nhớm 10

Trang 14

mã xoá để báo hiệu kết thúc mảnh ảnh cũ, bắt đầu mảnh ảnh mới động thời

khởi tạo lại từ điển cho mảnh ảnh mới Mã xoá có giá trị là 256.Từ mã thứ

257 chứa mã kết thúc thông tin (EOI — End oƒ information) Mã này có giá trị là 257 Như chúng ta đã biết, một file ảnh GIF' có thể có chứa nhiễu ảnh Mỗi một ảnh sẽ được mã hoá riêng Chương trình giải mã sẽ 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 phan tử đấu tiên của từ điển biểu diễn bằng 9 bịt Các từ mã từ 512 đến

1023 biếu diễn bởi 10 bù, từ 1024 đến 2047 biếu diễn bởi I1 bit và từ 2048 đến 4095 biểu điễn bởi 12 bi 0 0 255 255 256 256| Clear Code 257 257| End of Information 258 Chuỗi mới 4095 Chuỗi mới

256:Mã xoá CC để khắc phục tình trạng mẫu lặp lớn hơn 4096, nếu mẫu lặp lớn

hơn 4096 thì gởi CC để xây dựng từ điển cho phần tiếp theo Eoi: Báo hiệu hết một phần nén

Nguyên Tắc Hoạt Động LZW

Nguyên tắc hoạt động của nó như sau:

- _ Một xâu kí tự là một tập hợp từ hai kí tự trở lên

Trường Đựi Học Điện Lực Khoa Điện Tử Viễn T: hông Nhớm 10

Trang 15

- Nhé tat cd cdc x4u ki ty di gap va gan cho né mot dau hiéu (token)

riêng

- Nếu lần sau gặp lại xâu kí tự đó, xâu kí tự sẽ được thay thế bằng dẫu hiệu của nó

Phần quan trọng nhất của phương pháp nén này là phải tạo một máng rất lớn dùng đề lưu giữ các xâu kí tự đã gặp (Máng này được gọi là "Từ điển")

Khi các byte đữ liệu cần nén được đem đến, chúng liền được giữ lại trong một bộ đệm chứa (Accumulator) và đem so sánh với các chuỗi đã có trong "từ điển" Nếu chuỗi dữ liệu trong bộ đệm chứa không có trong "từ điển" thì nó được bô sung thêm vào "từ điển" và chỉ số của chuỗi ở trong "từ điển" chính là dấu hiệu của chuỗi Nếu chuỗi trong bộ đệm chứa đã có trong "từ điển" thì dẫu hiệu của chuỗi được đem ra thay cho chuỗi ở dòng đữ liệu ra

Có bốn qui tắc đề thực hiên việc nén đữ liệu theo thuật toán LZW là:

Qui tắc 1: 256 đấu hiệu đầu tiên được dành cho các kí tự đơn (0 - 0ffh)

Qui tắc 2: Cố gang so sánh với "từ điển" khi trong bộ đệm chứa đã có

nhiều hơn hai kí tự

Qui tắc 3: Các kí tự ở đầu vào (Nhận từ tập tin sẽ được nén) được bổ

sung vào bộ đệm chứa đến khi chuỗi kí tự trong bộ đệm chứa không có trong

"từ điển",

Qui tắc 4: Khi bộ đệm chứa có một chuỗi mà trong "từ điển" không có thì chuỗi trong bộ đệm chứa được đem vào "từ điển" Kí tự cuỗi củng của chuỗi kí tự trong bộ đệm chứa phải ở lại trong bộ đệm chứa dé tiép tuc tao thanh chuỗi mới

)>- Các bước thực hiện thuật toán Quá trình nén:

LZW bắt đầu bởi 1 từ điển 256 kí tự (trong trường hợp sử dụng bảng mã

8 bits) và sử dụng chúng như tập kí tự chuẩn Sau đó mỗi lần đọc nó doc 8

Trường Đựi Học Điện Lực Khoa Điện Tử Viễn T: hông Nhớm 10

Trang 16

bits (vi du 't', 'r', .) và mã hóa thành con sô tương ứng với chỉ mục của kí tự đó trong từ điển Mỗi khi LZW đi qua 1 chuỗi con mới (giả sử "tr") thì nó thêm chuỗi con đó vào từ điển

Mỗi khi nó đi qua I chuỗi con mà nó đã thấy trước đó, nó chỉ đọc thêm 1 kí tự mới nữa và cộng với chuỗi con đã biết để tạo ra I chuỗi con mới Lần

tiếp theo LZW bắt gặp một chuỗi con đã có, nó chỉ có việc sử dụng số chỉ

mục tương ứng trong từ điền

Thường thì người ta sẽ định sẵn số lượng lớn nhất các từ trong từ điển (giả

sử 4096), vì thế việc nén LZW không làm tiêu tốn hết toàn bộ bộ nhớ Vì

vậy mã của các chuỗi con trong ví dụ này là 12 bits (2 ^ 12 = 4096) Cân

thiết phải lập ma dai hon sé bits cua mét ki ty (12 vs 8 bits), do do khi rat

nhiều chuỗi con lặp lại sẽ được thay thế bởi một mã duy nhất thì việc nén được thực hiện “ Vi du 1: Các bước để mã hoá chuỗi "!'BAN!BA!BAA!BAR'!" như Sau : - Bước 1: Kí tự thứ nhất “!° được cất vào bộ đệm chứa đề chuẩn bị tạo nên một chuôi

- Bước 2: Kí tự thứ hai “B' nỗi thêm vào sau kí tự ! Vì trong "từ điển" chưa

có chuỗi "!B" nên chuỗi này được thêm vào "từ điển" và được gán dẫu hiệu là 100h (Vì từ 000h đến 0ffh được dành riêng cho các kí tự đơn: Qui tắc 1)

“sy?

được gửi ra còn “B' phải ở lại trong bộ đệm chứa

- Bước 3: Kí tự thứ ba “Aˆ thêm vào sau “Bˆ Chuỗi "BA" cũng chưa có

trong "từ điển" nên nó được thêm vào "từ điển" và gán dấu hiệu là 101h ‘A’

ở lại trong bộ đệm chứa còn “B' được gửi ra

- Bước 4: Kí tự thứ tư “N'ˆ thêm vào sau “A” tạo thành chuỗi "AN" cũng chưa

có trong "từ điển" nên được thêm vào "từ điển" và có dâu hiệu là 102h “N'? ở lại trong bộ đệm chứa còn “A"ˆ được gửi ra

Trường Đựi Học Điện Lực Khoa Điện Tử Viễn T: hông Nhớm 10

Trang 17

- Bước 5: Kí tự thứ năm ‘!’ thêm vào sau ‘N’ để tạo thành chuỗi "N!", "N!" được thêm vào "từ điển" với dẫu hiệu là 103h “!? ở lại còn “N' được gui ra

- Bude 6: Ki tu thir s4u ‘B’ thém vào sau “!° Lần này thì chuỗi "B!" đã có

trong "từ điển" nên không có kí tự nào được gửi ra "B!" tiếp tục ở lại trong "từ điển" để tạo ra chuỗi mới

- Bước 7: Kí tự thứ bảy “A"” thêm vào sau “B' để tạo thành chuỗi "B!A", do

"B!IA" không có trong "từ điển" nên nó được thêm vào "từ điển" và gán dấu hiệu là 104h đồng thời dấu hiệu 100h được gửi ra thay cho "B!" (Qui tắc 4)

A tiép tục ở lại trong bộ đệm chứa để tạo thành chuỗi mới

Các bước trên cứ thế tiếp tục cho đến khi hết tập tin cần nén Việc giảm kích thước chỉ thực sự bắt đầu tại bước 7 khi mà một dấu hiệu 12 bits là

<100h> được gửi ra thay cho hai byte "B!" Các bước được mô tả rõ hơn trong bảng 5.I dưới đây

Trang 18

10 11 1= LS Le 15 16 17 18 19 +0 IB 4 _ IBA h <104h> 106h=!84A, &, Ị - - oi! B <105h> LO7hH=AIB B & | - = BA R <101Lh> L1OSh=BAR E ! R 109h=R! Ị B = = IB & - - IBA T <104h> LO4h=!BAT ¬ š T $

Bảng 5.I: Các bước thực hiện thuật toán LZW

s%* Ví dụ 2: Các bước để mã hoá chuỗi "ABCBCABCABCD" như SaU:

Các bước thực hiện

cho

Buoc 1: w= NIL;

Bước 2: Trong khi đọc được ký tự thứ k trong chuỗi: Bước 3: Nếu wk đã tôn tại trong từ điển thì w=wk

Trang 19

2 B C BC BC 259 66 3 C B CB CB 260 67 4 B C BC 5 BC A BCA BCA 261 259 6 A B AB 7 AB C ABC ABC 262 258 8 C A CA CA 263 67 9 A B AB 10 AB C ABC II AB D ABC ABC 264 262 C D D 12 D Nil D 68

Bang 5.2: Các bước thực hiện mã hoá chuỗi "ABCBCABCABCD" Chuỗi ra: 65- 66- 67- 259 -258- 67 (output)

e_ Đầu vào kích thước: 12 x 8= 96 bits

e Dau ra kich thudc la: 5 x 8+ 3 x 9 = 67 bits

e Ti lé nén la: 96 /67 =1.43

Trong thuật toán nén này, phân lớn thời gian khi bắt đầu nén chủ yếu mat

2 Ad!"

vào việc tạo "từ dién" Khi "tu dién" du lon, xac suat gap chudi 6 bd dém

chứa trong "từ điên” tăng lên và càng nén được nhiêu hơn Một điêu cân chú

Trường Đựi Học Điện Lực Khoa Điện Tử Viễn T: hông Nhớm 10

Trang 20

ý ở đây là mỗi một dấu hiệu, ta phải lưu một chuỗi trong "từ điển" để so

sánh Vì dẫu hiệu được biểu diễn băng một số 12 bits nên "từ điển" sẽ có 4096 lỗi vào, khi tăng số bit dé biếu diễn dấu hiệu lên thì hiệu quả nén sẽ tốt

hơn nhưng lại bị giới hạn bởi bộ nhớ của máy tính Vì dụ, khi dùng 16 bits

để biểu diễn một dấu hiệu thì "từ điển" phải có đến 65536 lối vào, nếu mỗi

lỗi vào có khoảng 20 kí tự thì "từ điển" phải lớn khoảng 1,2 MB Với một từ điển có dung lượng như vậy rất khó có thể thực hiện trên các máy tính PC hoạt động dưới hệ điều hành DOS vì giới hạn của một đoạn (Segment) là

64KB Ưu điểm của phương pháp nén LZW là bên nhận có thê tự xây dựng

bảng mã mà không cần bên gửi phải gửi kèm theo bản tin nén ï Quá trình giải nén LZW,

Quá trình giải nén LZW cũng không có gì phức tạp Thêm vào đó nó có nhiều lợi thế hơn so với các phương thức nén tĩnh vì không cần một từ điển hay những thông tin tạp phí cần thiết cho quá trình thuật giải nén Một từ

điển mới đồng nhất với từ điển gốc đã tạo trong khi nén được tái tạo lại

trong quá trình giải nén này.Quá trình mã hóa và giải mã cần phải sử dụng cùng 1 từ điển khởi đầu, trong trường hợp này là 256 kí tự của bảng mã ASCII Sau đây là cơ chế nó hoạt động Bộ giải mã LZW trước hết đọc một chỉ mục (là 1 số nguyên), tìm chỉ mục đó trong từ điển, và cho ra chuỗi con

gan với chỉ mục đó Kí tự đầu tiên của chuỗi con này được cộng thêm vào chuỗi dang lam viéc Chuỗi mới tạo ra được thêm vào từ điển (hoàn toàn

giống với quá trình nén) Chuỗi đã được giải mã lại trở thành chuỗi đang làm việc và cứ thế quá trình này được tiếp tục

Ưu điểm, nhược điểm của phương pháp mã hoá LZW

o Uudiém:

"Thuật toán nén LZW có các ưu điêm là hệ sô nén tương đôi cao, trong tập tin nén không cân phải chứa bảng mã

Trường Đựi Học Điện Lực Khoa Điện Tử Viễn T: hông Nhớm 10

Trang 21

= Bén nh4n cé thé tu x4y dung bang mã mà không cần bên gửi phải gửi kèm theo bản tin nén

"Thuật toán LZW đã khắc phục được sự lãng phí về bộ nhớ mà các thuật toán trước không tận dụng được hết Đồng thời khắc phục được sự cứng nhắc của thuật toán nén, góp phần làm

thuật toán nén trở nên mềm dẻo hơn, có sức hấp dẫn hơn đối

VỚI người sử dụng

o Nhược điểm:

= Nhuoc điểm của thuật toán này là tốn nhiều bộ nhớ, khó thực hiện dựa trên các mảng đơn giản (bé hơn 64KB)

Trường Đựi Học Điện Lực Khoa Điện Tử Viễn T: hông Nhớm 10

Trang 22

VI KET LUAN

| rong giới hạn tìm hiểu nén dữ liệu dưới dạng một bản tín em nhận thấu các phương pháp nén được dùng phô biến trên có những đặc điểm đáng

chú Ú: thuật toán nén độ dài loạt (Kunlength) không thê ap dung cho nhiéu

loai tap tín được, ví dụ như tập tín chương trình, tập tin cơ sở dữ liệu vì ở đó

các loạt chạu la rat ngắn, do dé néu ap dụng thuật tốn nàu khơng những

khơng làm bé tập tín mà còn làm phình to chúng C ác thuật toán còn lại

(luffman, Shannon-Ƒ ano,| Z 78 và | ZW) déu CÓ thể ap dung được dé

nén nhiéu loai tap tin trên các máu ví tính J huật toán OShanon có hệ 56 nén khá thap va yéu cầu khá phức tạp nên hiểm khí được sử dụng "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âu dựng dựa trên các mảng bá hơn ó4+K.Ƒb Nhược điểm của nó là phải chứa cả bang ma vao tap tin nén thi phia nhận mới có thể giải mã được do đó hiệu suất nén chỉ cao khí ta thực hiện nén các tập tín lớn | huật toán nén | ZÂW có các ưu điểm là hệ số nén tương đối cao, trong tập tín nén không cần phải chứa bảng mã

Nhược điểm của thuật toán nàu là tốn nhiều bộ nhớ, khó thực hiện dựa trên các mảng đơn giản (E4 hơn 6ó+K ƑŠ) Ƒ ừ các ưu và nhược điểm trén, Fim chọn thuật toán nén | ZWN có các ưu điểm là hệ số nén tương đối cao, trong tập tín nén không cần phải chứa bảng mã Nhược điểm của thuật toán nàu là tốn nhiều bộ nhớ, khó thực hiện dựa trên các mảng đơn giản (E4 hơn

ó+KP) Bai báo cáo của chúng em còn sơ sài và có nhiều thiếu sót, do

Trường Đựi Học Điện Lực Khoa Điện Tử Viễn T: hông Nhớm 10

Trang 23

nhiéu nguuên nhân khách quan và chủ quan Như trong quá trình làm bài

chúng em có tham khảo một số tài liệu tiếng anh nên việc đọc hiểu và dịch còn nhiều hạn chế,cho nên bài báo cáo nàu chắc chắn là không thê đầu đủ

được chúng em rất mong cô cho Ú kiến và bỗ sung thêm những phan chúng

2 norngay 20 thang 9 nam 2O/ 2

Trường Đựi Học Điện Lực Khoa Điện Tử Viễn T: hông Nhớm 10

Trang 24

Tài Liệu Tham khảo

[1] Applied Coding and Information Theory for Engineers text book by Richard B Wells [2] http://en.wikipedia.org/wiki/LZW [3] http://marknelson.us/1989/10/01/lzw-data-compression/ [4] http://www.answers.com/topic/data-compression [5] http://www.prepressure.com/library/compression_algorithms/Izw [6] http://en.wikipedia.org/wiki/Data_compression_ratio [7] The Lempel Ziv Algorithm, Christina Zeeh ,Seminar ’Famous Algorithms” January 16, 2003

[8] Project Report on Lempel Ziv compression technique Tu King Fahd University Of Petroleum & Minerals

° Ngoài ra còn một sô nguôn trên 1 sô blog cá nhân, một sô bài báo

cáo của các bạn sinh viên của các trường đại học khác như Đại học

Thái nguyên, học viện công nghệ bưu chính viên thông

Trường Đựi Học Điện Lực Khoa Điện Tử Viễn T: hông Nhớm 10

Ngày đăng: 02/12/2017, 17:52