Nén không lỗ

Một phần của tài liệu tiểu luận xử lý ảnh số kỹ thuật nén ảnh (Trang 36)

Trong nhiều ứng dụng, nén không lỗi thì chỉ có thể chấp nhận cách thu nhỏ dữ liệu. Một ứng dụng như vậy là việc lưu trữ những tài liệu y tế hoặc kinh doanh, nơi việc mất dữ liệu thường bị cấm vì lý do pháp lý. Một số khác là việc xử lý hình ảnh vệ tinh, nơi mà cả việc sử dụng và chi phí của việc thu thập dữ liệu gây bất kỳ tổn thất nào là không ai mong muốn. Nhưng số khác là chụp X quang kỹ thuật số, nơi mà việc mất thông tin có thể thỏa hiệp chẩn đoán chính xác. Trong những điều nêu trên và các trường hợp

khác,nhu cầu nén không sai sót càng được thúc đẩy bởi mục đích sử dụng hoặc bản chất của những hình ảnh cần được nghiên cứu.

Trong phần này, chúng tôi tập trung vào các chiến lược nén không lỗi chính hiện đang sử dụng. Họ thường cung cấp tỷ lệ nén 2 trên 10. Hơn nữa, chúng cũng đều thích hợp cho cả hai hình ảnh nhị phân và hình ảnh thang độ xám. Như đã trình bày trong mục 8.2, kỹ thuật nén không lỗi thường gồm hai hoạt động tương đối độc lập: (1) đề ra một đại diện thay thế của hình ảnh trong đó những điểm ảnh dư thừa của nó được giảm đi, và (2) mã hóa các đại diện để loại bỏ việc mã hóa các phần dư thừa. Những bước này tương ứng với bản đồ và những ký hiệu hoạt động mã hóa của mô hình mã nguồn đã thảo luận liên quan đến hình. 8.6.

Mã hóa biến-Chiều dài

Phương pháp đơn giản để nén hình ảnh không lỗi là giảm chỉ những mã dư thừa. Mã hóa dư thừa thông thường hiện diện trong bất kỳ mã nhị phân tự nhiên của các mức độ màu xám trong một hình ảnh. Như chúng ta đã đề cập trong phần 8.1.1, nó có thể được

loại bỏ bằng cách mã hóa các cấp độ màu xám để phương trình (8,1-4) được giảm thiểu. Để làm như vậy đòi hỏi phải xây dựng một mã có chiều dài thay đổi chỉ định các từ mã ngắn nhất có thể để các cấp độ màu xám có thể xảy ra nhất. Ở đây, chúng ta xem xét một số kỹ thuật tối ưu và gần tối ưu để xây dựng một mã như vậy. Những kỹ thuật này được xây dựng trong ngôn ngữ của lý thuyết thông tin. Trong thực tế, những ký hiệu nguồn có thể là một trong hai mức độ xám của một hình ảnh hay tín hiệu ra của một hoạt động lập bản đồ mức độ màu xám (sự khác biệt điểm ảnh, độ dài chạy, vv).

Mã Huffman

Kỹ thuật phổ biến nhất để loại bỏ mã hóa dư thừa là do Huffman (Huffman [1952]). Khi mã hóa những ký hiệu của một nguồn thông tin cá nhân, mã hóa Huffman mang lại số lượng nhỏ nhất có thể của các ký hiệu mã cho mỗi ký hiệu nguồn. Về định lý mã hóa không nhiễu (xem Phần 8.3.3), mã kết quả là tối ưu cho một giá trị cố định của n, phụ thuộc vào sự ràng buộc để những ký tự nguồn được mã hóa cùng một lúc.

