Thuật toán AIC

Một phần của tài liệu một số kĩ thuật nén ảnh và ứng dụng (Trang 37 - 49)

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Hình 2.9. Sơ đồ khối nén AIC và giải nén AIC.

* AIC - Bộ chuyển đổi màu (Color conversion)

Đối với ảnh màu, bộ mã hóa hình ảnh nâng cao biển đổi ảnh gốc từ không gian màu RGB sang không gian màu YCbCr. Màu sắc này phân biệt độ chói và độ sắc nét trong hình ảnh. Độ sáng của hình ảnh sẽ được lưu trữ trong các kênh Y các kênh Cb và Cr giữ giá trị độ nét tương ứng với màu xanh và đỏ.

Ví dụ, nhìn vào hình sauvà ảnh khi chuyển sang kênh RGB:

Hình 2.10. Ảnh chuyển đổi sang kênh RGB.

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Như vậy, có thể thấy cả ba kênh không có cùng một lượng tương phản, nên việc nén chúng lại rất khó khăn. Các kênh màu lục trông tự nhiên và thật nhất. Điều này là bởi vì đôi mắt của chúng ta nhạy cảm nhất với màu xanh lục.

Mục đích của không gian màu YCbCr khi bị nén là các kênh độ sáng thường chứa nhiều thông tin ít hơn các kênh độ chói, do đó nén tốt hơn.

Ví dụ sau đây cho thấy cùng một hình ảnh khi nó được phân chia vào các kênh YCbCr:

Hình 2.11. Ảnh chuyển đổi sang kênh YCbCr

Kênh Y là một đại diện tốt nhất của hình ảnh trong gam màu xám. Như ta có thể thấy, các kênh Cb và Cr có độ tương phản ít hơn, điều này có nghĩa là chúng có thể được nén tốt hơn nhiều.

Các công thức sau đây được sử dụng để chuyển đổi một điểm ảnh RGB sang một điểm ảnh YCbCr:

Các phần tử màu xanh lục có tác động cao nhất trên kênh Y, cũng như đôi mắt của chúng ta là nhạy cảm nhất với màu xanh lục, tiếp theo là màu đỏ và màu xanh lam. Khi R, G và B trong phạm vi từ 0...255 (như trường hợp với hình ảnh 24 bit), Y cũng sẽ trong khoảng 0...255 và Cb và Cr sẽ có phạm vi -128...0...127. Thông thường, giá trị

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

128 được bổ sung vào các kênh Cb và Cr để biến chúng thành một loại dữ liệu byte. Bộ giải mã sử dụng các công thức sau đây để chuyển đổi các giá trị này trở lại RGB:

Các chuẩn JPEG và H.264 thường giảm mẫu các kênh Cb và Cr xuống còn một nửa độ phân giải ban đầu. Bằng cách này, các kênh Cb, Cr thậm chí còn chứa ít thông tin hơn và có thể được nén tốt hơn nữa. Trong mã hóa AIC, không sử dụng giảm mẫu vì việc dự đoán khối và mã hóa số học nhị phân làm cho việc giảm mẫu ít cần thiết hơn và chỉ gây ảnh hưởng xấu đến chất lượng ảnh. Với AIC, tỷ số chất lượng trên độ nén có thể cao hơn khi không sử dụng giảm tần số lấy mẫu.

Giai đoạn tiếp theo trong quá trình mã hóa là dự đoán khối. Chỉ có các kênh Y được sử dụng để lựa chọn một chế độ dự đoán. Các kênh Cb và Cr sử dụng cùng một chế độ dự đoán như kênh Y.

* AIC - Dự đoán khối (Block Prediction)

Sau khi hình ảnh đã được chuyển đổi thành không gian màu YCbCr (cho các ảnh màu), hình ảnh được chia thành các khối điểm ảnh 8x8. Các khối được mã hóa theo thứ tự dòng quét, nghĩa là, từ trái sang phải và từ trên xuống dưới. Trong khi giải mã hình ảnh, bộ giải mã sẽ truy cập vào tất cả các khối được giải mã trước đó: tất cả các khối ở trên và bên trái của khối hiện tại đang ở trong dòng quét. Hình 2.12 chỉ ra việc làm thế nào một hình ảnh được chia thành các khối. Khối màu xanh lá cây nhạt là khối hiện tại và các khối màu xanh dương nhạt là các khối đã được mã hóa/giải mã trước đó.

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

