Kỹ thuật nén dữ liệu Huffman

Một phần của tài liệu Nghiên cứu thuật toán ẩn thông tin trên ảnh số bằng kỹ thuật hoán vị hệ số và ứng dụng trong bảo mật dữ liệu (Trang 52 - 53)

5. Phƣơng pháp nghiên cứu

2.4.2Kỹ thuật nén dữ liệu Huffman

Nén Huffman là phƣơng pháp mã hóa bằng mã có độ dài thay đổi (variable length encoding) trong đó chỉ sử dụng vài bit để biểu diễn 1 ký tự và độ dài mã bit cho các ký tự không giống nhau (ký tự xuất hiện nhiều lần đƣợc biểu diễn bằng mã ngắn và ngƣợc lại).

Ý tƣởng của thuật toán Huffman là xét các chữ cái có tần số xuất hiện nhiều hơn sẽ có độ dài từ mã ngắn hơn, các chữ cái xuất hiện ít hơn sẽ có độ dài từ mã dài hơn. Do đó tổng số bit của dữ liệu nén đƣợc sẽ giảm đáng kể so

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

với dữ liệu nguồn. Để thực hiện đƣợc thuật toán Huffman ta cần tình tần xuất xuất hiện của các ký tự, sau đó xây dựng cây Huffman. Từ cây Huffman này ta có thể xây dựng các từ mã.

Thuật toán nén theo Huffman:

Bƣớc 1: Đọc từng ký tự ở tệp nguồn.

Bƣớc 2: Tìm ký tự đó ở nút lá của cây nhị phân

Bƣớc 3: Duyệt từ nút lá đến nút gốc, trên đƣờng đi thu nhận các bit 0 hoặc 1, ta đƣợc chuỗi bit của từng ký tự.

Bƣớc 4: Đảo lại vị trí các bit của chuỗi ký tự thu đƣợc và bổ sung vào vùng đệm (nếu số bit ở vùng đệm lớn hơn hoặc bằng 8 bit ta ghi ký tự thu đƣợc vào tệp đích)

Bƣớc 5: Lặp lại các bƣớc trên cho đến khi hết ký tự ở tệp nguồn.

Thuật toán giải mã Huffman:

Bƣớc 1: Đọc từng ký tự ở tệp nguồn

Bƣớc 2: Duyệt từ gốc của cây tới nút lá căn cứ vào giá trị bit đọc đƣợc từ ký tự (nếu bit có trị 1 ta duyệt tiếp con bên phải, nếu bit có trị 0 ta duyệt tiếp con bên trái)

Bƣớc 3: Ghi giá trị nút lá vào tệp đích

Bƣớc 4: Lặp lại các bƣớc trên cho tới khi hết tệp nguồn.

Một phần của tài liệu Nghiên cứu thuật toán ẩn thông tin trên ảnh số bằng kỹ thuật hoán vị hệ số và ứng dụng trong bảo mật dữ liệu (Trang 52 - 53)