Bước đầu tiên trong phương pháp Huffman là tạo ra một loạt các cắt giảm nguồn bằng cách sắp thứ tự xác suất của những ký hiệu đang xem xét và kết hợp các ký hiệu xác suất thấp nhất thành một ký hiệu duy nhất mà thay thế chúng trong việc giảm nguồn tiếp theo . Hình 8.11 minh họa quá trình này cho mã nhị phân ( K -phân mã Huffman cũng có thể được xây dựng ) . Ở bên trái , một bộ giả thuyết của các ký hiệu nguồn và xác suất của chúng được sắp xếp từ trên xuống dưới theo điều kiện giảm giá trị xác suất. Để tạo thành sự giảm nguồn đầu tiên , hai xác suất dưới, 0.06 và 0.04 , được kết hợp để tạo thành một " ký hiệu phức hợp " với xác suất 0.1 . Ký hiệu phức hợp này và khả năng liên kết của nó được đặt trong cột giảm nguồn đầu tiên để xác suất của nguồn giảm cũng được đặt thứ tự có thể xảy ra từ nhiều nhất đến ít nhất . Quá trình này được lặp đi lặp lại cho đến khi sau đó một nguồn giảm với hai ký hiệu (ở bên phải ) là đạt.

Bước thứ hai trong thủ tục Huffman là mã hóa mỗi nguồn giảm , bắt đầu với nguồn nhỏ nhất và làm việc trở lại với nguồn lúc đầu . Chiều dài mã nhị phân tối thiểu cho một nguồn hai ký hiệu , tất nhiên, là những ký hiệu 0 và 1 . Như hình . 8.12 cho thấy, các ký hiệu này được gán cho hai ký hiệu ở bên phải ( việc gán là tùy ý, đảo ngược thứ tự của 0 và 1 sẽ vẫn làm việc tốt ) . Khi ký hiệu nguồn giảm với xác suất 0.6 được tạo ra bằng cách kết hợp hai ký hiệu trong nguồn giảm ở bên trái của nó, số 0 được sử dụng để mã nó

bây giờ gán cho cả hai ký hiệu, chữ số 0 và 1 tùy ý gắn vào mỗi ký hiệu để phân biệt chúng với nhau.

Hoạt động này sau đó được lặp đi lặp lại cho mỗi nguồn giảm cho đến nguồn ban đầu là đạt . Mã cuối cùng sẽ xuất hiện ở bên trái trong hình . 8.12 . Chiều dài trung bình của mã này là

Lavg = ( 0,4 ) (1) + ( 0,3 ) (2) + ( 0,1 ) (3) + ( 0,1 ) (4) + ( 0.06) ( 5 ) + ( 0,04) ( 5 ) = 2,2 bit / ký hiệu

và entropy của nguồn là 2,14 bit / ký hiệu . Phù hợp với phương trình . ( 8,3-21 ) , kết quả hiệu suất mã Huffman là 0,973 .

Thủ tục Huffman tạo ra mã tối ưu cho một tập hợp các ký hiệu và những xác suất phụ thuộc vào sự ràng buộc để những ký tự nguồn được mã hóa cùng một lúc. Sau khi mã đã được tạo ra , mã hóa và / hay giải mã được thực hiện trong một bảng tra cứu theo cách đơn giản . Một mã chính nó là một mã khối duy nhất giải mã ngay lập tức. Nó được gọi là một mã khối bởi vì mỗi ký hiệu nguồn được ánh xạ vào một chuỗi cố định của các ký hiệu mã. Nó tức thời, bởi vì mỗi từ mã trong một chuỗi ký hiệu mã có thể được giải mã mà không tham khảo các ký hiệu tiếp theo. Chỉ nó có khả năng giải mã, bởi vì bất kỳ chuỗi nào của ký hiệu mã có thể được giải mã một cách duy nhất . Vì vậy , bất kỳ chuỗi nào của ký hiệu Huffman mã hóa có thể được giải mã bằng cách kiểm tra các ký hiệu riêng lẻ của chuỗi theo kiểu trái sang phải. Đối với các mã nhị phân của hình . 8.12 , quét

