Mã hóa Shannon-Fano

Một phần của tài liệu BÀI GIẢNG XỬ LÝ ÂM THANH VÀ HÌNH ẢNH docx (Trang 97 - 100)

Thuật toán Shannon-Fano phát triển độc lập bởi Shannon ở Bell Labs và Robert Fano tại MIT. Để minh họa thuật toán, chúng ta giả sử các ký hiệu được mã hoá là các ký tự trong từ HELLO. Tần xuất xuất hiện của các ký tự là:

92

Các ký hiệu H E L O

Tần xuất xuất hiện 1 1 2 1

Các bước của thuật toán mã hóa Shannon-Fano có thểđược trình bày theo cách từ

trên xuống:

1. Phân loại các ký hiệu theo tần xuất xuất hiện của chúng

2. Phân chia theo đệ quy các ký hiệu thành hai phần, với mỗi khoảng cùng số lượng của số lần xuất hiện, cho đến khi tất cả các phần có chứa chỉ có một ký hiệu.

Một cách tự nhiên của việc thực hiện các thủ tục trên là xây dựng một cây nhị

phân. Theo quy ước, chúng ta gán bit 0 cho nhánh trái của nó và bit 1 cho các nhánh phải.

Hình 3.40: Cây mã hóa cho từ HELLO bởi thuật toán Shannon-Fano

Ban đầu, các ký hiệu được sắp xếp là LHEO. Hình 3.40 cho thấy, việc chia đầu tiên tạo ra làm 2 phần: (a) L với tần suất xuất hiện là 2, ký hiệu là L: (2) ; và (b) H, E và O với tổng số lần xuất hiện là 3, ký hiệu là H, E, O: (3). Lần phân chia thứ hai sinh ra H: (1) và E, O: (2) và lần phân chia cuối cùng là E: (l) và O: (1).

Bảng 3.3 tóm tắt kết quả, hiển thị mỗi ký hiệu, tần xuất xuất hiện của chúng, nội

dung thông tin ( 1

2

lo g

i

p ), từ mã kết quả, và số bit cần thiết để mã hóa cho mỗi ký hiệu trong từ HELLO. Tổng số bit sử dụng được hiển thị ở phía dưới và entropy trong trường hợp này được tính:

93 = 0.4 x 1.32 + 0.2 x 2.32 + 0.2 x 2.32 + 0.2 x 2.32 = 1.92 = 0.4 x 1.32 + 0.2 x 2.32 + 0.2 x 2.32 + 0.2 x 2.32 = 1.92 Symbol Count 1 2 log i i p p Code Số bít được dùng L 2 1.32 0 2 H 1 2.32 10 2 E 1 2.32 110 3 O 1 2.32 111 3 Tổng số bít 10

Bng 3.3: Kết quả thực hiện bởi thuật toán Shannon-Fano cho từ HELLO.

Điều này cho thấy số bit trung bình tối thiểu của để mã mỗi ký hiệu trong từ

HELLO là 1,92. Trong ví dụ này, các thuật toán Shannon-Fano sử dụng một giá trị trung bình là 10 / 5 = 2 bit để mã mỗi ký tự, khá gần với giới hạn thấp là1,92. Rõ ràng, kết quả

là thỏa đáng.

Lưu ý rằng kết quả của thuật toán Shannon-Fano không nhất thiết là duy nhất. Ví dụ, nếu cách chia đầu tiên trong ví dụ trên thành hai phần L, H: (3) và E, 0: (2). Điều này sẽ cho kết quả mã hóa ở hình 3.41. Bảng 3.4 cho thấy các từ mã thu được khác với trước (Bảng 3.3). Các thuật toán Shannon-Fano đạt yêu cầu mã hóa cho nén dữ liệu, nhưng việc nén này sẽđược thực hiện tốt hơn bởi phương pháp mã hóa Huffman.

Hình 3.41: Một dạng cây mã hóa khác cho từ HELLO theo thuật toán Shannon-Fano

Symbol Count 1

2log log

i i p

p Code Số lượng bit dùng

L 2 1.32 00 4

H 1 2.32 01 2 (adsbygoogle = window.adsbygoogle || []).push({});

E 1 2.32 10 2

0 1 2.32 11 2

Tổng số bít: 10

94

Một phần của tài liệu BÀI GIẢNG XỬ LÝ ÂM THANH VÀ HÌNH ẢNH docx (Trang 97 - 100)