Qui trình nén (7)

Một phần của tài liệu xây dựng engine giải mã video h.264 trên hệ thống nhúng (Trang 75 - 79)

Hình 4-4: Quy trình nén video chuẩn H.264 4.2.1.1 Quá trình dự đoán (Prediction)

Quá trình dự đoán được thực hiện cho từng block trong macroblock của khung ảnh. Đầu tiên, block dự đoán cho mỗi block này sẽ được tạo dựa trên dữ liệu đã được mã hóa trước đó. Dữ liệu dự đoán này có thể từ ảnh hiện tại chứa macroblock đó (trong dự đoán Intra) (8)hoặc từ các ảnh khác đã được nén và truyền dẫn (trong dự đoán Inter). (9)

76 Bộ nén sẽ thực hiện lấy phần bù của block hiện tại cần mã hóa với block dự đoán để tạo nên block sai khác (difference/residual block). Dữ liệu của block sai khác sẽ được thực hiện biến đổi, lượng tử và nén entropy. Quá trình dự đoán Inter trong H.264 được thực hiện đối với từng phân hoạch (partition) với các kích thước khác nhau trong macroblock thay đổi từ 4x4 đến 16x16 điểm ảnh (các kích thước phải thoả mãn là bội số của 4).

Phương thức dự đoán của chuẩn H.264 được cải tiến hơn so với các chuẩn nén video trước đây. Chẳng hạn trong kiểu dự đoán Intra(Hình 4-5), H.264 hỗ trợ nhiều kích thước block khác nhau thay đổi từ 4x4 đến 16x16 điểm ảnh, với dự đoán Inter thì H.264 độ chính xác bù chuyển động lên đến ¼ khoảng cách giữa 2 điểm ảnh; hỗ trợ lọc tách khối (10);…

Hình 4-5: Kiểu dự đoán Intra

Đối với kiểu dự đoán Inter(Hình 4-6), mỗi macroblock được dự đoán từ những vùng ảnh có cùng kích thước trong các ảnh tham chiếu (reference picture).

77

Hình 4-6: Quá trình dự đoán Inter 4.2.1.2 Quá trình biến đổi (transform)

Mục đích của quá trình biến đổi trong một video CODEC là chuyển dữ liệu về

phần sai khác bù chuyển động sang một miền giá trị (domain) khác. Dữ liệu sau khi biến đổi phải rời rạc nhau và cô đọng để thuận tiện cho quá trình nén.

Trong chuẩn H.264, quá trình biến đổi được thực hiện với từng block trong macroblock dùng biến đổi nguyên - một hình thức của biến đổi cosin rời rạc (Discrete Cosine Transform) sẽ được trình bày sau.

4.2.1.3 Quá trình lƣợng tử (quantisation)

Quá trình lượng tử hóa ánh xạ các phần tử thuộc khoảng giá trị X sang một khoảng giá trị mới Y có kích thước nhỏ hơn X.

Sau quá trình biến đổi, ta thu được một tập các hệ số biến đổi. Các hệ số này sẽ được lượng tử hóa bằng nhiều phương pháp khác nhau (ví dụ: mỗi hệ số sẽ được chia cho một giá trị nguyên). Ứng với các giá trị khác nhau của biến lƣợng tử QP, quá

trình lượng tử sẽ làm giảm độ chính xác của các hệ số biến đổi với các mức độ khác nhau.

Việc thiết lập QP đến một giá trị cao đồng nghĩa với việc xuất hiện nhiều các hệ số biến đổi có giá trị 0. Điều này sẽ làm tăng hiệu suất nén ảnh nhưng chất lượng ảnh sau khi được giải nén sẽ giảm và ngược lại. Thông thường sau quá trình lượng tử, hầu hết các hệ số có giá trị là 0, một vài hệ số khác 0.

78

4.2.1.4 Mã hóa luồng bit nén

Trong quá trình nén video, một số giá trị phải được mã hóa để tạo thành luồng bit nén để lưu trữ hoặc truyền dẫn nhằm phục vụ cho bộ giải nén. Các giá trị này bao gồm :

 Các hệ số sau khi đã biến đổi và lượng tử

 Các thông tin liên quan nhằm giúp cho bộ giải nén tái tạo lại block dự đoán

 Thông tin về cấu trúc của dữ liệu nén

 Thông tin về chuỗi video hoàn chỉnh

 Thông tin về mode dự đoán của các macroblock trong dự đoán Intra

 Giá trị biến lượng tử QP

Các giá trị này và một số thành phần khác sẽ được mã hóa thành luồng bit nhị phân (bitstream) bằng cách dùng các thuật toán mã hóa độ dài tùy biến theo ngữ cảnh

(Context-Based Adaptive Variable Length Coding) và/hoặc mã hóa nhị phân số học theo ngữ cảnh (Context-Based Adaptive Binary Arithmetic Coding). Luồng bit nhị phân này sẽ thay thế cho thông tin video ban đầu với kích thước nhỏ nên hiệu quả hơn trong việc lưu trữ hoặc truyền dẫn.

4.2.1.5 Quá trình tái xây dựng

Cùng với việc mã hóa từng block trong một macroblock, bộ nén cũng cần có bước giải mã (tái xây dựng) lại macroblock để cung cấp giá trị tham chiếu cho các quá trình dự đoán tiếp theo. Các hệ số đã được lượng tử hóa sẽ được lượng tử ngược, biến đổi ngược để tạo ra block sai khác D‟n. Block dự đoán PRED được cộng vào block sai khác D‟n để tạo ra block uF‟n (chữ cái u nghĩa là chưa được lọc). Sau đó một bộ lọc sẽ giúp giảm các chi tiết bị nhiễu và tạo ra một ảnh tham chiếu từ dãy các block F‟n.

79

Một phần của tài liệu xây dựng engine giải mã video h.264 trên hệ thống nhúng (Trang 75 - 79)