Đồ án Tổng quan về chuẩn nén MPEG-4 H.264/AVC và khả năng ứng dụng trong thực tiễn

MỤC LỤC

 

LỜI GIỚI THIỆU 6

CÁC THUẬT NGỮ TIẾNG ANH 8

LỜI MỞ ĐẦU 10

CHƯƠNG I. CƠ SỞ VỀ NÉN TÍN HIỆU VIDEO 11

I.1 SỰ CẦN THIẾT CỦA NÉN TÍN HIỆU. 11

I.2 QUÁ TRÌNH SỐ HÓA TÍN HIỆU 12

I.2.1 LẤY MẪU 12

I.2.2 LƯỢNG TỬ HÓA. 12

I.2.3 MÃ HÓA 13

I.3 TỐC ĐỘ BIT VÀ THÔNG LƯỢNG KÊNH TRUYỀN TÍN HIỆU SỐ 14

I.3.1 TỐC ĐỘ BÍT 14

I.3.2 THÔNG LƯỢNG KÊNH TRUYỀN 14

I.4 QUÁ TRÌNH BIẾN ĐỔI TÍN HIỆU MÀU 14

I.5 CÁC TIÊU CHUẨN LẤY MẪU TÍN HIỆU VIDEO SỐ 16

I.6 MÔ HÌNH NÉN TÍN HIỆU VIDEO 17

I.6.1 NÉN TÍN HIỆU VIDEO 17

I.6.2 LƯỢNG TIN TRUNG BÌNH (ENTROPY) 18

CHƯƠNG II. CÁC KỸ THUẬT NÉN VIDEO 21

II.1 PHÂN LOẠI CÁC KỸ THUẬT NÉN 21

II.2 QUÁ TRÌNH BIẾN ĐỔI 21

II.2.1 ĐIỀU XUNG MÃ VI SAI DPCM 22

II.2.2 MÃ HÓA BIẾN ĐỔI 22

II.2.2.1 Biến đổi cosin rời rạc DCT 22

II.2.2.2 Biến đổi Hadamard 23

II.3 QUÁ TRÌNH LƯỢNG TỬ 24

II.3.1 LƯỢNG TỬ HÓA VÔ HƯỚNG 24

II.3.2 LƯỢNG TỬ HÓA VECTOR 25

II.4 QUÁ TRÌNH MÃ HÓA 25

II.4.1 MÃ HÓA ĐỘ DÀI THAY ĐỔI 25

II.4.1.1 Mã hóa Huffman 26

II.4.1.2 Mã hoá mức dọc chiều dài RLC 26

II.4.2 MÃ HÓA SỐ HỌC 27

II.5 TIÊU CHUẨN ĐÁNH GIÁ CHẤT LƯỢNG ẢNH NÉN 30

CHƯƠNG III. CÁC CHUẨN NÉN THUỘC HỌ MPEG TRƯỚC MPEG-4 H.264/AVC 31

III.1 GIỚI THIỆU VỀ LỊCH SỬ PHÁT TRIỂN CỦA KỸ THUẬT MPEG 31

III.2 CÁC TIÊU CHUẨN NÉN TRƯỚC MPEG-4 H.264/AVC 31

III.2.1 TIÊU CHUẨN MPEG-1 31

III.2.1.1 Các đặc điểm của tiêu chuẩn MPEG-1 32

III.2.1.2 Cấu trúc dòng bit của MPEG-1 33

III.2.2 TIÊU CHUẨN MPEG-2 34

III.2.2.1 Các đặc điểm của tiêu chuẩn MPEG-2 34

III.2.2.2 Sự khác nhau chính giữa MPEG-1 và MPEG-2 35

III.2.3 TIÊU CHUẨN MPEG-4 36

III.2.4 SO SÁNH ĐẶC ĐIỂM NỔI BẬT CỦA CÁC CHUẨN NÉN 37

CHƯƠNG IV. CHUẨN NÉN MPEG-4 H.264/AVC 38

IV.1 TỔNG QUAN VỀ CHUẨN NÉN MPEG-4 H.264/AVC 38

IV.1.1 LỊCH SỬ PHÁT TRIỂN CỦA MPEG-4 H.264/AVC 38

IV.1.2 CÁC PROFLIES VÀ LEVELS TRONG H.264/AVC 39

IV.1.2.1 CÁC PROFILES 39

IV.1.2.2 CÁC LEVELS 40

IV.2 NHỮNG ĐẶC TÍNH NỔI BẬT CỦA CHUẨN NÉN H.264/AVC 41

IV.3 KỸ THUẬT NÉN VIDEO H.264/AVC 44

IV.3.1 GIẢI THÍCH NGUYÊN LÝ HOẠT ĐỘNG CƠ BẢN 44

IV.3.1.1 Sơ đồ mã hóa 44

IV.3.1.2 Sơ đồ giải mã 45

IV.3.2 KHỐI NÉN THỜI GIAN 46

IV.3.2.1 Dự đoán một chiều (mã hóa ảnh Prediction). 46

IV.3.2.2 Dự đoán hai chiều( mã hóa ảnh Bidiriectional Prediction) 47

IV.3.2.3 Dự đoán liên ảnh (Inter-Frame) 51

IV.3.2.4 Mã hóa ảnh SP (switching P) và SI (switching I). 53

IV.3.3 KHỐI NÉN KHÔNG GIAN 54

IV.3.3.1 Chia ảnh thành các MacroBlock 55

IV.3.3.2 Dự đoán trong ảnh (Intra-frame) 56

IV.3.3.3 Dự đoán trọng số: 62