AIC sử dụng cơ chế dự đoán khối mượn từ tiêu chuẩn H.264 để dự đoán nội dung của khối hiện tại từ các khối đã được mã hóa và giải mã trước đó. Chuẩn H.264 có thuật toán để dự đoán khối 4x4 và khối 16x16. AIC sử dụng các thuật toán 4x4, mở rộng cho trường hợp khối 8x8. Khi dự đoán nội dung của một khối, AIC sử dụng lên đến 25 điểm ảnh từ khối đã mã hóa/giải mã trước đó để tạo ra khối dự đoán. Hình 2.17 chỉ ra khối 8x8 hiện tại với 25 điểm ảnh:

Hình 2.13. Khối 8x8 với 25 điểm ảnh.

* Các chế độ dự đoán khối (Prediction mode)

AIC và chuẩn H.264 hỗ trợ 9 chế độ dự đoán:

Chế độ 0: Theo chiều dọc

Các điểm ảnh trên được ngoại suy theo chiều dọc.

Chế độ 1: Theo chiều ngang

Các điểm ảnh bên trái được ngoại suy theo chiều ngang.

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Chế độ 2: DC

Giá trị trung bình của các mẫu bên trên và bên trái được sử dụng cho toàn bộ khối.

Nếu các mẫu bên trên không có sẵn, chỉ có các mẫu trái được sử dụng.

Nếu các mẫu bên trái không có sẵn, chỉ có các mẫu bên trên được sử dụng.

Nếu cả hai mẫu bên trên và bên trái không có sẵn (khối đầu tiên trong hình ảnh), giá trị 128 sẽ được sử dụng (50% màu xám).

Chế độ 3: Chéo theo hƣớng từ dƣới sang bên trái

Các điểm ảnh được nội suy ở một góc 45 ° từ phía trên bên phải đến góc dưới bên trái.

Chế độ 4: Chéo theo hƣớng từ dƣới sang bên phải

Các điểm ảnh được nội suy ở một góc 45 ° từ

góc trên bên trái đến góc dưới bên phải.

Chế độ 5: Hƣớng dọc sang bên phải

Các điểm ảnh được nội suy theo góc 26,6 từ góc trên bên trái tới cạnh dưới ở trung điểm của chiều rộng.

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Chế độ 6: Hƣớng ngang đi xuống

Các điểm ảnh được nội suy theo góc 26,6 từ góc trên bên trái cạnh phải ở độ cao một nửa.

Chế độ 7: Hƣớng dọc sang bên trái

Các điểm ảnh được nội suy theo góc 26,6 từ góc trên bên phải tới cạnh thấp hơn ở trung điểm của chiều rộng.

Chế độ 8: Hƣớng ngang đi xuống

Các điểm ảnh được nội suy ở một góc 26,6° từ góc dưới bên trái tới các cạnh bên phải tại trung

điểm của chiều cao.

Các điểm ảnh ở góc dưới bên phải không thể dự đoán được bằng các điểm ảnh thấp hơn, từ khi các điểm ảnh chưa từng được mã hóa/giải mã. Các điểm ảnh được thiết lập ở bên dưới – nơi mà hầu hết các điểm ảnh có sẵn được giải mã trước đều ở đó.

Hình 2.14. Các chế độ dự đoán khối

Chế độ dự đoán chỉ có thể được sử dụng nếu tất cả các điểm ảnh cần thiết để dự đoán đều có sẵn. Ví dụ, chế độ Dọc chỉ có thể được sử dụng khi các mẫu trên đều có sẵn, vì vậy khi đó khối hiện tại sẽ không ở hàng đầu tiên của tất cả các khối. Ngoại lệ cho quy tắc này là chế độ DC, nó là chế độ duy nhất có thể được sử dụng cho tất cả các khối. Chế độ này chỉ sử dụng các điểm ảnh có sẵn để tính toán giá trị trung bình. Khi

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

không có điểm ảnh có sẵn (trường hợp của các khối mã hóa đầu tiên), giá trị 128, hoặc 50% màu xám, sẽ được sử dụng.

Các bộ mã hóa AIC thử tất cả 9 chế độ dự đoán cho tất cả các khối trong kênh độ sáng (Y). Các chế độ dự đoán được dùng để giảm thiểu sự khác biệt giữa các khối dự đoán và khối ban đầu hơn là được dùng để dự đoán. Các chế độ dự đoán được lựa chọn phải được mã hóa theo dòng. Để tiết kiệm các bit mã hóa các phương thức dự đoán cho các kênh có các sắc độ (Cb và Cr), các kênh sử dụng chung một chế độ dự đoán như các khối tương ứng trong kênh Y. Vì các kênh chrominance thường có hướng gradient

