Quá trình mã hóa theo chuẩn MPEG là sự ết hợp giữa nén trong ảnh và nén liên ảnh. Tín hiệu đầu vào có d ng 4:2:2 hoặc 4:2:0 được nén liên ảnh nhằm t o ra ảnh hác biệt ở đầu ra bộ cộng. nh hác biệt này sau đó được nén trong ảnh qua các
bước: biến đổi DCT, lượng tử hóa, mã hóa. Cuối cùng ảnh này được trộn cùng với vector chuyển động đưa đến bộ huyếch đ i đệm sẽ thu được ảnh đã nén. Ta xét ví dụ bộ nén theo phương pháp trên, dùng ảnh I và P trong cấu trúc GOP (Hình 2.3).
nh thứ nhất trong nhóm phải được mã hóa như ảnh lo i I. Trong trường hợp này, sau hi lấy mẫu lần đầu, tín hiệu video được truyền đến hối biến đổi DCT cho các MB riêng, sau đó bộ lượng tử và mã hóa entropy. Tín hiệu ra từ bộ lượng tử hóa được đưa đến bộ lượng tử hóa ngược và biến đổi DCT ngược, sau đó được lưu vào bộ nhớ ảnh.
Trong trường hợp mã hóa ảnh lo i P, m ch nén chuyển động làm việc. Trên cơ sở so sánh ảnh đang xét và ảnh trong bộ nhớ, sẽ xác định được các vector chuyển động, sau đó dự báo ảnh. Sự chênh lệch giữa ảnh đang xét và dự báo ảnh của nó được biến đổi DCT, lượng tử hóa và mã hóa entropy. Cũng như trong trường hợp các ảnh lo i I, tín hiệu ra từ bộ lượng tử hóa được giải lượng tử hóa và biến đổi DCT ngược rồi cộng với ảnh dự báo đang xét và lưu vào bộ nhớ.
Tốc độ bit của tín hiệu video được nén hông cố định, phụ thuộc vào nội dung ảnh đang xét. Ngược l i, t i đầu ra bộ mã hóa, dòng bit phải cố định để xác định tốc độ cho dung lượng ênh truyền. Do đó, t i đầu ra bộ mã hóa phải có bộ nhớ đệm đủ lớn. ộ mã hóa phải iểm tra tr ng thái đầy của bộ nhớ đệm. Khi số liệu trong bộ nhớ đệm gần bằng dung lượng cực đ i, thì các hệ số biến đổi DCT ngược được lượng tử hóa ít chính xác hơn. Trong trường hợp ngược l i, có ngh a là bộ nhớ đệm chứa số liệu quá ít, thì việc lượng tử hóa các hệ số sẽ t ng lên.
Quá trình giải mã theo l thuyết là ngược l i với quá trình mã hóa và được minh họa như hình 2.3.
Chuỗi tín hiệu vào được giải mã entropy t i VLD (Variable-Length Decoder). Sau đó tách số liệu ảnh (hệ số biến đổi DCT) ra hỏi các vector chuyển động. Số liệu sẽ được giảilượng tử hóa và biến đổi DCT ngược. Trong trường hợp ảnh lo i I bắt đầu ở mỗi nhóm ảnhtrong chuỗi, sẽ nhận được ảnh đầu ra hoàn chỉnh bằng cách trên. Nó được lưu trong bộ nhớảnh và được sử dụng để giải mã các ảnh tiếp theo.
Hình 2.3. Bộ Mã hóa MPEG
Trong trường hợp ảnh lo i P sẽ thực hiện giải lượng tử và biến đổi DCT ngược với việc sử dụng các vector chuyển động và ảnh lưu vào bộ nhớ ảnh. Trên cơ sở đó xác định được dự báo ảnh đang xét. Ta nhận được ảnh ra sau hi cộng dự báo ảnh và ết quả biến đổi DCT ngược. nh này cũng được lưu vào bộ nhớ để có thể sử dụng như là chuẩn hi giải mã các ảnh tiếp theo.
Hình 2.4. Bộ giải mã MPEG
2.2.3. Các bước t c i t u t toá nén MPEG
Từ sơ đồ của bộ mã hóa MPEG (hình 2.3), ta có thể chia thuật toán nén MPEG thành 5 bước. Đầu tiên là thực hiện lấy mẫu nhằm giảm độ phân giải, tiếp theo thực hiện bù chuyển động để giảm dư thừa về thời gian. ước tiếp theo là biến đổi cosin
rời r c (DCT) và lượng tử hóa. ước cuối cùng là thực hiện mã hóa các dữ liệu được lượng tử hóa bằng cách sử dụng mã hóa RLC và thuật toán mã hóa Huffman.
1) Bước 1: Lấy mẫu
Ta biết rằng mắt người ém nhậy cảm về màu sắc hơn là về độ sáng. Vậy nên trong thuật nén video, người ta thường chuyển hông gian màu RG thành các thành phẩn màu Y (độ sáng), Cr, Cb (màu sắc), và thực hiện lấy mẫu theo 3 thành phần màu này để phục vụ cho việc nén.
Có nhiều tiêu chuẩn lấy mẫu theo thành phần, điểm hác nhau chủ yếu ở tỷ lệ giữa tần số lấy mẫu và phương pháp lấy mẫu tín hiệu sáng và tín hiệu màu. Đó là tiêu chuẩn: 4:4:4, 4:2:2, 4:2:0, 4:1:1.
Tiêu chuẩn 4:4:4:
Tín hiệu độ sáng và tính hiệu màu được lấy mẫu t i tất cả các điểm lấy mẫu trên dòng tích cực của tín hiệu video (hình 2.5). Tiêu chuẩn 4:4:4 cho chất lượng hình ảnh tốt nhất, thuận tiện cho việc xử l video tín hiệu số. Nhưng với phương pháp lấy mẫu này, tốc độ dòng dữ liệu video số sẽ tương đối cao, hiệu suất nén hông được tốt.
Hình 2.5. Cấu trúc lấy mẫu theo chuẩn 4:4:4
Hình 2.6. Cấu trúc lấy mẫu theo chuẩn 4:2:2
Tín hiệu sáng được lấy mẫu t i tất cả các điểm lấy mẫu trên dòng tích cực của tín hiệu video. Tín hiệu màu trên mỗi dòng được lấy mẫu với tần số bằng nửa tần số lấy mẫu tín hiệu sáng (hình 2.6).
Tiêu chuẩn 4:2:0:
Tín hiệu sáng được lấy mẫu t i tất cả các điểm lấy mẫu trên dòng tích cực của tín hiệu video. Cách một điểm lấy mẫu một tín hiệu màu. T i dòng chẵn chỉ lấy mẫu tín hiệu màu Cr, t i dòng chẵn lấy mẫu tín hiệu Cb. Như vậy, nếu tần số lấy mẫu tín hiệu chói là fY, thì tần số lấy mẫu tín hiệu màu Cr, Cb sẽ là fY/4.
Hình 2.7. Cấu trúc lấy mẫu theo chuẩn 4:2:0
Hình 2.8. Cấu trúc lấy mẫu theo chuẩn 4:1:1
Tín hiệu sáng được lấy mẫu t i tất cả các điểm lấy mẫu trên dòng tích cực của tín hiệu video. Tín hiệu màu trên mỗi dòng được lấy mẫu với tần số bằng một phần tư tần số lấy mẫu tín hiệu sáng (Hình 2.8) Như vậy, nếu tần số lấy mẫu tín hiệu sáng là fY, thì tần số lấy mẫu tín hiệu màu Cr và Cb sẽ là fY/4.
2) Bước 2: Bù c uyể độ g
Một video số có thể hiểu là một chuỗi của các hung hình (frames). ởi vì 2 hung hình liên tiếp thường có sự hác biệt rất nhỏ, thế nên thuật toán nén cung cấp một cách để giảm bớt sự dư thừa về thời gian này, gọi là bù chuyển động.
Như đã đề cập ở trên, thuật toán nén MPEG, chia video thành các nhóm khung hình hay nhóm ảnh (GOP) đó là: I (intra-frames), P (Predicted-frames), B (Bi- directional predicted picture). Trong đó hung hình I là hung hình chính, nó không liên quan tới các hung hình hác và hệ số nén của nó hông cao. Khung hình P có thể dự đoán từ một hung hình I hoặc P phía trước. Khung hình P hông thể được tái t o mà hông có các hung hình liên quan của nó. Nhưng nó cần ít hông gian bộ nhớ hơn hung hình I, bởi vì chỉ có sự hác nhau được lưu. Khung hình có thể được nội suy từ cả 2 hướng , tham chiếu tới cả những hung hướng phía trước và phía sau. Khung hình hông thể được tham chiếu bởi một hung hình P hoặc khung hình B khác. Khung hình P và hung hình được gọi là mã hóa liên hung, trong hi hung hình I gọi là mã hóa trong hung.
Hình 2.9. Một chuỗi khung hình trong MPEG với 2 khả năng tham chiếu: một khung hình P tham chiếu tới một khung hình I và một khung hình B tham chiếu
tới 2 khung hình P [7]
Tỷ lệ của việc sử dụng các lo i hung hình I, B, P xác định chất lượng và tỷ lệ nén của video nén. Số lượng hung hình I nhiều sẽ làm t ng chất lượng, cũng như ích thước, trong hi nếu sử dụng nhiều hung hình thì sẽ cho một tỷ lệ nén tốt nhưng chất lượng thì ém hơn. Khoảng cách giữa 2 hung hình I có thể được xem như là một thước đo chất lượng của một MPEG-video. Trong thực tế, thì trình tự sau đây cho ết quả tốt về chất lượng và mức độ nén: I P P P I P.
Sự tham chiếu giữa các hung hình hác nhau được thực hiện bởi một quá trình được gọi là ước lượng chuyển động hoặc bù chuyển động. Mối tương quan giữa 2 hung hình về chuyển động được biểu diễn bởi một vector chuyển động. Một ước lượng chuyển động tốt sẽ cho ra một video có tỷ lệ nén và chất lượng tốt hơn. Tuy nhiên việc ước lượng chuyển động là một tính toán chuyên sâu và phức t p. Hình 2.10 cho ta thấy các bước trong các bước dự đoán chuyển động, sẽ được giải thích như sau:
Hình 2.10. Sơ đồ của dự đoán chuyển động [7]
Phân chia hung hình: Khung hình thực tế sẽ được chia thành các hối hình chữ nhật hông chồng lên nhau và có ích thước bằng nhau, thường là 8x8 hoặc 16x16 điểm ảnh (pixels). Kích thước của hối ảnh hưởng đến việc thực hiện các thuật toán nén. Kích thước của hối lớn hơn, thì số lượng các hối sẽ ít hơn, và vì thế ít vector chuyển động cần phải được truyền đi. Tuy nhiên, đường biên của các đối tượng chuyển động thường sẽ hông hớp với đường biên của các hối và vì thế hối có ích thước lớn hơn yêu cầu nhiều dữ liệu hiệu chỉnh để được truyền đi.
Các hối có ích thước nhỏ hơn dẫn đến việc có nhiều hơn vector chuyển động. Nhưng mỗi hối có thể tự hớp với đối tượng chuyển động và vì thế nó cần ít dữ liệu hiệu chỉnh hơn. Nhưng nếu hối có ích thước có ích thước quá nhỏ, thì hệ thống nén sẽ rất nh y cảm với nhiễu. Như vậy ích thước của hối là đ i diện cho mối quan hệ giữa việc giảm số vector chuyển động, tối đa hóa chất lượng video nén. Thuật toán MPEG thường sử dụng hối có ích thước là 16 x 16 điểm ảnh.
Xác định ngưỡng: Để giảm thiểu số lượng tính toán ước lượng chuyển động, thì trong thuật toán MPEG đã đặt ra một giới h n gọi là ngưỡng. Nó đo sự hác biệt
giữa 2 hối ở cùng 1 vị trí của ảnh trước và sau. Nếu sự hác biệt đó cao hơn ngưỡng thì bù chuyển động sẽ được tính toán, nếu hông toàn bộ hối được truyền đi.
Khớp các hối:
Việc hớp các hối là việc tốn thời gian nhất trong quá trình mã hóa theo thuật toán MPEG. Trong suốt quá trình hớp các hối, hối mục tiêu của hung hình hiện t i được so sánh với các hối của hung hình trước để có thể tìm thấy một hối phù hợp. Sau khi thực hiện xong quá trình hớp các hối, thì hung hình hiện t i sẽ được tái t o bằng cách sử dụng các hối phù hợp của hung hình trước.
Việc hớp các hối chỉ diễn ra trên thành phần sáng của hung hình. Các thành phần màu sắc của hối vẫn được mã hóa hi mã hóa khung hình, nhưng hông được sử dụng để đánh giá sự phù hợp hi hớp các hối.
Hình 2.11. Khu vực tìm kiếm của khung hình trước [7]
Việc tìm iếm các hối phù hợp với các hối của hung hình hiện t i có thể được thực hiện trên toàn bộ hung hình trước, nhưng thường được giới h n trong một hu vực tìm iếm nhỏ hơn, tập trung xung quanh vị trí của hối đích trong hung hình hiện t i (hình 2.11). Việc giới h n hu vực tìm iếm đặt ra một giới h n, gọi là chuyển vị tối đa của hối. Nó xác định một hối có thể di chuyển bao xa hi từ hung hình trước sang hung hình hiện t i. Sự chuyển vị tối đa này được quy định là số lượng tối đa các điểm ảnh theo cả 2 hướng ngang và dọc mà một hối của hung hình trước có thể di chuyển để hớp với hối đích của hung hình hiện t i.
Khu vực tịm iếm hông cần phải vuông. ởi vì chuyển động có nhiều hả n ng đi theo chiều ngang hơn chiều dọc. Do đó hu vực tìm iếm theo hình chữ nhật phổ biến hơn.
Giả sự ích thước của hối là b x b và các chuyển vị tối đa theo hướng ngang và dọc tương ứng là dx và dy. Khu vực tìm iếm sẽ có ích thước (2dx + b) (2dy + b), và nó sẽ chứa (2dx + 1) (2dy + 1) các hối đầu vào b x b hác nhau, nhưng chồng chéo lên nhau. Rõ ràng chuyển vị tối đa càng lớn thì xác suất cho cho việc tìm được một hối phù hợp càng cao. Nhưng số lượng các hối đầu vào l i t ng theo bậc 2 so với độ t ng của chuyển vị tối đa, dẫn đến sẽ có 1 số lượng lớn hối đầu vào được so sánh với hối đích. Việc này sẽ làm t ng đáng ể thời gian tính toán cho việc mã hóa. Vậy nên việc xác định được độ lớn của chuyển vị tối đa là rất quan trọng.
Dự đoán lỗi mã hóa:
Hình 2.12. Mô tả lỗi dự đoán [7]
Sự chuyển động của các đối tượng của video trong thực tế thường là phức t p, và việc tính toàn ước lượng chuyển động trong hông gian 2 chiều sẽ hông thể hoàn toàn phù hợp với các chuyển động trong hung cảnh thực, gây nên lỗi, được gọi là lỗi dự đoán. Các thuật toán nén MPEG chứa một ma trận để bù lỗi này. Sau hi dự đoán, các dự đoán và hung ban đầu được so sánh, và sự hác biệt giữa chúng sẽ được mã hóa thành 1 ma trận bù lỗi. Thường là cần rất ít dữ liệu để lưu trữ ma trận bù lỗi này vì sự hác biệt giữa các dự đoán và hung ban đầu là hông nhiều. (Khu vực màu vàng và màu đen trong hình 2.12)
Mã hóa vector chuyển động:
Sau hi xác định được các vector chuyển động, thì những vector chuyển động này cũng cần phải được né. Phần lớn thành phần của một video MPEG chứa các khung hình B và P, và hầu hết trong số chúng chủ yếu lưu trữ các vector chuyển động. Vì vậy hiệu quá nén cho các vector chuyển động, ảnh hưởng rất nhiều đến tỷ lệ nén của thuật toán. Một điều may mắn là các vector chuyển động có sự tương quan cao và có sự hông phân bố hông đồng đều, nên nó phù hợp cho việc nén thống ê. Việc nén các vector chuyển động phải là nén hông tốn hao.
3) Bi đổi Cosi rời rạc (DCT)
ước tiếp theo của quá trình nén là xác định thông tin dư thừa trong miền hông gian của từng hung hình. Nén không gian được thựchiện bởi phép biến đổi cosin rời r c DCT (Discrete Cosine Transform). DCT biến đổi dữ liệu dưới d ng biên độ thành dữ liệu dưới d ng tần số. Mục đích của quá trình biến đổi là thay đổi dữ liệu biểu diễn thông tin: dữ liệu của ảnh con tập trung vào một phần nhỏ các hệ số hàm truyền. Việc mã hóa và truyền chỉ thực hiện đối với các hệ số n ng lượng này, và có thể cho ết quả tốt hi t o l i tín hiệu video có chất lượng cao. DCT đã trở thành tiêu chuẩn quốc tế cho các hệ thống mã chuyển vị bởi nó có đặc tính gói n ng lượng tốt, cho ết quả là số thực và có các thuật toán nhanh để thể hiện chúng.
Các phép tính DCT được thực hiện trong ph m vi các hối 8×8 (hoặc 16x16) mẫu tín hiệu chói Y và các hối tương ứng của tín hiệu hiệu màu. Hiệu quả của việc chia ảnh thành các hối nhỏ 8x8 hay 16x16 là rất dễ nhận thấy. Nếu ta tính toán DCT trên toàn bộ frame thì ta đã xem như toàn bộ frame có độ dư thừa như nhau. Nhưng đối với một hình ảnh thông thường, một vài vùng có một số lượng lớn các chi tiết và các vùng hác có ít chi tiết. Nhờ đặc tính thay đổi của các ảnh hác nhau và các phần hác nhau của cùng một ảnh, ta có thểcải thiện một cách đáng ể việc mã hóa nếu biết tận dụng nó.
( ) ( ) ( ) ∑ ∑ ( ) ( ) ( ) C (u), C (v) = 1/√ với u, v = 0 C (u), C (v) = 1 cho u, v ≠ 0 N = block size
Hình 2.13. Công thức biến đổi Cosin rời rạc
DCT nghịch đảo được định ngh a là: ( ) ∑ ∑ ( ) ( ) ( ) ( ) ( )
Hình 2.14. Công thức nghịch đảo của biến đổi Cosin rời rạc
4) Lưở g tử óa