Thuật toỏn AIC

Một phần của tài liệu Tìm hiểu một số thuật toán mã hóa và nén dữ liệu, xây dựng ứng dụng để nén dữ liệu ảnh (Trang 43 - 58)

2.4.2.1. 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 2.11 và ảnh khi chuyển sang kờnh RGB:

Hỡnh 2.10: Sơ đồ khối nộn AIC và giải nộn AIC.

Sơ đồ mó húa AIC Sơ đồ giải mó AIC

RGB Kờnh đỏ Kờnh xanh lỏ cõy Kờnh xanh dƣơng

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 xanh lỏ cõy 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.

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:

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:

Y = 0.299R + 0.587G + 0.114B

Cb = -0.169R - 0.331G + 0.5B

Cr = 0.5R - 0.419G - 0.081B

Cỏc phần tử màu xanh lỏ 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ỏ, tiếp theo là màu đỏ và màu xanh dƣơng. 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ị 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.

2.4.2.2. 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 đú. R = Y + 1.402Cr G = Y - 0.344Cb - 0.714Cr B = Y + 1.772Cb

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.13 chỉ ra khối 8x8 hiện tại 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.

Chế độ 2: DC (adsbygoogle = window.adsbygoogle || []).push({});

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.

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 ở đú.

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 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.

Kết quả của một quỏ trỡnh dự đoỏn, hỡnh 2.14 dƣới đõy:

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 để 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.15 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 ảnh gốc Hỡnh ảnh phỏng đoỏn

Hỡnh 2.15: Ảnh độ chúi dư thừa.

Trong hỡnh 2.15 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.

2.4.2.3. AIC - Chuyờ̉n đổi và lượng tử húa Cosin rời rạc (adsbygoogle = window.adsbygoogle || []).push({});

Để 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 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.3 Thuậ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 đú 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.

2.4.2.4. 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. Dƣới đõy sẽ giới thiệu ngắn về mó hoỏ số học và cỏch nú đƣợc sử dụng trong H.264 và AIC.

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.

Vớ dụ, giả sử chỳng ta muốn nộn từ "SQUEEZE". Từ này cú chứa 5 ký hiệu khỏc nhau: E, Q, S, U và Z. Để lƣu trữ văn bản này mà khụng cần nộn, ta cần Log2(5) hoặc 2,32 bit mỗi ký hiệu để lƣu trữ từ đú trong 7*2,32 =16,25 bit . Tuy nhiờn, vỡ một mỏy tớnh chỉ cú thể xử lý cỏc bit hoàn chỉnh, chỳng ta cần tối thiểu là 3 bit mỗi ký hiệu và lƣu trữ từ này trong 21 bits .

Bằng cỏch sử dụng mụ hỡnh thống kờ, chỳng ta cú thể gỏn ớt bit hơn cho cỏc ký hiệu phổ biến (ký tự E trong từ “SQUEEZE”) và nhiều bớt hơn cho cỏc ký hiệu ớt gặp. Theo mệnh đề Shannon, Entropy hay nội dung thụng tin của một ký hiệu phụ thuộc vào xỏc suất của ký hiệu đú:

Entropy = -Log 2 (xỏc suất) hoặc, Entropy = Log 2 (1/xỏc xuất) Entropy cú giỏ trị bằng số lƣợng tối ƣu bit để mó húa một ký hiệu. E ký hiệu trong "SQUEEZE” xuất hiện ba lần và cú xỏc suất 3/7, do đú entropy của E này là khoảng 1,22. Cỏc ký hiệu khỏc cú một xỏc suất 1/7 và entropy khoảng 2,81. Vỡ vậy, số lƣợng tối ƣu của bit để mó húa từ này là 3*1,22 + 4*2,81 = 14,90 bit.

Khi mó húa từ này bằng cỏch sử dụng mó húa Huffman, ta thƣờng xõy dựng một cõy Huffman bằng cỏch đệ quy dựng hai ký hiệu phổ biến nhất và biến chỳng thành một lỏ của cõy và sau đú lặp lại quỏ trỡnh này cho đến khi một trong những lỏ ở gốc vẫn cũn. Đõy là cõy Huffman cho từ “SQUEEZE”.

Một phần của tài liệu Tìm hiểu một số thuật toán mã hóa và nén dữ liệu, xây dựng ứng dụng để nén dữ liệu ảnh (Trang 43 - 58)