giống như các kênh độ sáng, chúng có thể được dự đoán với các chế độ tương tự như các kênh độ sáng. Để giảm hơn nữa số lượng bit được truyền đi, bản thân chế độ dự đoán đã được dự đoán trước đó bằng việc sử dụng chế độ dự đoán. Khi dự đoán chính xác, chỉ có 1 bit (thực ra là 1 biểu tượng) sẽ được mã hóa để chỉ ra rằng chế độ dự đoán này phải được sử dụng. Chế độ dự đoán phải tự mã hóa chỉ khi dự đoán sai.

Hình 2.15. Quá trình dự đoán

Kết quả của một quá trình dự đoán: Như ta thấy, khối đầu tiên của mỗi hình ảnh phỏng đoán có 50% điểm ảnh màu xám, vì đây là khối duy nhất mà không thể được dự đoán từ các khối trước đó. Chế độ DC được sử dụng cho khối này. Khi chế độ dự đoán tốt được lựa chọn, hình ảnh phỏng đoán cho thấy nhiều sự giống nhau so với hình ảnh gốc. Trong trường hợp đó, sự khác biệt giữa ảnh phỏng đoán và hình ảnh gốc là thấp, do đó hình ảnh sẽ nén lại rất tốt.

Lưu ý rằng cả hai bộ mã hóa và giải mã cần phải có chính xác cùng các điểm ảnh để

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

dự đoán có thể dựa vào. Đó là lý do tại sao các bộ mã hóa cũng giải mã các khối mã hóa vì vậy cả hai bộ mã hóa và giải mã có cùng chung các khối để sử dụng cho dự đoán. Nói cách khác, các khối được dự đoán luôn được dự đoán từ các khối đã được giải mã trước.

* Các khối phần dư (các khối còn lại – Residual Blocks)

Các giá trị trong khối dự đoán được trừ từ những giá trị trong khối ban đầu để hình thành một khối dư thừa. Như đã nói ở trên, khi chế độ dự đoán tốt được lựa chọn, các khối còn lại sẽ chứa các giá trị nhỏ. Hình 2.16 sau đây cho thấy sự khác biệt giữa kênh độ sáng của ảnh gốc và hình ảnh phỏng đoán:

Hình 2.16. Ảnh độ chói dƣ thừa

Trong hình 2.16 ta thấy 50% khu vực xám đại diện cho các giá trị 0, nơi mà hình ảnh phỏng đoán giống như ảnh gốc. Vùng sáng hơn và tối hơn biểu thị các lỗi giữa hình ảnh gốc và hình ảnh phỏng đoán. Hình ảnh này có màu "rất xám", có nghĩa rằng các lỗi thường là nhỏ.

Trong bước tiếp theo, mỗi khối dư thừa được chuyển đổi bằng cách sử dụng chuyển

đổi và lượng tử hóa Cosin rời rạc, làm cho các giá trị trong mỗi khối thậm chí còn nhỏ

hơn đi.

* AIC - Chuyển đổi và lượng tử hóa Cosin rời rạc

Để giảm hơn nữa entropy của khối dư thừa khối này được chuyển đổi bằng cách sử dụng biến đổi Cosin rời rạc (DCT). Kết quả các hệ số DCT thường nhỏ hơn so với giá trị ban đầu. Bằng cách số hóa các hệ số này với một giá trị nhất định dựa trên một mức độ chất lượng đã được chọn, các hệ số được giảm hơn nữa. Kết quả là, nhiều hệ số trong

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

khối sẽ là số không, và hầu hết những hệ số khác sẽ gần như bằng không.

Các codec mã hóa hình ảnh nâng cao sử dụng biến đổi Cosin rời rạc (DCT) để chuyển đổi một khối 8x8 dư thừa vào một tập hợp các hệ số để cosin các chức năng với tần số ngày càng tăng.

Cosin rời rạc (DCT) : Phần trình bày 1D-DCT và 2D-DCT đã được trình ở “mục

2.1Thuật toán nén ảnh JPEG.

