CHƯƠNG I: TỔNG QUAN VỀ MÃ HÓA VIDEO 1. Truyền tải thông tin bằng hình ảnh, âm thanh là một trong các phương pháp hữu dụng thể hiện rõ thông điệp, và video sự kết hợp của hai phương pháp trên trở thành phương tiện hữu ích trong thời đại đa phương tiện hiện nay. Video được tạo thành từ các hình ảnh liên tiếp được phát liên tục với tốc độ 18, 24 hình/ giây. Sử dụng đặc điểm mắt người ta có một đoạn phim với các hình ảnh chuyển động mượt mà.
Việc tiếp nhận thông tin qua video không chỉ giúp người dùng dễ dàng tiếp nhận thông tin mà còn giảm thời gian tiếp thu so với sách báo. Từ đó mở ra một kênh phương tiện tiếp nhận thông tin mới qua các kênh tin tức truyền hình, các bộ phim điện ảnh…Ngoài ra video còn góp phần trong an ninh qua các camera giám sát được sử dụng ở mọi đơn vị và nhà riêng. Và còn rất nhiều các lĩnh vực sử dụng video như nghiên cứu khoa học, quân sự, y khoa… Từ sự thuận tiện và phổ biến của video việc mã hóa và truyền tín hiệu video đóng vai trò quan trọng, giải quyết các bài toán về dữ liệu lưu trữ, tốc độ đường truyền. Về cơ bản kỹ thuật mã hóa video là làm giảm bớt các thông tin không cần thiết trong video mà không làm ảnh hưởng đến chất lượng trải nghiệm của người xem.
Lượng thông tin dư thừa trong video gồm hai loại là dư thừa thông tin trong miền không gian (trong mỗi khung hình) và dư thừa thông tin trong miền thời gian (trong các khung hình liên tiếp). Mã hóa video làm giảm số bit khi lưu trữ hoặc khi truyền. Các kỹ thuật mã hóa entropy được sử dụng để làm giảm lượng thông tin dư thừa và giữ lại các tin quan trọng. Nguyên tắc mã hóa video Các nghiên cứu trước đây đã chỉ ra rằng giữa các khung hình trong chuỗi video và giữa các pixel trong cùng một khung hình có một mối tương quan nhất định.
Dựa vào các mối tương quan này chúng ta có thể thực hiện việc nén tín hiệu video mà Luan van 3 không làm ảnh hưởng tới độ phân giải của ảnh. Ngoài ra, khai thác đặc điểm của mắt người là kém nhạy cảm với một số thông tin hình ảnh theo không gian và thời gian nên có thể loại bỏ thông tin này trong quá trình nén. Đây chính là kỹ thuật nén tổn hao để tiết kiệm băng thông trong khi vẫn đảm bảo chất lượng video ở mức có thể chấp nhận được. Nội dung được tham khảo tại tài liệu [1] Trong quá trình nén ảnh tĩnh, kỹ thuật nén sử dụng mối tương quan theo không gian giữa các pixel trong ảnh.
Kỹ thuật này gọi là nén “trong ảnh” (Intraframe). Thuật ngữ này có hàm ý rằng trong quá trình nén ảnh, thông tin được sử dụng chỉ trong phạm vi nội tại bức ảnh đó. Đây là kỹ thuật cơ bản của chuẩn nén JPEG sẽ được giới thiệu trong phần sau. Trường hợp nếu mối tương quan theo thời gian được khai thác thì kỹ thuật nén được gọi là nén “ngoài ảnh” (Interframe).
Khi đó thông tin được sử dụng để nén ảnh có thể nằm trên một bức ảnh trước hoặc sau trong chuỗi video. Đây là kỹ thuật được sử dụng trong các chuẩn nén video như H. Nguyên lý của việc nén video dựa trên các kỹ thuật giảm các dư thừa thông tin sau: - Dư thừa thông tin trong miền không gian (Spatial redundancy): Dư thừa thông tin trong miền không gian xuất hiện giữa các pixel trong cùng một khung hình (ví dụ sự tương đồng giữa các pixel). Thông tin dư thừa được loại bỏ bằng kỹ thuật mã hóa biến đổi (transform coding).
- Dư thừa thông tin trong miền thời gian (Temporal redundancy): Loại thông tin dư thừa này xuất hiện khi giữa các khung ảnh liên tiếp có những thông tin tương đồng. Để giảm dư thừa này người ta dùng kỹ thuật mã hóa sự khác biệt giữa các khung hình. - Dư thừa thông tin trong dữ liệu ảnh sau khi nén: Để loại bỏ dư thừa này người ta dùng mã entropy, cụ thể là mã có độ dài thay đổi (Variable Length Coding). Kỹ thuật giảm dư thừa thông tin trong miền không gian [1] a.
Mã hóa bằng phương pháp dự đoán Tại thời điểm ban đầu, phương pháp giảm dư thông không gian được đưa ra dựa trên việc dự báo giá trị của các pixel hiện tại dựa vào giá trị của pixel đã được mã hóa Luan van 4 trước đó. Phương pháp này được gọi là “Điều chế xung mã sai phân” (Differential Pulse Code Modulation – DPCM).1 mô tả sơ đồ khối của bộ mã hóa này. Theo sơ đồ, sự sai khác giữa giá trị của pixel hiện tại và giá trị dự đoán từ bộ dự đoán được lượng tử và mã hóa trước khi truyền đi. Tại phía giải mã, sự sai khác này được cộng với giá trị dự đoán từ bộ dự đoán để khôi phục lại giá trị đúng của pixel hiện tại.
Trong trường hợp bộ lượng tử không được sử dụng thì kỹ thuật này được gọi là mã hóa không tổn hao (loss-less coding).1: Sơ đồ khối của bộ CODEC dpcm trong xử lý video Bộ dự đoán cho kết quả tốt nhất nếu quá trình dự báo được dựa trên những giá trị của các pixel liền kề đã được mã hóa trước đó. Các pixel liền kề có thể nằm trong cùng khung hình (mã hóa nội ảnh) hoặc có thể nằm trong khung hình trước (mã hóa liên ảnh). Nếu bộ dự đoán sử dụng cả hai kỹ thuật trên thì được gọi là “mã hóa dự đoán lai” (Hybrid predictive coding). Mã hóa bằng phương pháp biến đổi Hình 1.2 mô tả các bước trong quá trình mã hóa bằng biến đổi các giá trị của các điểm ảnh trong khung hình từ miền không gian sang miền tần số.2: Mã hóa biến đổi Tương tự như trong mã hóa hình ảnh tĩnh, trong mã hóa tín hiệu video, biến đổi DCT cũng được sử dụng.
Tuy nhiên, chúng ta lưu ý rằng phép biến đổi các giá trị từ miền không gian pixel sang miền không gian khác chưa phải là nén tín hiệu. Một khối 64 pixel qua phép biến đổi DCT ta thu được 64 hệ số DCT. Do tính trực giao của phép biến đổi, năng lượng trên cả hai miền pixel và miền không gian sau biến đổi đều bằng nhau. Tuy nhiên, phép biến đổi làm cho năng lượng của ảnh được tập trung chủ yếu trong vùng của các hệ số DCT gần với hệ số 1 chiều (vùng tần số thấp) trong khi phần lớn các hệ số khác mang năng lượng ít hơn.
Hệ số DC có giá trị cao nhất. Các hệ số AC càng xa hệ số DC thì giá trị càng bé. Dựa vào đặc điểm của mắt người là ít nhạy cảm với các hình ảnh bị méo ở tần số cao nên bộ lượng tử được sử dụng nhằm loại bỏ đi các hệ số AC tại vùng tần số này.2 biểu diễn các giá trị đầu vào và đầu ra của bộ lượng tử. Như ta thấy, với các hệ số có giá trị nhỏ sau khi qua bộ lượng tử sẽ bị nén về mức 0.
Đây chính là quá trình loại bỏ những hệ số DCT ở vùng tần số cao. Người ta chia bộ lượng tử ra làm hai loại: bộ lượng tử đồng nhất (Uniform quantiser – UTQ) và bộ lượng tử đồng nhất có dead zone (UTQ-DZ). Các hệ số DC của chế độ nén nội ảnh được lượng tử bởi UTQ trong khi các hệ số AC và hệ số DC của chế độ nén liên ảnh được lượng tử bởi UTQ-DZ. Lý do là UTQ-DZ làm cho nhiều hệ số AC trở thành giá trị 0 nên hệ số nén sẽ cao hơn Luan van 6 Hình 1.3: Biểu diễn bộ lượng tử (a) UTQ và (b) UTQ-DZ Trong bộ lượng tử UTQ, các hệ số F(u,v) được lượng tử bởi công thức: 𝐹(𝑢, 𝑣) ± 𝑞 𝐼(𝑢, 𝑣) = ⌊ ⌋ (1.1) 2𝑞 Luan van 7 Giá trị I(u,v) gọi là các chỉ số lượng tử (quantization index).
Tại phía giải mã, các hệ số được giải lượng tử theo công thức: 𝐹 𝑞 (𝑢, 𝑣) = 𝐼(𝑢, 𝑣) × 2𝑞 (1.2) Trong bộ lượng tử UTQ-DZ, các chỉ số lượng tử được tính bởi công thức: 𝐹(𝑢, 𝑣) 𝐼(𝑢, 𝑣) = ⌊ ⌋ (1.3) 2𝑞 Giá trị giải lượng tử phía giải nén được tính bởi công thức: 𝐹 𝑞 (𝑢, 𝑣 ) = {2𝐼(𝑢, 𝑣) ± 1} × 𝑞 (1. Kỹ thuật giảm dư thừa thông tin trong miền thời gian Kỹ thuật giảm dư thừa thông tin trong miền thời gian được thực hiện dựa trên việc tìm ra sự khác nhau giữa các khung hình liên tiếp. Đây chính là thuật toán mã hóa liên ảnh. Đối với các đối tượng tĩnh trong ảnh, sự khác biệt gần như bằng 0.
Do vậy những đối tượng này không cần nhiều thông tin để mã hóa. Ngược lại, đối với các đối tượng chuyển động nhiều, sự khác biệt giữa các khung hình là rất lớn. Điều này đồng nghĩa với việc chúng ta cần nhiều thông tin để mã hóa. Để làm giảm lượng thông tin này, người ta tiến hành thêm một bước trung gian gọi là ước lượng chuyển động (motion estimation) cho các đối tượng trong hình dựa bằng cách so sánh khung hình hiện tại và khung hình trước đó.
Quá trình ước lượng chuyển động sẽ cho kết quả là các vector chuyển động. Dựa vào các vector này và khung hình trước đó, khung hình hiện tại sẽ được dự đoán. Quá trình này được gọi là “bù chuyển động” (motion compensated). Như vậy, sự khác biệt giữa khung hình hiện tại và khung hình dự đoán sẽ được giảm đi so với sự khác biệt giữa khung hình hiện thời và khung khung hình trước đó.4 mô tả quá trình tạo ra khung hình dư thừa (residual frame) bằng cách lấy khung hình hiện tại trừ cho khung hình dự đoán.
Luan van 8 Hình 1.4: Dự đoán bù chuyển động Hình 1.5 biểu diễn sự khác biệt của khung hình hiện thời với khung hình trước đó (a) và với khung hình dư thừa (b). Ta nhận thấy khung hình (a) mang nhiều nội dung hơn khung hình (b). Vì vậy, khi nén khung hình (b) sẽ có hiệu quả nén cao hơn so với việc nén khung hình (a) Hình 1.5: (a) Sự khác biệt giữa khung hình hiện thời và trước đó; (b) Khung hình dư thừa Luan van 9 a. Ước lượng chuyển động Mục đích của quá trình ước lượng chuyển động là để tìm ra vector chuyển động.
Trong các tiêu chuẩn mã hóa video, thuật toán BMA (Block Matching Algorithm) thường được sử dụng để ước lượng chuyển động. Trong thuật toán này, một khung hình được chia thành các khối có kích thước N x N pixel.