ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
ĐỖ THÀNH NAM
PHÁT TRIỂN THUẬT TOÁN TĂNG CƯỜNG CHẤT
LƯỢNG VIDEO Ở ĐẦU THU
LUẬN VĂN THẠC SĨ
Hà Nôi-2011
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
ĐỖ THÀNH NAM
PHÁT TRIỂN THUẬT TOÁN TĂNG CƯỜNG CHẤT
LƯỢNG VIDEO Ở ĐẦU THU
Ngành:
Công nghệ Điện tử - Viễn thông
Chuyên ngành:
Kỹ thuật Điện tử
Mã số:
60 52 70
LUẬN VĂN THẠC SĨ
NGƯỜI HƯỚNG DẪN KHOA HỌC: TS. ĐINH TRIỀU DƯƠNG
Hà Nôi-2011
1
Mục lục
Chương 1. Đặt vấn đề 5
Chương 2. Chuẩn H.264 7
2.1. Giới thiệu về chuẩn nén H.264/MPEG-4 part 10 7
2.2. Ứng dụng và đặc tính thiết kế nổi bật. 8
2.3. Một số khái niệm 11
2.4. Cấu trúc lớp 12
2.4.1 Lớp trừu tượng mạng NAL 12
2.4.2 Lớp mã hóa video VCL 13
2.4.3 Cấu trúc của luồng dữ liệu video 19
2.4.4 Cấu trúc của Slice 21
2.4.5 H.264/AVC profiles 24
Chương 3. Các tiêu chí đánh giá chất lượng video 28
3.1. Tỷ số tín hiệu trên nhiễu đỉnh (PSNR) 28
3.2. Tương tự cấu trúc (SSIM) 29
Chương 4. Các thuật toán tăng cường chất lượng video cho H.264 31
4.1. Giới thiệu 31
4.2. Một số đặc tính video. 31
4.2.1 Đặc tính của chuyển động 31
4.2.2 Đặc tính lỗi 32
4.3. Các thuật toán tăng cường chất lượng video trong miển thời gian. 33
4.3.1 Thuật toán sao chép frame FC (Frame copy) 33
4.3.2 Thuật toán sao chép vector chuyển động MVC (Motion vector copy) 33
4.3.3 Thuật toán ngoại suy vector chuyển động MVE (Motion vector
extrapolution) 34
Chương 5. Kết quả mô phỏng thực nghiệm 37
5.1. Xử lý tăng cường chất lượng trong bộ phần mềm Joint Model (JM14.1) 37
5.2. Kết quả các thuật toán 38
5.1.1. Thuật toán Frame copy 38
5.1.2. Thuật toán sao chép vector chuyển động MVC 39
2
5.1.3. Thuật toán ngoại suy vector chuyển động MVE 40
5.1.4. Đánh giá kết quả các thuật toán 41
Chương 6. Kết luận 44
Tài liệu tham khảo 45
3
Mục lục hình ảnh
Hình 1.1: Vấn đề đặc trưng của mạng điện thoại di động 3G/4G 5
Hình 2.1: Vị trí của chuẩn H.264/MPEG-4 AVC 8
Hình 2.2: Một ảnh cùng với các thành phần Y, U, V của nó 12
Hình 2.3: Cấu trúc lớp của bộ mã hóa H.264/AVC 12
Hình 2.4: Cấu trúc mã hóa cơ bản của 1 macroblock trong H.264/AVC 13
Hình 2.5: Sơ đồ khối của bộ giải mã H.264[3] 14
Hình 2.6: Thứ tự duyệt của các block hiệu trong một macroblock[1] 16
Hình 2.7: Cấu trúc phân tầng trong luồng dữ liệu video của H.264 20
Hình 2.8: Ảnh được phân thành nhiều slice 21
Hình 2.9: Phát hiện lỗi với ảnh không chia slice và ảnh có chia thành các slice 22
Hình 2.10: Các loại slice trong H.264/AVC 24
Hình 2.11: Chi tiết các phần mã hóa trong các profile của H.264 [3] 25
Hình 3.1: Sơ đồ hệ thống đo cấu trúc tương tự (SSIM) 29
Hình 4.1: Chuỗi các cảnh với đặc tính chuyển động và tốc độ khác nhau. 32
Hình 4.2: Mô hình phương pháp sao chép frame 33
Hình 4.3: Mô hình phương pháp sao chép vector chuyển động 34
Hình 4.4: Ví dụ về ngoại suy vector chuyển động và MB ngoại suy [2] 34
Hình 4.5: Ví dụ về vùng bị chồng nhiều nhất và sự ước đoán[2]. 35
Hình 5.1: Sơ đồ khối giải mã và xử lý tăng cường chất lượng trong JM software 37
Hình 5.2: Kết quả chuỗi video áp dụng phương pháp sao chép frame 39
Hình 5.3: Kết quả chuỗi video áp dụng phương pháp sao chép vector chuyển động 40
Hình 5.4: Kết quả chuỗi video áp dụng phương pháp ngoại suy vector chuyển động 41
Hình 5.5: Kêt quả PSNR với chuỗi video Foreman bị mất frame số 4 42
Hình 5.6: Kết quả đánh giá SSIM của chuỗi video Foreman 43
Hình 5.7: Kết qua khối phục frame số 8 (FC, MVC,MVE) 43
4
Bảng ký hiệu các chữ viết tắt:
Thuật ngữ
Tiêng Anh
Tiêng Việt
DCT
Discrete cosine transform
Biến đổi cosin rời rạc
CABAC
Context Adaptive Binary Coding
Mã hóa số học nhị phân tương thích ngữ
cảnh
CAVLC
Context Adaptive Variable
Length Coding
Mã hóa chiều dài thay đổi tương thích ngữ
cảnh
FC
Frame copy
Sao chép frame
ITU
International
Telecommunication Union
Liên minh viễn thông quốc tế
JM
Joint Model
Joint Model
MB
Macroblock
Macroblock
MSE
Mean Square Error
Trung bình bình phương lỗi
MVC
Motion vector copy
Sao chép vector chuyển động
MVE
Motion vector extrapolution
Ngoại suy vector chuyển động
NAL
Network Abstraction Layer
Lớp trừu tượng mạng
PSNR
Peak signal to noise ratio
Tỷ số tín hiệu trên nhiễu đỉnh
QCIF
Quarter Common Intermediate
Format
Đinh dạng QCIF
RGB
Red Green and Blue
Components
Thành phần màu: đỏ, xanh lá cây và xanh
da trời
SSIM
Structural Similarity Index
Chỉ số tương tự cấu trúc
VLC
Variable Length Code
Mã hóa chiều dài thay đổi
YUV
Luminance and Chroma
components
Thành phần chói và màu
5
Chương 1. Đặt vấn đề
Do sự tăng trưởng nhanh chóng của mạng truyền thông không dây, video qua mạng
không dây đã và đang đạt được nhiều sự quan tâm. Trong đó điện thoại di động có được
sự phát triển mạnh nhất. Ban đầu điện thoại di động được sản sinh do nhu cầu hội thoại,
tuy nhiên ngày này nó còn cung cấp cho người dung rất nhiều dịch vụ gia tăng khác như
dư liệu, âm thanh, video nhờ sự phát triển điện thoại di động thế hệ thư 3, thứ 4(3G, 4G)
Hình 1.1: Vấn đề đặc trưng của mạng điện thoại di động 3G/4G
Như trong hình 1.1, vấn đề có thể gặp trong mạng điện thoại di động 3G/4G, khi mà
người dùng với thiết bị di động đầu cuối của mình yêu cầu dịch vụ truyền tải video.
Luồng video được truyền đến từ một máy chủ ứng dụng qua mạng, trong quá trình truyền
dữ liệu trong môi trường không dây đến điện thoại của người dùng, dữ liệu video có thể
bị lỗi bởi thực tế môi trường truyền là môi trường dễ phát sinh lỗi. Trong mạng này, do bị
giới hạn về băng thông, với video có độ phân giải thấp (QCIF 176 x 144) nên bị mất 1 gói
dữ liệu. Do tiến trình này là một tiến trình thời gian thực nên nó không thể thực hiện gửi
lại. Phương pháp duy nhất để sửa các lỗi gây ra do mất gói là sử dụng phương thức tăng
cường chất lượng video (error concealment) tại thiết bị di động đầu cuối. Luận văn tập
trung nghiên cứu vấn đề tăng cường chất lượng video trong miền thời gian để tăng cường
chất lượng truyền video qua kênh vô tuyến.
Nhiệm vụ chính của của phương pháp tăng cường chất lượng video là để thay thế các
phần video bị mất nội dung bằng các phần trước đó giải mã chuỗi video để loại trừ hoặc
giảm thiểu hiệu ứng hình ảnh của dòng lỗi bit. Các phương pháp tăng cường chất lượng
video khai thác sự tương quan không gian và thời gian giữa các bộ phận hình ảnh lân cận
(macroblocks) trong cùng một khung hoặc các khung hình trong quá khứ và tương lai [6].
Kỹ thuật sử dụng hai loại tương quan được phân loại là phương pháp tăng cường chất
Kênh vô tuyến
ĐTDĐ
Máy chủ ứng dụng
Tăng cường chất lượng
6
lượng video theo miền không gian và phương pháp tăng cường chất lượng video theo thời
gian.
Tăng cường chất lượng video theo miền không gian sử dụng thông tin từ bản chất trơn
liên tục về không gian của hình ảnh video, và mỗi pixel bị mất của phần hình ảnh bị hỏng
có thể được nội suy từ các điểm ảnh xung quanh còn nguyên vẹn. Thuật toán nội suy đã
được cải tiến bằng cách sử dụng phương pháp phát hiện cạnh biên khác nhau của ảnh.
Tăng cường chất lượng video miền thời gian sử dụng sự liên tục trơn chu giữa các khung
liền kề trong chuỗi video. Hiện nay đã có rất nhiều phương pháp tăng cường chất lượng
video theo miền thời gian được đưa ra. Dưới đây là một số phương pháp cơ bản:
Phương pháp sao chép frame (Frame copy): Đây là phương pháp thực hiện đơn giản nhất
thay thế một phần hình ảnh bị mất bởi một phần không gian tương ứng trong một khung
trước đó đã được giải mã phần mà có mối liên quan lớn nhất với phần hình ảnh bị mất.
Thuật toán sao chép đã được cải thiện bằng cách xem xét bản chất thay đổi của chuỗi
video.
Phương pháp sao chép chuyển động (motion copy): Phương pháp này thực hiện sao chép
các vector chuyển động của các khung hình trước đó.
Hiện nay vẫn chưa có tiêu chuẩn để đánh giá hiệu suất của phương pháp ẩn lỗi. Để đánh
giá chất lượng của việc tái cấu trúc người ta sử dụng điển hình là tỷ số tín hiệu nhiễu đỉnh
(PSNR) và chỉ số tương tự cấu trúc số liệu (SSIM).
7
Chương 2. Chuẩn H.264
2.1. Giới thiệu về chuẩn nén H.264/MPEG-4 part 10
H.264 còn được gọi là MPEG-4 phần 10(AVC) [3] là chuẩn nén video mới nhất hiện nay,
hứa hẹn một sự cải thiện đáng kể so với tất cả các tiêu chuẩn nén video trước đó. Về mặt
mã hóa, các tiêu chuẩn mới dự kiến sẽ cho hiệu quả tốt hơn ít nhất 2 lần, về sự cải thiện
nén nó tốt hơn chuẩn nén tốt nhất trước đó và cải thiện đáng kể chất lượng cảm giác so
với các chuẩn nén trước đó.
MPEG-4 part 10 được phát triển bởi Picture Experts Group (MPEG), một nhóm nghiên
cứu của Tổ chức tiêu chuẩn quốc tế (ISO). Nhóm gồm hàng trăm chuyên gia kỹ thuật (tập
hợp từ các ngành công nghiệp và các tổ chức nghiên cứu) làm việc trong khoảng từ 2-3
tháng để phát triển hàng loạt các tiêu chuẩn lấy tên là MPEG. MPEG-4 (một tiêu chuẩn
bao gồm nhiều phần như mã hóa âm thanh, hệ thống các vấn đề và các khía cạnh liên
quan của truyền thông âm thanh/ hình ảnh ) lần đầu tiên được hình thành vào năm 1993
và MPEG-4 part 10 đã được chuẩn hóa vào năm 2003.[1]
Chuẩn nén H.264 được khởi xướng bởi Video Coding Experts Group (VCEG), một
nhóm nghiên cứu của Liên minh Viễn thông Quốc tế (ITU-T) mà hoạt động trong một
cách tương tự như MPEG và chịu trách nhiệm về loạt các tiêu chuẩn viễn thông trực
quan.
Các giai đoạn cuối cùng của việc phát triển các tiêu chuẩn H.264 đã được thực hiện bởi
một liên minh gọi là Joint Video Team, một nỗ lực hợp tác của cả hai nhóm VCEG và
MPEG, làm cho nó có thể để công bố tiêu chuẩn cuối cùng dưới sự bảo trợ chung của ISO
/ IEC (như MPEG-4 Phần 10) và T-ITU (như Khuyến nghị H.264) vào năm 2003[1]
Hình dưới mô tả sự phát triển của H.264/MPEG-4 part 10
8
Hình 2.1: Vị trí của chuẩn H.264/MPEG-4 AVC
2.2. Ứng dụng và đặc tính thiết kế nổi bật
H.264 đã được thiết kế cho các giải pháp kĩ thuật bao gồm ít nhất các lĩnh vực sau:
Truyền hình cáp, vệ tinh, thuê bao số DSL (Digital Subscriber Line), mặt
đất …
Tương tác hoặc lưu trữ trên thiết bị quang hoặc từ, DVD …
Dịch vụ hội thoại trên mạng ISDN (Integrated Services Digital Network),
Mạng Ethernet, LAN (Local Area Network), DSL, không dây hay mang điện thoại
di động mobile networks… hoặc kết hợp của những mạng này.
Video theo yêu cầu hoặc dịch vụ đa phương tiện trực tuyến trên ISDN ,
mạng hữu tuyến, DSL LAN, mạng không dây …
Dịch vụ tin nhắn đa phương tiện trên ISDN , mạng hữu tuyến, DSL LAN,
mạng không dây …
Ngoài ra các ứng dụng mới có thể được thực hiện trên các mạng tương lai và hiện tại.
Những câu hỏi được đưa ra là làm thế nào để thực hiện các giải pháp đó trên nhiều ứng
dụng và mạng khác nhau. Để giải quyết điều này cần sự linh hoạt và tùy biến , chuẩn nén
H.264/AVC (Mã hóa video nâng cao) đã thiết kế lớp mã hóa video VCL(Video Coding
Layer) một cách hiệu quả cho video, và một lớp trừu tượng mạng NAL(Network
Abstraction Layer ) được xác định để định dạng dữ liệu và cung cấp thông tin Header
trong cách thích hợp cho việc chuyền trở bởi các lớp môi trường lưu trữ.
9
So với các phương pháp mã hóa video trước đó, thiết kế có nhiều đặc tính nổi bật để tăng
cường hiệu quả mã hóa bằng việc tăng cường khả năng dự đoán giá trị điểm ảnh được mã
hóa:
Bù chuyển động với kích thước block nhỏ: Chuẩn nén H.264 hỗ chợ linh
động hơn trong việc lựa chọn kích thước và hình dạng block bù chuyển động so
với tất cả các chuẩn trước nó, với kích thước block bù chuyển động về độ sáng là
4x4.
Bù chuyển động chính xác một phần tư mẫu: Hầu hết các chuẩn trước
đây bù chuyển động chính xác một nửa mẫu, độ chính xác được tăng lên do thêm
vector chuyển động một phần tư mẫu giống như chuẩn -4 Visual (part 2) nhưng
giảm độ phức tạp về xử lý nội suy.
Vector chuyển động trên các đường biên của ành: Trong khi vector
chuyển động trong MPEG-2 yêu cầu một điểm duy nhất bên trong ảnh tham chiếu
được giải mã trước đó thì kĩ thuật ngoại suy đường biên của ảnh đầu tiên được đưa
vào
Bù chuyển động tham chiếu nhiều ảnh: Ảnh được mã hóa dự đoán (gọi là
ảnh P) trong MPEG-2 và các chuẩn nén trước chỉ sử dụng duy nhất một ảnh trước
để dự đoán giá trị trong ảnh đang thực hiện. Thiết kế mới mở rộng kĩ thuật lựa
chọn ảnh tham chiếu được tăng cường để cho phép mã hóa hiệu quả bằng cách cho
phép bộ mã hóa lựa chọn trong số lượng lớn các ảnh được giải mã với mục đích bù
chuyển động
Cải thiện việc suy luận chuyển động: Trong các chuẩn trước việc “bỏ
qua” một khu vực ảnh được mã hóa và dự đoán sẽ không thể suy luận ra chuyển
động trong nội dung của cảnh. Điều này có ảnh hưởng bất lợi khi mã hóa video
chứa chuyển động toàn cục, do đó thiết kế mới H.264/AVC thay thế suy luận trong
khu vực “bỏ qua”. Với khu vực được mã hóa dự đoán 2 hướng (gọi là B slice),
H.264 cũng đồng thời tăng cường phương pháp suy luận chuyển động theo phương
pháp bù chuyển động “trực tiếp”, phương pháp này đã được áp dụng trong H.263+
và MPEG-4 Visual.
Dự đoán không gian trực tiếp cho mã hóa trong ảnh: Một kĩ thuật mới
của ngoại suy xườn ảnh của phần được giải nén trước đó của ảnh hiện tại được ứng
dụng trong vùng ảnh được mã hóa trong ảnh (mã hóa không tham chiếu đến các
ảnh khác). Đây là sự cải tiến về chất lượng của tín hiệu được dự đoán và đồng thời
cũng cho phép dự đoán từ các khu vực lân cận những chỗ không được mã hóa
trong ảnh.
10
Lặp lọc tách khối (Deblocking Filter): Việc mã hóa video dựa trên block
tạo ra hiện tượng nhiễu khối (blocking artifacts). Ứng dụng của bộ lọc tách khối
tương thích là phương pháp nổi tiếng trong việc tăng cường chất lượng video và
khi được thiết kế tôt nó có thể tăng cường chất lượng video cả 2 phương diện
khách quan và chủ quan. Được xây dựng từ một đặc tính tùy chọn của H.263+, bộ
lọc tách khối trong thiêt kế H.264/AVC được đưa vào trong bộ lặp dự đoán bù
chuyển động, vì vậy sự tăng cường chất lượng này có thế áp dụng trong dự đoán
liên ảnh để tăng cường khả năng dự đoán các ảnh khác.
Biến đổi với kích thước block nhỏ: Tất cả các chuẩn nén video trước đây
đều sử dụng một biến đổi với kích thước block là 8x8, trong khi thiết kế mới của
H.264/AVC dựa chủ yếu trên biến đổi 4x4. Kích thước block nhỏ hơn cũng là là
hợp lý một phần bởi những tiến bộ trong khả năng dự đoán nội dung video tốt hơn
bằng cách sử dụng các kỹ thuật đã nói ở trên và do sự cần thiết để cung cấp chuyển
vùng có ranh giới tương ứng với những vùng dự đoán nhỏ nhất.
Cấu trúc của biến đổi block: Trong nhiều trường hợp, việc sử dụng biến
đổi block kích thước 4x4 không hoàn toàn có lợi, có nhiều dấu hiệu cho thấy mối
tương quan đầy đủ khi áp dụng phương pháp dựa trên block lớn hơn. Chuẩn
H.264/AVC cho phép điều này bằng 2 cách: Sử dụng một cấu trúc biến đổi để mở
rộng kích thước block hiệu quả cho thông tin mầu ở tần số thấp với mảng 8x8 và
cho phép bộ mã hóa có thể lựa chọn kiểu mã hóa đặc biệt cho mã hóa trong ảnh,
cho phép mở rộng chiều dài của biến đổi cho các thành phần độ sáng để có thông
tin tần số thấp với một kích thước khối 16x16, tương tự áp dụng đối với thành
phần màu.
Biến đổi chiều dài từ mã ngắn: Tất cả thiết kế của các chuẩn trước đây có
hiệu quả khi yêu cầu bộ mã hóa và giải mã sử dụng xử lý phức tạp cho các tính
toán biến đổi. Trong khi các thiết kế trước đấy nói chung yêu cầu bộ xử lý 32 bit,
thì thiết kế H.264/AVC chỉ cần bộ số học 16 bit cho biến đổi cô sin rời rạc 4x4.
Mã hóa entropy số học: Phương pháp mã hóa entropy cải tiến là mã hóa số
học đã được đưa vào trong H.264/AVC. Trong khi mã hóa số học chỉ là đặc tính
tùy chọn trong H.263, H.264/AVC đã sử dụng kĩ thuật hiệu quả hơn tạo ra phương
thức mã hóa entropy rất mạnh mẽ là mã hóa số học nhị phân tương thích ngữ cảnh
CABAC (context-adaptive binary arithmetic coding). Phương pháp này không có
trong H.264 mức cơ bản (baseline profile).
Mã hóa entropy tương thích ngữ cảnh: Hai phương pháp mã hóa entropy
được áp dụng trong H.264/AVC là mã hóa chiều dài thay đổi tương thích ngữ cảnh
CAVLC và mã hóa số học nhị phân tương thích ngữ cảnh CABAC, cả hai sử dựng
tính tương thích dựa trên ngữ cảnh để tăng hiệu suất so với các tiêu chuẩn trước.
11
Trật tự slice tùy ý: Vì mỗi slice của một hình ảnh được mã hóa có thể được
(xấp xỉ) giải mã độc lập của các slice khác của ảnh, thiết kế H.264/AVC cho phép
gửi và nhận các slice của ảnh với thứ tự bất kỳ. Khả năng này, có thể cải thiện trễ
end-to-end trong các ứng dụng thời gian thực, đặc biệt khi được sử dụng trên các
mạng có sự gửi thông tin không có thứ tự (out-of-order) (ví dụ như các mạng giao
thức internet).
Dự phòng ảnh: Để tăng cường mạnh mẽ cho trường hợp mất dữ liệu, thiết
kế H.264/AVC chứa một khả năng mới để cho phép bộ mã hóa để gửi thông tin dự
phòng của các vùng của hình ảnh đã bị mất trong quá trình truyền dữ liệu.
Phân vùng dữ liệu: Khi một số thông tin được mã hóa của mỗi vùng ảnh
(như các vector chuyển động và thông tin dự đoán khác) là quan trọng hơn hay giá
trị hơn thông tin khác cho mục đích của đại diện các nội dung video, H.264/AVC
cho phép các cú pháp của mỗi slice được chia thành ba phân vùng khác nhau để
truyền đi, tùy thuộc vào loại thành phần cú pháp. Ở đây thiết kế được đơn giản hóa
bằng việc có một cú pháp đơn với phân vùng của cùng một cú pháp kiểm soát bởi
một phân loại cụ thể của các thành phần cú pháp.
2.3. Một số khái niệm
Trước khi đi vào tìm hiểu sâu hơn về chuẩn nén H.264 như là quá trình mã hóa hay các
tính năng mới, chúng ta xem xét một số thuật ngữ cơ bản sau đây:
Block: Là một mảng các điểm ảnh kích thước 8x8.
Macroblock: Là một nhóm gồm 4 block, tạo thành một mảng điểm ảnh
kích thước 16x16
Độ chói (Luminance): Trong truyền tín hiệu video, độ chói là thành phần
mã hóa thông tin về độ sang của ảnh.
Sắc độ (Chrominance): Là thành phần mã hóa thông tin về màu sắc.
YUV: Mô hình YUV định nghĩa một không gian màu sắc trong tạo bởi một
trong hai thành phần độ sáng và sắc độ. Với mô hình YUV, con người nhận thức
về màu sắc chặt chẽ hơn so với mô hình RGB chuẩn được sử dụng trong phần
cứng đồ họa máy tính. Y là viết tắt của các thành phần độ sáng (the brightness), U
và V là các thành phần màu . Cụ thể, U là sự khác biệt độ sáng xanh, độ sáng khác
biệt và V là sự khác biệt độ sáng đỏ.
12
Hình 2.2: Một ảnh cùng với các thành phần Y, U, V của nó
Cấu trúc sắc độ điểm ảnh: Một Macroblock có thể được thể hiện bằng
nhiều cách khác nhau trong không gian màu YUV. Có 3 định dạng là video
04:04:04, video 04:02:02 và video 04:02:00. Video 04:04:04 là video YUV chiếm
toàn bộ băng thông mỗi macroblock bao gồm 4 khối Y, và 4 U / V khối. Với toàn
bộ băng thông, định dạng này mang đủ thông tin như trong không gian màu RGB.
04:02:02 mang một nửa thông tin sắc độ nhiều như 04:04:04 và 04:02:00 chứa một
phần tư thông tin sắc độ. Trọng tâm của luận văn này là sử dụng định dạng
04:02:00 vì nó là định dạng thường được sử dụng trong các ứng dụng luồng video
2.4. Cấu trúc lớp
Chuẩn H.264 được thiết kết thành 2 lớp riêng biệt: Lớp mã hóa video VCL (Video coding
layer) và lớp trừu tượng mạng NAL (Network Adaptation Layer) như Hình 2.3. Trong
luận văn này chúng ta sẽ tập trung tìm hiểu vào lớp mã hóa video VCL
Hình 2.3: Cấu trúc lớp của bộ mã hóa H.264/AVC
2.4.1 Lớp trừu tượng mạng NAL
NAL đóng gói dữ liệu VCL một cách thích hợp cho việc truyền dữ liệu trên nhiều kênh
truyền thông hoặc thiết bị lưu trữ. Một khối NAL dữ liệu thích hợp cả cho đường truyền
13
chuỗi byte và đường truyền dạng gói. Định dạng của các khối NAL là đồng nhất cho cả
việc phân phối truyền tải định hướng gói và định hướng dòng bít, ngoài ra mỗi khối NAL
trong lớp truyền tải định hướng dòng bít có thể có một tiền tố mã hoá bắt đầu (start code
prefix).
2.4.2 Lớp mã hóa video VCL
Lớp mã hoá video VCL (Video Coding Layer) của H264/MPEG Part 10 là sự kết hợp của
mã hoá không gian, mã hoá thời gian và mã hóa chuyển vị. Hình 2.4 chỉ ra cấu trúc mã
hóa cơ bản cho một macroblock.
Hình 2.4: Cấu trúc mã hóa cơ bản của 1 macroblock trong H.264/AVC
H.264 áp dụng hai loại mã hóa cho một slice là mã hóa trong ảnh (Intra) và mã hóa liên
ảnh (Inter). Ảnh được tách thành các khối macroblock kích thước 16x16 điểm ảnh, block
ảnh đầu tiên của dãy hoặc điểm truy cập ngẫu nhiên thì được mã hoá “Intra”- mã hoá
trong ảnh, có nghĩa là không dùng thông tin của các ảnh khác mà chỉ dùng thông tin chứa
trong ảnh đó. Mỗi mẫu của một khối trong một Intra frame được dự đoán nhờ dùng các
mẫu không gian bên cạnh của các khối đã mã hoá trước đó. Đối với tất cả các ảnh còn lại
của dãy hoặc giữa các điểm truy cập ngẫu nhiên, mã hoá “Inter” được sử dụng, dùng dự
đoán bù chuyển động từ các ảnh được mã hoá trước đó.Quá trình mã hoá cho dự đoán liên
ảnh (bù chuyển động) gồm việc lựa chọn dữ liệu chuyển động, các ảnh tham chiếu và sự
dịch chuyển không gian được ứng dụng cho tất cả việc lấy mẫu của khối.
14
Khi thực hiện mã hóa một chuỗi các ảnh, lượng dữ liệu video có thể được giảm bởi các
phương pháp mã hóa chỉ các phần khác biệt, phương pháp được sử dụng phổ biển nhất
trong chuẩn nén video H.264. Trong phương pháp mã hóa thành phần khác biệt, một ảnh
được so sánh với một ảnh và chỉ phần điểm ảnh có sự thay đổi so với điểm ảnh tham
chiếu mới được mã hoá. Bằng cách này, số lượng các giá trị điểm ảnh được mã hóa và gửi
đi là giảm.
Phần dư được dự đoán đó là phần khác biệt so với bản gốc và các block đươc dự đoán
được biến đổi theo phương pháp biến đổi cô sin rời rạc. Các hệ số của biến đổi cô-sin
được đánh giá và lượng tử hóa. Các hệ số biến đổi lượng tử được mã hóa Entropy bằng
phương pháp CAVLC và truyền cùng với các thông tin dự đoán trong ảnh hoặc dự báo
liên ảnh. Bộ mã hóa này có chứa bộ giải mã để tiến hành dự báo cho các block tiếp theo
hoặc hình ảnh kế tiếp. Vì vậy, các hệ số biến đổi lượng tử được thực hiện giải lượng tử và
biến đổi ngược giống như xử lý của bộ giải mã, kết quả được thể hiện trong phần dư được
dự đoán. Phần dư được dự đoán được đua vào vào khối xử lý dự đoán. Kết quả của việc
thêm được đưa vào một deblocking lọc, cung cấp các giải mã video như đầu ra của nó.
Hình 2.5: Sơ đồ khối của bộ giải mã H.264[3]
Chức năng của các khối trong bộ mã hóa H.264
1. Khối biến đổi và lượng tử hóa
H.264 sử dụng ba loại biến đổi tùy thuộc vào loại dữ liệu dư thừa sẽ được mã hoá: Biến
đổi Hadamard cho các mảng 4 × 4 của hệ số DC về độ chói trong intra macroblocks
được dự đoán trong chế độ 16 × 16 , biến đổi Hadamard cho mảng 2 × 2 của hệ số DC về
màu (trong bất kỳ macroblock) và biến đổi dự trên DCT cho tất cả 4 × 4 block khác trong
các dữ liệu còn lại. [1]
15
Dữ liệu trong một macroblock được truyền theo thứ tự zigzag . Nếu macroblock được mã
hóa trong chế độ 16 × 16 Intra, thì block đó được đánh nhãn là '-1 ', nó chứa các hệ số
DC được biến đổi của từng block 4 × 4 về độ sáng, được truyền đi đầu tiên. Tiếp theo,
các block của phần hiệu về độ sáng từ 0-15 được truyền theo thứ tự hiển thị (các hệ số
DC trong một macroblock mã hóa trong chế độ trong ảnh 16 × 16 không được gửi). Khối
16 và 17 được gửi đi, có một mảng 2 × 2 của hệ số DC từ Cb và các thành phần Cr sắc độ
tương ứng và cuối cùng, các block 18-25 của phần hiệu mầu (không có hệ số DC) được
gửi đi.[ H.264 and MPEG-4 Compression – Ian Richardson]
Biến đổi và lượng tử hóa phần hiệu các block 4 × 4 (blocks 0–15, 18–25)[1]
Phương pháp biến đổi này tác động lên các block 4x4 của dữ liệu phần hiệu (Đánh dấu 0-
15 và 18-25 trong hình 6.37) sau khi dự đoán bù chuyển động và dự đoán trong ảnh.
Phương thưc biến đổi trong chuẩn H.264 dự trên biến đổi DCT nhưng có nhiều sự thay
đổi:
1. Đây là biến đổi số nguyên (tất cả các xử lý có thể thực hiện bằng việc sử
dụng số học số nguyên, không mất độ chính xác trong quá trình giải mã ).
2. Có thể chắc chắn rằng không có mất mát giữa biến đổi của bộ mã hóa và
biến đổi ngược của bộ giải mã.
3. Phần lõi của biến đổi có thể thực hiện chỉ với toán tử cộng và dịch.
4. Một tỉ lệ nhân (phần biến đổi) được tích hợp vào trong bộ lượng tử hóa, làm
giảm số lần nhân.
Lượng tử hóa ngược và biến đổi ngược có thể thực hiện bằng cách sử dụng bộ số học
số nguyên 16-bit (chú thích: trừ các trường hợp mô hình dữ liệu phần hiệu thực sự bất
thường) với chỉ phép nhân đơn cho mỗi hệ số mà không làm giảm độ chính xác.
Hình cho thấy sự phân bố các chỉ số DC vào block 4x4 về độ sáng. Các số 0, 1, 15 là thứ
tự mã hóa cho DCT nguyên 4x4 và các cặp (0,0),(0,1),(0,2),…(3,3) là các hệ số của mỗi
block 4x4.
16
Hình 2.6: Thứ tự duyệt của các block hiệu trong một macroblock[1]
Thứ tự duyệt các block phần hiệu bên trong 1 macroblock
Biến đổi
Phát triển từ biến đổi DCT 4x4
Với
Phép nhân ma trận này có thể biến đổi tương đương thành:
17
CxC
T
là “thành phần chính” của biến đổi 2D, E là ma trận hệ số nhân và toán tử ⊗ chỉ
định mỗi thành phần của (CxC
T
) được nhân với các hệ số với cùng vị trí của ma trận E
(đây là phép nhân vô hướng chứ không phải là nhân ma trận).
Với a,b và d được xác định như sau:
Biến đổi cuối cùng được xác định theo công thức:
Biến đổi này xấp xỉ với DCT 4 × 4, vì sự thay đổi các yếu tố d và b, kết quả của biến
đổi mới sẽ không được trùng với DCT 4 × 4.
Lượng tử hóa:
Phép nhân trong quá trình biến đổi được kết hợp với phép nhân trong lượng tử vô hướng.
Hệ số tỉ lệ cho mỗi thành phần trong mỗi khối con khác nhau như là chức năng tham số
lượng tử được kết hợp với macroblock chứa các block con, như là vị trí của từng thành
phần trong các block con. Thuật toán điều chỉnh tỉ lệ trong bộ mã hóa điều chỉnh giá trị
của các tham số lượng tử hóa. Bộ mã hóa thực hiện nhân tỉ lệ và lượng tử hóa.
Lượng tử hóa và nhân tỉ lệ đươc xác định bởi công thức sau:
Trong đó:
Y
ij
là hệ số của biến đổi được mô tả ở trên.
Q
step
là bước lượng tử hóa.
Z
ij
là kết quả lượng tử hóa.
PF
ij
là hệ số tỉ lệ.
18
Mã hóa Entropy
Mã hoá Entropy trong các tiêu chuẩn trước đó như MPEG -1,2,4, H.261, và H.263 thì cơ
bản là trên các bảng cố định mã hoá biến đổi theo chiều dài (VLC). Các tiêu chuẩn đó xác
định các bộ mã hoá từ là cơ bản trên sự phân bố xác suất của các video chung thay cho
mã Huffman chính xác đến các chuỗi video. Tuy nhiên H.264 sử dụng các VLC để mà
khớp với một biểu tượng được mã hoá cơ bản trên các đặc trưng của ngữ cảnh. Tất cả các
phần tử cú pháp, ngoại trừ các dữ liệu dư thừa, được mã hoá bằng mã Exp-Golomb. Để
mà đọc được các dữ liệu dư thừa (các hệ số biến đổi đã lượng tử hoá) thì ta sử dụng
phương pháp quét Zig-Zag (xen kẽ nhau) hay quét lần lượt (không xen kẽ hay phân
trường). Để mã hoá dữ liệu dư thừa, một phương pháp phức tạp hơn gọi là CAVLC(mã
hoá chiều dài biến đổi tương thích theo tình huống) được phát triển. Ngoài ra, CABAC
(mã hoá thuật toán nhị phân tương thích theo tình huống) được phát triển trong Mail
Profile và High Profile, CABAC có khả năng mã hoá tốt hơn nhưng độ phức tạp cao hơn
so với CAVLC.
Mã hoá chiều dài biến đổi tương thích theo tình huống - Context-based
Adaptive Variable Length Coding (CAVLC)
Sau khi biến đổi và lượng tử hoá, xác suất các hệ số là zero hay +/-1 là rất lớn. CAVLC
xử lý các hệ số zero và +/-1 theo cách khác nhau với các mức của các hệ số. Tổng số các
số zero và +/-1 được mã hoá. Các hệ số khác các mức của chúng được mã hoá.
Mã hoá thuật toán nhị phân tương thích theo tình huống – Context –
based Adaptive Binary Arithmetic Coding (CABAC)
CABAC dùng thuật toán để mã hoá, để đạt được hiệu quả nén tốt hơn, mô hình có khả
năng cho mỗi phần tử biểu tượng được cập nhật như trong hình 28. Quá trình xử lý mã
hoá CABAC bao gồm 3 bước cơ bản sau đây:
Bước 1: Nhị phân hoá; một biểu tượng giá trị của nó không phải là nhị phân (như
một hệ số biến đổi hay Vector chuyển động) là bản đồ duy nhất để chuỗi nhị phân
trước đó được mã hoá thuật toán. Quá trình xử lý này thì giống như việc xử lý của
việc biến đổi một biểu tượng dữ liệu thành mã hoá chiều dài biến đổi, nhưng mã
nhị phân được mã hoá tốt hơn bằng bộ mã hoá thuật toán trước đó để truyền.
Bước 2: Phạm vi làm mô hình: một phạm vi mô hình thì có khả năng cho một hay
nhiều phần tử của biểu tượng đã nhị phân. Một mô hình có khả năng được lựa chọn
như để việc lựa chọn sự tương ứng có thể phụ thuộc vào các phần tử cú pháp đã
mã hoá trước đó.
19
Bước 3: Thuật toán mã hoá nhị phân: Một bộ mã hoá thuật toán mã hoá mỗi phần
tử theo mô hình có khả năng lựa chọn cùng với một việc cập nhật mô hình tiếp sau.
Bộ lọc tách khối
Một đặc trưng riêng của mã hoá dựa trên cơ sở khối là có thể nhìn thấy các cấu trúc khối.
Các mép của khối được cấu trúc lại với độ chính xác kém hơn các phần tử ảnh (pixel) bên
trong và nhìn chung dạng khối (blocking) được xem là một trong những nhiễu “artifact”
dễ nhìn thấy nhất với các phương pháp nén hiện tại. Do nguyên nhân này mà
H.264/MPEG-4 Part 10 sử dụng bộ lọc tách khối (Deblocking Filter) để làm giảm hiện
tượng tách khối, ngăn chặn việc truyền của tạp âm mã hoá được tích luỹ. Tại bộ lọc này,
cường độ lọc được điều khiển bởi giá trị của nhiều phần tử cấu trúc.
Các chuẩn nén trước đó đã không sử dụng bộ lọc tách khối bởi vì việc bổ sung rất phức
tạp, mặt khác việc chia các nhiễu khối có thể được làm giảm bằng việc sử dụng MC chính
xác một nửa phần tử ảnh. Một nửa phần tử ảnh thu được bằng cách lọc tuyến tính
(bilinear filtering)của các phần tử ảnh nguyên vẹn bên cạnh đã phát huy vai trò làm
“nhẵn” của mã hoá tạp âm trong miền phần tử ảnh nguyên vẹn
H.264 sử dụng bộ lọc tách khối để việc thực hiện việc mã hoá cao hơn mặc dù việc thực
hiện rất phức tạp. Việc lọc được áp dụng cho các mép của các Block 4 x 4 trong một
Macro-Block. Quá trình điều khiển bộ lọc tách khối thành phần chói được thực hiện trên
4 cạnh của mẫu 16 x 16 (16-sample) và quá trình xử lý bộ lọc tách khối cho mỗi thành
phần màu được thực hiện trên 2 cạnh của mẫu 8 x 8.
Bộ lọc tách khối được áp dụng tương thích với một vài mức(level) sau:
Mức mảng (Slice Level): Mặt mạnh của của việc lọc toàn bộ có thể được
điều chỉnh tới các đặc điểm riêng của chuỗi video.
Mức cạnh của khối (Block – edge Level ): mặt mạnh của việc lọc là phụ
thuộc vào việc quyết định dự đoán Inter/Intra, các chuyển động khác nhau, và việc
hiển thị của các dư thừa mã hoá trong 2 Block tham gia. Đặc biệt việc lọc mạnh
được áp dụng cho các Macro-Block với các đặc điểm rất phẳng để loại bỏ “sự
nghiêng nhân tạo (tilting artifacts)”.
Mức lấy mẫu (Sample Level): các giá trị mẫu và các điểm bắt đầu phụ thuộc
vào bộ lượng tử hóa có thể dừng việc lọc cho mỗi mẫu riêng biệt.
Tính khối bị giảm mà không ảnh hưởng nhiều đến độ sắc nét của nội dung, kết quả là đã
cải thiện được đáng kể chất lượng của hình ảnh.
2.4.3 Cấu trúc của luồng dữ liệu video
Luồng video có cấu trúc phân tầng như hình dưới đây:
20
Hình 2.7: Cấu trúc phân tầng trong luồng dữ liệu video của H.264
Ý nghĩa của các lớp như sau:
Lớp Block: Một block là mảng các điểm ảnh kích thước 8x8.
Lớp Macroblock: Một MB chứa lượng dữ liệu tương đương với vùng lấy
mẫu 16x16 của frame video, gồm nhiều block, số lượng các block phụ thuộc vào
cấu trúc độ chói điểm ảnh. Trong mô tả ở trên cấu trúc là 4:2:0.
Lớp Slice: Slice là một chuỗi các MB được sắp xếp theo thứ tự. Một ảnh có
thể chia làm nhiều Slice. Có thể thực hiện giải mã với từng slice, nếu có lỗi xảy ra
nó chỉ ảnh hưởng nọi dung bên trong của slice đó. Khi bắt đầu mỗi slice CAVLC
được đồng bộ lại.
Lớp ảnh: Ảnh là khối mã hóa chính của luồng video. Có 3 loại ảnh (frame):
Ảnh mã hóa trong ảnh I (intra frame): Không tham chiếu nội
dung các ảnh khác trong quá trình mã hóa.
Ảnh mã hóa dự đoán P (Predictive frame): Ảnh được mã hóa từ
sự khác nhau của dự đoán bù chuyển động của ảnh được tạo ra từ các ảnh I
và P trước đó trong GOP.
Ảnh mã hóa dự đoán 2 chiều B(Bi directional frame): Ảnh được
mã hóa từ sự khác nhau của sự ngoại suy 2 chiều từ các ảnh I và P trước đó
trong GOP.
Lớp tập hợp ảnh GOP (Group of Pictures): Là tổ hợp của nhiều các
khung I, P, B. Mỗi một nhóm ảnh bắt đầu bằng một khung I và xác định điểm bắt
đầu để tìm kiếm và biên tập. Cách tổ chức như thế cho phép truy cập ngẫu nhiên để
tự cung cấp và làm mới các hình ảnh sau khi gặp lỗi. Nếu lỗi xảy ra, nó sẽ chỉ lan
truyền cho đến khi bắt đầu GOP tiếp theo.
21
Lớp chuỗi video: Lớp này bắt đầu bằng phần đầu và kết thúc với phần
cuối của chuỗi mã hóa. Phần đầu mang thông tin về kích thước ảnh, tỉ lệ nén, số
frame và tốc độ bit của ảnh trong chuối video mã hóa.
2.4.4 Cấu trúc của Slice
Các macroblock được tổ chức thành các slice. Một ảnh là một tập hợp của 1 hay nhiều
slice trong H.264. Mỗi ảnh có thể được chia thành một hoặc vài slice như Hình 2.8. Thứ
tự truyền các macroblock trong luồng bit phụ thuộc vào bản đồ phân bố các macroblock
(MAM)
Hình 2.8: Ảnh được phân thành nhiều slice
Bộ mã hóa video đưa ra đơn vị slice để thực hiện truyền các gói nhỏ hơn (so sánh với
truyền toàn bộ ảnh trong 1 gói). Sắc xuất lỗi bit với gói nhỏ thường thấp hơn gói lớn.
Hơn nữa, các gói nhỏ giảm số lượng thông tin bị mất do lỗi giới hạn, như vậy phương
pháp ẩn lỗi có thể áp dụng một cách hiệu quả hơn. Hình 2.9 minh họa ưu điểm khi phân
chia ảnh thành các slice. Khi 1 block bị lỗi thay vì ẩn lỗi cho cả frame ta chỉ thực hiện với
1 slice.
22
Hình 2.9: Phát hiện lỗi với ảnh không chia slice và ảnh có chia thành các slice
H.264/AVC hỗ trợ 5 loại mã hóa slice khác nhau. Loại đơn giản nhất là slice I. Trong
slice I, tất cả các macroblock đượ mã hóa mà không cần tham khảo các ảnh khác trong
cùng chuỗi video. Mặt khác, các ảnh mã hóa trước đó có thể sử dụng để tạo tín hiệu dự
đoán cho các macroblock của các slice được mã hóa dự đoán là slice P và B.
Hai loại slice còn lại là SP (Chuyển P) và SI (chuyển I) là kiểu slice chỉ định cho sự
chuyển đổi hiệu quả giữa các luồng bit tại các tốc độ bit khác nhau. Tín hiệu dự đoán
Inter của luồng bit cho ảnh cho một SP frame được lượng tử hóa trong miền biến đổi,
buộc chúng vào một dải thô của biên độ. Dải thô cảu biên độ này cho phép mã hóa tốc độ
bits thấp giữa các luồng bit khác nhau. SI frame được chỉ đinh để đạt được sự kết hợp
hoàn hảo trong trường hợp dự đoán Inter không thể sử dụng vì lỗi đường truyền.
Thứ tự truyền của các MB trong luồng bit phụ thuộc vào bản đồ phân bố macroblock hoặc
thứ tự linh hoạt macrobock FMO (Flexible Macroblock Ordering). FMO thay đổi cách
phân chia ảnh vào các slice và MB bằng cách sử dụng khái niệm nhóm slice. Mỗi nhóm
slice là một tập hợp các MB được xác định bởi một macroblock đến bản đồ nhóm slice,
nó được xác đinh bằng nội dung của tập các tham số của ảnh và những thông tin từ phần
đầu của silce. Bản đồ macroblock đến nhóm slice chứa số nhận dạn nhóm slice cho mỗi
MB trong ảnh xác định nhóm slice liên quan phụ thuộc. Mỗi nhóm silce có thể được phân
vào một hoặc nhiều slice. Vậy nên 1 slice là một chuỗi các MB của cùng một nhóm slice.
23
Với FMO, một ảnh có thể được chia thành nhiều mô hình quet MB. Chúng ta có thể thấy
trong Hình 2.10:
Một slice trong một hình: Đây là các đơn giản nhất tuy nhiên nó làm mất ưu
điển của slice. Có thể coi như không sử dụng silce. Phương pháp này cũng dẫn đến
các gói dữ liệu khổng lồ đó phải được phân đoạn tại lớp IP.
Cố định số MB trong mỗi slice: Ảnh được chia thành các slice với cùng số
MB. Điều này dẫn đến các gói tin với độ dài khác nhau theo byte
Cố định số byte trong mỗi slice: Ảnh được chia thành các slice có chiều dài
byte bằng nhau. Điều này dẫn đến các gói dữ liệu với số lượng khác nhau của
MBs.
Slice rải rác: Mỗi N MB (N là số lượng các slice khác nhau) phụ thuộc vào
một slice. Ưu điểm là mỗi slice đều có các MB lân cận cảu các nhóm slice khác
nhau, nên nếu 1 slice bị mất luôn có thể nội suy lỗi với các slice lân cận. Nhược
điểm là mất khả năng nội suy không gian, phức tạp và trễ thời gian.
Cấu trúc slice hình chữ nhật: Nó bao gồm một hoặc nhiều nhóm slice "cận
cảnh" và một nhóm slice "còn sót lại". Cho phép mã hóa của một khu vực quan
tâm để cải thiện việc mất thông tin trong mã mã hóa