Lượng tử hóa (QP): Tuy nhiên việc hoàn toàn loại bỏ các hệ số không phải lúc nào cũng như mong đợi. Trong một số loại hình ảnh nhất định với độ tương phản cao, như ảnh văn bản hoặc ảnh hoạt hình, các hệ số tần số cao là rất quan trọng với các chi tiết hình ảnh và không thể bị loại bỏ. Đó là lý do tại sao JPEG và AIC phải sử dụng sự lượng tử hóa, mà đó cũng chỉ là một cách mang tính dự đoán để phân chia trong bối cảnh này. Mỗi hệ số bị chia ra bởi một giá trị nhất định, các giá trị này càng cao thì kết quả thu được sẽ càng nhỏ. Điều này sẽ làm cho hệ số được nén tốt hơn, nhưng cũng làm giảm chất lượng hình ảnh bởi vì các hệ số không thể được tái tạo một cách trung thực nhất. Khi ta chọn mức độ chất lượng JPEG hoặc AIC, thực sự làm cho một phần của lượng tử hóa được sử dụng.

JPEG sử dụng DCT để biến đổi các giá trị điểm ảnh thay vì giá trị dư thừa. Nó cũng sử dụng một phương pháp lượng tử hóa không thống nhất, bằng cách đó, hệ số tần số cao (hệ số sau) được lượng tử hóa với giá trị cao hơn so với những giá trị thường có hệ số thấp

AIC thực hiện DCT trên giá trị dư thừa. Một số kết quả thử nghiệm đã cho thấy rằng lượng tử hóa thống nhất là thích hợp hơn trong trường hợp này. Trong AIC, tất cả các hệ số được lượng tử hóa bởi cùng một giá trị.

Ở bước cuối cùng, các hệ số DCT và chế độ dự đoán được mã hóa cho các dòng bằng cách sử dụng mã hóa số học nhị phân thích nghi với ngữ cảnh (CABAC – Context

Adaptive Binary Arithmetic Coding Algorithms). Trong JPEG các hệ số DCT được

truyền đi ngoằn ngoèo để hình thành chạy của số 0 có thể được mã hóa bằng cách sử dụng mã hóa loạt dài. Các bộ giải mã CABAC không sử dụng mã hóa loạt dài chạy, do

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

đó không cần phải sắp xếp lại các hệ số DCT. Vì vậy, trong AIC các hệ số được truyền đi theo trật tự đường quét.

* AIC - Mã hóa số học nhị phân thích nghi với ngữ cảnh (CABAC)

Sau khi một khối dự đoán và biến đổi DCT, các kiểu dự đoán và các hệ số DCT phải được lưu trong một dòng. Để tối thiểu lượng bit cần để lưu các giá trị này, AIC sử dụng thuật toán mã số học nhị phân thích nghi ngữ cảnh – CABAC từ chuẩn H.264. Trong AIC, các hệ số được truyền theo thứ tự dòng quét. Các mã hoá số học được sử dụng trong H.264 và AIC:

1. CABAC - Mã hóa số học nhị phân: Mã hóa số học là một phương pháp

thống kê để mã hóa các giá trị phụ thuộc vào xác suất của các giá trị này. Phương pháp phổ biến nhất để nén thống kê là mã hóa Huffman.

2. caBac – nhị phân (Binary): H.264 và AIC sử dụng một hình thức mã hóa số

học mà chỉ sử dụng 2 biểu tượng 0 và 1, vì vậy nhị phân từ mã hóa số học. Một nhược điểm của mã hóa số học nhị phân là chỉ có hai ký hiệu 0 và 1, có thể được mã hóa. Nhưng ký hiệu khác thì phải biến đổi thành dạng nhị phân trước. Bản thân chế độ dự đoán được dự đoán từ chế độ dự đoán trước đó. Khi việc dự đoán là đúng, ký hiệu 1 được mã hóa, ngược lại dùng ký hiệu 0. Nếu việc dự đoán là không chính xác, chế độ dự đoán là một trong 8 chế độ dự đoán có sẵn, có thể được biểu diễn bằng 3 bit. 3 bit này được mã hóa như một ký hiệu riêng biệt.

3. CAbac – Ngữ cảnh thích ứng (Context Adaptive): Chuẩn H.264 và AIC sử

dụng tất cả các ký hiệu được mã hóa trong một ngữ cảnh và xác suất của mỗi ký hiệu thích ứng với ngữ cảnh mà chúng được mã hóa. H.264 và AIC sử dụng một số ngữ cảnh khác nhau, xác suất của hệ số DCT bằng 0 đối với các hệ số ở góc dưới bên phải của ma trận hệ số 8x8 thì lớn hơn so với các hệ số ở góc trên bên trái. Trong AIC, vị trí của các hệ số trong ma trận chính là ngữ cảnh, do đó có 64 ngữ cảnh để mã hóa xác suất của hệ số bằng 0.

Một phần của tài liệu một số kĩ thuật nén ảnh và ứng dụng (Trang 37 - 49)

Tải bản đầy đủ (PDF)

(67 trang)