IV.3.3.4 Kỹ thuật tiên đoán bù chuyển động và ước lượng chuyển động 63

IV.3.3.5 Phép biến đổi nguyên ICT (Integer Discrete Cosin Transform) 71

IV.3.3.6 Quá trình lượng tử 75

IV.3.3.7 Quá trình giải lượng tử: 77

IV.3.3.8 Quét Zig-Zag 78

IV.3.3.9 Mã hóa xen kẽ. 80

IV.3.3.10 Sắp xếp thứ tự Slice. 80

IV.3.4 MÃ HÓA ENTROPY 81

IV.3.4.1 Mã hóa Entropy Exp-Golomb. 82

IV.3.4.2 Mã hóa độ dài biến đổi thích nghi nội dung CAVLC 84

IV.3.4.3 Mã hóa số học nhị phân thích nghi nội dung CABAC 87

IV.3.5 BỘ LỌC TÁCH KHỐI TRONG VÒNG 89

IV.3.5.1 Nguyên tắc của lọc tách khối 90

IV.3.5.2 Quá trình lọc khối 91

IV.3.6 CẤU TRÚC VÀ CÚ PHÁP CHUẨN H.264/AVC. 94

IV.3.6.1 Lớp trừu tượng mạng NAL 95

IV.3.6.2 Lớp mã hóa video VCL (Video Coding Layer) 96

IV.3.6.3 Kỹ thuật FMO và Data Partitioned Slices 96

IV.3.6.4 Kỹ thuật Arbitrary Slice Ordering 96

IV.3.6.5 Cấu trúc dòng bit H.264/AVC 97

CHƯƠNG V. MỘT SỐ ỨNG DỤNG CHUẨN H.264/AVC 99

V.1 TRUYỀN HÌNH INTERNET IPTV 99

V.2 TRUYỀN HÌNH VỆ TINH DVB-S2 100

V.3 TRUYỀN HÌNH DI DỘNG 100

CHƯƠNG VI. MÔ PHỎNG QUÁ TRÌNH NÉN-GIẢI NÉN CỦA H.264/AVC BẰNG MATLAB 103

VI.1 LƯU ĐỒ GIẢI THUẬT 103

VI.2 CHƯƠNG TRÌNH MÔ PHỎNG: 103

VI.3 KẾT QUẢ MÔ PHỎNG 104

PHỤ LỤC 106

TÀI LIỆU THAM KHẢO 113

 

 