từ trái sang bên phải của chuỗi mã hóa 010100111100 cho thấy mã hợp lệ đầu tiên là 01.010 , cái mà mã hóa cho ký hiệu a3. Một mã hợp lệ tiếp theo là 011 , tương ứng với ký hiệu a1. Tiếp tục theo cách này cho thấy các thông điệp hoàn toàn giải mã được

a3a1a1a2a6.

Dãy mã với chiều dài có thể thay đổi

Khi một số lượng lớn của các ký hiệu sẽ được mã hóa , việc xây dựng mã nhị phân Huffman tối ưu là một nhiệm vụ không tầm thường . Đối với trường hợp chung của các ký hiệu nguồn J , J - 2 sự giảm nguồn phải được trình bày (xem hình 8.11 . ) Và J - 2 những việc gán mã đã thực hiện ( xem hình 8.12 . ) . Vì vậy, xây dựng mã Huffman tối ưu cho một hình ảnh với 256 mức màu xám đòi hỏi 254 sự giảm nguồn và 254 việc gán mã. Theo quan điểm của các tính toán phức tạp của nhiệm vụ này , việc phải hy sinh hiệu suất mã hóa cho sự đơn giản trong cấu trúc mã đôi khi là cần thiết.

Bảng 8.5 minh họa bốn dãy mã có chiều dài thay đổi mà cung cấp như một sự đánh đổi. Lưu ý rằng độ dài trung bình của mã Huffman - dòng cuối cùng của bảng - là thấp hơn so với các mã khác được liệt kê . Mã nhị phân tự nhiên có độ dài trung bình lớn nhất . Ngoài ra, 4.05 bits/ký hiệu tốc độ mã hóa đạt được bằng kỹ thuật Huffman gần với phương pháp 4,0 bits / ký hiệu giới hạn entropi của nguồn, tính bằng phương trình . ( 8,3-3 ) và đưa ra ở cuối bảng . Mặc dù không cái nào trong số các mã còn lại trong Bảng 8.5 đạt được hiệu suất mã Huffman, tất cả lại dễ dàng hơn để xây dựng . Như kỹ thuật Huffman, họ chỉ định các từ mã ngắn nhất với các ký hiệu nguồn có thể có nhất .

Cột 5 của Bảng 8.5 minh họa một thay đổi đơn giản của chiến lược mã hóa Huffman cơ bản được gọi là cắt ngắn mã hóa Huffman . Một mã Huffman cắt ngắn được tạo ra bởi Huffman mã hóa chỉ i ký hiệu của nguồn có thể đúng nhất, đối với một số nguyên dương i nhỏ hơn J. Một mã tiền tố theo sau là một mã có chiều dài cố định thích hợp được sử dụng để đại diện cho tất cả các ký hiệu nguồn khác . Trong Bảng 8.5, i lấy tùy ý đã chọn là 12 và mã tiền tố đã được tạo ra như là từ mã Huffman thứ 13 . Đó là một " ký hiệu tiền tố " có khả năng là tổng xác suất của các ký hiệu từ a13 đến a21 đã được tính đến như là một ký hiệu thứ 13 trong suốt quá trình mã hóa Huffman của 12 ký hiệu nguồn có thể xảy ra nhất. 9 ký hiệu còn lại sau đó được mã hóa bằng cách sử dụng mã tiền tố , mà hóa ra là 10 , và một giá trị nhị phân 4-bit bằng các ký hiệu chỉ số dưới trừ đi 13 .

Cột 6 của Bảng 8.5 minh họa cái thứ hai , gần tối ưu, và dãy mã có chiều dài thay đổi được biết đến là B- code. Nó gần như tối ưu khi xác suất ký hiệu nguồn tuân theo một định luật hàm mũ có dạng

đối với một số dương liên tục và tiêu chuẩn hóa hằng số c = ……….

