Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 21 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
21
Dung lượng
85,79 KB
Nội dung
Các kỹ tḥt nén sớ liệu Huffman • Ngun lý : • Nguyên lý phương pháp Huffman mã hóa bytes tệp liệu nguồn bàng biến nhị phân Nó tạo mã độ dài biến thiên tập hợp bits Đây phương pháp nén kiểu thống kê, ký tự xuất nhiều có mã ngắn Huffman • Thuật tốn nén Bước Tìm hai ký tự có trọng số nhỏ ghép lại thành một, trọng số ký tự mới tông trọng số hai ký tự đem ghép Bước Trong số lượng ký tự danh sách cịn lớn thực bước một, khơng thực bước ba Bước Tách ký tự cuối tạo nhị phân với quy ước bên trái mã 0, bên phải mã Huffman Thuật toán giải nén : Bước Đọc tùng bit tập tin nén duyệt nhị phân xác định hết Lấy ký tự ớ ghi tệp giải nén Bước Trong chưa hết tập tin nén thực bước một, ngược lại thực Bước Kết thúc thuật tốn Huffman • Ưu điểm : • Thuật tốn Huffman có ưu điểm hệ số nén tương đối cao, phương pháp thực tương đối đơn giản, địi hỏi nhớ, xây dựng dựa mảng bé 64KB Huffman • Nhược điểm : • Mã Huffman thực biết tần suất xuất ký • Mã Huffman giải độ dư thừa phân bố ký tự • Huffman tĩnh đòi hỏi phải xây dựng nhị phân sẵn chứa khả Điều địi hỏi thời gian khơng ta trước kiểu dừ liệu sê thực nén • Q trình giải nén phức tạp chiều dài mã trước ký tự tìm Run - Length • Nguyên lý : • Loại dư thừa đơn giản tập tin đường chạy dài gồm kí tự lặp lại, điều thường thấy tập tin đồ hoạ bitmap, vùng dừ liệu tập tin chương trình, số tập tin văn Run - Length • AAAABBBAABBBBBCCCCCCCCDABCBAAABBBBCCCD • Chuồi mã hố cách đọng cách thay chuồi kí tự lặp lại bàng thể kí tự lặp lại với biến đếm số lần kí tự lặp lại Ta muốn nói ràng chuỗi gồm bốn chữ A theo sau ba chữ B lại theo sau hai chữ A, lại theo sau năm chữ B Việc nén chuỗi theo phương pháp gọi mã hố độ dài loạt Khi có loạt dài, việc tiết kiệm đáng kể Có nhiều cách để thực ý tưởng này, tuỳ thuộc vào đặc trưng ứng dụng (các loạt chạy có khuynh hướng tương đổi dài hay khơng Có bit dùng để mã hố kí tự mã ?) Run - Length • Nếu ta biết ràng chuỗi chứa chữ cái, ta mã hố biến đếm cách đơn giản bàng cách xen kẻ số với chữ Vì chuồi kí tự mã hố lại sau: 4A3BAA5B8CDABCB3A4B3CD • Ở "4A" có nghĩa "bốn chữ A" Chú ý khơng đáng đê mã hố loạt chạy có độ dài cần đến hai kí tự đế mã hố Run - Length • Đối với tập tin nhị phân phiên tinh chế phương pháp dùng đế thu tiết kiệm đáng kế Ý tưởng lun lại độ dài loạt, tận dụng kiện loạt chạy thay đổi để tránh phái lun số Điều giả định ràng có vài loạt chạy ngắn (Ta tiết kiệm bit loạt chạy độ dài đường chạy lớn so bit cần đổ biễu diễn dạng nhị phân), khó có phương pháp mã hố độ dài loạt hoạt động thật tốt hầu hết loạt chạy dài Run - Length • Việc mã hoá độ dài loạt cần đến biễu diễn riêng biệt cho tập tin cho mã hố nó, khơng thể dùng cho tập tin, điều hồn tồn bất lợi, ví dụ, phương pháp nén tập tin kí tự đề nghị khơng dùng đối với chuồi kí tự có chứa số Neu kí tụ- khác sử dụng đê mã hố số đếm, khơng làm việc với chuỗi chứa kí tự Giả sử ta phải mã hố kí tự từ bảng chữ cố định cách dùng kí tự từ bảng chừ Để minh hoạ, giả sử ta phải mã hoá chuỗi từ chừ đó, ta giả định ràng ta có 26 chữ bảng chừ (và khoảng trống) để làm việc Run - Length • Để dùng vài chữ đổ biểu diễn số kí tự khác biểu diễn phần tử chuồi mã hố, ta phải chọn kí tự gọi kí tự "Escape" Mồi xuất kí tự báo hiệu hai chừ sê tạo thành cặp (số đếm, kí tự) với số đếm biểu diễn cách dùng kí tự thứ i bảng chừ để biểu diễn số i Vì vậy, chuỗi ví dụ biểu diễn sau với Q xem kí tự Run - Length • Escape"QDABBBAABQHCDABCBAAAQDBCCCD • Tơ hợp kí tự "Escape", số đếm kí tự lặp lại gọi dãy Escape Chú ý khơng đáng đế mã hố đường chạy có chiều dài bốn kí tự, cần đến ba kí tự đế mã hố loạt chạy • Trong trường hợp thân kí tụ' "Escape" xuất dãy kí tự cần mã hố ta sử dụng dãy "Escape" với số đếm (kí tự space) đổ biểu diễn kí tụ- "Escape" Như trường hợp kí tự "Escape" xuất nhiều làm cho tập tin nén phình to trước • Các loạt chạy dài có thê cắt đê mã hố nhiều dãy Escape, ví dụ, loạt chạy gồm 51 chữ A mã hoá QZAQYA cách dùng Run - Length • Phương pháp mã hoá độ dài loạt thường áp dụng cho tập tin đồ hoạ bitmap thường có mảng lớn màu biểu diễn dưới dạng bitmap chuỗi bit có đường chạy dài Trên thực tế, dùng tập tin PCX, RLE LZW • Giải thuật nén LZW xây dựng từ điển lưu mẫu có tần suất xuất cao liệu Từ điển tập họp nhũng cặp từ vựng nghĩa Trong đó, từ vựng từ mã xếp theo thứ tự định Nghĩa chuỗi liệu , từ điển xây dựng đồng thời với trình đọc dừ liệu, có mặt chuỗi từ điên khắng định chuồi xuất phần liệu đọc Thuật toán liên tục “tra cứu” cập nhật từ điên sau lần đọc ký tự liệu đầu vào LZW • Nguyên tắc chung • Một xâu kí tự tập hợp từ hai kí tự trở lên • Nhớ tất xâu kí tự gặp gán cho dấu hiệu (token) riêng • Nếu lần sau gặp lại xâu kí tự đó, xâu kí tự thay bàng dấu hiệu LZW • Quy tắc : • Qui tắc 1: 256 dấu hiệu dành cho kí tụ- đon (0 - Offh) • Qui tắc 2: Cố gắng so sánh với "từ điển" đệm chứa có nhiều hai kí tự • Qui tắc 3: Các kí tự đầu vào (Nhận từ tập tin sè nén) bố sung vào đệm chứa đến chuỗi kí tự đệm chứa khơng có "từ điên" • Qui tắc 4: Khi đệm chứa có chuỗi mà "từ điển" khơng có chuồi đệm chứa đem vào "từ điển" Kí tự cuối chuỗi kí tự đệm chứa phải lại đệm chứa đế tiếp tục tạo thành chuỗi mới LZW • Q trình nén : • LZW bắt đầu từ điến 256 kí tự (trong trường hợp sử dụng bảng mã bits) sử dụng chúng tập kí tự chuấn Sau lần đọc đọc bits (ví dụ 't', 'r', ) mã hóa thành số tương ứng với mục kí tự từ điên • Mồi LZW qua chuỗi mới (giả sử "tr") thêm chuỗi vào từ điển • Mồi qua chuỗi mà thấy trước đó, chi đọc thêm kí tự mới cộng với chuỗi biết đế tạo chuồi mới Lần LZW bắt gặp chuỗi có, có việc sử dụng số mục tương ứng từ điển LZW • Giải nén : • Q trình mã hóa giải mã cần phải sử dụng từ điển khởi đầu, trường hợp 256 kí tự bảng mã ASCII • Sau chế hoạt động Bộ giải mã LZW trước hết đọc mục (là số ngun), tìm mục từ điển, cho chuỗi gắn với mực Kí tự chuỗi cộng thêm vào chuỗi làm việc Chuỗi mới tạo thêm vào từ điển (hoàn toàn giống với trình nén) Chuỗi giải mã lại trở thành chuồi làm việc q trình tiếp LZW • Ưu điểm : • Thuật tốn nén LZW có ưu điểm hệ số nén tương đối cao, tập tin nén khơng cần 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 tin nén • Thuật tốn LZW khắc phục lãng phí nhớ mà thuật tốn trước khơng tận dụng hết Đồng thời khắc phục cứng nhắc thuật tốn nén, góp phần làm thuật tốn nén trở nên mềm dẻo hơn, có sức hấp dẫn hon đối với người sử dụng LZW • Nhược điểm : • Nhược điếm thuật toán tốn nhiều nhớ, khó thực dựa mảng đơn giản (bé 64KB ... kí tự khác biểu diễn phần tử chuồi mã hoá, ta phải chọn kí tự gọi kí tự "Escape" Mồi xuất kí tự báo hiệu hai chừ sê tạo thành cặp (số đếm, kí tự) với số đếm biểu diễn cách dùng kí tự thứ i bảng