Nén video (tiếng Anh Video Compression) là mã hóa tệp video nhằm mục đích giảm không gian lưu trữ và dễ dàng truyền tải trên mạng/Internet. Nén video là kỹ thuật làm giảm kích thước tệp video bằng cách loại bỏ các dư thừa về không gian và thời gian từ tệp video gốc.
Tại sao phải nén video?[sửa]
Một tệp video (hoặc luồng video) có được cảm giác chuyển động khi hiển thị một số hình ảnh (cg. khung hình) tĩnh trong khoảng thời gian ngắn. Ảo ảnh chuyển động này liên quan đến đặc trưng tự nhiên của thị giác con người. Nhiều nghiên cứu chỉ ra rằng giới hạn để cảm nhận chuyển động của con người là khoảng 15 khung hình/giây (FPS – frame per second). Tuy nhiên, thực tế tốc độ 15 FPS không làm cho con người cảm nhận hình ảnh chuyển động mượt mà. Để tránh chuyển động giật, ngành công nghiệp điện ảnh áp dụng tốc độ 24 FPS và phát sóng truyền hình áp dụng 25 đến 30 FPS.
Ba tính chất cơ bản của video là độ phân giải, độ sâu của màu và FPS. Độ phân giải được xác định bằng tích chiều rộng và độ cao của khung hình, tính bằng pixel. Độ sâu của màu ảnh là tổng số màu của một điểm ảnh. Giả sử một video sử dụng 24 bits (3 bytes) màu, có độ phân giải tương đương HD video (1280x720 pixels) thì dung lượng của một khung hình sẽ là 1280x720x3 bytes = 2764800 bytes ~ 2, 63 MB. Nếu truyền tải với tốc độ 30 FPS thì mỗi khung hình video phải truyền tải 2,63MB x 30FPS =76,89 MB/sec. Thực tế, không thể sử dụng kết nối băng thông rộng để phát trực tuyến khối lượng dữ liệu video lớn như vậy. Đồng thời, đĩa HDD cũng không đủ không gian để lưu trữ một bộ phim dài 90 phút (~426 GB). Do vậy, nén video là biện pháp bắt buộc để có thể truyền phát, lưu trữ và xem video kỹ thuật số.
Nguyên lý nén video[sửa]
Các phương pháp nén video cổ điển dựa trên hai nguyên lý của lý thuyết thông tin, đó là giảm thiểu thông tin dư thừa và loại bỏ các thông tin không liên quan.
Khung hình video thông thường sử dụng các thành phần màu RGB để xác định giá trị màu của mỗi pixel. Khi truyền phát video màu tương tự, các thành phần của mỗi dòng video được định nghĩa như sau:
- Y (Luma) là độ sáng (brightness) của hình ảnh
- U và V (chroma) là thông tin về màu, bao gồm sắc độ xanh (Blue-Luma) và sắc độ đỏ (Red-Luma)
Các thành phần YUV có mối quan hệ tuyến tính với các thành phần màu RGB, có thể thực hiện các phép toán số học để chuyển đổi qua lại giữa chúng. Như vậy, với mỗi dòng video ta có thông tin về độ sáng/chói và thông tin về màu/sắc độ. Sự phân chia thành phần như thế này cho khả năng áp dụng phương pháp nén gọi là lấy mẫu con sắc độ (chroma subsampling). Phương pháp nén lấy mẫu con sắc độ dựa trên ý tưởng là mắt con người ít nhạy cảm với các thành phần sắc độ hơn so với cấp độ sáng. Do vậy ta có thể giảm băng thông của thành phần U và V, không thay đổi băng thông của thành phần Y. Phương pháp này làm giảm dung lượng video, tuy chất lượng video sẽ suy giảm chút ít nhưng ở mức độ mắt người vẫn có thể chấp nhận được. Với video số, các giá trị YCbCr được sử dụng thay thế cho các giá trị YUV.
Lấy mẫu con là một tập quan hệ X: Y: Z. Trong đó, X là số lượng điểm ảnh của khối có chiều rộng X pixel và chiều cao là hai pixel. Y đại diện mẫu sắc độ Cb của dòng thứ nhất và Z đại diện cho sắc độ Cr cho dòng thứ hai. Ví dụ lẫy mẫu con 4: 4: 4, 4: 2: 2, 4: 1: 1 và 4: 2: 0 như trên hình 1.
Video là tập trình tự các ảnh số, video còn được gọi là hình ảnh chuyển động (moving pictures). Do vậy, một tiếp cận nén nguồn video là áp dụng thuật toán nén ảnh JPEG cho riêng biệt từng khung hình. Tiệm cận này được gọi là JPEG chuyển động (moving JPEG hay MJPEG). Tuy nhiên MJPEG chỉ cho lại tỷ lệ nén trong khoảng từ 10:1 đến 20:1, không đủ lớn để đáp ứng đòi hỏi của nhiều ứng dụng video khác nhau.
Thực tế cho thấy ngoài dư thừa về không gian trên mỗi khung hình, còn có dư thừa đáng kể giữa tập các khung hình trong video. Thông thường chỉ một phần nhỏ của khung hình liên quan đến chuyển động đang diễn ra. Ví dụ như môi và mắt con người chuyển động trong ứng dụng điện thoại video. Do vậy, ta chỉ cần gửi thông tin liên quan đến các khối chuyển động này của khung hình để tái tạo khung hình bên nhận. Bằng cách khai thác sự khác biệt thời gian tồn tại giữa các khung hình sẽ tiết kiệm đáng kể băng thông. Kỹ thuật sử dụng để khai thác tính tương quan cao giữa các khung hình liên tiếp là dự báo nội dung của nhiều khung hình. Thay vì gửi tập các khung hình nén của video nguồn, ta chỉ gửi một lựa chọn của dạng này, với các khung hình còn lại, ta sẽ gửi sự khác biệt giữa nội dung khung hình hiện tại và các nội dung khung hình dự báo. Độ chính xác của dự báo được xác định bởi phép toán ước lượng chuyển động (motion estimation). Vì quá trình ước lượng là không chính xác, cần phải gửi tiếp thông tin bổ sung để chỉ báo bất kỳ sự khác biệt nhỏ nào giữa vị trí dự báo và hiện hành của khối chuyển động liên quan, gọi nó là bù chuyển động (motion compensation).
Như vậy, ngoài lấy mẫu con sắc độ điểm ảnh, có hai loại nén khung hình cơ bản, đó là mã hóa độc lập và mã hóa dự báo. Mã hóa độc lập được gọi là khung I- (intracoded frames). Mã hóa dự báo có thể là khung P- (predictived frames) hoặc là khung B- (bidirectional frames) hay còn gọi là khung liên mã (intercoded frames) và khung nội suy (interpolation frames). Trình tự thông thường của các khung hình trong video nén có thể chỉ bao gồm các khung I- và B-, cũng có trình tự khung hình bao gồm cả khung I-, P- và B- (Hình 2).
I-frame được mã hóa độc lập bằng thuật toán JPEG, quá trình nén không tham chiếu đến khung hình nào khác. Tỷ lệ nén của I-frame không cao vì chỉ loại bỏ dư thừa không gian, không quan tâm đến dư thừa thời gian. Khung hình đầu tiên của cảnh hay của nhóm ảnh trong video được lựa chọn để làm khung hình I-. Khoảng cách giữa hai khung hình I- liên tiếp N (GOP span) có giá trị từ 3 đến 12 khung hình (hình 2). I-frames được sử dụng làm điểm truy cập ngẫu nhiên trong luồng video.
Qui trình mã hóa P-frame trước hết chia khung hình thành các macroblock kích thước 16x16 điểm ảnh. Nội dung của mỗi macroblock được so sánh với khung hình tham chiếu để tìm ra khối điểm ảnh cùng kích thước phù hợp nhất. Khung hình tham chiếu có thể là khung P- hay I- trước nó. Khoảng cách (x, y) giữa macroblock trên khung hình mã hóa và khối điểm ảnh trên khung hình tham chiếu gọi là véc tơ chuyển động (motion vector). Macroblock khác biệt được tạo ra từ macroblock hiện hành và khối điểm ảnh phù hợp nhất trên khung hình tham chiếu, cùng với véc tơ chuyển động được nén dựa trên kỹ thuật tương tự JPEG. P-frame có tỷ lệ nén cao, nhưng tổng số khung hình P- trong mỗi cặp khung hình I- bị giới hạn bởi vì lỗi xảy ra trong P-frame trước sẽ lan truyền sang các P-frames tiếp theo. Tổng số khung hình M (prediction span) giữa P-frames với khung hình I- hay P- ngay trước đó thường được chọn từ 1 đến 3 (hình 2).
Quá trình mã hóa khung hình B-frames được thực hiện bằng ước lượng chuyển động (véc tơ chuyển động) của khối điểm ảnh trên cơ sở tham chiếu các khung hình I- và P- ngay trước và sau nó. Một khối điểm ảnh mới được tạo ra bằng tính trung bình cộng khối điểm ảnh phù hợp nhất trên khung hình tham chiếu trước đó và khối điểm ảnh trên khung hình tham chiếu sau đó. Một macroblock khác biệt được tạo ra từ macroblock trên khung hình hiện hành với khối điểm ảnh trung bình vừa tạo ra. Macroblock này cùng véc tơ chuyển động được nén sử dụng kỹ thuật tương tự nén JPEG. Có ba nội dung khung hình tham gia vào mã hóa B-frame, đó là I- hay P-frame ngay trước đó, khung hình hiện tại và khung hình I- hoặc P- ngay sau nó. Như vậy làm tăng độ trễ mã hóa khung B- nhưng nó có thể đạt tỷ lệ nén cao nhất. B-frame không tham gia vào giải mã các khung hình khác cho nên nó không lan truyền lỗi.
Tiêu chuẩn nén video theo từng thời kỳ[sửa]
Chuẩn mã hóa video số đầu tiên H.120 được CCITT (bây giờ là ITU-T) công bố vào 1984. Dòng chuẩn nén video H.26x tồn tại gần 30 năm và rất phổ biến cho đến ngày nay. Tiêu chuẩn H.264/AVC (Advanced Video Coding) là một trong những tiêu chuẩn nén video được sử dụng phổ biến nhất: mọi đầu thu HDTV, mọi đầu phát Blu-Ray và hầu hết các video Internet đang sử dụng tiêu chuẩn H.264/AVC. Nó được sử dụng trong khoảng hơn một tỷ thiết bị trên toàn thế giới.
Kế tiếp của H.264/AVC là chuẩn H.265/HEVC (High Efficiency Video Coding) có mặt trên thị trường từ năm 2013 và chỉ đòi hỏi một nửa tốc độ dữ liệu (data rate) so với H.264/AVC mà vẫn duy trì chất lượng hình ảnh.
Tháng 4 năm 2018, ITU-T VCEG và ISO/IEC MPEG thành lập Ủy ban quốc tế JVET (Joint Video Experts Team) nhằm phát triển một tiêu chuẩn nén video mới với tên H.266/VVC (Versatile Video Coding) nhằm mục đích giảm tốc độ dữ liệu yêu cầu hơn nữa trong khi vẫn duy trì chất lượng hình ảnh.
Nhóm MPEG (Moving Picture Coding Experts Group)được Leonardo Chiariglionevà Hiroshi Yasuda thành lập năm 1988. Một họ chuẩn nén âm thanh và video MPEG bao gồm MPEG-1, MPEG-2 và MPEG-4.
MPEG-1 (1993): Mã hóa hình ảnh chuyển động và âm thanh liên quan cho phương tiện lưu trữ kỹ thuật số với tốc độ lên đến khoảng 1, 5 Mbit/s (ISO/IEC 11172). MPEG-1 là chuẩn nén âm thanh và video MPEG đầu tiên.
MPEG-2 (1995): Mã hóa chung cho hình ảnh chuyển động và thông tin âm thanh liên quan (ISO/IEC 13818). MPEG-2 là các tiêu chuẩn truyền tải, nén video và âm thanh cho truyền hình chất lượng phát sóng.
MPEG-4 (1998): Mã hóa các đối tượng nghe nhìn (ISO/IEC 14496). Chuẩn MPEG-4 cung cấp khung làm việc cho các thuật toán nén tiên tiến với tỷ lệ nén cao hơn so với MPEG-2 nhưng chi phí tính toán cao hơn.
Tài liệu tham khảo[sửa]
- Alois M. Bock, Video Compression System, The Institution of Engineering and Technology, London, United Kingdom, 2009
- John Watkinson, Compression in Video and Audio, Focal Press, 1997
- Madhuri A. Joshi, Mehul S. Raval, Yogesh H. Dandawate, Kalyani R. Joshi, Shilpa P. Metkar, Image and Video Compression - Fundamentals, Techniques, and Applications, Taylor & Francis Group, LLC, 2015
- Ze-Nian Li, Mark S. Drew, Jiangchuan Liu, Fundamentals ofMultimedia, Second Edition, Springer International Publishing Switzerland, 2014