2. DANH SÁCH CÁC BẢNG BIỂU
3.3.3.2. Cỏc ảnh và bự chuyển động dựng trong H264/MPEG Part 10
1. Chia ảnh thành cỏc Macro-Block .
Mỗi ảnh video, Frame hoặc Field được chia thành cỏc Macro-Block cú kớch thước cố định bao trựm một diện tớch ảnh hỡnh chữ nhật gồm 16 x 16 mẫu cho thành phần chúi(luma) và 8 x 8 mẫu cho một trong hai thành phần màu(chroma). Tất cả cỏc mẫu Macro-Block của thành phần chúi hoặc của thành phần màu được dự đoỏn theo khụng gian hoặc thời gian và kết quả sai số dự đoỏn được truyền đi bằng việc sử dụng mó hoỏ biến đổi. Do đú, mỗi thành phần màu của sai số dựđoỏn(prediction residual) được chia
Chuơng 3: Chuẩn nộn Video MPEG -4 và ứng dụng trong truyền hỡnh trờn mạng Internet
nhỏ thành cỏc khối. Mỗi khối được biến đổi nhờ dựng một phộp biến đổi nguyờn, và cỏc hệ số biến đổi được lượng tử hoỏ và được biến đổi sử dụng phương phỏp mó hoỏ Entropy.
Cỏc Macro-Block được tổ chức thành cỏc Slice, biểu diễn cỏc tập con của ảnh đó cho và cú thể được giải mó độc lập. Thứ tự truyền của cỏc Macro-Block trong dũng bớt phụ thuộc vào “Bản đồđịnh vị Macro-Block ”- Macro-Block Allocation Map- và khụng nhất thiết phải theo thứ tự quột.
H264/MPEG Part 10 hỗ trợ 5 dạng mó húa Slice khỏc nhau. Đơn giản nhất là Slice I, trong đú tất cả Macro-Block được mó hoỏ khụng cú sự tham chiếu tới cỏc ảnh khỏc trong dóy video. Tiếp theo là hai dạng Slice P và Slice B cú sự tham chiếu tới cỏc ảnh khỏc; với Slice P thỡ chỉ tham chiếu tới cỏc ảnh trước đú; cũn Slice B thỡ tham chiếu tới cảảnh trước và ảnh sau nú. Hai dạng khỏc mà mới xuất hiờn ở H264/MPEG Part 10 đú là SI (Switching I) và SP (Switching P) được dựng để cho chuyển mạch hiệu quả giữa cỏc dũng bớt được mó hoỏ ở cỏc tốc độ bớt khỏc nhau.
Để cung cấp cỏc phương phỏp che giấu hiệu quả trong cỏc kờnh cú xu hướng bị lỗi với cỏc ứng dụng độ trễ thấp, H264/MPEG Part 10 hỗ trợ một đặc điểm gọi là thứ tự Macro-Block linh hoạt FMO (Flexible Macro-Block Ordering). FMO định rừ một giản đồ ấn định cỏc Macro-Block trong ảnh vào một hoặc vài nhúm Slice. Mỗi nhúm Slice được truyền riờng biệt. Nếu một nhúm Slice nào bị mất, cỏc mẫu trong cỏc Macro-Block bờn cạnh về mặt khụng gian, thuộc về cỏc nhúm Slice được thu đỳng, cú thể được sử dụng cho che giấu hiệu quả lỗi. Cỏc giản đồđược phộp trải rộng từ cỏc giản đồ hỡnh chữ nhật tới cỏc giản đồ phõn tỏn theo cỏc quy tắc khỏc nhau.
2. Dựđoỏn trong ảnh Intra- Frame.
Cỏc tiờu chuẩn trước đú đó chấp nhận Macro-Block mó hoỏ trong ảnh, mó hoỏ bằng chớnh nú mà khụng cú dự đoỏn thời gian. Macro-Block mó hoỏ trong ảnh xảy ra trong cỏc mảng (slice) hay cỏc Macro-Block khụng chấp nhận sự hiệu chỉnh thời gian của việc dự đoỏn bự chuyển động. Về bản chất, Macro-Block mó hoỏ trong ảnh đưa ra một số lượng lớn cỏc bớt được mó hoỏ. H.264 sử dụng phương phỏp dựđoỏn cỏc Macro- Block mó hoỏ trong ảnh để giảm một lượng lớn cỏc bớt được mó hoỏ bằng chớnh bản thõn tớn hiệu gốc đưa vào. Để mó hoỏ một block hay một Macro-Block trong mode mó hoỏ trong ảnh, một block được định dạng cơ sở trờn cỏc block được khụi phục trước đú (nhưng khụng qua bộ lọc). Tớn hiệu dư thừa giữa cỏc block hiện tại và dựđoỏn cuối cựng được mó hoỏ. Để lấy mẫu tớn hiệu chúi, Block dựđoỏn cú thểđược định dạng là: cho mỗi
Chuơng 3: Chuẩn nộn Video MPEG -4 và ứng dụng trong truyền hỡnh trờn mạng Internet
Block nhỏ (Subblock) là 4 x 4, mỗi Block là 8 x 8, hay mỗi Macro-Block là 16 x 16. Trong trường hợp được lựa chọn từ 9 mode, cho cỏc Block luma (khối tớn hiệu chúi) là 4 x 4 và 8 x 8; 4 mode cho một Block luma 16 x 16; và 4 mode cho mỗi Block chroma (khối tớn hiệu màu).
Hỡnh 18: Cỏc mode trong MPEG-4
Hỡnh 18 chỉ ra một Block luma 4 x 4 được dựđoỏn. Để dựđoỏn cỏc mẫu [a,b, …, p] cho Block hiện tại, cỏc mẫu khụi phục lại ở phớa trờn và bờn trỏi trước đú [A,B, …,M] được dựng theo định hướng cỏc mode. Cỏc mũi tờn trong hỡnh 18 chỉ định hướng dự đoỏn của mỗi mode. Với mode 0 (vertical-theo chiều dọc) và mode 1 (horizontal-theo chiều dọc), cỏc mẫu dự đoỏn được định dạng bằng phộp ngoại suy từ cỏc mẫu cao [A,B,C,D] và từ cỏc mẫu bờn trỏi [I, J, K, L], tỏch biệt nhau. Với mode 2 (DC- một chiều), tất cả cỏc mẫu dự đoỏn được định dạng bằng cỏch lấy trung bỡnh của cỏc mẫu phớa trờn và bờn trỏi [A, B, C, D, I, J, K, L].Với mode 3 (đường chộo xuống phớa trỏi), mode 4 (đường chộo xuống phớa phải), mode 5 (theo chiều dọc phớa phải), mode 6 (theo chiều ngang xuống), mode 7 (theo chiều dọc phớa trỏi) và mode 8 (theo chiều ngang lờn), cỏc mẫu dựđoỏn được định dạng từ trọng số trung bỡnh của cỏc mẫu dựđoỏn từ A-M. Vớ dụ,cỏc mẫu a và d được dự đoỏn lần lượt bằng cỏch tớnh làm trũn (I/4 + M/2 + A/4) và (B/4 + C/2 + D/4) trong mode 4, và bằng (I/2 + J/2) và (J/4 + K/2 + L/4) trong mode 8. Bộ mó hoỏ cú thể lựa chọn mode dựđoỏn cho mỗi Block để số dư giữa cỏc Block được mó hoỏ và dựđoỏn là nhỏ nhất.
Để dựđoỏn cho mỗi Block luma 8 x 8, một mode được lựa chọn từ 9 mode, tương tự như việc dựđoỏn khối trong ảnh 4 x 4. Để dựđoỏn cho tất cả thành phần độ chúi luma 16 x 16 của một Macro-Block, thỡ ta phải dựng 4 mode. Với mode 0 (theo chiều dọc), mode 1 (theo chiều ngang), mode 2 (DC), việc dựđoỏn thỡ tương tự như trong cỏc trường hợp của Block luma 4 x 4. Với mode 4 (mặt phẳng-Plane), một hàm mặt phẳng tuyến tớnh được làm khớp với cỏc mẫu phớa trờn và bờn trỏi. Mỗi thành phần màu của một
Chuơng 3: Chuẩn nộn Video MPEG -4 và ứng dụng trong truyền hỡnh trờn mạng Internet
Macro-Block được dự đoỏn từ cỏc mẫu thành phần màu ở phớa trờn và/hay đến bờn trỏi mà vừa được mó hoỏ hay khụi phục lại trước đú. Việc dự đoỏn thành phần màu được định nghĩa cho 3 kớch cỡ Block cú thể là: thành phần màu 8 x 8 định dạng 4:2:0, thành phần màu 8 x 16 trong định dạng 4:2:2 và thành phần màu 16 x 16 trong định dạng 4:4:4. Với 4 mode dự đoỏn cho tất cả cỏc trường hợp thỡ rất giống với mode dự đoỏn thành phần chúi 16 x 16, ngoại trừ cỏc mode cú thứ tự sau là khỏc: mode 0, mode 1, mode 2 và mode 3.
3. Bự chuyển động trong cỏc Slice P (Prediction Inter Frame)
Ngoài cỏc dạng mó hoỏ Macro-Block Intra, cỏc dạng mó hoỏ bự chuyển động hoặc dự đoỏn khỏc được xỏc định cho cỏc Macro-Block Slice P. Dự đoỏn liờn ảnh được làm giảm với sự tương quan theo thời gian với sự trợ giỳp của việc xỏc định Vector chuyển động (Motion Estimation) và bự chuyển động (compensation).
* Chia Macro-Block thành cỏc Block : Trong H.264, ảnh hiện tại cú thể được phõn chia thành cỏc Macro-Block hay cỏc Block nhỏ hơn. Một Macro-Block của cỏc mẫu thành phần màu 16 x 16 cú thể chia nhỏ hơn thành cỏc Block kớch cỡ từ 4 x 4. Với Macro-Block mode 16 x 16, cú 4 trường hợp là: 16 x 16, 16 x 8, 8 x 16, hay 8 x 8, ngoài ra cũng cú 4 trường hợp cho mode 8 x 8 là : 8 x 8, 8 x 4, 4 x 8, hay 4 x 4 . Một Block kớch cỡ nhỏ hơn yờu cầu một số lượng bớt lớn để truyền Vector chuyển động và dữ liệu thờm vào của việc phõn chia, tuy nhiờn dữ liệu dư bự chuyển động cú thểđược giảm. Do đú, việc lựa chọn kớch cỡ phõn chia phụ thuộc vào cỏc đặc điểm video đầu vào. Sự phõn chia Macro-Block thành cỏc Block được minh hoạ trong hỡnh sau:
Hỡnh 19: Phõn chia Macro-Block cho bự chuyển động
Trờn: Phõn chia cỏc Macro-Block . Dưới: Phõn chia cỏc phần 8 x 8.
Chuơng 3: Chuẩn nộn Video MPEG -4 và ứng dụng trong truyền hỡnh trờn mạng Internet
* Cỏc giỏ trị dựđoỏn cho thành phần chúi (Luma) và thành phần màu (Chroma):
Tớn hiệu dự đoỏn cho mỗi khối luma m x n đó mó hoỏ dự đoỏn thu được bằng việc đổi chỗ diện tớch của ảnh tham chiếu tương ứng, nú được xỏc định bởi Vector chuyển động biến đổi và chỉ số ảnh tham chiếu. Như vậy, nếu Macro-Block được mó hoỏ khi dựng dạng Sub-Macro-Block (Macro-Block phụ) Inter 4 x 4, nhiều nhất 16 Vector chuyển động cú thể được truyền đi cho một Macro-Block P Slice. Độ chớnh xỏc bự chuyển động bằng ẳ khoảng cỏch mẫu. Trong trường hợp Vector chuyển động nhắm trỳng vị trớ của một mẫu nguyờn vẹn (Integer- Sample), cỏc tớn hiệu dựđoỏn là cỏc mẫu tương ứng của ảnh tham chiếu; nếu khỏc đi, chỳng được nội suy ở cỏc vị trớ của mẫu con (Sub-Sample). Trong thành phần tớn hiệu chúi, cỏc mẫu phần tử ảnh phụ tại vị trớ một phần hai phần tửảnh được phỏt đầu tiờn và được nội suy từ cỏc mẫu phần tửảnh nguyờn bờn cạnh sử dụng một bộ lọc FIR 6 đầu ra với cỏc trọng số (1, -5, 20, 20, -5, 1)/32. Đụi khi tất cả cỏc mẫu một phần hai phần tửảnh là sẵn cú, với mỗi mẫu một phần tư phần tử ảnh được sinh ra khi sử dụng phộp nội suy tuyến tớnh hai chiều giữa cỏc mẫu một phần hai hay cả phần tửảnh bờn cạnh (lấy trung bỡnh ở cỏc vị trớ nguyờn mẫu và nửa mẫu).
Với thành phần tớn hiệu màu (Chroma): Việc lấy mẫu nguồn Video định dạng 4:2:0, 1/8 cỏc mẫu phần tử ảnh được dựng trong cỏc thành phần màu (tương ứng với ẳ cỏc mẫu phần tửảnh trong thành phần màu). Cỏc mẫu này được nội suy hai chiều(nội suy tuyến tớnh) giữa cỏc mẫu nguyờn phần tửảnh màu.
* Bự chuyển động: H264/MPEG Part 10 cho phộp cỏc Vector chuyển động khụng hạn chế, tức là chỳng cú thể nhắm ra ngoài miền ảnh. Trong trường hợp này cỏc Frame tham chiếu được mở rộng ra ngoài biờn ảnh bằng việc lặp lại cỏc Pixel biờn trước khi nội suy. Cỏc thành phần Vector chuyển động được mó hoỏ vi sai khi dựng hoặc là giỏ trị trung bỡnh (median) hoặc là dựđoỏn định hướng từ cỏc khối xung quanh. Khụng cú dự đoỏn thành phần Vector chuyển động ở cỏc biờn của Slice.
H264/MPEG Part 10 hỗ trợ dựđoỏn bự chuyển động đa ảnh (Multi-Picture). Điều này cú nghĩa là cú nhiều hơn một ảnh được mó hoỏ trước đú cú thểđược sử dụng để tham chiếu cho dựđoỏn bự chuyển động. Hỡnh sau minh hoạ khỏi niệm này
Chuơng 3: Chuẩn nộn Video MPEG -4 và ứng dụng trong truyền hỡnh trờn mạng Internet
Hỡnh 20: Bự chuyển động nhiều Frame – ngoài Vector chuyển động, cỏc tham số tham chiếu ảnh (∆) cũng được truyền đi.
Cả bộ mó hoỏ và bộ giải mó phải lưu trữ cỏc ảnh tham chiếu được sử dụng cho dự đoỏn ảnh Inter trong bộ nhớ đờm đa ảnh (Multi-Picture). Bộ giải mó sao lưu lại bộ nhớ đệm đa ảnh của bộ mó hoỏ, theo dạng nhớ đệm ảnh tham chiếu 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 bớt. Trừ khi kớch thước bộ nhớ đệm đa ảnh được đặt cho mỗi ảnh, chỉ số mà ảnh tham chiếu được định vịở đú bờn trong bộ nhớđệm đa ảnh thỡ phải được ký hiệu. Tham số chỉ số tham chiếu cho mỗi khối luma bự chuyển động 16 x 16, 16 x 8, 8 x 16 hoặc 8 x 8.
Ngoài cỏc mode bự chuyển động được mụ tảở trờn, Macro-Block P- Slice cũng cú thể được mó hoỏ trong mode gọi là SKIP. Đối với mode này, cả tớn hiệu lỗi dự đoỏn lượng tử húa lẫn Vector chuyển động hoặc tham số chỉ số tham chiếu đều khụng được truyền đi. Cỏc tớn hiệu thiết lập lại thỡ thu được tương tự như cỏch với tớn hiệu dự đoỏn của Macro-Block Inter 16 x 16, tức là tham chiếu tới ảnh đặt ở vị trớ cú chỉ số 0 trong bộ nhớ đệm đa ảnh. Nhỡn chung Vector chuyển động được sử dụng cho việc thiết lập lại Macro-Block SKIP là đồng nhất với bộ dự đoỏn Vector chuyển động cho khối 16 x 16. Nếu cỏc điều kiện đặc biệt được duy trỡ, Vector chuyển động Zero được sử dụng thay cho nú.
4. Bự chuyển động trong cỏc Slice B (Bi-Direction Prediction Inter Frame)
Dựđoỏn hai chiều rất cú hiệu quảđể giảm sự tương quan theo thời gian bằng việc sử dụng cỏc ảnh tham chiếu. Cỏc chuẩn nộn hiện nay với cỏc ảnh B sử dụng mode dự
Chuơng 3: Chuẩn nộn Video MPEG -4 và ứng dụng trong truyền hỡnh trờn mạng Internet
đoỏn hai chiều, tức là chỉ cho phộp kết hợp cỏc tớn hiệu dựđoỏn trước đú với cỏc tớn hiệu dự đoỏn sau. Một tớn hiệu dự đoỏn được nhận từ một ảnh trong ảnh (Inter Picture) tiếp sau, hay từ một ảnh dựđoỏn trước, hoặc từ tớn hiệu trung bỡnh tuyến tớnh của hai tớn hiệu dựđoỏn bự chuyển động.
Hỡnh 21: Ảnh nội suy B (dựđoỏn hai chiều)
So với cỏc tiờu chuẩn trước đú, H264/MPEG Part 10 đó tổng quỏt khỏi niệm Slice B và khụng những chỉ hỗ trợ một cặp dự đoỏn theo hướng forward/backward (tiến/lựi) mà cũn cả hai cặp theo hướng forward/forward (tiến/tiến) và backward/backward (lựi/lựi). Tham chiếu tiến hai bước (two forward) cú thể cú lợi cho dự đoỏn bự chuyển động của một vựng vừa thay đổi cảnh trước đú, và tham chiếu lựi hai bước mà cảnh vừa thay đổi sau đú. Cỏc Slice đó mó hoỏ dự đoỏn hai chiều cú thể cũng được sử dụng để tham chiếu cho việc mó hoỏ trong ảnh của cỏc ảnh khỏc. Như vậy, cỏc ảnh khỏc cú thể tham chiếu cỏc ảnh B cho dự đoỏn chuyển động, phụ thuộc vào hoạt động điều khiển quản lý bộ nhớ của việc nhớ đệm đa ảnh. Do đú, sự khỏc nhau cơ bản giữa Slice B và Slice P là: cỏc Slice B được mó hoỏ theo cỏch trong đú một số Macro-Block hoặc Block cú thể dựng trung bỡnh trọng số của hai giỏ trị dự đoỏn bự chuyển động riờng biệt cho việc hỡnh thành cỏc tớn hiệu dự đoỏn. Nhỡn chung cỏc Slice B dựng hai bộ nhớ đệm ảnh tham chiếu khỏc nhau gọi là bộ nhớ đệm ảnh tham chiếu thứ nhất và thứ hai tương ứng. Cỏc ảnh nào được xắp đặt đỳng vị trớ thực tế trong mỗi bộ nhớ đệm ảnh tham chiếu thỡ được đưa ra điều khiển bộ nhớđệm ảnh.
Chuơng 3: Chuẩn nộn Video MPEG -4 và ứng dụng trong truyền hỡnh trờn mạng Internet
* Cỏc mode dựđoỏn trong Slice Block: Trong cỏc Slice B, cú 4 dạng dựđoỏn ảnh Inter khỏc nhau được hỗ trợ: dự đoỏn List 0, List 1, hai hướng (bi-predictive)và trực tiếp (direct). Trong đú, dựđoỏn List 0 hiển thị rằng tớn hiệu dựđoỏn được tạo thành nhờ dựng bự chuyển động từ ảnh của bộ nhớ đệm tham chiếu đầu tiờn, thỡ ảnh của bộ nhớ đệm ảnh tham chiếu thứ hai được sử dụng cho việc xõy dựng tớn hiệu dự đoỏn nếu dự đoỏn List 1 được sử dụng.
H264/MPEG Part 10 giới thiệu mode trực tiếp (direct-mode), nú khụng yờu cầu thụng tin kốm theo (bờn cạnh), nhưng nhận ảnh tham chiếu, kớch cỡ khối, dữ liệu Vector chuyển động từảnh Inter tiếp theo. Dựđoỏn trọng số được làm tăng thờm do sự chuyển tiếp dần dần từ cảnh (scene) nọ sang cảnh kia.
Trong mode dự đoỏn hai hướng, tớn hiệu dự đoỏn được tạo thành bởi trung bỡnh trọng số của tớn hiệu dự đoỏn bự chuyển động List 0 và List 1. Dự đoỏn cú trọng số sẽ được ta đề cập đến sau đõy.
* Dựđoỏn cú trọng số (weighted Prediction)
Tất cả cỏc chuẩn nộn đang cú hiện nay đều coi cỏc ảnh tham chiếu cú trọng số bằng nhau, vớ dụ như tớn hiệu dự đoỏn thu được bằng cỏch lấy trung bỡnh cỏc tớn hiệu tham chiếu cú trọng số bằng nhau. Nhưng sự biến đổi dần dần từ cảnh nay sang cảnh khỏc thỡ cần cỏc trọng số khỏc nhau.
Sự biến đổi dần dần là rất phổ biến trong cỏc chuyển động, chuyển cảnh từ mờ dần sang đen (fade to black) (fade to black : cỏc mẫu thành phần chúi của cảnh dần dần xấp xỉ zero, cỏc mẫu thành phần màu dần dần xấp xỉ 128), một cảnh chuyển đổi sang mờ dần từđen (fade from black).
H264/MPEG Part 10 sử dụng phương phỏp dự đoỏn cú trọng số cho một Macro- Block của Slice P hay Slice B. Một tớn hiệu dựđoỏn là p cho Slice B được thu được bằng cỏc trọng số khỏc nhau từ hai tớn hiệu tham chiếu là r1 và r2, ta cú:
P = w1 x r1 + w2 x r2
Trong đú w1 và w2 là cỏc trọng số. Nú được xỏc định khỏc nhau theo hai loại ẩn (Implicit) và hiện (explicit) trong bộ mó hoỏ. Trường hợp hiện, cỏc thừa số được truyền trong phần đầu của Slice (header Slice ). Trong trường hợp ẩn, cỏc thừa sốđược tớnh toỏn