Ví dụ, sự phân bố của độ dài chạy trong một biểu diễn nhị phân của một tài liệu văn bản thông thường đánh máy gần như theo cấp số nhân . Như Bảng 8.5 cho thấy, mỗi từ mã được tạo thành từ các bit tiếp tục , ký hiệu là C , và bit thông tin , đó là những con số nhị phân tự nhiên . Mục đích duy nhất của các bit tiếp tục là để tách từ mã riêng lẻ, vì vậy chúng chỉ đơn giản là thay thế giữa 0 và 1 cho mỗi từ mã trong một chuỗi. B- mã hiển thị trong Bảng 8.5 được gọi là B2- mã, bởi vì hai bit thông tin được sử dụng cho mỗi bit liên tục. Trình tự của B2- mã số tương ứng với các ký hiệu chuỗi nguồn a11a2a7 là 010 101 000 010 hoặc 101 110 001 100 110 , tùy thuộc vào việc các bit tiếp tiếp đầu tiên được giả định là 0 hoặc 1.

Hai mã chiều dài thay đổi còn lại trong Bảng 8.5 được gọi là chuyển mã . Một chuyển mã được tạo ra bởi ( 1 ) sắp xếp các ký hiệu nguồn để xác suất của chúng đơn điệu giảm , (2) phân chia tổng số các ký hiệu thành các khối ký hiệu kích thước bằng nhau , ( 3 ) mã hóa các yếu tố riêng lẻ trong tất cả các khối giống nhau , và (4) thêm sự thay đổi lên và / hoặc chuyển xuống các ký hiệu đặc biệt để xác định mỗi khối. Mỗi lần một sự thay đổi lên hoặc xuống thay đổi ký hiệu được công nhận ở các bộ giải mã , nó di chuyển một khối lên hoặc xuống đối với một khối tài liệu tham khảo được xác định trước.

Để tạo ra các mã nhị phân thay đổi 3-bit trong cột 7 Bảng 8.5 , các ký hiệu nguồn 21 đầu tiên được sắp theo thứ tự cho phù hợp với xác suất của chúng về sự xảy ra và chia thành ba khối trong bảy ký hiệu . Những ký hiệu riêng lẻ (a1 đến a7) của khối trên - được coi là khối tham khảo - sau đó được mã hoá với các mã nhị phân 000 đến 110. Mã nhị phân thứ tám ( 111 ) không nằm trong khối tham khảo , thay vào đó , nó được sử dụng như một điều khiển chuyển lên riêng lẻ mà xác định các khối còn lại ( trong trường hợp này , một ký hiệu chuyển xuống không được sử dụng ) . Các ký hiệu trong hai khối còn lại sau đó được mã hóa bằng một hoặc hai ký hiệu chuyển lên trong sự kết hợp với các mã nhị phân được sử dụng để mã hóa khối tham khảo . Ví dụ , nguồn ký hiệu a19 được mã hoá là 111 111 100 .

Mã Huffman thay đổi trong cột 8 của Bảng 8.5 được tạo ra theo cách tương tự . Sự khác biệt chính là ở việc gán một xác suất với ký hiệu sự chuyển đổi trước khi Huffman mã hóa khối tham khảo . Thông thường , việc gán này được thực hiện bằng cách tổng hợp các xác suất của tất cả các ký hiệu nguồn bên ngoài khối tham khảo , đó là bằng cách sử dụng những khái niệm tương tự nhau để xác định ký hiệu tiền tố trong mã Huffman cắt ngắn. Ở đây , số tổng được thực hiện trên ký hiệu a8 đến a21 là 0.39. Ký hiệu chuyển đổi vì vậy là ký hiệu có thể xảy ra nhất và được gán cho 1 trong những từ mã Huffman ngắn nhất ( 00 ).

Mã hóa số học

