Tải bản đầy đủ

đa phương tiện nén ảnh LZW

Kính chào thầy cô và các bạn!

LZW

Thuyết trình:
Đinh Thị Ngọc Trâm

Mã hóa từ điển


Nội dung trình bày

I. Khái niệm

II. Phương pháp nén, giải nén

III. Kết luận

LZW



LZW
LZW là một phương pháp nén được phát minh bởi Lempel - Zip và Welch



 Nó hoạt động dự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ảng mã



Bảng mã này không cần được lưu kèm với dữ liệu trong quá trình nén, mà khi giải 
nén, người giải nén sẽ xây dựng lại nó.

Mã hóa từ điển


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.
Nhớ tất cả các xâu kí tự đã gặp và gán cho nó một dấu 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ó.

Mã hóa từ điển


QUY TẮC ĐỂ THỰC HIỆN VIỆC NÉN DỮ LIỆU THEO THUẬT TOÁN LZW 





Quy tắc 1: 256 dấu hiệu đầu tiên được dành cho các kí tự đơn (0 - 0ffh).
Quy tắc 2: Cố gắng so sánh với "từ điển" khi trong bộ đệm chứa đã có nhiều hơn hai kí tự.
Quy 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".



Quy 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 để tiếp tục tạo thành chuỗi mới.


Ví dụ: Các bước để mã hoá chuỗi "BANANABAN" 

Dữ liệu ra
STT

Bộ đệm

Dữ liệu vào

Từ điển
Kí tự

Code

1

-

B

2

B

A

B

42H

BA = 256H

A

N

A

41H

AN=257H

N

A

4EH

NA=258H

3

4

5

A

N

6

AN

A

-

-

N

-

-

AN

257H

-

-

ANA=259H


Ví dụ: Các bước để mã hoá chuỗi "BANANABAN" 

42H - 41H - 4EH - 257H - 41H - 256H - 4EH


Giải nén

Quá trình mã hóa và giải mã cần phải sử dụ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

Nguyên tắc

Trước hết bộ giải mã LZW đọc 1 chỉ mục , tìm chỉ mục đó trong từ điển và cho ra chuỗi con gắn 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 đang làm 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.


42H - 41H - 4EH - 257H - 41H - 256H - 4EH

STT

1

2

3

4

Bộ đệm
Code

-

Kí tự

-

Dữ liệu vào

42H

42H

B

41H

41H

  A

4EH

4EH

N

5

257H

AN

6

41H

A

257H

41H

256H

Dữ liệu ra

B

Từ điển

-

256H=BA

    A

N

257H=AN

AN

258H=NA

A

259H=ANA

BA

260H=AB


BANANABAN


Ngoại lệ :

Khi đoạn mã gọi đến một chỉ mục chưa được thêm vào trong từ điển ( ví dụ gọi đến mục nào
đó trong khi mục đó vẫn đang được xử lí và vẫn chưa thêm vào từ điển).

Ví dụ:


Mã hóa chuỗi : ABABABABAB
Dữ liệu ra
STT

Bộ đệm

Dữ liệu vào

Từ điển
Kí tự

Code

1

-

A

-

-

-

2

A

B

A

41H

AB=256H

3

B

A

B

42H

BA=257H

4

A

B

-

-

5

AB

A

AB

256H

(ĐÃ CÓ)
ABA=258H
-

6

A

B

-

-

7

AB

A

-

-

(ĐÃ CÓ)

8

ABA

B

ABA

258H

ABAB=259H

(đã có)


Kết luận

Ưu điểm:
Hệ số nén tương đối cao, trong tập tin nén không phải chứa bảng mã

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

Nhược điểm:
Tốn nhiều bộ nhớ, khó thực hiện trên các mảng đơn giản bé



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay

×