CHƯƠNG 2 CÁC KỸ THUẬT MÃ HÓA VIDEO
2.3. Kỹ thuật mã hóa video H.265/HEVC
2.3.3.3. Cấu trúc khối và phân vùng các khối ảnh
H.265/HEVC là một phương pháp mã hóa video hỗn hợp theo khối, nền tảng của mã hoá video, giống như những chuẩn mã hố trước. Cũng như H.264/AVC, hình ảnh được chia thành nhiều khối. Tuy nhiên, H.265/HEVC đề xuất một cấu trúc dữ liệu, có thể cải thiện đáng kể khả năng dự đoán và chuyển đổi của tiêu chuẩn nén H.265/HEVC này.
a. Khối mã hóa cây (CTB) và đơn vị mã hóa cây (CTU)
Thay vì sử dụng khối macroblock như H.264/AVC và tất cả các tiêu chuẩn mã hóa video trước, trong H.265/HEVC, một hình ảnh được phân chia thành nhiều khối vng, gọi là khối mã hóa cây (Coding Tree Blocks-CTB). Những khối vuông CTB trong H.265/HEVC có kích thước từ 4x4 đến 64x64, lớn hơn so với kích thước lớn nhất của một macroblock (16x16) được sử dụng trong H.264/AVC. Một CTB, chính nó có thể chia ra các CTB khác dựa trên độ phức tạp của ảnh theo cấu trúc dữ liệu dạng cây (quadtree structure). Những CTB nhỏ hơn này giống nhau về cả thành phần độ sáng (luma) và màu sắc (chroma). Do đó, một thành phần sáng CTB và 2 thành phần màu CTB tương ứng sẽ tạo ra một đơn vị mã hóa cây (Coding Tree Units -CTU) nếu định dang nén video là 4:2:0, giống như macroblock, là đơn vị xử lý trong H.265/HEVC. Một nhóm các CTU liền kề cùng nhau cấu thành nên một mảnh, tương tự nhiều macroblock tạo nên mảnh trong H.264/AVC.
Hình 2.9. Phân vùng hình ảnh thành nhiều macro 16x16 và CTU 64x64 [1]
Cụ thể như trong hình 2.9, hình ảnh có nhiều vùng giống nhau nên việc sử dụng khối kích thước lớn sẽ hiệu quả hơn, bao phủ được rộng hơn so với khối kích thước nhỏ, từ đó giảm số khối, giảm số xử lý mã hóa. Bộ mã hố sẽ cân bằng giữa điều kiện phần cứng và yêu cầu của định dạng video mã hoá mà chia ảnh ra thành các CTB một cách hợp lý. Kích thước CTU được xác định bởi bộ mã hóa, sau đó truyền đến bộ giải mã thông qua các tập tham số chuỗi (SPS).
b. Khối dự đoán (CU) và đơn vị dự đoán(PB)
Cũng như CTB, CTU thể được phân chia thêm thành các đơn vị hình vng nhỏ hơn, được gọi là đơn vị mã hóa (Coding Unit-CU) dựa theo cấu trúc dữ liệu dạng cây để
giải quyết một số vấn đề: như việc lựa chọn chế độ dự đoán cho khối là trong ảnh (intra) hay liên ảnh (inter) là khơng thích hợp do gặp vấn đề bất lợi trong q trình dự đốn tỷ l biến dạng (rate-distortion). Phân vùng đệ quy chia CTU thành nhiều CU có kích thước khối khác nhau, nhỏ hơn, làm cho H.265/HEVC có thể quyết định một cách linh hoạt và hiệu quả về dự đoán nội ảnh hay liên ảnh, đặc biệt là làm giảm mối tương quan giữa các khối trong cùng một ảnh.
Hình 2.10. Ví dụ về phân vùng CTU theo thứ tự chiều sâu [8]
Trường hợp CU được mã hóa theo dự đoán liên ảnh (inter-picture prediction), thành phần sáng (luma) và màu (chroma) của CU đó có thể được chia thành các đơn vị nhỏ hơn làm cơ sở để dự đoán, gọi là các khối dự đốn (Prediction Blocks-PB). Do đó, PB được định nghĩa là các mẫu chứa thành phần sáng hoặc màu mà sử dụng thông số chuyển động (motion parameters) giống nhau. Trong đó, các thông số chuyển động bao gồm các vector chuyển động được dự đoán và những ảnh tham chiếu của các vector đó. Theo chế độ dự đốn liên ảnh, H.265/HEVC có tám hình dạng chia tách từ CU thành PU, xem hình 2.10. Với số lượng kích thước PU đa dạng hơn thì hiệu quả mã của của H.265/HEVC cũng cao hơn. Hiệu quả dự đoán bù chuyển động trong H.265/HEVC cao hơn. Tuy nhiên, có sự cân nhắc giữa số lượng nhỏ hơn các phương thức dự đoán và hiệu quả mã hóa. Kích thước khối tối thiểu của PU trong H.265/HEVC là 4x4.
c. Khối biến đổi (TB) và đơn vị biến đổi (TU)
Một block mã hóa (CB) có thể được chia thành nhiều khối biến đổi (Transform Blocks -TB). Một TB được miêu tả là một khối hình vng chứa thành phần sáng hoặc màu, mà tại đó ánh xạ hai chiều được sử dụng để mã hóa. Việc chia CB thành nhiều TB được dựa trên cấu trúc dạng cây, như trên hình 2.11. Trong đó, vị trí gốc là CB và các lá cây là các TB. Một nút lá được xác định trong RQT (Residual Quadtree Structure) khi kích thước khối biến đổi nhỏ nhất, tuy nhiên sự phân chia RQT bị hạn chế bởi độ sâu tối đa. Ví dụ, nếu độ sâu tối đa của RQT là 1, thì CB 2Nx2N chỉ có thể được phân chia một lần thành một TB có cùng kích thước hoặc 4 NxN. Trường hợp đặc biệt nếu độ sâu tối đa là 0, kích thước của CB hiện tại là 64x64, trong khi kích thước biến đổi tối đa là 32. Tại thời điểm này, CB bị ép chia thành 4 TB 32x32 để đáp
ứng giới hạn về kích thước biến đổi tối đa. Cũng như CB, TB sáng và các TB màu tương ứng cấu thành nên đơn vị chuyển đổi (Transform Unit- TU).
Hình 2. 11. Ví dụ về chia một CTB thành nhiều TBs [8]
Trong ví dụ trên cho phân vùng 64x64 khối mã hóa cây mức sáng-luna (màu đen) vào các khối mã hóa (màu xanh) và khối chuyển động (màu đỏ). Trong hình minh họa bên phải các đường xanh biểu thị cây mã hóa tương ứng với khối cây mã hóa (hình đen vng) ở gốc của nó và các khối mã hóa (các đường trịn màu xanh) tại các nút lá của nó.
Các đường màu đỏ biểu thị các phần dư khơng phân hóa với các khối biến đổi (hình trịn màu đỏ) như nút lá. Lưu ý rằng các khối chuyển đổi được chọn giống hệt với các khối mã hóa tương ứng khơng được đánh dấu rõ trong hình này. Các con số nhận ra thứ tự mã hóa và các khối biến đổi.
Hình 2.12. Mối quan hệ giữa CU, PU và TU trong H.265/HEVC [8] 2.3.4. Biến đổi và lượng tử hóa
Trong cách tiếp cận mã hóa lai ghép các khối ảnh, các phép biến đổi được áp dụng cho những tín hiệu sai khác giữa từ kết quả dự báo liên ảnh và trong ảnh được biểu thị trong hình 2.13. Tại khối mã hóa, phần dư của một ảnh được chia thành 2 khối vng có kích thước NxN với N=2M với M là số nguyên. Mỗi khối dư (U) được sát nhập vào một chuyển đổi hai chiều NxN. Việc chuyển đổi hai chiều có thể thực hiện tách rời bằng cách áp dụng một phép biến đổi theo chiều dọc N điểm cho mỗi hàng và
mỗi cột riêng biệt. Các kết quả hệ số biến đổi NxN (coeff) sau đó được lượng tử hóa (tương đương với việc chia theo bước lưỡng tử hóa Qstep) để đạt được một hệ chuyển đổi đã lượng tử hóa (level).
Hình 2. 13. Sơ đồ tổng quát biến đổi và lượng tử hóa block video (a). Encoder, (b). Decoder [3]
Trong tiêu chuẩn mã hóa video như H.265/HEVC, q trình giải lượng tử hóa và chuyển đổi ngược là được chỉ định, trong q trình chuyển đổi và lưỡng tử hóa được chọn bởi nhà thực thi, nó phụ thuộc vào sự ràng buộc trên bitstream. Đối với chuyển đổi, có 2 biến đổi sử dụng trong HEVC. Chuyển đổi cốt lõi dựa trên biến đổi cosin rời rạc và chuyển đổi luân phiên dựa trên biến đổi sine rời rạc.
Thơng số lượng tử hóa QP
H.265/HEVC cho phép truyền một giá trị QP ở cấp độ nhóm lượng tử (QG) để cho phép thay đổi QP trong một bức ảnh. Điều này tương tự như H.264/AVC cho phép sửa đổi các giá trị QP ở cấp độ macroblock. Kích thước QG là một bội số của kích thước mã hóa có thể dao động từ 8 x 8 đến 64 x 64 tùy thuộc vào kích thước cây mã hố (CTU), thể hiện trong Bảng 2.3.
Bảng 2.3. Kích thước nhóm lưỡng tử hóa cho kích thước CTU khác nhau
Sự khác nhau độ sâu delta-QP Kích thước nhóm lượng tử hóa cho 64 x 64 CTU Kích thước nhóm lượng tử hóa cho 32 x 32 CTU Kích thước nhóm lượng tử hóa cho 16 x 16 CTU 0 64 x64 32 x 32 16 x 16 1 32 x 32 16 x 16 8 x 8 2 16 x 16 8 x 8 - 3 8 x 8 - -
Giá trị delta-QP chỉ được truyền trong các đơn vị mã hóa có hệ số chuyển đổi khác không.
Nếu CTU được chia thành các đơn vị mã hóa lớn hơn kích thước QG thì delta- QP báo hiệu tại một đơn vị mã.
Nếu CTU được chia nhỏ hơn kích thước QG thì delta-QP báo hiệu trong đơn vị mã hóa đầu tiên với hệ số biến đổi khác không trong QG.
Nếu một QG có các đơn vị mã hóa có các hệ số bằng khơng (ví dụ trong chế độ merge mode) thì delta-QP khơng báo hiệu.
Bộ dự đốn giá trị QP
Bộ dự đốn QP được sử dụng để tính tốn giá trị delta-QP bằng cách sử dụng các giá trị QP từ bên trái, phía trên và giá trị QG trước đó được thể hiện trên hình 2.14, các dự đoán QP sử dụng kết hợp 2 thuật toán dự đoán:
Dự đốn khơng gian (từ trái và trên các QG) và dự báo QG trước đó. Nó sử dụng dự báo không gian từ bên trái và bên trên trong một CTU và sử dụng QP trước đó làm dự báo tại ranh giới của CTU. Các giá trị QP liền kề trong không gian, QPLEFT và QPABOVE được coi như là khơng có sẵn khi chúng ở một CTU khác hoặc nếu QG hiện tại ở tại ranh giới một slce/tile/picture. Khi khơng có QP khơng gian liền kề, thì nó sẽ thay bởi các giá trị previous QP, QPPREV theo thứ tự giải mã. Các giá trị previous QP, QPPREV được khởi tại từ slice QP tại các giá trị bắt của Slice, Tile, wavefront.
Các giá trị QP được tính trên được sử dụng để tính giá trị QP-luna, cịn giá trị QP-chroma (thành phần Cr và Cb) được lấy từ QP-luna bằng cách sử dụng mức ảnh, mức slice ofset và bản tra cứu.
Các chế độ đặc biệt của HEVC
HEVC có ba chế độ đặc biệt để lựa chọn trình biến đổi và lượng tử [9, 10, 11]. - Chế độ I_PCM.
- Chế độ lossless.
- Chế độ transform skip.
Các chế độ này bỏ qua hoặc biến đổi hoặc cả hai chuyển đổi và lượng tử hóa. Hình 2.15 chỉ ra các chế độ này trên đầu dịng dữ liệu bộ giải mã video chung.
Hình 2.15. I_PCM, lossless and transform skip modes in decoder [3]
- Trong chế độ I_PCM chuyển đổi và lượng tử hóa đều được bỏ qua. Ngồi ra mã hóa entropy và dự đoán cũng được bỏ qua và các mẫu video được mã hóa trực tiếp với độ sâu bit PCM. Chế độ I_PCM được thiết kế để giãn rộng dữ liệu trong q trình mã hóa, ví dụ như khi nhiễu ngẫu nhiên tác động vào bộ mã hóa và giải mã, bằng cách mã hóa trực tiếp các mẫu video, mở rộng dữ liệu có thể tránh được nhiễu như vậy.
2.3.5. Các chế độ dự đoán
H.265 sử dụng ba chế độ dự đoán để dự đoán cho một CU.
- Phương pháp dự đoán Intra: sử dụng thơng tin pixel có sẵn trong hình hiện tại để làm tham chiếu dự đốn, để lấy ra vị trí dự đốn.
- Phương pháp dự đốn Inter (ước lượng chuyển động và bù chuyển động) : sử dụng thơng tin pixel có sẵn trong khung q khứ ( ảnh P) hoặc cả trong quá khứ và tương lai (ảnh B) để làm tham chiếu dự đốn, với mục đích lấy ra vector chuyển động để bù đắp cho thích hợp với CU.
- Chế độ SKIP: tương tự như Dự đốn Inter nhưng khơng có thông tin chuyển động nên bỏ qua CU.
Ta sẽ tìm hiểu về cơ bản kĩ thuật Dự đoán Intra và Dự đoán Inter trong H.265.
2.3.5.1. Chế độ dự đoán trong ảnh
Đây là kiểu dự đoán sử dụng các pixel lân cận của PU đã được mã hóa trong cùng một frame để tham khảo nhằm khai thác sự tương quan về khơng gian. Nó được thực hiện tại cấp độ PU, đó là một ma trận hình vng, có kích thước từ 4x4, 8x8, 16x16 đến 32x32.
Ngồi khối đang được dự đốn, bộ mã hóa u cầu pixel của 5 khối lân cận đã được mã hóa và tái tạo xung quanh PU trong cùng một frame : A, B, C, D, E. Ta có B, C là khối phía trên và phía trên bên phải của PU, còn D và E là khối bên trái và phía dưới trái của PU. A là một pixel ở góc trên cùng bên trái của PU. Hình sau biểu diễn một khối dự đoán (PU) và các pixel lân cận. Khối PU được dự đoán bằng cách nội suy từ các khối lân cận.
Hình 2.16. Cấu trúc khối PU và các pixel lân cận sử dụng để dự đoán [7]
H.265 cho phép 35 chế độ dự đốn Intra khác nhau. Hai trong số đó là phẳng + DC, 33 chế độ cịn lại là có góc.
Khi sử dụng chế độ INTRA_PLANAR, bộ mã hóa sẽ tính tốn một hàm nội suy hai chiều, được sử dụng để điền vào khối dự đốn. Đó là chế độ tính tốn phức tạp nhất.
Khi sử dụng chế độ INTRA_DC, khối dự đoán sẽ được lấp đầy pixel chứa giá trị điểm ảnh trung bình từ B và D. INTRA_DC là chế độ tính tốn đơn giản nhất.
Để xây dựng các khối dự đốn khi sử dụng chế độ góc, nội suy tuyến tính được sử dụng với các quy tắt hướng như hình vẽ sau:
2.3.5.2. Chế dự đoán liên ảnh
Dự đoán Inter là kỹ thuật dự đốn nhằm loại bỏ thơng tin giống nhau giữa các ảnh liên tiếp, chỉ mã hóa phần thơng tin khác nhau giữa chúng. Dựa vào nguyên tắc đó, các bộ mã hóa sẽ quét lần lượt từng CU và phát hiện xem có sự thay đổi từ frame này sang frame khác không đồng thời cịn dự đốn sự xuất hiện của các CU khi biết vị trí và hướng chuyển động của nó. Do đó chỉ có sự thay đổi giữa các khối mới truyền đến phía thu.
H.265 tăng cường phương pháp Inter- prediction, sử dụng sửa đổi để có được nhiều đối tượng nhất có thể, từ dữ liệu của các PBs liền kề và những ảnh tham khảo. Ở đây có một chế độ kết hợp mới cho mã hóa vecstor chuyển động (MV) tương tự như chế độ trực tiếp trên H.264 mà ở đó khơng cần truyền thông tin của vector chuyển động. Chúng được tạo ra trong bộ giải mã từ một danh sách đối tượng của thông số chuyển động.
Đối với phần dự đốn inter của tiêu chuẩn mã hóa video HEVC khơng được giới thiệu một thiết kế mới tồn diện mang tính đột phá. Tuy nhiên nó được xem là một cải tiến đều và khái quát hóa cho tất cả các bộ phận được biết đến trước đây là H.264/AVC. Hình 2.18 mơ tả khái qt dự đốn inter trong H.265/HEVC.
Hình 2.18. Sơ đồ tổng qt dự đốn inter trong H.265/HEVC [7]
Dữ liệu chuyển động của một block là tương quan với block lân cận. Để khai thác mối tương quan này, dữ liệu chuyển động khơng được mã hóa trực tiếp trong dịng bit dữ liệu nhưng nó được mã hóa dựa trên dữ liệu lân cận. Trong chuẩn mã hóa H.265/HEVC có hai khái niệm được sử dụng cho điều này là dự đoán tiên tiến vector chuyển động và kỹ thuật hợp nhất dự đoán inter.
Trong dự đoán liên ảnh, những CU ở cấp độ cuối cùng trong cây CU có thể được chia ra thành nhiều khối hình chữ nhật gọi là đơn vị dự đốn (PU). Với những CU có kích thước 2N×2N, HEVC hỗ trợ những PU với kích thước 2N×2N, 2N×N, N×2N và N×N (trừ những PU có kích thước 4x4). Nếu N>4, H.265 có thể sử dụng đa xử lý không đối xứng (AMP), AMP cho phép chia CU thành 2 PU khơng cân xứng có kích thước là 2N×N/2 và 2N×3N/2 hoặc ngược lại.
Các thơng số chuyển động chói kết hợp với mỗi PU bao gồm vector chuyển động (MV) và hình ảnh tham khảo, tham số chỉ hướng dự đốn (Idxs). Trong HEVC, những thơng số này có thể có được từ chế độ kết hợp (merge mode) hoặc được ước tính thơng qua chế độ nén liên ảnh bình thường (inter mode). Trong cả 2 trường hợp này, những MV màu có thể có được từ MV chói.
Hình 2.19. CU được mã hóa Inter có thể sử dụng phân chia chuyển động đối xứng (4 kiểu) hoặc bất đối xứng (4 kiểu) [7]
Chế độ kết hợp (merge mode) suy ra những thông số chuyển động kết hợp cho tiến trình PU từ khơng gian và thời gian liền kề của mã hóa liên ảnh PU. HEVC MP chỉ ra 4 đối tượng kết hợp không gian (lân cận PU) và 1 đối tượng kết hợp thời gian (tạm thời ở cùng PU). Nếu số lượng ứng viên khơng gian, thời gian đặc biệt có sẵn nhỏ hơn 5, nhiều ứng viên khác sẽ được tạo từ cái đã có để số lượng những ứng viên này là 5.