CHƯƠNG 4 HIỆN THỰC CÁC KỸ THUẬT NÉN ẢNH
4.1. HIỆN THỰC KỸ THUẬT NÉN BẢO TOÀN
4.1.1.1. Mã hóa loạt dài (RLE)
RLE là một phương pháp nén ảnh dựa trên sự cắt bớt các dư thừa về không gian. Loạt đƣợc định nghĩa là dãy các phần tử điểm ảnh liên tiếp có cùng chung một giá trị. Nguyên tắc của phương pháp này là phát hiện một loạt các điểm ảnh lặp lại liên tiếp.
Phương pháp nén RLE chỉ đạt hiệu quả khi chuỗi lặp lớn hay nói cách khác trong ảnh cần nén phải có nhiều điểm ảnh kề nhau có cùng giá trị màu. Do đó phương pháp này không đem lại cho ta kết quả một cách ổn định vì nó phụ thuộc hoàn toàn vào ảnh nén, chỉ thích hợp cho những ảnh đen trắng.
Thuật toán nén:
Tiến hành duyệt trên chuỗi dữ liệu cho đến khi kết thúc, trong quá trình duyệt tiến hành kiểm tra để tìm ra những loạt có cùng giá trị.
Trong quá trình duyệt, đếm số lần lặp lại của loạt.
Mã hóa các loạt với giá trị được ghi trước và số lần lặp ghi sau.
4.1.1.2. Mã hóa Huffman
Mã hóa Huffman là phương pháp dựa vào mô hình thống kê. Phương pháp này dựa vào xác suất xuất hiện của giá trị bằng cách duyệt tuần tự từ gốc đến cuối chuỗi dữ liệu. Phương pháp này mã hóa một giá trị bằng một từ mã riêng biệt. Nếu giá trị có xác suất xuất hiện cao thì gán cho giá trị đó từ mã ngắn và ngƣợc lại, tức là gán cho giá trị có xác suất xuất hiện thấp từ mã dài hơn. Ở đây từ mã là một số nguyên các bit. Với phương pháp này, để xây dựng mã ta sử dụng cấu trúc cây nhị
Trang 39 phân. Các nút lá của cây là các giá trị, các nút lá này có trọng lƣợng là tần số hoặc xác suất xuất hiện của các giá trị đó.
Thuật toán nén:
Duyệt hết chuỗi dữ liệu và tính tần suất của các giá trị.
Sắp xếp lại chuỗi giá trị theo thứ tự tần suất giảm dần.
Tạo cây mã Huffman bằng cách duyệt bảng tần suất từ cuối lên đầu để thực hiện ghép hai phần tử có tần suất xuất hiện thấp nhất thành một phần tử duy nhất.
Phần tử này có tần suất bằng tổng hai tần suất thành phần. Tiến hành cập nhật lại bảng có loại bỏ hai phần tử đã xét. Quá trình đƣợc lặp lại cho đến khi bản chỉ còn một phần tử. Phần tử có tần suất thấp ở bên phải, phần tử kia ở bên trái. Tất cả các giá trị nằm ở nút lá.
Sau khi cây đƣợc tạo xong, tiến hành gán mã cho các nút lá. Quá trình mã hóa bắt đầu từ gốc, mỗi lần xuống nhánh bên phải ta thêm bit „1‟ vào từ mã và xuống nhánh bên trái ta thêm bit „0‟. Do đó, giá trị có tần suất lớn sẽ có chuỗi mã hóa ngắn và ngƣợc lại.
Bảng mã Huffman đƣợc giữ lại trong cấu trúc của tệp tin nén cùng với dữ liệu nén. Quá trình giải nén dựa vào bảng mã tạo ra trong giai đoạn nén.
4.1.1.3. Mã hóa LZW
LZW là một phương pháp nén được phát minh bởi Lempel - Zip và Welch.
LZW sử dụng kỹ thuật xây dựng từ điển, lưu các chuỗi giá trị có tần suất lặp lại cao và thay thế bằng từ mã tương ứng mỗi khi gặp lại chuỗi giá trị đó.
Thuật toán nén:
Một chuỗi giá trị là một tập hợp từ hai giá trị trở lên. Nhớ tất cả các chuỗi giá trị đã gặp và gán cho nó một dấu hiệu riêng. Mảng dùng để lưu trữ các chuỗi giá trị và dấu hiệu gán đƣợc gọi là từ điển.
Khi các byte dữ liệu cần nén đƣợc đem đến, chúng đƣợc giữ lại trong một bộ đệm chứa (accumulator) và đem so sánh với các chuỗi đã có trong từ điển.
Trang 40
Nếu chuỗi giá trị trong bộ đệm không có trong từ điển thì nó đƣợc bổ sung thêm vào từ điển và chỉ số của chuỗi ở trong từ điển chính là dấu hiệu của chuỗi.
Nếu chuỗi trong bộ đệm chứa đã có trong từ điển thì dấu hiệu của chuỗi đƣợc đem ra thay cho chuỗi ở dòng dữ liệu ra.
Trong thuật toán nén này, phần lớn thời gian khi bắt đầu nén chủ yếu mất vào việc tạo từ điển. Khi từ điển đủ lớn, xác suất gặp chuỗi ở bộ đệm chứa trong từ điển tăng lên và càng nén đƣợc nhiều hơn.
4.1.1.4. Biến đổi wavelet với hàm wavelet LeGall 5/3 kết hợp mã hóa Huffman hoặc LZW
Không giống như các kỹ thuật nén trước, bộ mã hóa gồm hai giai đoạn. Đó là dữ liệu ảnh được biến đổi wavelet trước khi mã hóa Huffman hoặc LZW. Wavelet Cohen – Daubechies – Feauveau (CDF) là họ đầu tiên trong lịch sử của wavelets song trực giao, cung cấp loại wavelet CDF 5/3 (còn đƣợc gọi là wavelet LeGall 5/3) với đặc trƣng khả nghịch làm điều kiện cho việc nén bảo toàn. Quá trình biến đổi wavelet cho ra các hệ số biến đổi là các số nguyên dương, cung cấp chuỗi số liệu đầu vào cho các kỹ thuật nén Huffman hoặc LZW.
4.1.2. Kết quả nén bảo toàn
Trong phần thực hiện các giải thuật nén bảo toàn, người thực hiện tiến hành thử nghiệm 2 nhóm giải thuật nén ở ảnh Landsat là nhóm các giải thuật mã hóa trực tiếp và nhóm các giải thuật mã hóa kết hợp với wavelet. Nhóm các giải thuật bảo toàn bao gồm các giải thuật nén RLE, Huffman, LZW. Các giải thuật LeGall 5/3 kết hợp mã hóa Huffman, LeGall 5/3 kết hợp mã hóa LZW là nhóm các giải thuật kết hợp giữa wavelet và các giải thuật Huffman, LZW. Các sơ đồ khối của giải thuật đƣợc trình bày chi tiết trong Hình 27.
Trang 41 Giải thuật nén ảnh
bảo toàn (Huffman, LZW) Phân tích wavelet
với hàm wavelet mẹ CDF
Giải thuật nén ảnh bảo toàn (Huffman, LZW, RLE)
Ảnh đầu vào Ảnh mã hóa
Ảnh đầu vào Ảnh mã hóa
(a)
(b)
Hình 27. Sơ đồ khối của các nhóm giải thuật bảo toàn: (a) Nhóm giải thuật mã hóa trực tiếp; (b) Nhóm giải thuật kết hợp phân tích wavelet và mã hóa bảo toàn.
Đối với các phép nén bảo toàn hàm wavelet mẹ đƣợc chọn để kết nối với chúng là wavelet LeGall 5/3 do các đặc trƣng của các giải thuật nén RLE, Huffman, LZW nguyên bản chỉ được thực hiện trên trường số thực. Với tính song trực giao của họ hàm CDF cho ra kết quả phân tích trên trường số nguyên thay cho trường số thực nhƣ các loại wavelet khác và điều này hoàn toàn phù hợp với yêu cầu của các giải thuật nén bào toàn. Kết quả nén đƣợc thể hiện trong Bảng 8. Kết quả nén của các phép nén bảo toàn Bảng 8.
Trang 42 Bảng 8. Kết quả nén của các phép nén bảo toàn
Kênh ảnh
Dung lƣợng ảnh
(byte)
Run length encoding
Huffman encoding (byte)
LZW Le Gall 5/3 + Huffman
Le Gall 5/3 + + LZW LE72020382003138MPS02_B1 65536 101988
Tỉ lệ: 0.64:1
34819 Tỉ lệ: 1.88:1
18836 Tỉ lệ: 3.48:1
34819 Tỉ lệ: 1.88:1
18836 Tỉ lệ: 3.48:1 LE72020382003138MPS02_B2 65536 102074
Tỉ lệ: 0.64:1
36537 Tỉ lệ: 1.79:1
19444 Tỉ lệ: 3.37:1
36537 Tỉ lệ: 1.79:1
19444 Tỉ lệ: 3.37:1 LE72020382003138MPS02_B3 65536 109312
Tỉ lệ: 0.60:1
40158 Tỉ lệ: 1.63:1
21996 Tỉ lệ: 2.98:1
40158 Tỉ lệ: 1.63:1
21996 Tỉ lệ: 2.98:1 LE72020382003138MPS02_B4 65536 101346
Tỉ lệ: 0.65:1
37272 Tỉ lệ: 1.76:1
19361 Tỉ lệ: 3.38:1
37272 Tỉ lệ: 1.76:1
19361 Tỉ lệ: 3.38:1 LE72020382003138MPS02_B5 65536
115330 Tỉ lệ: 0.57:1
46167 Tỉ lệ: 1.42:1
25631 Tỉ lệ: 2.56:1
46167 Tỉ lệ: 1.42:1
25631 Tỉ lệ: 2.56:1 LE72020382003138MPS02_B7 65536 114370
Tỉ lệ: 0.57:1
445832 Tỉ lệ: 1.47:1
24649 Tỉ lệ: 2.66:1
445832 Tỉ lệ: 1.47:1
24649 Tỉ lệ: 2.66:1 Giữa ba giải thuật RLE, Huffman và LZW, LZW cho kết quả nén tốt nhất. Mã hóa RLE không thích hợp để nén ảnh cấp độ xám bởi nó làm tăng số bit lưu trữ của ảnh. Áp dụng biến đổi wavelet bảo toàn Le Gall 5/3 trước khi thực hiện mã hóa Huffman và LZW không làm cải thiện kết quả nén của các giải thuật này, nó hầu nhƣ không tác động đến kết quả nén.