II. Chuẩn nén sử dụng trong IPT
2.1 Tổng quan về chuẩn nén MPEG
2.1.1 Các thành phần cơ bản trong chuẩn nén MPEG
Các tiêu chuẩn nén MPEG cấu trúc dữ liệu dạng lớp bao gồm các thành phần cơ bản sau :
• Khối (block) : là đơn vị cơ bản cho chuyển đổi DCT, bao gồm 8x8 điểm ảnh tín hiệu chói
hoặc tín hiệu màu.
• Macro block : là nhóm các khối DCT tương ứng với thông tin của một cửa sổ 16x16 điểm ảnh
gốc. Có nhiều dạng macro block khác nhau phụ thuộc vào cấu trúc lấy mẫu được sử dụng.
Hình 3.12 Cấu trúc macroblock của các dạng lấy mẫu
• Lát (slice) : được cấu thành từ một hay một số macroblock liên tiếp nhau. Phần header của slice chứa thông tin về vị trí của nó trong ảnh và tham số quét lượng tử (quantized scaling factor). Kích cỡ của slice quyết định bởi mức bảo vệ lỗi cần có trong ứng dụng vì bộ giải mã sẽ bỏ qua slice bị lỗi. Hệ số định vị một chiều DC được định vị tại điểm bắt đầu mỗi slice.
• Ảnh : cho bên thu biết về loại mã hóa khung I,P,B. Phần header mang thứ tự truyền tải của khung để bên thu hiển thị khung theo đúng thứ tự.
• Nhóm ảnh (group of picture) : gồm cấu trúc của các ảnh I,B và P. Mỗi nhóm ảnh bắt đầu bằng ảnh I cung cấp điểm vào ra và tìm kiếm.
Hình 3.13 Cấu trúc nhóm ảnh trong MPEG
• Chuỗi video (video sequence) : lớp chuỗi bao gồm phần header, một hoặc một số nhóm ảnh
(Picture group) và phần kết thúc chuỗi (sequence end code).
Thông tin quan trọng nhất của phần header là kích thước (dọc ngang) của mỗi ảnh, tốc độ bit, tốc độ ảnh và dung lượng đòi hỏi bộ đệm bên thu. Thông tin chuỗi ảnh và phần header của mỗi chuỗi là dòng bit đã mã hóa, còn gọi là dòng video cơ bản.
Hình 3.14 Cấu trúc dòng dữ liệu video MPEG
Chuẩn nén MPEG định nghĩa 3 loại ảnh:
• Intra-frame (I-frame) : frame được mã hóa riêng biệt không phụ thuộc các frame trước đó hoặc tiếp theo.Mã hóa theo hệ thống đc sử dụng gần giống như nén JPEG. Đây là frame độc lập và được sử dụng để tạo ra các loại frame khác. • P-frame (forward predicted frame) : khung dự đoán ảnh tiếp theo là khung dự
đoán ảnh dựa trên các frame I trước đó. MPEG không thực sự mã hóa ảnh mà chứa các thông tin về chuyển động cho phép IPTVCD có thể tái tạo lại frame. P-frame yêu cầu ít băng thông hơn I-frame, điều này là yếu tố quan trọng đối với mạng dựa trên IPTV.
• B-frame (Bi-directional predicted frame ) : frame dự đoán hướng: B-frame là frame được tạo thành từ việc kết hợp các thông tin từ cả I-frame và P-frame. Mã hóa B-frame thì tương tự với P-frame, ngoại trừ các vecto chuyển động phụ thuộc vào các vùng trong các khung tham khảo sau đó. B-frame chiếm ít dung lượng hơn là I-frame va P-frame. Vì thế dòng Mpeg video gồm nhiều B-frame thì chiếm dung lượng thấp hơn so với dòng chứa các frame I và P. Thậm chí, B- frame giúp làm tối thiểu băng thông cần thiết đối với các dòng MPEG video. Tuy nhiên, B-frame cũng có hạn chế đó là độ trễ. Do IPTVCD phải kiểm tra 2 khung trước và sau trước khi tạo ra B-frame.
Mỗi nhóm ảnh cần bắt đầu với một khung I, mặc dù kích thước của mỗi nhóm ảnh là khác nhau, nhưng trung bình mỗi nhóm ảnh trong IPTV có khoảng 12 đến 15 frame. Mỗi cấu trúc của một nhóm ảnh thông thường có thể được miêu tả bởi 2 thông số: N, số ảnh trong một nhóm và M, khoảng cách giữa các frame. Các nhóm ảnh được chia thành 2 loại: nhóm đóng và nhóm mở. Với nhóm đóng, khung B cuối cùng không yêu cầu khung I đầu tiên cho nhóm ảnh tiếp theo để giải mã, trong khi với nhóm mở cần yêu cầu khung I cho nhóm ảnh tiếp theo. Các nhóm ảnh sau đó được kết hợp với nhau để tạo thành dòng video. Mỗi dòng video bắt đầu biết một đoạn mã, theo sau đó là một header và kết thúc với một mã duy nhất.
Thứ tự các khung được truyền đi trên mạng băng rộng thì khác với thứ tự các khung trong chuối bit đầu vào của bộ mã hóa. Bởi vì bộ giải mã trong IPTVCD cần xử lý các frame I và P trước khi tạo ra khung B. Mối quan hệ tổng thể giữa các chuỗi ảnh, ảnh, các slice, các khối macro, các khối và các điểm ảnh được minh họa ở hình sau:
Hình 3.15 Cấu trúc dòng MPEG video
2.1.3 Quá trình nén MPEG
Phần đầu tiên của nén bao gồm một quá trình tiền đồng bộ. Quá trình này cơ bản bao gồm việc làm giảm kích thước của các frame. Làm giảm kích thước của các frame chính là làm giảm số lượng bit, điều này cũng giúp giảm băng thông cần thiết để truyền tín hiệu. Tuy nhiên, quá trình này không phải ko có trở ngại. Ví dụ, sự giảm kích thước của khung có thể thường xuyên gây ra những lỗi tỉ số cạnh (giống như sai tỉ lệ 4/3 hay 16/9) khi được thể hiện trên màn hình TV có độ phân giải thấp.
Phần hai của quá trình nén tín hiệu là chia một frame ảnh ra thành các block có kích thước 8 nhân 8 pixel - khối mã hóa nhỏ nhất trong giải thuật của MPEG. Có 3 loại block; độ chói Y, thành phần màu đỏ Cr hoặc xanh Cb. Các loại block thành phần màu mang thông tin về những màu khác nhau của hình ảnh, trong khi độ chói mang thông tin về những phần màu đen hoặc trắng của hình ảnh.
Khi hoàn thành hai phần trên, MPEG sẽ thực hiện một hàm toán được gọi là biến đổi cosin rời rạc đối với mỗi block riêng biệt. Kết quả thu được là một ma trận hệ số 8*8. DCT (discrete cosine transform) sẽ biến đổi sự khác nhau về không gian thành các tần số khác nhau, nhưng không làm thay đổi các thông tin trong block, các block ban đầu sẽ được tái tạo lại 1 cách chính xác sử dụng biến đổi ngược. Nguyên tắc thực hiện hàm này bao gồm việc chia các block thành các phần tùy theo mức độ quan trọng. Những phần quan trọng sẽ đươc giữ nguyên cho tới
bước tiếp theo trong khi các phần còn lại sẽ bị giảm bớt. Điều này sẽ đảm bảo rằng mắt người không chú ý tới việc những phần không quan trọng của block bị bỏ bớt khi tốc bít bị hạn chế.
Bước tiếp theo trong MPEG là quá trình lượng tử hóa. Quá trình lượng tử hóa dữ liệu số là quá trình làm giảm số lượng bít của các block. Mức lượng tử đối với mỗi tìn hiệu video là rất quan trọng.
Khi tất cả các block trong frame đều đã đc nén lại, MPEG sẽ ngắt các frame thành một dạng mới gồm nhiều block gọi là macro block. Mỗi macro block có kích thước 16 nhân 16 chứa các block độ chói và block thành phần màu. Nếu có sự khác biệt giữa frame cuối cùng và frame hiện tại, các thiết bị nén MPEG sẽ chuyển những block mới này tới một vị trí mới trên frame hiện tại. Điều này giúp không phải gửi đi những hình ảnh mới hoàn toàn, do đó có thể tích kiệm băng thông. Có 2 cách để thực hiện điều đó:
• Nén theo không gian là làm giảm các bít trên từng frame riêng biệt. điều này có thể đạt được do các pixel luôn đứng cạnh nhau trong các frame thường có giá trị giống nhau. Do đó thay về mã hóa từng pixel riêng biệt. Kĩ thuật nén theo không gian này mã hóa sự khác biệt giữa các pixel cạnh nhau. Số lượng bít cần thiết để mã hóa những khác biệt này ít hơn số lượng bít cần thiết để mã hóa từng pixel riêng biệt.
• Nén theo thời gian là làm giảm các bit giữa các frame liên tục. Trong quá trình sản xuất video có những thông tin được lặp lại giữa những frame liên tiếp. VD: nếu trên hình có một bức tường, bức tường vẫn xuất hiện liên tục trong 30 hình tiếp theo, mà không thay đổi ( bức tường đó không thay đổi trong vòng 1s), thay vì mã hóa 30 lần liên tục trong 1s, nên thời gian chỉ gửi đi các thông tin dự đoán chuyển động giữa những frame hình, trong trường hợp của bức tường trong VD trên, dự đoán chuyển động được đặt = 0.
Có nhiều phuơng thức khác nhau để nén một frame hình. VD như với một frame hình có độ phức tạp cao thì cần phương pháp nén có yếu tố nén theo không gian thấp bởi vì chỉ có một phần rất nhỏ các pixel được lặp lại. Nếu tốc độ bit có sự thay đổi lớn thì khó có thể truyền đi trong mạng IP, vì thế nhiều bộ mã hóa bao gồm cả chức năng đệm để có thể điều khiển và quản lí tốc độ chung mà tại đó các bit được truyền đi tới tầng tiếp theo của hệ thống sản xuất video.
Bước tiếp theo của quá trình nén MPEG là mã hóa các macroblock thành các slice. Slice là 1 chuỗi ảnh đặt nằm ngang cạnh nhau từ trái sang phải. Nhiều slice kết hợp với nhau tạo thành 1 hình. Mỗi slice được mã hóa độc lập với nhau để hạn chế lỗi.
Trong hệ thống IPTV người ta sử dụng ba loại chuẩn nén MPEG (moving pictures exert group) phổ biến nhất :
• MPEG - 2 • MPEG - 4 • H.264/AVC