doc113 trang | Chia sẻ: maiphuongdc | Lượt xem: 6060 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Đồ án Tổng quan về chuẩn nén MPEG-4 H.264/AVC và khả năng ứng dụng trong thực tiễn, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ốn một vài bit để mã hóa. Sơ đồ khối nguyên lý nén ảnh P. Ñaùnh giaù chuyeån ñoäng Döï ñoaùn chuyeån ñoäng Boä nhôù aûnh Aûnh döï ñoaùn P’ Hình IV.3. Sơ đồ khối nguyên lý nén ảnh P Dự đoán hai chiều( mã hóa ảnh Bidiriectional Prediction) Khi đối tượng chuyển động nhanh thì khoảng thay đổi tọa độ của 2 frame liên tiếp là lớn, vượt ra ngoài vùng tìm kiếm, không thể thực hiện dự đoán bù chuyển động từ các khung hình trước được, khối điểm ảnh biểu diễn đối tượng chuyển động sẽ được mã hóa dạng ảnh I và sử dụng kỹ thuật bù chuyển động theo 2 hướng thời gian còn gọi là nội suy bù chuyển động. Trong kỹ thuật bù chuyển động theo 2 hướng, ảnh hiện tại sẽ được dự đoán dựa trên cơ sở thông tin về hình ảnh trước đó và sau đó để tạo thành ảnh B, do đó hiệu quả nén sẽ cao nhất. Phương pháp dự đoán 2 chiều này có ưu điểm nổi bật là có thể dự đoán ngoài vùng tìm kiếm nhờ các khung hình tiếp theo mà phương pháp dự đoán một chiều không thực hiện được, ngoài ra phương pháp này còn cho tỷ số nén cao hơn, giảm nhiễu trong khung hình hiện tại bằng mức nhiễu trung bình của frame trước và frame sau. Trong chuẩn MPEG-2 ảnh B không bao giờ được dùng để tham khảo khi dự đoán ảnh khác. Khi đó, mã hóa có chất lượng thấp có thể dùng nhiều ảnh B bởi các chi tiết mất mát không ảnh hưởng đến ảnh dự đoán kế đó, còn trong H.264, có thể dùng ảnh B làm ảnh tham khảo hoặc không tùy thuộc vào bộ mã hóa Sơ đồ nguyên lý nén ảnh B. Ñaùnh giaù chuyeån ñoäng Döï ñoaùn chuyeån ñoäng Aûnh döï ñoaùn P’ Aûnh tröôùc ñoù Aûnh sau ñoù Hình IV.4. Sơ đồ nguyên lý nén ảnh B Bù chuyển động trong các slice B Trong Slice B, có 4 dạng dự đoán Inter khác nhau được hỗ trợ: dự đoán list 0, list 1, hai hướng và dự đoán trực tiếp. Phaân vuøng Moâ taû kieåu döï ñoaùn 16 x16 Tröïc tieáp, list 0, list 1, 2 höôùng 16 x 8 hoaëc 8 x 16 List 0, list 1, 2 höôùng 8 x 8 Tröïc tieáp, list 0, list 1, 2 höôùng + Dự đoán List 0: chỉ có ảnh tham khảo trước đó được dùng để dự đoán, ảnh hiện tại được đánh chỉ số n, tiếp theo là những bức ảnh ở vị trí n-1, n-2,…, tiếp theo là bức ảnh ở vị trí n+1, n+2,.. và chỉ một vector chuyển động duy nhất được truyền đi. Trong dự đoán list 0, tín hiệu dự đoán được tạo ra nhờ bù chuyển động ảnh khảo đầu tiên đã lưu trong bộ nhớ đệm, còn ảnh tham khảo thứ 2 được sử dụng cho việc xây dựng tín hiệu dự đoán nếu sử dụng dự đoán list 1. + Dự đoán List 1: chỉ có ảnh tham khảo sau đó được sử dụng để dự đoán, ảnh hiện tại được đánh chỉ số n, tiếp theo là những ảnh ở vị trí n+1, n+2,… và tiếp theo là những ảnh ở vị trí n -1, n -2,.. và chỉ một vector chuyển động duy nhất được truyền đi. Ví dụ: Bộ giải mã H.264/AVC chứa 6 bức ảnh tham khảo với các thứ tự 123, 125, 126, 128, 129, 130. Bức ảnh hiện tại là 127, tất cả 6 bức ảnh tham khảo được đánh dấu như trong list 0 và list 1. Thứ tự của các bức ảnh như sau: Chỉ số List 0 List 1 0 126 128 1 125 129 2 123 130 3 128 126 4 129 125 5 130 123 + Dự đoán hai hướng: cả 2 ảnh tham khảo trước và sau đều được sử dụng để dự đoán và 2 vector chuyển động được truyền đi, kết quả dự đoán được nội suy từ cả 2 giá trị tham khảo bằng trị trung bình trọng số của tín hiệu dự đoán bù chuyển động list 0 và list 1. Số lượng ảnh tham khảo được sử dụng tùy thuộc vào độ phức tạp của ảnh hiện tại, quá trình dự đoán hai hướng được minh họa như sau: Hình IV.5. Các mẫu dự đoán trong ảnh B . Dự đoán trực tiếp: Cả 2 ảnh tham khảo trước và sau đều được sử dụng để dự đoán. Trong slice B hoặc phân vùng được mã hóa ở chế độ trực tiếp thì không cần truyền vector chuyển động của các ảnh trước và sau, thay vì bộ giải mã phải tính toán vector dự đoán list 0 và list1 dựa vào những vector được mã hóa trước đó thì chỉ việc sử dụng các vector đó để tiến hành bù chuyển động hai chiều cho các khối dữ liệu dư thừa. Loại MB SKIP trong slice B cũng được cấu trúc lại để dự đoán trực tiếp. Nguyên lý cơ sở của Mode trực tiếp Hình IV.6. Nguyên lý bù chuyển động tực tiếp. Vector chuyển động trước và sau MVf, MVb tách ra từ MV trong VOP tham chiếu ngược Đối tượng video hiện tại trên hình IV.6 là loại ảnh B1. Bộ giải mã đã biết trước về VOP tham chiếu ngược P3 và tổ chức các vector chuyển động của nó trước khi VOP hiện tại được giải mã. Trong mode trực tiếp, những hiểu biết về các vector chuyển động này được sử dụng để lái các vector chuyển động trước và sau cho việc dự đoán MB hiện tại. Hơn nữa, có sử dụng vector chuyển động của MB xắp xếp thứ tự (MB có cùng chỉ số chiều dọc và chiều ngang như MB trong hình vẽ) trong VOP P3 tham chiếu ngược. Để lấy được các vector chuyển động của MB hiện tại thì vector chuyển động phải được phân cấp, tùy thuộc vào thời điểm của ảnh B giữa 2 VOP tham chiếu. Các hệ số phân cấp được tính toán từ thời gian khác nhau giữa 2 VOP tham chiếu và B-VOP hiện tại. Chúng được xác định như sau: TRb = thời gian hiển thị (VOP hiện tại) - thời gian hiển thị (tham chiếu trước) TRd = thời gian hiển thị (tham chiếu ngược) - thời gian hiển thị (tham chiếu trước) Cùng lúc đó, vector chuyển động Delta (MVD) được cộng thêm vào. Tiếp theo quá trình này, các vector chuyển động B-VOP được xác định như sau: MVF = TRb/TRd.MV +  MVD   MVB = (TRb – TRd).MV + MVD Vậy đối với ví dụ trên thì ta có : MVF = 1/3 MV + MVD MVB = -2/3MV + MVD. Đối với bù chuyển động trong các B-VOP chỉ có thể sử dụng mode 1MV, có nghĩa là: chỉ một vector chuyển động duy nhất có thể được truyền đi cho một MB cho mỗi một hướng dự đoán. Nhưng trong mode trực tiếp nếu MB tuần tự trong VOP tham chiếu ngược được mã hoá với chế độ 4MV, với MB hiện tại trong mode trực tiếp thì 4 vector chuyển động được sử dụng cho 4 khối 8x8 tương ứng của MB hiện tại trong B-VOP. Nếu MB hiện tại được mã hoá trong chế độ SKIP thì nó cũng là bù chuyển động sử dụng mode trực tiếp với vector chuyển động Delta zero nhưng bỏ qua mã hoá sai số dự đoán . Dự đoán liên ảnh (Inter-Frame) Nén liên ảnh chính là việc loại bỏ những 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, đây cũng là nội dung chính của khối nén theo thời gian. Dựa vào nguyên tắc đó, các bộ mã hoá sẽ quét lần lượt từng MB và phát hiện xem có sự thay đổi từ frame này sang frame khác hay không. Mặt khác, các bộ mã hoá còn tiên đoán sự xuất hiện của các MB khi biết vị trí và hướng chuyển động của nó. Do đó, chỉ những sự thay đổi giữa các khối mới được truyền đến phía thu. Bộ giải mã đã lưu trữ sẵn những thông tin không thay đổi vào bộ nhớ đệm và khi khôi phục lại ảnh gốc thì chỉ việc điền một cách đều đặn vào các vị trí còn trống. Ví dụ hai frame liên tiếp trong chuỗi ảnh được minh họa như hình IV.7. Trong đó frame 2 được dự đoán từ frame 1, có sự giống nhau về ảnh nền, quyển sách, cây đàn,... phần sai khác giữa 2 bức ảnh là phần màu xám nổi rõ được minh họa như hình IV.8, chỉ có phần sai khác này mới được biến đổi và truyền đi. Tuy nhiên năng lượng vẫn còn tập trung ở phần sai số dự đoán cụ thể là những vùng sáng tối, nên cần phải bù chuyển động để làm giảm bớt năng lượng này. Frame 1 Frame 2 Hình IV.7. Hai bức ảnh liên tiếp trong chuỗi Video Hình IV.8. Phần dư giữa frame 1 và frame 2 Hình IV.9. Vector chuyển động Sự sai khác giữa các bức ảnh trong chuỗi video thường do sự chuyển động của VOP, sự khác nhau này chính là sự khác nhau về quỹ đạo vị trí của các pixel trong ảnh, việc dự đoán sẽ tạo ra một luồng thị giác hay nói cách khác sẽ tạo ra một mành hướng chuyển động của các vector được minh họa như hình IV.9. Hình IV.10. Minh họa dự đoán liên khối của H.264/AVC. Sử dụng 5 Frame cho bù chuyển động H.264/AVC cho phép dự đoán bù chuyển động với 5 ảnh tham khảo và ngoài vector chuyển động ra các chỉ số ảnh tham khảo cũng được truyền đi như hình IV.10 nên việc khôi phục lại ảnh tham khảo có thể thực hiện dễ dàng và chất lượng ảnh nén cũng trung thực hơn. Cả bộ mã hóa và bộ giải mã phải lưu trữ các ảnh tham khảo được sử dụng cho dự đoán Inter trong bộ nhớ đệm đa ảnh. Bộ giải mã sẽ sao lại bộ nhớ đệm đa ảnh của bộ mã hóa, theo dạng nhớ đệm ảnh tham khảo và các hoạt động điều khiển quản lý bộ nhớ bất kỳ được xác định trong dòng bit. Ngoại trừ kích thước bộ nhớ đệm đa ảnh được đặt cho một ảnh, chỉ số bên trong bộ nhớ đệm đa ảnh phải được ký hiệu. Mã hóa ảnh SP (switching P) và SI (switching I). Hai dạng ảnh SI, SP là một kiểu mã hóa đặc biệt của H.264/AVC cho phép chuyển mạch hiệu quả giữa các dòng bit được mã hóa ở các tốc độ bit khác nhau. Các frame SP được lượng tử hóa trong miền biến đổi và đưa vào dải biên độ thô hơn, cho phép mã hóa ở tốc độ bit thấp. Frame SP làm cho dự đoán bù chuyển động có thể khai thác tối đa dư thừa thời gian trong chuỗi ảnh tương tự như ảnh P. Nhưng frame SP có ưu điểm hơn ảnh P là nó cho phép các frame đồng nhất có thể cấu trúc lại ngay cả khi chúng được dự đoán từ các ảnh tham khảo khác nhau. Vì thế frame SP có thể sử dụng thay thế cho các ảnh I trong các ứng dụng chuyển luồng, truy cập ngẫu nhiên, tiến, lùi, tăng cường chống lỗi hay khôi phục lại. Các frame SI thường kết nối cùng với frame SP nên rất có lợi trong trường hợp dự đoán Inter bị lỗi truyền dẫn. Ví dụ: với cùng một video được mã hóa ở nhiều tốc độ bit khác nhau để truyền qua đường Internet, bộ giải mã nhận được luồng có tốc độ bit cao có thể yêu cầu chuyển mạch tự động xuống tốc độ bit thấp hơn nếu dữ liệu bị lỗi. Như hình IV.11. bộ giải mã đang giải mã luồng A và muốn chuyển sang giải mã luồng B. Để đơn giản, giả sử mỗi frame được mã hóa từng slice đơn từ một frame tham khảo trước đó. Sau khi giải mã P slice A0, A1 bộ giải mã muốn chuyển sang giải mã silce B2, B3 trong luồng B. Nếu tất cả slice trong luồng B được mã hóa ở dạng P-slice, bộ giải mã sẽ không thể giải mã đúng ảnh tham khảo cần thiết để cấu trúc lại slice B2 (vì B2 được dự đoán từ B1). Giải pháp đưa ra là, slice B2 sẽ được mã hóa dạng I (vì dạng I không cần ảnh tham khảo) do đó có thể thực hiện chuyển mạch giữa 2 luồng A và B. Việc chuyển mạch cần được điều tiết bằng cách chèn thêm slice mã hóa dạng I theo một chu kỳ đều đặn để tạo ra điểm chuyển mạch hiệu quả. Tuy nhiên, ảnh I sẽ chứa nhiều dữ liệu mã hóa hơn ảnh P nên tốc độ bit mã hóa của mỗi điểm chuyển mạch sẽ lớn hơn. Hình IV.11. Chuyeån maïch luoàng söû duïng slice I KHỐI NÉN KHÔNG GIAN Hình IV.12. Sơ đồ khối mã hóa ảnh I Nén theo không gian hay còn gọi là nén tạo ảnh Intra, chỉ sử dụng thông tin trong bức ảnh hiện tại mà không có sự tham khảo ảnh khác, tức là mã hoá độc lập mà không cần thông tin phụ cho giải mã không cần tham khảo các ảnh khác, do đó hiệu quả nén chỉ phụ thuộc vào sự loại bỏ thông tin dư thừa về không gian nên sẽ không được hiệu quả lắm. Nhưng ảnh I cho phép người xem chuyển đổi các kênh, cung cấp điểm truy cập ngẫu nhiên vào dòng bit nén và ngăn chặn sai số truyền. Ngoài ra ảnh I còn được dùng liên tục để tạo thành các điểm tựa cho dòng dữ liệu trong quá trình giải mã, cũng như được sử dụng làm điểm chuyển mạch trong quá trình phân cấp. Ảnh I chỉ dùng 2 bit/ pixel được mã hóa. Sơ đồ khối mã hóa ảnh I Chia ảnh thành các MacroBlock Một trong những ưu điểm của chuẩn H.264/AVC là nó có thể phân chia thành các kích thước nhỏ để mô tả chuyển động. Phân vùng của thành phần luma có các kích thước mẫu như 16 x 16, 16 x 8, 8 x 16 và 8 x 8 phù hợp cho các chuyển động ở những khu vực giống nhau trong ảnh. Khi sử dụng khối 8x8, còn có thể phân chia thành 4 cỡ nhỏ hơn là 8x8, 8x4, 4x8 hoặc 4x4 rất thích hợp khi xử lý chuyển động tại chỗ có nhiều chi tiết, làm giảm hiện tượng vỡ khối và nâng cao chất lượng hình ảnh. Hình IV.13. Phaân chia MB – Sub MB cho buø chuyeån ñoäng. Cấu trúc dự đoán thời gian được mô tả như hình IV.14 sau: Hình IV.14. Chæ ra thöù töï saép xeáp cuûa caùc VOP Giải thích: ảnh I không sử dụng ảnh tham khảo và được mã hóa kiểu Intra được ký hiệu là Ix. Các ảnh P và ảnh B có sử dụng tham khảo, được ký hiệu là Px. Các mũi tên miêu tả hướng dự đoán. Khi sử dụng ảnh B làm ảnh tham khảo cho ảnh I và ảnh P, thì ảnh B sẽ được hiển thị sau đó với thời gian hiển thị riêng, các ảnh tham khảo được truyền đi trước các ảnh B tương ứng. Theo hình IV.14 thì thứ tự truyền là I0 P1 P3 B2 P5 B4 P7 B6. Bởi vì không có thông tin được truyền cho các ảnh B2 và P5 nên các ảnh B6 và P7 sẽ là ảnh tham khảo cho VOP P3 mà không ảnh hưởng cấu trúc tham khảo. Dự đoán trong ảnh (Intra-frame) Dự đoán Intra là kiểu dự đoán sử dụng các MB kế bên đã đượ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. Kiểu dự đoán Intra thì không được sử dụng cho dự đoán các đường biên của slice để giữ tính độc lập giữa các slice. Đối với các chuẩn trước đây việc dự đoán sẽ thực hiện trong miền biến đổi, còn ở H.264/AVC thì dự đoán được thực hiện trong miền không gian bằng việc tham khảo tới các mẫu bên cạnh của các khối đã được mã hóa. Trong H.264/AVC hỗ trợ các kiểu dự đoán INTRA 4 x 4, INTRA 8 x 8, INTRA 16 x 16 và kiểu dự đoán INTRA-PCM. INTRA LUMA 4 x 4 Mỗi MB được chia thành 16 khối con 4x4, mỗi khối 4x4 được dự đoán không gian từ các khối bên cạnh. Để có thể dự đoán giá trị mẫu của khối 4x4 luma cần sử dụng 13 mẫu kế cận bao gồm 4 mẫu của khối kế cận bên trái, 4 mẫu của khối kế cận bên trên, 4 mẫu của khối kế cận đỉnh phải, và 1 mẫu của khối kế cận đỉnh trái. Mỗi khối 4x4 của thành phần luma có thể dùng 1 trong 9 kiểu dự đoán. Ngoài kiểu dự đoán DC, còn hỗ trợ 8 kiểu dự đoán định hướng sau: Kiểu dự đoán DC Mẫu được nội suy từ giá trị trung bình của các mẫu bên cạnh LT | T0 T1 T2 T3 --------------------- L0 | a a a a L1 | a a a a L2 | a a a a L3 | a a a a Trong đó: Nếu bộ dự đoán ở đỉnh trên và phía bên trái thõa mãn thì: a = (T0 + T1 + T2 + T3 + L0 + L1 + L2 + L3) / 8 Nếu chỉ có bộ dự đoán ở đỉnh trên thõa mãn thì: a = (T0 + T1 + T2 + T3 + 2) / 4 Nếu chỉ có bộ dự đoán ở bên trái thõa mãn thì: a = (L0 + L1 + L2 + L3 + 2) / 4 hoặc a = 128 2. Kiểu dự đoán dọc (Vertical) Các mẫu ở bên dưới sao chép lại các mẫu bên trên theo chiều dọc. LT | T0 T1 T2 T3 --------------------- L0 | T0 T1 T2 T3 L1 | T0 T1 T2 T3 L2 | T0 T1 T2 T3 L3 | T0 T1 T2 T3 3. Kiểu dự đoán ngang (Horizontal ) Các mẫu ở bên phải sao chép lại các mẫu bên phải theo chiều ngang. LT | T0 T1 T2 T3 --------------------- L0 | L0 L0 L0 L0 L1 | L1 L1 L1 L1 L2 | L2 L2 L2 L2 L3 | L3 L3 L3 L3 4. Kiểu dự đoán chéo xuống/trái (Diagonal Down/Left ) Các mẫu được nội suy theo góc 450 giữa giá trị bên trái ở trên và bên phải ở dưới theo đường chéo. LT | T0 T1 T2 T3 T4 T5 T6 T7 ------------------------------------- L0 | a b c d L1 | b c d e L2 | c d e f L3 | d e f g Trong đó: a = (T0 + 2*T1 + T2 + 2) / 4 b = (T1 + 2*T2 + T3 + 2) / 4 c = (T2 + 2*T3 + T4 + 2) / 4 d = (T3 + 2*T4 + T5 + 2) / 4 e = (T4 + 2*T5 + T6 + 2) / 4 f = (T5 + 2*T6 + T7 + 2) / 4 g = (T6 + 3*T7 + 2) / 4 5. Kiểu dự đoán chéo xuống/phải (Diagonal Down/Right) Các mẫu được ngoại suy theo góc 450 từ trên xuống, từ trái qua phải. LT | T0 T1 T2 T3 --------------------- L0 | d e f g L1 | c d e f L2 | b c d e L3 | a b c d Trong đó: a = (L3 + 2*L2 + L1 + 2) / 4 b = (L2 + 2*L1 + L0 + 2) / 4 c = (L1 + 2*L0 + LT + 2) / 4 d = (L0 + 2*LT + T0 + 2) / 4 e = (LT + 2*T0 + T1 + 2) / 4 f = (T0 + 2*T1 + T2 + 2) / 4 g = (T1 + 2*T2 + T3 + 2) / 4 6. Kiểu dự đoán dọc/phải (Vertical/Right) Các mẫu được ngoại suy theo góc xấp xỉ 26.60 từ phải sang trái theo chiều dọc LT | T0 T1 T2 T3 --------------------- L0 | a b c d L1 | e f g h L2 | i a b c L3 | j e f g Trong đó: a = (LT + T0 + 1) / 2 b = (T0 + T1 + 1) / 2 c = (T1 + T2 + 1) / 2 d = (T2 + T3 + 1) / 2 e = (L0 + 2*LT + T0 + 2) / 4 f = (LT + 2*T0 + T1 + 2) / 4 g = (T0 + 2*T1 + T2 + 2) / 4 h = (T1 + 2*T2 + T3 + 2) / 4 i = (LT + 2*L0 + L1 + 2) / 4 j = (L0 + 2*L1 + L2 + 2) / 4 7. Kiểu dự đoán dọc/ trái (Vertical/Left) Các mẫu được ngoại suy theo góc xấp xỉ 26.60 từ trái sang phải theo chiều dọc LT | T0 T1 T2 T3 T4 T5 T6 T7 ------------------------------------- L0 | a b c d L1 | f g h i L2 | b c d e L3 | g h i j Trong đó: a = (T0 + T1 + 1) / 2 b = (T1 + T2 + 1) / 2 c = (T2 + T3 + 1) / 2 d = (T3 + T4 + 1) / 2 e = (T4 + T5 + 1) / 2 f = (T0 + 2*T1 + T2 + 2) / 4 g = (T1 + 2*T2 + T3 + 2) / 4 h = (T2 + 2*T3 + T4 + 2) / 4 i = (T3 + 2*T4 + T5 + 2) / 4 j = (T4 + 2*T5 + T6 + 2) / 4 8. Kiểu dự đoán ngang/xuống (Horizontal/Down) Các mẫu được ngoại suy theo góc xấp xỉ 26.60 từ trên xuống theo chiều ngang LT | T0 T1 T2 T3 --------------------- L0 | a b c d L1 | e f a b L2 | g h e f L3 | i j g h Trong đó: a = (LT + L0 + 1) / 2 b = (L0 + 2*LT + T0 + 2) / 4 c = (LT + 2*T0 + T1 + 2) / 4 d = (T0 + 2*T1 + T2 + 2) / 4 e = (L0 + L1 + 1) / 2 f = (LT + 2*L0 + L1 + 2) / 4 g = (L1 + L2 + 1) / 2 h = (L0 + 2*L1 + L2 + 2) / 4 g = (L2 + L3 + 1) / 2 j = (L1 + 2*L2 + L3 + 2) / 4 9. Kiểu dự đoán ngang/lên (Horizontal/Up) Các mẫu được nội suy theo góc xấp xỉ 26.60 từ dưới lên theo chiều ngang LT | T0 T1 T2 T3 --------------------- L0 | a b c d L1 | c d e f L2 | e f g g L3 | g g g g Trong đó: a = (L0 + L1 + 1) / 2 b = (L0 + 2*L1 + L2 + 2) / 4 c = (L1 + L2 + 1) / 2 d = (L1 + 2*L2 + L3 + 2) / 4 e = (L2 + L3 + 1) / 2 f = (L2 + 2*L3 + L3 + 2) / 4 g = L3 INTRA LUMA 16 x 16 Chỉ 1 kiểu dự đoán được áp dụng cho toàn bộ MB thích hợp cho những miền ảnh trơn tru, phẳng đều. Bốn kiểu dự đoán được hỗ trợ là: chiều ngang, chiều thẳng đứng, dự đoán DC và dự đoán mặt phẳng. Trong kiểu dự đoán mặt phẳng sử dụng phương trình đường cong 3 thông số để dự đoán độ luma, độ dốc theo chiều ngang, chiều thẳng đứng cho phù hợp với các điểm ảnh bên cạnh, và kiểu dự đoán này có hiệu quả rất cao trong vùng có thành phần luma ít thay đổi. Để có thể dự đoán giá trị mẫu của khối luma 16x16 cần sử dụng 33 mẫu kế cận bao gồm 16 mẫu của khối kế cận bên trái, 16 mẫu của khối kế cận bên trên và 1 mẫu của khối kế cận đỉnh trái. 1. Kiểu dự đoán DC Sử dụng 16 bộ dự đoán (T0..T15) và 16 bộ dự đoán bên trái (L0..L15), cài tất cả 256 giá trị về giá tri trung bình, theo công thức sau: Nếu bộ dự đoán bên trái và đỉnh trên thõa mãn thì: mean = (sum(T0..T15) + sum(L0..L15) + 16) / 32 Nếu bộ dự đoán đỉnh trên thõa mãn thì: mean = (sum(T0..T15) + 8) / 16 Nếu bộ dự đoán bên trái thõa mãn thì: mean = (sum(L0..L15) + 8) / 16 Hoặc mean = 128 2. Kiểu dự đoán nằm dọc (Vertical) Ngoại suy từ các mẫu bên theo chiều dọc LT | T0 T1 T2 T3 T4 .. T15 ----------------------------- .. ----- L0 | T0 T1 T2 T3 T4 .. T15 L1 | T0 T1 T2 T3 T4 .. T15 L2 | T0 T1 T2 T3 T4 .. T15 ........ L15 | T0 T1 T2 T3 T4 .. T15 3. Kiểu dự đoán nằm ngang (Horizontal) Ngoại suy từ các mẫu trái theo chiều ngang LT | T0 T1 T2 T3 T4 .. T15 --------------------------- .. ----- L0 | L0 L0 L0 L0 L0 .. L0 L1 | L1 L1 L1 L1 L1 .. L1 L2 | L2 L2 L2 L2 L2 .. L2 ...... L15 | L15 L15 L15 L15 L15 .. L15 4.Kiểu dự đoán mặt phẳng Plane Cho 16 bộ dự đoán đỉnh trên (T0..T15), 16 bộ dự đoán bên trái (L0..L15) và 1 bộ dự đoán ở góc đỉnh trái (LT) sắp xếp như sau: LT | T0 T1 T2 .. T15 ------------------------------------- .. -------- L0 | c[ 0, 0] c[ 1, 0] c[ 2, 0] .. c[15, 0] L1 | c[ 0, 1] c[ 1, 1] c[ 2, 1] .. c[15, 1] ...... L15 | c[ 0,15] c[ 1,15] c[ 2,15] .. c[15,15] INTRA CHROMA 8x8 Dự đoán cho thành phần chroma được thực hiện một lần cho toàn bộ MB, 64 giá trị mẫu chroma sử dụng các kiểu dự đoán giống như dự đoán Intra 16x16 cho thành phần Luna: Dự đoán theo chiều ngang, dự đoán theo chiều đứng, dự đoán DC, dự đoán mặt phẳng. INTRA-PCM Là một MB 16x16, chứa một mặt phẳng các thành phần luma và chroma chưa nén. Làm cho bộ mã hóa xử lý đơn giản hơn bằng cách xử lý mã hóa và biến đổi thay vì phải gửi trực tiếp mẫu các giá trị mã hóa. Và kiểu dự đoán I-PCM còn có một số lợi ích sau: Cho phép mã hóa chính xác ký tự đại diện của giá trị mẫu. Cung cấp giá trị đúng cho những bức ảnh có nội dung bất thường mà không cần mở rộng dữ liệu quan trọng. Cho phép đặt giới hạn số lượng bit điều khiển MB mà không ảnh hưởng đến hiệu suất nén. Dự đoán trọng số: Là một phương pháp điều chỉnh mẫu cho bù chuyển động dữ liệu trong MB P hoặc MB B rất thích hợp cho mã hóa mặt người hoặc mã hóa chuyển động. Có 3 loại dự đoán trọng số như sau: 1. P slice macroblock, dự đoán trọng số “hiện thị” (explicit) 2. B slice macroblock, dự đoán trọng số “hiện thị” (explicit). 3. B slice macroblock, dự đoán trọng số “ẩn” (implicit). Mỗi mẫu dự đoán pred0(i, j) hoặc pred1(i, j) được co dãn bởi trọng số thống kê W0 hoặc W1 trong dự đoán bù chuyển động trước đó. Ở loại “hiện” thì trọng số thống kê được xác định bởi bộ mã hóa và truyền đi ở Slice header. Nếu sử dụng loại “ẩn” thì trọng số thống kê W0, W1 được tính toán dựa vào mối quan hệ vị trí thời gian của list 0 và list1 trong ảnh tham khảo. Giá trị trọng số thống kê lớn nếu ảnh tham khảo gần giống với ảnh hiện tại và giá trị trọng số thống kê nhỏ nếu ảnh tham khảo khác với ảnh hiện tại. Một số ứng dụng cho phép cả 2 hàm ẩn và hiện điều khiển sự liên quan của ảnh tham khảo đối với quá trình bù chuyển động, dự đoán trọng số có hiệu quả đặc biệt trong mã hóa các hiệu ứng mờ dần như minh họa ở hình IV.15. Hình IV.15. Hiệu ứng mờ dần Kỹ thuật tiên đoán bù chuyển động và ước lượng chuyển động Kỹ thuật tiên đoán bù chuyển động là kỹ thuật phán đoán theo hướng chuyển động của các bức ảnh, nhằm thay thế gần đúng các ảnh thành phần trong dãy video. Ngoài ra bù chuyển động còn làm giảm sự dư thừa về mặt không gian giữa các bức ảnh, hạn chế các thông số chuyển động bởi việc dùng vector chuyển động để mô tả sự dịch chuyển. Những vector chuyển động ở các khối kế cận sẽ cung cấp một giá trị pixel ước lượng khác nhau và được tính toán trong mỗi khối của MB. Giá trị dự đoán là giá trị trung bình của các ước lượng này. Dự đoán chuyển động của MPEG-2 có nhược điểm là ảnh tham khảo thích ứng nhất với MB hiện tại phải kích thước 16x16 và vùng thích ứng phải nằm ngay trong ảnh tham khảo đó dẫn đến hiệu quả nén chưa cao. Nguyên tắc bù chuyển động trong H.264/AVC cũng giống như các chuẩn trước là tìm kiếm trong ảnh tham khảo khối thích hợp nhất sao cho năng lượng của phần sai số dự đoán là nhỏ nhất, tuy nhiên ưu điểm của chuẩn H.264/AVC có thể bù chuyển động với kích thước nhỏ 8x8, 4x4 hoặc bù chuyển động trên cơ sở các điểm ảnh con, đặc điểm này đã mang lại 12% hiệu quả nén so với các chuẩn cũ. Bù chuyển động thích nghi khối Bù chuyển động với kích thước khối thay đổi sẽ dẫn đến việc phức tạp trong tính toán, vì thao tác tìm kiếm sẽ nhiều hơn và số bit cần thiết cho việc mã hóa cũng sẽ nhiều hơn, do đó H.264/AVC bổ sung phương pháp bù chuyển động thích nghi khối, nghĩa là nếu năng lượng sai số dự đoán quá lớn thì sẽ bù chuyển động với kích thước nhỏ và ngược lại. Hình IV.16. minh họa sự khác nhau giữa sai số có bù chuyển động và không bù chuyển động của khối 16x16. Frame 1 Frame 2 Không bù chuyển động Có bù chuyển động Hình IV.16. Sự khác nhau giữa sai số có bù chuyển động và không bù chuyển động cho khối 16x16 Bù chuyển động một phần tư Trong các thuật toán bù chuyển động trước thì sử dụng loại 1 pixel nên các thành phần của vector chuyển động bị giới hạn bởi một con số nguyên, mà chuyển động thực giữa 2 hình ảnh liên tiếp thường không bằng số nguyên bước của pixel dẫn đến sự hạn chế về độ phân giải, sai số trong dự đoán bù chuyển động và làm tăng sai số dự đoán. Ở MPEG-1, MPEG-2 và H.263 sử dụng bù chuyển động với độ phân giải ½ pixel, do đó các thành phần của các vector chuyển động có thể lấy giá trị ½ hoặc cả một pixel. Thành phần chính của bù chuyển động ½ pixel là bộ lọc nội suy. Quá trình nội suy là một thủ tục chuyển hóa những mẫu tại vị trí phân số bằng cách sử dụng mẫu tại vị trí nguyên và được minh họa như hình IV.17: Hình IV.17. Mẫu nội suy cho các MV ½ pixel Theo hình IV.17. tại vị trí a, cả 2 thành phần vector chuyển động đều là một pixel, do đó không cần các mẫu nội suy, tại vị trí b và c, một trong các thành phần của vector chuyển động bằng ½ pixel, do đó mẫu nội suy có giá trị bằng ghép nội suy 2 chiều tức là: b = (A + B)/2 c = (A + C)/2 (tất cả giá trị này là giá trị chroma và luma). Tại vị trí d, cả 2 đều là ½ pixel nên giá trị mẫu được tính toán nội suy 2 chiều từ tất cả bốn mẫu liền kề: d = (A+ B + C +D)/ 4. Chuẩn H.264/AVC sử dụng thuật toán bù chuyển động với độ phân giải ¼ pixel thay vì ½ hoặc 1 pixel như các chuẩn trước đây nhằm tăng khả năng dự đoán, giảm thiểu sai số dự đoán một cách đáng kể và tốc độ bit cũng được tăng lên. Kiểu nội suy cho các thành phần màu như sau: Mẫu nội suy thành phần luma. Quá trình bù chuyển động ¼ được chia thành 2 bước sau: Bước thứ nhất, ½ pixel được tính toán bằng cách ghép nội suy cải tiến. Ở đây không chỉ 2 hoặc 4 mẫu liền kề được sử dụng cho nội suy mà còn có thể là 8 mẫu theo 2 chiều ngang và thẳng đứng. Cấu trúc nội suy ½ pixel theo hướng nằm ngang như sau: Hình IV.18. Minh hoïa pheùp ½ pixel theo hướng nằm ngang cho thaønh phaàn luma. Các mẫu ở vị trí ½ pixel nằm cạnh 2 mẫu nguyên được nội suy từ những mẫu nguyên bằng cách sử dụng bộ lọc FIR 8-nhánh (Finite Impulse Response) với các trọng số

Các file đính kèm theo tài liệu này:

  • docLVver2.doc
  • docNV.doc