Không giống như các mã chiều dài thay đổi được mô tả trước đây , mã hóa số học, tạo ra các mã không khối. Trong số học mã hóa , cái nào cũng có thể theo dõi công việc của Elias (xem Abramson [ 1963] ), sự tương ứng một- một giữa các ký hiệu nguồn và từ mã không tồn tại. Thay vào đó, toàn bộ sự liên tục của những ký hiệu nguồn ( hoặc thông điệp ) được gán một mã số từ số học đơn lẻ. Bản thântừ mã xác định một dãy các số thực giữa 0 và 1 . Vì số lượng các ký hiệu trong thông điệp tăng, dãy được sử dụng để đại diện cho nó trở nên nhỏ hơn, và số lượng các đơn vị thông tin (say, bits ) đòi hỏi thay thế cho dãy trở nên lớn hơn . Mỗi biểu tượng của thông điệp làm giảm kích thước của dãy trong sự phù hợp với xác suất của nó . Bởi vì kỹ thuật này không đòi hỏi , cũng như các

phương pháp Huffman , rằng mỗi biểu tượng nguồn chuyển thành một số nguyên ký hiệu mã ( có nghĩa là, các biểu tượng được mã hóa cùng một lúc ) , nó đạt được ( nhưng chỉ trên lý thuyết) giới hạn được thiết lập theo định lý mã hóa không nhiễu của mục 8.3.3. Hình 8.13 minh họa quá trình mã hóa số học cơ bản. Ở đây , một chuỗi 5 ký hiệu hoặc một thông điệp a1a2a3a4 ,từ một nguồn bốn biểu tượng được mã hoá . Khi bắt đầu quá trình mã hóa , thông điệp được cho là chiếm toàn bộ nửa khoảng [ 0,1) . Như Bảng 8.6 cho thấy, khoảng này ban đầu được chia nhỏ thành bốn miền dựa trên các xác suất của mỗi biểu tượng nguồn . Biểu tượng a1, ví dụ, có liên quan đến khoảng con [ 0,0.2 ) . Bởi vì nó là biểu tượng đầu tiên của thong điệp được mã hóa , khoảng thong điệp ban đầu thu hẹp còn [ 0,0.2 ) . Vì vậy trong hình . 8.13 [ 0,0.2 ) được mở rộng với chiều cao đầy đủ của hình và điểm kết thúc của nó được dán nhãn bởi các giá trị của đoạn thu hẹp . Đoạn thu hẹp sau đó được chia nhỏ phù hợp theo các xác suất của ký hiệu nguồn ban đầu và quá trình tiếp tục với các biểu tượng thông điệp tiếp theo. Theo cách này, biểu tượng a2 thu hẹp khoảng con còn [ 0.04,0.08 ) , a3 tiếp tục thu hẹp nó còn [ 0.056,0.072 ) , và như vậy. Biểu tượng thông điệp cuối cùng, phải dành riêng như một chỉ số cuối cùng của

thông điệp đặc biệt , thu hẹp phạm vi còn [ 0.06752,0.0688 ) . Tất nhiên, bất kỳ số nào trong khoảng con này - ví dụ, 0.068 - có thể được sử dụng để đại diện cho thông điệp. (adsbygoogle = window.adsbygoogle || []).push({});

Trong thông điệp được mã hóa số học của hình . 8.13 , ba chữ số thập phân được sử dụng để đại diện cho thông điệp năm biểu tượng . Nó được thông dịch với 3/5 hoặc 0,6 chữ số thập phân cho mỗi ký hiệu nguồn và lợi thế so sánh với entropy của nguồn , trong đó, từ biểu thức. ( 8,3-3 ) , là 0,58 chữ số thập phân , hoặc 10-ary đơn vị / biểu tượng . Vì chiều dài của chuỗi bị mã hóa tăng ,kết quả mã hóa số học phương thức tiếp cận các giới hạn ràng buộc bởi định lý mã hóa không nhiễu. Trong thực tế, hai yếu tố gây ra việc thi hành mã hóa làm giảm bớt giới hạn : ( 1 ) việc bổ sung các chỉ số cuối cùng của tin nhắn đó là

Một phần của tài liệu tiểu luận xử lý ảnh số kỹ thuật nén ảnh (Trang 36)