1 Ch−ơng I: Tổng quan về nén
1.2.3. Mã độ dài thay đổi VLC (variable length coding) (mã Huffman):
Huffman):
Trong các công nghệ nén, mã Huffman là dạng mã đ−ợc sử dụng phổ biến nhất. Bảng mã Huffman có thể cho độ dài mã trung bình để mã hoá cho một mẫu là nhỏ nhất do tận dụng xác suất xuất suất hiện của các mẫu trong nguồn tín hiệu. Trong đó, mẫu có xác suất xuất hiện cao nhất sẽ đ−ợc gắn với một từ mã có độ dài ngắn nhất.
Mặc dù có độ dài mã thay đổi song mã Huffman vẫn có khả năng giải mã đúng do có thuộc tính tiền tố duy nhất (không có bất cứ từ mã nào lại là phần đầu của từ mã tiếp theo).
Để xây dựng cây mã Huffman gồm các b−ớc sau:
♦ B−ớc 1: Hai nút tự do với trọng l−ợng thấp nhất đ−ợc định vị.
♦ B−ớc 2: Nút cha cho hai nút này đ−ợc thiết lập. Nó có trọng l−ợng bằng tổng trọng l−ợng của hai nút con.
♦ B−ớc 3: Nút cha đ−ợc liệt kê vào danh sách các nút tự do và hai nút con đ−ợc xoá khỏi danh sách.
♦ B−ớc 4: Một trong hai nút con đ−ợc ký hiệu nh− đ−ờng dẫn từ nút cha và mã hoá bit “0”. Nút còn lại có thuộc tính thiết lập là bít “1”.
♦ Các b−ớc đ−ợc lặp lại cho đến khi chỉ còn lại một nút tự do. Nút này đ−ợc đánh dấu là gốc của cây.
Ph−ơng pháp mã hoá thống kê Huffman sẽ trở nên nặng nề khi số tin của nguồn quá lớn. Trong tr−ờng hợp này ng−ời ta dùng một biện pháp phụ để giảm nhẹ công việc mã hoá. Tr−ớc tiên liệt kê các tin của nguồn theo thứ tự xác suát giảm dần, Sau đó ghép thành tùng nhóm tin có tổng xác suất gần bằng nhau. Dùng một mã đều để mã hoá các tin trong cùng một nhóm. Sau đó xem các nhóm tin nh−
một khối tin và dùng ph−ơng pháp Huffman để mã hoá các khối tin. Từ mã cuối cùng t−ơng ứng với mỗi tin của nguồn gồm hai phần: một phần là mã Huffman và một phần là mã đều.
Xét ví dụ thiết lập cây mã Huffman cho một nguồn tin chứa các mẫu : {s0, s1, ..,s7} với xác suất xuất hiện lần l−ợt là :
p(si) = {0,1;0,19;0,21;0,3;0,05;0,05;0,07;0,03}. Cây mã Huffman xây dựng cho nguồn tin này nh− sau:
Mặc dù mã Huffman hiệu quả nh−ng chúng ta phải hiểu rằng mã hoá Huffman chỉ tối −u khi đã biết tr−ớc xác suất của mã nguồn và mỗi biểu tr−ng của mã nguồn đ−ợc mã hoá bằng một số bit nguyên.
Đặc biệt mã hoá Huffman đ−ợc phát triển cho ảnh số nh−ng áp dụng cho rất nhiều loại ảnh, mỗi ảnh có xác suất xuất hiện biểu tr−ng của riêng nó. Do đó mã Huffman không phải là tối −u cho bất cứ loại ảnh đặc biệt nào.