You are on page 1of 82

ĐẠI HỌC QUỐC GIA HÀ NỘI

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

VŨ TUẤN ANH

THUẬT TOÁN DEBLOCKING TRONG XỬ LÝ


VIDEO NÉN THEO CHUẨN H.264

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. Lê Vũ Hà

Hà Nội - 2009

i
MỤC LỤC

Trang
BẢNG KÝ HIỆU CÁC CHỮ VIẾT TẮT

DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ

DANH MỤC CÁC BẢNG

MỞ ĐẦU

CHƢƠNG 1: GIỚI THIỆU TỔNG QUAN VỀ NÉN VIDEO .................................. 1

1.1. Khái niệm về video ........................................................................................... 1

1.2. Các phương pháp nén video ............................................................................. 6

1.2.1. Giảm tốc độ dòng bit dựa trên đặc điểm của thị giác người ...................... 6

1.2.2. Nén dòng dữ liệu video số trong miền không gian .................................... 7

1.2.3. Nén dữ liệu video số theo miền thời gian .................................................. 7

1.2.4. Nén hỗn hợp sử dụng tổ hợp của các phương pháp trên ............................ 7

1.3. Tham số nén video ............................................................................................ 8

CHƢƠNG 2: CHUẨN NÉN H.264 .............................................................................. 9

2.1. Giới thiệu chung về chuẩn nén H.264 .................................................................. 9

2.2. Cơ chế nén ảnh của H.264 ................................................................................. 10

2.2.1. Bộ nén .......................................................................................................... 10

2.2.2. Bộ giải nén ................................................................................................... 11

2.3. Cấu trúc của H.264 ............................................................................................. 12

2.3.1. Phân chia khung hình thành các MB ......................................................... 13

2.3.2. Dự đoán Inter trong H.264 ......................................................................... 15

2.3.2.1. Các véc-tơ chuyển động ........................................................................ 15

2.3.2.2. Xác định các mẫu nội suy ..................................................................... 16

ii
2.3.2.3. Ước lượng véc-tơ chuyển động và bù chuyển động ............................. 19

2.3.3. Dự đoán Intra trong H.264 ......................................................................... 22

2.3.3.1. Các mode dự đoán cho block 4x4 (đối với thành phần độ chói) .......... 23

2.3.3.2. Các mode dự đoán Intra16x16 (đối với thành phần độ chói) ................ 25

2.3.3.3. Các mode dự đoán Intra8x8 (đối với thành phần sắc độ) ..................... 26

2.3.3.4. Báo hiệu trong các mode dự đoán Intra ................................................ 26

2.3.4. Quyết định mode dự đoán ............................................................................ 26

2.3.5. Phép biến đổi và lượng tử hóa ..................................................................... 30

2.3.5.1. Biến đổi và lượng tử hóa dư thừa 4x4 (các blok 0†15, 18†25) ............ 31

2.3.5.2. Lượng tử hoá ......................................................................................... 33

2.3.5.3. ReScaling............................................................................................... 35

CHƢƠNG 3: THUẬT TOÁN DEBLOCKING ........................................................ 37

3.2. Giới thiệu ........................................................................................................ 37

3.2. Phân tích biên ................................................................................................. 40

3.2.1. Lỗi phân bố trong block 4x4 ...................................................................... 40

3.2.2. Tính thích ứng mức đường biên của bộ lọc ............................................... 40

3.2.3. Tính thích ứng mức mẫu của bộ lọc........................................................... 41

3.2.4. Lưu đồ thuật toán tính giá trị BS ................................................................ 44

3.3. Hoạt động của bộ lọc......................................................................................... 44

3.3.1. Tổng quan về hoạt động lọc......................................................................... 44

3.3.2. Việc lọc đối với các đường biên có BS từ 1†3 .......................................... 45

3.3.3. Việc lọc đối với các đường biên có BS = 4 ............................................... 47

3.3.4. Lưu đồ thuật toán của bộ lọc Deblocking .................................................. 48

CHƢƠNG 4: CHƢƠNG TRÌNH MÔ PHỎNG ....................................................... 50

4.1. Giới thiệu............................................................................................................ 50

4.2. Sơ đồ khối của chương trình mô phỏng ............................................................. 53

iii
4.3. Các kết quả lối ra của chương trình ................................................................... 57

4.3.1. Kết quả hình ảnh thu được trong quá trình phân tích khung hình đầu tiên . 57

4.3.2. Kết quả hình ảnh thu được trong quá trình phân tích khung hình bất kỳ
trong chuỗi video........................................................................................ 60

4.4. Đánh giá kết quả và nhận xét ............................................................................. 63

4.4.1. Đánh giá kết quả......................................................................................... 63

4.4.2. Nhận xét ..................................................................................................... 66

KẾT LUẬN

TÀI LIỆU THAM KHẢO

iv
BẢNG KÝ HIỆU CÁC CHỮ VIẾT TẮT

CABAC Context-based Adaptive Binary Arithmetic Coding


CAVLC Context Adaptive Variable Length Coding
CIF Common Intermediate Format
CODEC COder/DECoder pair

BMA Block Match algorithms


BRR Bit Rate Reduction
BS Boundary strength

DCT Discrete cosine transform

GOP Group of pictures

HDTV High definition television


HVS Human visual system

IDCT Inverse Discrete Cosine Transform

JVT Joint Video Team

LSB Least significant bit


LZC Layered Zero Coding

MAE Mean Absolute Error


MB Macroblock
MC Motion compensation
MND Minimally noticeable distortion
MPEG Moving Picture Experts Group
MSB Most significant bit
MSE Mean square error

PSNR Peak signal-to-noise ratio

QCIF Quarter Common Intermediate Format


QP Quantization parameter
v
RD Rate distortion
RGB Red/Green/Blue colour space

SAD Sum of Absolute Differences


SAE Sum of Absolute Errors
SAQ Successive approximation quantization
SI Switching Intra Picture
SP Switching Prediction Picture
SNR Signal-to-noise ratio
SQCIF Sub - Quarter Common Intermediate Format

UTQ Uniform threshold quantization/quantizer

VLC Variable Length Code


VO Video object
VOP Video object plane

YUV A colour space

vi
DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ

Hình vẽ 1.1: Chuỗi video xen kẽ ..................................................................................... 1

Hình vẽ 1.2: Cấu trúc lấy mẫu ......................................................................................... 3

Hình vẽ 1.3: Cấu trúc lấy mẫu 4:2:2................................................................................ 3

Hình vẽ 1.4: Cấu trúc lấy mẫu 4:1:1................................................................................ 4

Hình vẽ 1.5: Cấu trúc lấy mẫu 4:2:0................................................................................ 4

Hình vẽ 1.6: Khung hình video lấy mẫu ở các độ phân giải khác nhau .......................... 5

Hình vẽ 2.1: Sơ đồ khối của bộ nén theo chuẩn H.264 ................................................. 11

Hình vẽ 2.2: Sơ đồ khối của bộ giải nén theo chuẩn H.264 .......................................... 12

Hình vẽ 2.3: Các profile trong chuẩn nén H.264........................................................... 13

Hình vẽ 2.4: Phân chia MB theo các kích thước 16x16, 16x8, 8x16 và 8x8 ................ 13

Hình vẽ 2.5: Phân chia MB theo các kích thước 8x8, 4x8, 8x4 và 4x4 ........................ 14

Hình vẽ 2.6: a) Sai khác giữa hai khung hình liên tiếp ................................................. 15

b) Khung hình sai khác đã được bù chuyển động .................................... 15

Hình vẽ 2.7: Ví dụ về dự đoán véctơ chuyển động ....................................................... 16

Hình vẽ 2.8: Nội suy các vị trí giữa các điểm ảnh ........................................................ 17

Hình vẽ 2.9: Nội suy của các vị trí ¼ khoảng cách điểm ảnh ....................................... 17

Hình vẽ 2.10: Vùng hình ảnh được nội suy của các vị trí ¼ pixel ................................ 18

Hình vẽ 2.11: Vị trí nội suy 1/8 của các thành phần sắc độ .......................................... 19

Hình vẽ 2.12: Mô tả hoạt động ước lượng véc-tơ chuyển động .................................... 20

Hình vẽ 2.13: Vị trí của block hiện tại và vị trí của các block kế cận (cùng kích thước
block) .................................................................................................... 21

vii
Hình vẽ 2.14: Vị trí của block hiện tại và vị trí của các block kế cận (khác kích thước)
.............................................................................................................. 22

Hình vẽ 2.15: Gán nhãn các mẫu dự đoán (4x4) ........................................................... 23

Hình vẽ 2.16: Các mode dự đoán Intra4x4 (thành phần độ chói) ................................. 24

Hình vẽ 2.17: Ví dụ về các mode dự đoán Intra4x4 trong thực tế ................................ 24

Hình vẽ 2.18: Các mode dự đoán Intra16x16 (thành phần độ chói) ............................. 25

Hình vẽ 2.19: Ví dụ về các mode dự đoán Intra16x16 trong thực tế ............................ 25

Hình vẽ 2.20: MSE của dữ liệu dư thừa ........................................................................ 29

Hình vẽ 2.21: Lưu đồ của thuật toán quyết định mode. ................................................ 30

Hình vẽ 2.22: Thứ tự truyền của các block dư thừa trong một MB .............................. 31

Hình vẽ 3.1: Deblocking với vai trò là một bộ lọc post-filter ....................................... 38

Hình vẽ 3.2: Loop-filter trong chuẩn nén H.264 ........................................................... 39

Hình vẽ 3.3: Mô tả đường biên giữa các block mang tính trực quan ............................ 42

Hình vẽ 3.4: Lưu đồ thuật toán tính giá trị BS .............................................................. 44

Hình vẽ 3.5: Lưu đồ thuật toán của bộ lọc Deblocking ................................................ 48

Hình vẽ 3.6: Lưu đồ thuật toán của bộ lọc Deblocking (tiếp theo) ............................... 49

Hình vẽ 4.1: Giao diện chính của chương trình ............................................................ 51

Hình vẽ 4.2: Giao diện chính nhập thông số cho chương trình ..................................... 52

Hình vẽ 4.3: Sơ đồ khối tổng quát của chương trình .................................................... 53

Hình vẽ 4.4: Sơ đồ khối thực hiện chức năng Intra coding ........................................... 54

Hình vẽ 4.5: Sơ đồ khối thực hiện chức năng Inter coding ........................................... 55

Hình vẽ 4.6: Sơ đồ khối thực hiện chức năng Inter coding (tiếp theo) ......................... 56

Hình vẽ 4.7: Khung hình thành phần độ chói đầu tiên trong chuỗi video .................... 57

Hình vẽ 4.8: Khung hình thành phần độ chói sau khi dự đoán Intra4x4 mode DC ...... 58

Hình vẽ 4.9: Khung hình thành phần độ chói sau khi thực hiện DCT và lượng tử hoá
................................................................................................................. 58

viii
Hình vẽ 4.10: Khung hình thành phần độ chói sau khi thực hiện IDCT và lượng tử hóa
ngược .................................................................................................... 59

Hình vẽ 4.11: Khung hình thành phần độ chói sau khi khôi phục lại nhưng không sử
dụng bộ lọc ........................................................................................... 59

Hình vẽ 4.12: Khung hình thành phần độ chói sau khi khôi phục lại có sử dụng bộ lọc
.............................................................................................................. 60

Hình vẽ 4.13: Khung hình thành phần độ chói trong chuỗi video chưa được xử lý ..... 60

Hình vẽ 4.14: Khung hình thành phần độ chói trong chuỗi video sau khi thực hiện dự
đoán Inter .............................................................................................. 61

Hình vẽ 4.15: Khung hình thành phần độ chói trong chuỗi video sau khi thực hiện biến
đổi DCT và lượng tử hoá ...................................................................... 61

Hình vẽ 4.16: Khung hình thành phần độ chói trong chuỗi video sau khi thực hiện biến
đổi IDCT và lượng tử hoá ngược ......................................................... 62

Hình vẽ 4.17: Hình ảnh trong khung hình thành phần độ chói sau khi khôi phục lại
nhưng không sử dụng bộ lọc ................................................................ 62

Hình vẽ 4.18: Hình ảnh trong khung hình thành phần độ chói sau khi khôi phục lại có
sử dụng bộ lọc....................................................................................... 63

Hình vẽ 4.19: Một khung hình thành phần độ chói đại diện cho chuỗi video
“Test1.avi” ......................................................................................... 64

Hình vẽ 4.20: Một khung hình thành phần độ chói đại diện cho chuỗi video
“Test2.avi” ......................................................................................... 65

ix
DANH MỤC CÁC BẢNG

Bảng 1.1: Các định dạng khung hình video .................................................................... 5

Bảng 2.1: Một số giá trị tiêu biểu của Qstep ................................................................. 34

Bảng 2.2: Các giá trị MF tương ứng với 6 giá trị QP đầu tiên ...................................... 35

Bảng 3.1: Bộ lọc deblocking đối với các chuẩn nén khác nhau .................................... 37

Bảng 3.2: Ví dụ về các giá trị mẫu trong một block ..................................................... 40

Bảng 3.3: Các điều kiện xác định giá trị BS ................................................................. 41

Bảng 3.4: Các giá trị của α và β sử dụng trong H.264 .................................................. 43

Bảng 3.5: Các giá trị c0 sử dụng trong H.264 ................................................................ 47

x
MỞ ĐẦU

Ngày nay, với sự phát triển vượt bậc về công nghệ trong lĩnh vực điện tử, viễn
thông và công nghệ thông tin, các tính năng cũng như các loại hình dịch vụ trong lĩnh
vực này đều có xu hướng hội tụ trong một vài thiết bị nhỏ gọn. Chẳng hạn, chỉ với một
thiết bị cầm tay người sử dụng có thể sử dụng cũng như truy cập được rất nhiều các
loại hình dịch vụ của các nhà cung cấp dịch vụ khác nhau như: đàm thoại, truy cập
internet, xem truyền hình, chạy các ứng dụng như trên máy tính cá nhân…

Để có được kết quả này là nhờ vào sự phát triển mạnh mẽ của cả lĩnh vực phần
cứng cũng như phần mềm. Sự ra đời của những chíp vi điều khiển có tốc độ và năng
lực xử lý rất cao được đóng gói nhỏ gọn cùng với các thuật toán phần mềm tối ưu làm
tăng năng lực tính toán cũng như giảm thiểu được băng thông.

Những phát triển quan trọng trong các lĩnh vực về xử lý hình ảnh đã cho ra đời
những kỹ thuật nén và phương pháp truyền tải hình ảnh hiệu quả cho phép giải quyết
được nhiều vấn đề băng thông. Trong đó, nổi bật hơn cả là sự ra đời của chuẩn nén
H.264 được xem là chuẩn nén video tốt nhất hiện nay. Chuẩn nén H.264 cho phép dữ
liệu video được nén với tỉ lệ nén rất cao nhưng vẫn đáp ứng được yêu cầu về chất
lượng về hình ảnh.

Mục đích của luận văn này là tập trung vào nghiên cứu và lập trình mô phỏng
thuật toán Deblocking trong chuẩn H.264. Đây là một thuật toán khôi phục ảnh cho
phép cải thiện chất lượng hình ảnh video được nén theo chuẩn H.264, nhằm khắc phục
việc suy giảm chất lượng hình ảnh do bản thân các yếu tố trong các phương pháp nén
dữ liệu gây ra. Thuật toán Deblocking có thể được cài đặt trên các phần cứng chuyên
dụng cũng như bằng phần mềm.

Nội dung luận văn bao gồm:

xi
­ Chương 1: Giới thiệu một số khái niệm tổng quan về video và các kỹ thuật nén
video.
­ Chương 2: Trình bày một số nội dung chính của chuẩn nén H.264. Do thuật
toán Deblocking là một thành phần được tích hợp trong trong bộ nén và giải
nén nên luận văn sẽ trình bày chi tiết vào các vấn đề chính của H.264 liên quan
đến quá trình triển khai và xây dựng phần mềm mô phỏng.
­ Chương 3: Trình bày thuật toán Deblocking.
­ Chương 4: Chương trình mô phỏng và đánh giá kết qủa.

Do thời gian có hạn nên luận văn chỉ mới đề cập được một phần các vấn đề
trong kỹ thuật nén H.264 nói chung và thuật toán Deblocking nói riêng do vậy chắc
chắn không tránh khỏi thiếu sót. Vì vậy, tác giả xin trân trọng những đóng góp của các
Thày cô và các đồng nghiệp xa gần để luận văn ngày càng hoàn chỉnh hơn. Mọi ý kiến
đóng góp xin gửi về cho tác giả theo địa chỉ vtanh78@yahoo.com.

Cuối cùng, tôi xin chân thành cảm ơn sự giúp đỡ và sự chỉ bảo tận tình của Thày
giáo hướng dẫn luận văn, TS. Lê Vũ Hà - Bộ môn Xử lý thông tin - Khoa Điện tử Viễn
thông - Trường Đại học Công nghệ - Đại học Quốc gia Hà Nội, đã giúp đỡ tôi hoàn
thành luận văn này.

Hà nội, ngày 02 tháng 11 năm 2009

xii
1
CHƢƠNG 1: GIỚI THIỆU TỔNG QUAN VỀ NÉN VIDEO

1.1. Khái niệm về video

Một cảnh video tự nhiên có tính liên tục về không gian và thời gian. Khi biểu
diễn dưới dạng dữ liệu video số thì video là chuỗi các hình ảnh liên tiếp, còn gọi là
khung hình. Chuỗi các khung hình xuất hiện liên tục với tốc độ đủ nhanh sẽ cho ta cảm
giác chuyển động của một hình ảnh với sự chuyển động của các đối tượng trong khung
cảnh (tối thiểu để có cảm giác chuyển động tự nhiên là khoảng 25 khung hình/giây do
thời gian lưu ảnh trong võng mạc là khoảng 1/25 giây) [1].

Một tín hiệu video có thể được lấy mẫu đầy đủ một chuỗi các khung hình (lấy
mẫu liên tục) hoặc lấy mẫu xen kẽ.

Mỗi khung hình được lấy mẫu xen kẽ gồm hai thành phần là Top field và Bottom
field. Top field bao gồm các dòng có thứ tự chẵn còn Bottom field bao gồm các dòng
có thứ tự lẻ trong một khung hình đầy đủ như được mô tả trong hình vẽ sau:

Hình vẽ 1.1: Chuỗi video xen kẽ

Việc lấy mẫu xen kẽ có ưu điểm là làm cho chuyển động của cảnh trong video ít
bị giật hình hơn.

 Không gian màu:

Theo lý thuyết về biểu diễn màu sắc, mỗi một màu sắc tự nhiên đều có thể được
tạo từ một tổ hợp của ba màu đơn sắc: màu đỏ, màu lục và màu lam (Còn được gọi là
ba màu cơ sở của không gian màu RGB). Trong không gian màu RGB, các màu khác
nhau có thể được mô tả như là các điểm bên trong một hình lập phương đơn vị: Gốc
tọa độ (0, 0, 0) biểu diễn cho màu đen và điểm (1, 1, 1) tương ứng với màu trắng; ba
thành phần R (đỏ), G (lục) và B (lam) là ba trục của không gian. Biểu diễn màu sắc

1
theo ba thành phần RGB rất thuận tiện cho việc hiển thị hình ảnh trên màn hình máy
tính hay máy thu hình.

Một hệ thống biểu diễn màu khác thường được sử dụng chủ yếu trong lĩnh vực
truyền hình là không gian màu YUV, với mỗi màu sắc được biểu diễn bởi một tổ hợp
của ba thành phần: Y là độ chói và U, V là hai thành phần biểu diễn sắc độ. Biểu diễn
hình ảnh video trong không gian màu này cho phép đạt được hiệu suất truyền hình ảnh
cao hơn và giữ được tính tương thích giữa các chuẩn truyền hình màu với truyền hình
đen trắng. Thành phần độ chói (luminance) mang thông tin về cường độ ánh sáng, hai
thành phần còn lại mang thông tin về sắc độ (chrominance) của các điểm ảnh.

Dưới đây là biểu diễn mối quan hệ giữa hai không gian màu YUV và RGB (theo
chuẩn CCIR 601):

Y = 0,299R + 0,587G + 0,114B (1.1)


U = 0,493(B - Y) (1.2)
V = 0,877(R - Y) (1.3)

Trong đó: Y là thành phần chói còn U, V là hai thành phần sắc độ.

Một định dạng màu khác tương tự như YUV và cũng hay được sử dụng là
YCBCR. Với Y tương tự như trên còn hai thành phần sắc độ được biểu diễn như sau:

CB = U/2 + 0,5 (1.4)


CR = V/1,6 + 0,5 (1.5)
Trong đó, các giá trị thành phần sắc độ CB, CR luôn nằm trong khoảng [0, 1].

YCBCR được sử dụng trong các hệ thống truyền hình màu tương tự truyền thống,
trong khi YUV được sử dụng trong truyền hình số.

 Số hoá tín hiệu video

Trong một chuỗi video với các khung hình có độ phân giải là 720x576 điểm ảnh,
tốc độ khung hình là 25Hz hoặc 30Hz. Mỗi khung hình trong chuỗi video được lấy
mẫu và số hoá như hình vẽ 1.2:

2
720

RGB 576 R G B

360

YUV
Y U V
4:2:2

YUV U V 280
Y
4:2:0

180

YUV Y U V
4:1:1

Hình vẽ 1.2: Cấu trúc lấy mẫu

Cấu trúc lấy mẫu 4:2:2

Mẫu Y text

text text text text text text text text


Mẫu U

Mẫu V
text text text text text text text text

Hình vẽ 1.3: Cấu trúc lấy mẫu 4:2:2

Việc lấy mẫu sẽ diễn ra một cách tuần tự như sau: Điểm ảnh đầu lấy mẫu thành
phần độ chói (Y) và lấy mẫu hai thành phần sắc độ U và V. Điểm ảnh tiếp theo chỉ lấy
mẫu thành phần chói (Y) mà không lấy mẫu hai thành phần sắc độ. Khi giải mã, thành
phần sắc độ của điểm ảnh bị thiếu phải được suy ra từ điểm ảnh trước đó. Cứ như vậy,
bốn lần lấy mẫu thành phần Y thì có hai lần lấy mẫu thành phần U và hai lần lấy mẫu
thành phần V.

3
Cấu trúc lấy mẫu 4:1:1

text text text text text text text text

text text text text text text text text

Hình vẽ 1.4: Cấu trúc lấy mẫu 4:1:1

Điểm ảnh đầu lấy mẫu đủ các thành phần Y, U, V. Ba điểm ảnh kế tiếp chỉ lấy
mẫu thành phần độ chói Y mà không lấy mẫu thành phần sắc độ. Khi giải mã, thành
phần sắc độ của ba điểm ảnh kế tiếp này phải suy ra từ điểm ảnh đầu. Tuần tự như vậy,
cứ bốn lần lấy mẫu thành phần Y có một lần lấy mẫu thành phần U và một lần lấy mẫu
thành phần V.

Cấu trúc lấy mẫu 4:2:0

text text text text text text text text text

text text text text text text text text text

text text text text text text text


text text text
text

Hình vẽ 1.5: Cấu trúc lấy mẫu 4:2:0

Lấy mẫu thành phần độ chói Y tại tất cả các điểm ảnh. Với thành phần sắc độ thì
cứ bốn thành phần Y lấy mẫu hai thành phần U và V cách nhau theo từng hàng.

 Các định dạng video

Chuẩn nén H.264 có thể thực hiện việc nén đối với các định dạng khung hình
video khác nhau. Trong thực tế, nó thường thu hoặc chuyển đổi sang các định dạng
trung gian trước khi thực hiện nén và truyền đi. Định dạng trung gian thông thường
(CIF) là cơ sở cho một tập hợp các định dạng phổ biến được đưa ra trong bảng 1.1.

4
Bảng 1.1: Các định dạng khung hình video

Độ phân giải của khung Số bit mã hoá cho mỗi khung


Định dạng
hình thành phần độ chói hình (4:2:2, 8bit cho mỗi mẫu)
Sub-QCIF 128x96 147456
QCIF 176x144 304128
CIF 352x288 1216512
4CIF 704x576 4866048

Hình vẽ dưới đây là một ví dụ về thành phần độ chói của một khung hình video
được lấy mẫu ở các độ phân giải từ 4CIF tới Sub-QCIF.

Hình vẽ 1.6: Khung hình video lấy mẫu ở các độ phân giải khác nhau

Việc chọn độ phân giải của khung hình tuỳ thuộc vào ứng dụng và khả năng lưu
trữ cũng như khả năng truyền dẫn. Ví dụ: 4CIF là phù hợp với truyền hình độ nét tiêu
chuẩn và video DVD; CIF và QCIF phù hợp cho các ứng dụng video hội nghị; QCIF
hoặc SQCIF phù hợp cho các ứng dụng đa phương tiện trên các điện thoại di động.
Bảng 1.2 mô tả số các bit cần thiết để mã hoá một khung hình theo mỗi định dạng (với
cấu trúc lấy mẫu 4:2:0 và 8 bit biểu diễn cho một mẫu).

Một định dạng được sử dụng rộng rãi cho các dữ liệu video số trong các ứng
dụng truyền hình là khuyến nghị ITUT-R BT.601-5. Thành phần độ chói của tín hiệu
5
video được lấy mẫu với tốc độ 13,5MHz và 6,75MHz đối với các thành phần sắc độ để
tạo ra các thành phần Y:U:V theo tỷ lệ 4:2:2. Các thông số của tín hiệu video số đã
được lấy mẫu phụ thuộc vào tốc độ khung hình (30Hz đối với tín hiệu NTSC và 25Hz
đối với tín hiệu PAL/SECAM)

1.2. Các phƣơng pháp nén video

Mục tiêu chính của việc nén dữ liệu video là biểu diễn một nguồn dữ liệu video
bởi một số lượng bit ít nhất có thể được mà vẫn đảm bảo yêu cầu chất lượng cảm thụ
hình ảnh của mắt người. Với tín hiệu video, giới hạn dải thông của tín hiệu video
tương tự ở vào khoảng 6MHz. Tín hiệu video sau khi số hoá theo tiểu chuẩn CCIR 601
với tốc độ bit là 270Mbit/s chiếm dải thông không dưới 189MHz, tức là lớn hơn 31,5
lần so với dải thông của tín hiệu tương tự. Do vậy, giảm dải thông là vấn đề quan trọng
với công nghệ video số.

Về cơ bản việc giảm yêu cầu về dải thông được thực hiện theo bốn cách:

­ Giảm tốc độ dòng bit (Bit Rate Reduction).


­ Nén dòng dữ liệu video số theo không gian - giảm độ dư thừa trong nội tại
một khung hình.
­ Nén dòng dữ liệu theo thời gian - giảm độ dư thừa theo thời gian.
­ Nén hỗn hợp sử dụng tổ hợp các phương pháp trên.

1.2.1. Giảm tốc độ dòng bit dựa trên đặc điểm của thị giác ngƣời

Do mắt người thường ít nhạy cảm đối với các thành phần sắc độ hơn là thành
phần độ chói của hình ảnh nên trong phương pháp này, người ta có thể giảm bớt độ
phân giải của thành phần sắc độ mà không làm ảnh hưởng nhiều đến sự cảm thụ về
chất lượng hình ảnh (ví dụ như trong các định dạng YUV 4:2:2, 4:2:0, 4:1:1).

Phần lớn các định dạng video số hiện nay đều sử dụng tần số lấy mẫu 13,5MHz
đối với thành phần độ chói. Theo chuẩn CCIR 601, nếu hai thành phần sắc độ được lấy
mẫu với tần số như thành phần độ chói chúng ta sẽ có định dạng 4:4:4. Định dạng này
được sử dụng trong các thiết bị dựng phim phi tuyến và trong đồ hoạ vi tính liên quan
đến phim nhựa.

Hiện nay, các thiết bị kỹ thuật số sử dụng trong lĩnh vực video chuyên dụng
thường sử dụng chuẩn CCIR 601 4:2:2. Theo định dạng số hoá này, tín hiệu video
thành phần được lấy mẫu với tần số 13,5MHz đối với thành phần độ chói và 6,75 MHz
đối với hai thành phần sắc độ.

Tốc độ dòng dữ liệu của định dạng này được tính như sau:
6
Khi lấy mẫu 8 bit: (720 + 360 + 360) x 576 x 8 x 25 = 166 Mbit/s.

10 bit: (720 + 360 + 360) x 576 x 10 x 25 = 207 Mbit/s.

Như vậy, so với phương pháp lẫy mẫu không cắt giảm (4:4:4), phương pháp này
cho phép cắt giảm được 33% tốc độ dòng bit.

Với định dạng 4:1:1 và 4:2:0, tốc độ dòng bit còn được cắt giảm nhiều hơn. Với 8
bit lấy mẫu, tốc độ dòng bit tính cho chuẩn PAL là: (720 + 180 + 180) x 576 x 8 x 25
= 124,4 Mbit/s, tức là phép giảm được 50% tốc độ dòng bit so với nguyên mẫu 4:4:4.

1.2.2. Nén dòng dữ liệu video số trong miền không gian

Gần như tất cả các ảnh đều chứa một số lượng lớn các điểm ảnh có giá trị gần
giống nhau. Các điểm ảnh giống nhau này được lặp lại tạo thành các vùng đồng đều
trong một ảnh (ví dụ: bầu trời xanh), tạo nên sự dư thừa về mặt không gian trong dữ
liệu (do ta có thể dự đoán giá trị một điểm ảnh từ giá trị các điểm ảnh xung quanh nó).
Để giảm độ dư thừa trong một khung hình, người ta sử dụng các phương pháp nén ảnh
trong miền không gian. Các phương pháp nén ảnh này có thể chia làm hai loại:

­ Nén không tổn hao (lossless compression): là phương pháp nén mà dữ liệu được
nén (mã hoá), sau khi giải nén (giải mã) đối chiếu với dữ liệu gốc thì không có sự
khác biệt nào.
­ Nén có tổn hao (lossy compression): là phương pháp nén mà dữ liệu được khôi
phục sau khi nén và giải nén có sự khác biệt với dữ liệu gốc.
Tỉ số nén của các phương pháp nén không tổn hao thường rất thấp. Để đạt được
tỉ số nén cao, người ta thường phải sử dụng các phương pháp nén có tổn hao.

1.2.3. Nén dữ liệu video số theo miền thời gian

Các khung hình liên tiếp trong một đoạn video có quan hệ mật thiết với nhau.
Thậm chí một khung hình có thể chỉ thay đổi chút ít so với các khung hình liền kề
trước và sau nó, tạo nên sự dư thừa theo thời gian. Để giảm bớt lượng dữ liệu truyền
tải, người ta làm giảm sự dư thừa đó bằng cách chỉ truyền những phần sai lệch giữa
các khung hình kết hợp với việc dự đoán dựa trên khung hình trước.

1.2.4. Nén hỗn hợp sử dụng tổ hợp của các phƣơng pháp trên

Để đạt được hiệu quả nén cao mà vẫn đảm bảo chất lượng hình ảnh, người ta sử
dụng tổ hợp của các phương pháp trên. Phương pháp nén video theo chuẩn H.264 là
một phương pháp nén hỗn hợp như vậy.

7
1.3. Tham số nén video

Các tham số nén video được đề cập đến ở đây là định dạng ảnh và tỉ số nén. Tỉ số
nén cho phép đánh giá hiệu quả của một hệ thống nén dữ liệu. Để đánh giá hiệu quả
của các hệ thống nén bằng cách so sánh tỉ số nén của chúng với nhau, định dạng ảnh
sử dụng trong các hệ thống nén đó phải giống nhau.

Các tham số định dạng ảnh bao gồm:

­ Số dòng/khung hình và số điểm ảnh/dòng.


­ Tốc độ khung hình (số khung hình/giây).
­ Cấu trúc lấy mẫu.
­ Độ sâu của giá trị mẫu (8, 10 hay 12 bit/mẫu).
­ Hệ số nén được tính bằng tốc độ dữ liệu video gốc (số bit dữ liệu/giây) trên
tốc độ dữ liệu video nén.
Để đánh giá chất lượng một hệ thống nén, bên cạnh tỷ số nén người ta còn phải
xét đến độ sai lệch của dữ liệu sau khi nén so với trước khi nén, thường được đo bằng
PSNR:

(2 n  1) 2
PSNR dB  10 log 10 (1.6)
MSE
Trong đó MSE là sai số bình phương trung bình giữa dữ liệu trước và sau nén, n
là số bit để mã hoá giá trị mỗi điểm ảnh.

8
CHƢƠNG 2: CHUẨN NÉN H.264

2.1. Giới thiệu chung về chuẩn nén H.264

Hiệp hội viễn thông quốc tế (ITU) và Tổ chức tiêu chuẩn quốc tế/Uỷ ban kỹ
thuật điện tử quốc tế (ISO/IEC) là hai tổ chức đi đầu trong lĩnh vực nghiên cứu và phát
triển các chuẩn nén âm thanh, hình ảnh. Theo ITU-T, các chuẩn nén video được coi là
các khuyến nghị và gọi tắt là chuẩn H.26x (H.261, H.262, H.263 và H.264). Với tiêu
chuẩn ISO/IEC, các chuẩn nén được gọi tắt là MPEG-x (MPEG-1, MPEG-2, MPEG-3
và MPEG-4) [1].
Các khuyến nghị của ITU được xây dựng cho các ứng dụng truyền dữ liệu video
thời gian thực như: truyền hình hội nghị (Video Conferencing) hay điện thoại thấy
hình. Trong khi, MPEG hướng tới mục tiêu truyền và lưu trữ video như: lưu trữ trên
đĩa quang DVD; quảng bá video số trên mạng cáp quang, đường truyền số DSL;
truyền hình vệ tinh hoặc các ứng dụng truyền tải dòng video trên mạng Internet.
Hai nhóm nghiên cứu trên đã cùng nhau thành lập một nhóm cộng tác viết tắt là
JVT (Joint Video Team) để xây dựng đề xuất về chuẩn nén H.26L và phát triển thành
tiêu chuẩn quốc tế. Chuẩn nén này được ấn bản bởi cả ITU-T và ISO/IEC với hai tên
gọi là H.264 và MPEG-4 part 10.
Dưới đây là một số mốc thời gian về sự phát triển của H.264/MPEG-4 part 10:

­ Dự án về MPEG-4 được khởi xướng.


1993
­ Một số kết quả ban đầu của H.263 đã đạt được.
­ MPEG-4 là cơ sở cho các đề xuất bao gồm: nén video hiệu
1995 quả với các tính năng dựa theo nội dung.
­ H.263 được chọn như là trọng tâm của công cụ nén video.
1998 ­ Đưa ra các đề xuất cho H.26L.
­ Chuẩn hình ảnh MPEG-4 được ấn bản.
1999
­ Mô hình kiểm tra ban đầu của H.26L được xây dựng.
­ MPEG đưa ra các đề xuất cho các công cụ nén video cải
2000
tiến.
­ Phiên bản thứ hai của chuẩn nén MPEG-4 được ấn bản.
2001 ­ H.26L được chọn như là cơ sở cho MPEG-4.
­ JVT được hình thành.
2003 ­ H.264/MPEG-4 part 10 được ấn bản.

9
Mục tiêu chính của việc phát triển chuẩn nén H.264 là nhằm cung cấp các
nguồn dữ liệu video có tốc độ bít thấp (tỷ lệ nén cao) nhưng vẫn đảm bảo được chất
lượng về hình ảnh tốt hơn nhiều so với những chuẩn nén video trước đây. Điều này đạt
được là nhờ sự kế thừa các ưu điểm của các chuẩn nén video trước đó. Đồng thời thực
hiện một số những cải tiến quan trọng như:
- Phân chia mỗi khung hình video thành các MB (mỗi MB là một khối hình ảnh
có kích thước 16x16 điểm ảnh) và thực hiện các phân tích, xử lý trên từng MB
này.
- Khai thác triệt để tính dư thừa về không gian trong các khung hình thông qua
việc sử dụng: các dự đoán Intra, các phép biến đổi DCT/IDCT tương đương,
phép lượng tử hoá và mã hoá Entropy (hay mã có độ dài thay đổi VLC).
- Khai thác tính dư thừa về thời gian thông qua việc sử dụng các phép dự đoán
véc-tơ chuyển động và bù chuyển động với các kích thước block thay đổi (tuỳ
thuộc vào tính chi tiết của hình ảnh) và với nhiều khung hình tham chiếu khác
nhau.
- Sử dụng các thuật toán, các phương pháp biến đổi được cải tiến cho phép nâng
cao được năng lực xử lý và chất lượng của hình ảnh lối ra.

2.2. Cơ chế nén ảnh của H.264

Bộ nén và giải nén của H.264 cũng bao gồm các thành phần có trong các chuẩn
nén trước đó ngoại trừ bộ lọc Deblocking. Tuy nhiên, các thành phần này đều có
những cải tiến so với các chuẩn trước để đạt được hiệu suất nén tối ưu hơn.

2.2.1. Bộ nén

Mỗi khung hình dữ liệu video Fn đưa vào bộ nén sẽ được xử lý theo từng khối
16x16 điểm ảnh (gọi là các MB). Khung hình đầu tiên của một chuỗi video hoặc điểm
truy cập ngẫu nhiên được mã hoá theo mode Intra (nén trong ảnh). Mỗi một điểm ảnh
trong khối sử dụng mode Intra được dự đoán dựa vào các điểm ảnh liền kề với khối dự
đoán và nằm bên trong các khối đã được dự đoán và mã hoá trước đó.

10
Fn + Dn
Lượng tử Mã hoá
+ Biến đổi
(Frame hiện hành) hoá entropy

Dữ liệu
Ước lượng chuyển - video nén
động

Inter
F’n-1
(Frame thứ n-1
Bù chuyển động
sau khi đã khôi
phục lại)

Lựa chọn dự
Dự đoán Intra
đoán Intra
Intra

+
F’n Dn’
Biến đổi Lượng tử
(Sau khi được khôi Lọc +
ngược hoá ngược
phục lại)
+

Hình vẽ 2.1: Sơ đồ khối của bộ nén theo chuẩn H.264

Đối với tất cả các khung hình còn lại hoặc các khung hình nằm giữa các điểm
truy cập ngẫu nhiên của chuỗi video, các chế độ mã hoá Intra hoặc Inter (nén liên ảnh)
được sử dụng tùy thuộc vào mode quyết định thích hợp. Mode Inter được sử dụng để
khai thác tính liên quan (tính dư thừa theo thời gian) của các vùng ảnh trong các khung
hình khác nhau thông qua việc sử dụng phương pháp dự đoán chuyển động và bù
chuyển động dựa vào các khung hình tham chiếu. Lối ra của mode này là các MB dữ
liệu (chứa các thông tin sai khác giữa các MB của khung hình hiện tại với khung hình
tham chiếu) cùng với các thông tin điều khiển (như: vị trí MB, mode dự đoán, thông
tin về khung hình tham chiếu và sự dịch chuyển…). MB chứa phần sai khác sau đó
được thực hiện các biến đổi DCT tương đương và lượng tử hoá kết hợp với bộ mã hoá
Entropy để khai thác tối đa các dư thừa về không gian. Ngoài ra, dữ liệu của các MB
sau bộ biến đổi và lượng tử hoá được thực hiện các biến đổi ngược để khôi phục lại
các khung hình tham chiếu cho các xử lý tiếp theo.

2.2.2. Bộ giải nén

Bộ giải nén nhận được dòng dữ liệu video nén sẽ thực hiện giải mã hoá Entropy
trước tiên. Dữ liệu sau giải mã là tập hợp các hệ số đã được lượng tử hóa, sau đó được
đưa qua các bộ biến đổi và lượng tử hoá ngược để thu được dữ liệu về các MB chứa
thông tin sai khác. Dữ liệu trong các MB này được kết hợp với các các thông tin điều
khiển gửi kèm theo từ bộ nén để xây dựng lại các MB nguyên gốc và khôi phục lại
thành khung hình ban đầu.

11
F’n-1
Inter
(Frame thứ n-1
Bù chuyển động
sâu khi đã khôi
phục lại)

Dự đoán Intra Intra

+ Dữ liệu
Fn’ Dn’ video nén
Biến đổi Lượng tử Giải mã hoá
(Sau khi được khôi Lọc +
ngược hoá ngược entropy
phục lại)
+

Hình vẽ 2.2: Sơ đồ khối của bộ giải nén theo chuẩn H.264

2.3. Cấu trúc của H.264

H.264 định nghĩa các profile (mô tả) cùng tập hợp các thông số cho phép hỗ trợ
các ứng dụng thực tế một cách đa dạng và linh hoạt.
Profile xác định tập các công cụ mã hoá hoặc các thuật toán mã hoá có thể được
sử dụng để tạo ra các dòng bit tương thích.
Level (mức) đặt ra những giới hạn cho thông số của dòng bit.
Có ba profile trong phiên bản thứ nhất: Baseline, Main và Extended.
­ Baseline profile: hỗ trợ mã hoá Intra/Inter và mã hoá Entropy CAVLC (mã
hoá chiều dài thích nghi ngữ cảnh) áp dụng cho các ứng dụng thời gian
thực như: truyền hình tương tác, điện thoại thấy hình…
­ Main profile: bao gồm việc hỗ trợ video quét xen kẽ, mã hoá Inter sử dụng
B-slices, mã hoá Inter sử dụng dự đoán có trọng số và mã hoá entropy
CABAC. Main profile được thiết kế cho các thiết bị lưu trữ số và truyền
hình quảng bá.
­ Extended profile: không hỗ trợ cho video quét xen kẽ hoặc CABAC nhưng
bổ sung các mode chuyển đổi một cách hiệu quả giữa các dòng bit (SP và
SI slices) và khả năng khắc phục lỗi. Extended profile ứng dụng cho các
dịch vụ đa phương tiện trên mạng Internet.

12
Hình vẽ 2.3: Các profile trong chuẩn nén H.264

Dưới đây sẽ trình bày những phần chính trong chuẩn nén được sử dụng chung
cho các profile cũng như được sử dụng để triển khai các thuật toán phục vụ cho mục
đích xây dựng và cài đặt phần mềm mô phỏng của luận văn này.

2.3.1. Phân chia khung hình thành các MB

Mỗi khung hình video được chia thành các MB có kích thước cố định gồm
16x16 mẫu cho thành phần độ chói và 8x8 mẫu cho thành phần sắc độ.
Tuỳ theo mức độ đồng nhất hay chi tiết của khung hình mà mỗi MB được giữ
nguyên hay được phân chia tiếp thành các block nhỏ hơn khi thực hiện các mode dự
đoán. Ngoài ra, nó còn quyết định đến việc lựa chon các mode Intra hoặc Inter.
Trong mode Inter, mỗi MB của thành phần độ chói có thể được phân chia theo
bốn cách như hình vẽ 2.4: một MB hoặc hai block 16x8 hoặc hai block 8x16 hoặc bốn
block 8x8.

Hình vẽ 2.4: Phân chia MB theo các kích thước 16x16, 16x8, 8x16 và 8x8

13
Nếu phân dạng block 8x8 được chọn, các block 8x8 trong MB có thể được phân
chia tiếp theo bốn cách (như hình bên dưới) gồm: hai block 8x4 hoặc hai block 4x8
hoặc bốn block 4x4. Các cách phân chia và các block con thu được làm tăng tính kết
hợp bên trong mỗi MB. Đây là phương pháp phân chia MB thành các block nhỏ hơn
được sử dụng cho quá trình bù chuyển động với các kích thước thay đổi được biết đến
như là bù chuyển động cấu trúc cây.

Hình vẽ 2.5: Phân chia MB theo các kích thước 8x8, 4x8, 8x4 và 4x4

Các MB sau khi được dự đoán bởi các mode Intra/Inter sẽ chứa thông tin sai
khác giữa các block trong MB hiện tại so với các block trong MB thuộc khung hình
tham chiếu. MB sau đó lại được xử lý theo từng block nhỏ kích thước 4x4 (đối với
thành phần độ chói) trong các phép biến đổi DCT tương đương và phép lượng tử hoá.
Trong cấu trúc dòng dữ liệu, các MB được tổ chức thành các Slice cho phép
nâng cao hiệu quả trong vấn đề về truyền thông như sửa lỗi và truyền lại.
Thứ tự truyền của các MB phụ thuộc vào thông tin ánh xạ vị trí của MB trong
dòng bít và không nhất thiết phải theo thứ tự quét. H264/MPEG-4 Part 10 hỗ trợ 5
dạng Slice khác nhau:
­ Slice I: Trong đó tất cả MB được mã hoá không có sự tham chiếu tới các
ảnh khác trong dãy video.
­ Slice P: Chỉ tham chiếu tới các ảnh trước đó.
­ Slice B: Có sự tham chiếu tới các ảnh trước và sau nó.
­ SI (Switching I) và SP (Switching P): được dùng cho chuyển mạch 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 bảo vệ dữ liệu một cách hiệu quả trong các kênh
truyền dẫn có xu hướng bị lỗi với các ứng dụng độ trễ thấp, H264/MPEG-4 Part 10 hỗ
trợ một đặc điểm là thứ tự MB linh hoạt FMO (Flexible Macroblock Ordering). FMO
đưa ra một giản đồ xác định các MB trong khung hì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 MB lân cận về mặt không gian, thuộc về các nhóm Slice được thu đúng, có
thể được sử dụng cho việc khôi phục lỗi.

14
2.3.2. Dự đoán Inter trong H.264

Dự đoán Inter được sử dụng dựa trên đặc điểm về sự liên quan giữa các khung
hình liên tiếp trong một chuỗi video. Mỗi khung hình video có thể được lặp lại nhiều
lần sau đó hoặc các khung hình nếu có sự khác nhau thì cũng có rất nhiều khối hình
nhỏ được lặp lại ở các vị trí lân cận trong khung hình trước hoặc sau nó. Hiệu của hai
khối hình đó sẽ cho kết quả là một khối hình gần đồng nhất và có giá trị trọng số của
mỗi điểm là nhỏ rất có ý nghĩa cho các phép biến đổi về sau.

Hình vẽ 2.6: a) Sai khác giữa hai khung hình liên tiếp
b) Khung hình sai khác đã được bù chuyển động

Sự khác nhau quan trọng của phép dự đoán Inter trong H.264 so với các chuẩn
nén trước là sự hỗ trợ nhiều kích cỡ block khác nhau (16x16, 8x16, 16x8, 8x8, 8x4,
4x8 và 4x4) và các véc-tơ chuyển động với độ phân giải 1/4 điểm (đối với thành phần
độ chói).

2.3.2.1. Các véc-tơ chuyển động

Mỗi MB hoặc block con trong một MB sử dụng phương pháp mã hoá Inter được
dự đoán từ một block cùng kích cỡ trong khung hình tham chiếu. Độ dịch chuyển giữa
hai block (véc-tơ chuyển động) có độ phân giải 1/4 điểm đối với thành phần độ chói và
1/8 điểm đối với các thành phần sắc độ.
Các giá trị mẫu của các thành phần độ chói và thành phần sắc độ ở các vị trí
không có sẵn trong khung hình tham chiếu cần phải tạo ra bằng cách nội suy từ các
mẫu đã được mã hoá liền kề.
Trong hình vẽ 2.7, một block 4x4 trong khung hiện tại (a) được dự đoán từ
khung hình tham chiếu ở vị trí bên cạnh vị trí của block trong khung hình hiện tại.

15
a. block 4x4 trong khung b. block tham chiếu: c. block tham chiếu:
hình hiện tại véctơ (1,-1) véctơ(0.75,-0.5)
Hình vẽ 2.7: Ví dụ về dự đoán véctơ chuyển động

Nếu các thành phần theo chiều ngang và chiều dọc của véc-tơ chuyển động là số
nguyên (hình vẽ 2.7 b.) thì các mẫu dự đoán liên quan trong block tham chiếu tồn tại
trên thực tế (các điểm xám). Nếu một hoặc cả hai thành phần véc-tơ là các giá trị
không nguyên (hình vẽ 2.7 c.) thì các mẫu dự đoán (các điểm xám) được tạo ra bằng
việc nội suy từ các mẫu liền kề trong khung hình tham chiếu (các điểm trắng).

2.3.2.2. Xác định các mẫu nội suy

Các mẫu được nội suy từ các mẫu ở vị trí giữa các điểm (1/2 khoảng cách) trong
thành phần độ chói của khung hình tham chiếu được tạo ra trước tiên (ô màu xám
trong hình vẽ 2.8). Mỗi mẫu ở vị trí giữa các điểm và liền kề với hai mẫu hiện hữu (ví
dụ: b, h, m, s) được nội suy từ các mẫu có vị trí là số nguyên bằng việc sử dụng một
bộ lọc 6-tap FIR với các trọng số (1/32, -5/32, 5/8, 5/8, -5/32, 1/32). Ví dụ: mẫu b
được tính toán từ 6 mẫu E, F, G, H, I và J (theo chiều dọc):
b = round((E-5F+20G+20H-5I+J)/32) (2.1)

16
Hình vẽ 2.8: Nội suy các vị trí giữa các điểm ảnh

Một cách tương tự, h được nội suy bằng việc lọc A, C, G, M, R và T. Khi tất cả
các mẫu nội suy theo chiều dọc và chiều ngang đã được tính toán, giá trị của mẫu j sẽ
được tạo ra bằng việc lọc cc, dd, h, m, ee và ff. Bộ lọc nội suy 6-tap là tương đối phức
tạp nhưng tạo ra sự chính xác phù hợp với dữ liệu mẫu là các giá trị số nguyên và khi
đó mức độ thực hiện bù chuyển động tốt hơn.
Khi tất cả các mẫu ở vị trí 1/2 đã được tính toán, các mẫu ở vị trí 1/4 tiếp tục
được tính bằng một phương pháp nội suy tuyến tính. Các vị trí 1/4 với hai mẫu ở vị trí
1/2 hoặc vị trí là số nguyên theo chiều dọc hoặc theo chiều ngang (a, c, i, k và d, f, n,
q trong hình vẽ 2.9 được nội suy từ các mẫu liền kề. Ví dụ: a = round((G+b)/2)

Hình vẽ 2.9: Nội suy của các vị trí ¼ khoảng cách điểm ảnh

Các vị trí 1/4 còn lại (e, g, p và r ) được nội suy từ các cặp mẫu đối diện theo
đường chéo. Ví dụ: e được dự đoán từ b và h.

17
Hình vẽ 2.10 biểu diễn ví dụ về kết quả của việc nội suy vùng tham chiếu với độ
phân giải 1/4.

Hình vẽ 2.10: Vùng hình ảnh được nội suy của các vị trí ¼ pixel

Các véc-tơ chuyển động độ phân giải 1/4 của thành phần độ chói sẽ đi liền với
các véc-tơ có độ phân giải 1/8 của thành phần sắc độ (giả sử việc lấy mẫu theo tỷ lệ
4:2:0). Các mẫu nội suy được tạo ra ở các vị trí 1/8 từ các mẫu ở vị trí là số nguyên
trong mỗi thành phần sắc độ bằng việc sử dụng nội suy tuyến tính (mẫu a trong hình
vẽ 2.11). Mỗi vị trí a là một sự kết hợp tuyến tính của các vị trí là số nguyên: A, B, C
và D.

a = round([s-dx)(s-dy)A+dx(s-dy)B+(s-dxdyC+dxdyD]/s 2 ) (2.2)
Trong hình vẽ 2.11: s = 8, dx = 2 và dy = 3, do đó:
a = round[30A+10B+18C+6D)/64] (2.3)

18
Hình vẽ 2.11: Vị trí nội suy 1/8 của các thành phần sắc độ

2.3.2.3. Ƣớc lƣợng véc-tơ chuyển động và bù chuyển động

Để thực hiện bù chuyển động, sự chuyển động của các đối tượng chuyển động
được ước lượng trước tiên. Điều này được gọi là ước lượng véctơ chuyển động. Thông
thường kỹ thuật ước lượng véc-tơ chuyển động trong tất cả các chuẩn nén video sử
dụng là thuật toán phù hợp khối BMA. Với một block kích thước MxN điểm ảnh
(trong đó MxN có thể là: 16x16, 16x8, 8x16, 8x8, 8x4, 4x8 hoặc 4x4) trong khung
hình hiện tại sẽ được tìm kiếm trong một vùng tìm kiếm với sự dao động kích thước w
pixel quanh một vị trí mẫu (kích thước cửa sổ tìm kiếm là w) như được mô tả trong
hình vẽ dưới đây [2,5]:

19
M+2w

w
M
(m, n)
w Block MxN trong
Frame hiện hành
(m+i, n+j)
N+2w

Cửa sổ tìm kiếm trong


Frame tham chiếu
Block MxN phù
hợp trong Frame
tham chiếu

Hình vẽ 2.12: Mô tả hoạt động ước lượng véc-tơ chuyển động

Để ước lượng véc-tơ chuyển động có hai phương pháp thường được sử dụng đó
là: phương pháp MSE - sử dụng trung bình của bình phương các sai khác giữa các
mẫu, và MAE - trung bình của các sai khác tuyệt đối giữa các mẫu.
MSE được tính bằng công thức sau:
M N

   f (m, n)  g (m  i, n  j)
1
M (i , j )   w  i, j  w .
2
, (2.4)
N2 m1 n 1

MAE được tính bằng công thức sau:


M N
1
M (i , j ) 
N2

m 1 n 1
f (m, n)  g (m  i, n  j ) ,  w  i, j  w . (2.5)

Trong đó: f(m,n) biểu diễn giá trị của điểm ảnh trong block hiện tại ở vị trí
(m,n), g(m+i,n+j) biểu diễn giá trị điểm ảnh trong block tham chiếu ở vị trí mới
(m+i,n+j).
MSE hoặc MAE được tìm kiếm sao cho đạt giá trị nhỏ nhất khi thay đổi các
tham số vị trí (i,j) trong cửa sổ tìm kiếm (-wi, jw), nghĩa là vị trí (i,j) tìm được là vị
trí của block trong khung hình tham chiếu phù hợp nhất với khung hình hiện tại. Sự
dịch chuyển của mỗi vị trí (i, j) sẽ xác định véc-tơ chuyển động của block MVp(i,j).

20
Việc mã hoá một véc-tơ chuyển động cho mỗi định dạng của block có thể mất
một số bit. Các véc-tơ chuyển động của các block liền kề thường có tính tương quan
cao hơn. Vì vậy, véc-tơ chuyển động của một block thường được được dự đoán từ các
véc-tơ chuyển động của các block lân cận đã được mã hoá trước đó. Một véc-tơ dự
đoán MVp được thực hiện dựa trên các véc-tơ chuyển động đã được tính toán trước đó
là MVD. Sự sai khác giữa véc-tơ chuyển động hiện tại và véc-tơ được dự đoán sẽ được
mã hoá và truyền đi. Phương pháp thực hiện dự đoán MVp phụ thuộc vào kích cỡ định
dạng bù chuyển động và khả năng có sẵn của các véctơ liền kề [1].
Đặt E là block hiện tại (có thể là MB hoặc block con của MB), đặt A là block
ngay bên trái của E, đặt B block ngay phía trên E và đặt C là block phía trên bên phải
của E. Nếu có nhiều hơn một block phía trên E, block ngoài cùng bên trái trong số đó
sẽ được chọn là B. Hình vẽ 2.13 minh hoạ sự lựa chọn của các block lân cận khi tất cả
các block có cùng kích cỡ (trong trường hợp này là 16x16) và hình 2.14 chỉ ra một ví
dụ của việc lựa chọn của việc dự đoán các block có các kích cỡ khác nhau so với block
E hiện tại:

Hình vẽ 2.13: Vị trí của block hiện tại và vị trí của các block kế cận
(cùng kích thước block)

21
Hình vẽ 2.14: Vị trí của block hiện tại và vị trí của các block kế cận
(khác kích thước)

a. Nếu các block được truyền bao gồm cả kích thước 16x8 và 8x16, MVp là
trung bình của các véc-tơ chuyển động của các block A, B và C.
b. Đối với các block 16x8, MVp của block 16x8 phía trên được dự đoán từ B
và MVp của block 16x8 phía dưới được dự đoán từ A.
c. Đối với các block 8x16, MVp của block 8x16 bên trái được dự đoán từ A và
MVp của block 8x16 phía dưới được dự đoán từ C
d. Đối với các MB được giữ nguyên, một véctơ 16x16 được tạo ra như trong
trường hợp (a) ở trên.
Nếu một hoặc nhiều hơn các block được truyền đi trước đó (hình vẽ 2.14) không
có sẵn thì việc chọn lựa MVp sẽ được sửa đổi theo. Ở bộ giải mã, véc-tơ được dự đoán
MVp được hình thành theo cùng cách và được bổ sung vào véc-tơ sai khác đã được
giải mã MVD. Trong trường hợp MB được giữ nguyên và không có sai khác, véc-tơ
được giải mã và một MB bù chuyển động được tạo ra bằng việc sử dụng MVp như là
véc-tơ chuyển động.

2.3.3. Dự đoán Intra trong H.264

Trong mode Intra, block dự đoán P được thực hiện dựa trên các block được cấu
trúc lại từ việc mã hóa trước đó và được trừ đi block hiện thời trước khi được mã hoá.
Đối với các mẫu của thành phần độ chói, dự đoán Intra được thực hiện đối với mỗi
block kích cỡ 4x4 và MB. Có chín mode dự đoán được lựa chọn cho mỗi block 4x4,
bốn mode cho mỗi MB (đối với thành phần độ chói) và bốn mode cho các thành phần
sắc độ.

22
Bộ nén lựa chọn mode dự đoán cho mỗi block dựa vào sự khác nhau tối thiểu
giữa block cần được dự đoán và block sau khi đã được dự đoán.

2.3.3.1. Các mode dự đoán cho block 4x4 (đối với thành phần độ chói)

Hình vẽ 2.15 chỉ ra một block 4x4 (thành phần độ chói) cần được dự đoán. Các
mẫu a, b, c,…, p của block dự đoán P được tính toán dựa trên các mẫu A, ..., M. Các
mẫu A, .., M là các mẫu nằm phía trên và bên trái của P (là các mẫu đã được giải mã
hoá và được khôi phục lại) được sử dụng làm thông tin tham chiếu cho dự đoán.

Hình vẽ 2.15: Gán nhãn các mẫu dự đoán (4x4)

Các mode dự đoán trong trường hợp này bao gồm:


­ Mode 0: Các mẫu trên A, B, C, D được ngoại suy theo chiều dọc.
­ Mode 1: Các mẫu bên trái I, J, K, L được ngoại suy theo chiều ngang.
­ Mode 2: Tất cả các mẫu trong P đươc dự đoán là trung bình của các mẫu A,…,
D và I,…, L.
­ Mode 3: Các mẫu được nội suy ở góc 450 giữa phía dưới bên trái và phía trên
bên phải.
­ Mode 4: Các mẫu được ngoại suy ở góc 450 xuống và bên phải.
­ Mode 5: Các mẫu được ngoại suy ở góc xấp xỉ 26,60 phía bên trái theo chiều
dọc.
­ Mode 6: Ngoại suy ở góc xấp xỉ 26,60 phía bên dưới theo chiều ngang.
­ Mode 7: Ngoại suy hoặc nội suy ở góc xấp xỉ 26,60 phía bên phải theo chiều
dọc.
­ Mode 8: Nội suy ở góc xấp xỉ 26,60 phía bên trên theo chiều ngang.

23
Hình vẽ 2.16: Các mode dự đoán Intra4x4 (thành phần độ chói)

Các mũi tên trong hình vẽ 2.16 chỉ ra hướng dự đoán trong mỗi mode. Đối với
các mode 3, .., 8, các mẫu dự đoán tạo nên từ một giá trị trung bình mang trọng số của
các mẫu dự đoán A, ..., M. Ví dụ, nếu mode 4 được lựa chọn mẫu phía trên bên phải
của P (gán nhãn “d”) được dự đoán bởi: d = round(B/4 + C/2+D/4).

Hình vẽ 2.17: Ví dụ về các mode dự đoán Intra4x4 trong thực tế

24
2.3.3.2. Các mode dự đoán Intra16x16 (đối với thành phần độ chói)

Khác với dự đoán Intra4x4, mode dự đoán Intra16x16 của thành phần độ chói
được thực hiện theo bốn mode như sau:
­ Mode 0: Ngoại suy từ các mẫu phía trên (H)
­ Mode 1: Ngoại suy từ các mẫu bên trái (V)
­ Mode 2: Trung bình của các mẫu phía trên và bên trái (H+V)
­ Mode 3: Một hàm tuyến tính “phẳng” sử dụng để lọc đối với các mẫu phía
trên, bên trái H và V. Điều này được thực hiện trong các vùng có sự thay đổi
rất ít của thành phần chói.

Hình vẽ 2.18: Các mode dự đoán Intra16x16 (thành phần độ chói)

Hình vẽ 2.19: Ví dụ về các mode dự đoán Intra16x16 trong thực tế

25
2.3.3.3. Các mode dự đoán Intra8x8 (đối với thành phần sắc độ)

Mỗi block 8x8 của thành phần sắc độ sử dụng phương pháp dự đoán Intra được
dự đoán từ các mẫu thành phần sắc độ phía trên và bên trái đã được giải mã trước đó.
Cả hai thành phần sắc độ đều sử dụng cùng một mode dự đoán. Có bốn mode dự đoán
tương tự với bốn mode dự đoán Intra16x16 của thành phần độ chói như đã được trình
bày trong phần trước.

2.3.3.4. Báo hiệu trong các mode dự đoán Intra

Việc chọn mode dự đoán Intra cho mỗi block 4x4 phải được thông báo cho bộ
giải nén và điều này có thể yêu cầu một lượng lớn bit. Tuy nhiên, các mode Intra đối
với các block 4x4 lân cận thường có liên quan với nhau. Chẳng hạn: đặt A, B và E là
các block bên trái, phía trên và hiện tại một cách tương ứng (như trong hình 2.13). Nếu
các A và B được mã hoá và được dự đoán trước đó bằng việc sử dụng mode 1 thì
mode phù hợp nhất cho block E (block hiện tại) cũng là mode 1.
Đối với mỗi block E hiện tại, bộ nén và giải nén lựa chọn các mode dự đoán phù
hợp nhất có thể. Nếu như các block lân cận này không có sẵn (bên ngoài slice hiện thời
hoặc không được mã hoá trong mode Intra4x4), giá trị tương ứng A hoặc B được đặt là
2 (mode dự đoán DC).
Bộ giải nén gửi một cờ thông báo cho mỗi block 4x4 (prev-intra4x4-pred-mode).
Nếu cờ là “1”, mode dự đoán có khả năng nhất được sử dụng. Nếu cờ là 0, một thông
số khác (rem-intra4x4-pred-mode) được gửi để chỉ thị về sự thay đổi mode. Nếu rem-
intra4x4-pred-mode nhỏ hơn mode hiện thời khả dụng nhất thì khi đó mode dự đoán
được đặt là rem-intra4x4-pred-mode. Ngược lại, mode dự đoán được đặt là (rem-
intra4x4-pred-mode+1). Theo cách này, chỉ có tám giá trị của rem-intra4x4-pred-mode
là được sử dụng (từ 0 tới 7) để báo hiệu cho mode Intra hiện thời (từ mode 0 tới mode
8).
Mode dự đoán Intra đối với thành phần độ chói hoặc thành phần sắc độ được báo
hiệu hoá trong tiêu đề của MB và việc mã hoá của mode là không cần thực hiện trong
các trường hợp này.

2.3.4. Quyết định mode dự đoán

Trong các chuẩn nén, quyết định mode dự đoán cũng là một trong những yếu tố
rất quan trọng. Thông tin về lựa chọn mode dự đoán là các thông tin điều khiển được
gửi kèm với dữ liệu video từ bộ nén tới bộ giải nén. Quyết định mode dự đoán cho
phép bộ nén và giải nén lựa chọn chế độ hoạt động một cách linh hoạt và tối ưu nhất.

26
Trong bộ nén, tuỳ thuộc vào đặc tính của các MB trong mỗi khung hình cũng như
các khung hình tham chiếu tương ứng mà mode dự đoán Intra hay Inter được lựa chọn.
Nếu vùng hình ảnh là đồng nhất thì mode dự đoán Intra là phù hợp. Nếu vùng hình ảnh
chứa các thông tin chi tiết hơn thì phương pháp dự đoán Inter là phù hợp [3].
Trong mode dự đoán Intra có 13 mode dự đoán khác nhau còn trong mode dự
đoán Inter cũng có 7 mode dự đoán khác nhau. Việc lựa chọn mode thích hợp nhất cho
mỗi tình huống dự đoán cho phép bộ nén tối ưu hoá được hiệu quả nén của nó. Tuy
nhiên, việc sử dụng nhiều mode cũng đồng nghĩa với việc làm tăng độ phức tạp trong
tính toán của nén.
Đối với chuẩn H.264 các thuật toán quyết định mode được đưa ra cho phép cải
thiện được tốc độ tính toán và nâng cao hiệu quả của bộ nén.
Các thuật toán quyết định mode của H.264/AVC có thể được phân làm hai loại:
­ Lựa chọn mode thích hợp bằng việc sử dụng một số đặc tính của dữ liệu
video.
­ Sử dụng mối tương quan giữa các mode và dự đoán mode tốt nhất thông qua
các mode đã được kiểm tra.
Trong thực tế, thuật toán quyết định mode thường bao gồm cả loại trên.
Do sự phức tạp trong tính toán của việc xác định mode, nhiều thuật toán quyết
định mode nhanh được đề cập nhằm giảm độ phức tạp tính toán và thời gian mã hóa.
Mục tiêu là giảm số mode được kiểm tra bằng việc sử dụng các đặc trưng của dữ liệu
hỗ trợ cho việc đưa ra và thực hiện các quyết định mode.
Chuẩn nén H.264 sử dụng các phân dạng MB theo cấu trúc cây: tất cả các mode
có thể được phân vào 4 nhóm như sau: {SKIP}, {16x16, 16x8, 8x16}, {8x8, 8x4, 4x8,
4x4} và {INTRA4x4, INTRA16x16}. Thông thường mode SKIP được kiểm tra trước
tiên bởi vì với mode này có nghĩa là MB 16x16 chuyển động bằng không và không
cần mã hoá dữ liệu dư thừa. Đây là một mode đơn giản nhất. Như vậy ở giai đoạn ban
đầu ta có thể loại bỏ hết các tính toán, bù chuyển động và dự đoán intra. Nếu mode
SKIP được lựa chọn nó sẽ được xem như mode tối ưu nhất.
Ngược lại mode tối ưu sẽ được xác định dựa vào thông số:
COSTmode =SAD(cur,ref,mode))+λmode*R(cur,rec,mode) (2.6)
Trong đó:
­ SAD là tổng các sai khác tuyệt đối giữa các mẫu trong các block được kiểm
tra.
­ cur, ref: tương ứng là dữ liệu video hiện thời và video tham chiếu;

27
­ mode: xác định các kích thước block: 16x16, 16x8, 8x16, 8x8, 8x4, 4x8,
4x4.
­ λmode: hệ số điều chỉnh (liên quan tới thông số lượng tử hoá)
­ R: biểu thị số bít dùng cho việc mã hoá.
Phần dưới đây là mô tả thuật toán và lưu đồ của quyết định mode:
Mô tả thuật toán:
1- Quyết định mode SKIP
Nếu COSTskip < TSKIP (ngưỡng quyết định) mode SKIP được chọn như là mode
thích hợp nhất và chuyển sang bước 6, ngược lại chuyển sang bước 2.
2- Quyết định mode Intra hay Inter
So sánh giữa hai mode để tìm ra mode phù hợp nhất là Intra hay Inter:
­ Đối với mode Intra: nhóm mode phù hợp nhất được lựa chọn là {INTRA4x4
và INTRA16x16}
­ Đối với mode Inter: nhóm mode phù hợp nhất được lựa chọn trong bước 3
sẽ là nhóm mode phù hợp nhất.
3- Chọn nhóm mode Inter tốt nhất
Thực hiện ước lượng chuyển động trên các kích cỡ block 16x16 và 8x8 để xác
định COST16x16, COST8x8.
Nếu (COST16x16 < COST8x8) thì nhóm mode Inter tốt nhất là {8x8, 8x4, 4x8, 4x4},
ngược lại sẽ là nhóm {16x16, 16x8, 8x16}.
Xác định dữ liệu dư thừa của các mode khác nhau.
4- Sử dụng đặc tính dữ liệu để tạo dự đoán mode phù hợp nhất trong nhóm
mode
Quyết định mode Inter: Sử dụng dữ liệu dư thừa để dự đoán mode phù hợp nhất
trong nhóm mode.
Quyết định mode Intra: Sử dụng phương pháp của JVT-G013 để xác định mode
Intra tốt nhất của MB.
5- Thực hiện mode đoán để xác định COSTmode
Các mode dự đoán được thực hiện trong bước này và các COSTmode thu được
trong bước trước và mode tốt nhất của các MB lân cận sẽ được thực hiện.

28
6- Chọn mode tốt nhất giữa tất cả các mode đƣợc chọn
Thực hiện so sánh giữa tất cả các chi phí mode được chọn trong các bước trước
và chọn ra một mode tối ưu:
­ Bƣớc 1: Đối với quyết định mode SKIP, chúng ta sử dụng một ngưỡng là
TSKIP. Ngưỡng này sẽ thay đổi một cách thích ứng với các tham số lượng
tử hóa (TSKIP=QP*delta). Giá trị của delta là một giá trị được tìm theo kinh
nghiệm. Trên cơ sở so sánh giữa COSTSKIP với TSKIP để đưa ra quyết định
lựa chọn mode.
­ Bƣớc 2: Tính toán các COST16x16 và COST8x8 để xác định các kích thước
block được sử dụng và mode dự đoán tương ứng.
­ Bƣớc 3: Thông thường sử dụng trung bình của sai khác tuyệt đối MAD:
N N
1
MAD 
N2
 x
i 1 j 1
ij  yij (2.7)

để tạo quyết định lựa chọn Intra/Inter.


­ Bƣớc 4: Sử dụng sai số bình phương trung bình MSE:

 x  m
N M
1
MSE 
2
ij S (2.8)
N2 i 1 j 1

Trong đó: m là giá trị trung bình của dữ liệu trong ma trận NxM, xij là giá trị mẫu
tại vị trí (i,j).
MSE được sử dụng để xác định cường độ thay đổi. MSE đạt giá trị tối thiểu có
nghĩa là thông tin dư thừa là ít nhất và số bit cần thiết để mã hóa đối với thông tin dư
thừa này có thể là nhỏ nhất. Ví dụ: với ma trận phần dữ liệu dư thừa 16x16, MSE có
kích thước 16x16, 16x8 và 8x16 được minh họa trong hình vẽ:

Hình vẽ 2.20: MSE của dữ liệu dư thừa

So sánh giữa MSE1 + MSE2 và MSE3 + MSE4 nếu MSE nào nhỏ hơn thì lựa
chọn đó sẽ là mode dự đoán tốt nhất. Đối với quyết định mode intra chúng ta sử dụng
thuật toán của JVT-G013 và sử dụng toán tử Sobel để thu được lược đồ hướng hỗ trợ
nhằm đưa ra một quyết định mode chính xác.

29
Lưu đồ thuật toán của quyết định mode:

Khởi đầu

Đúng
Quyết định mode Skip

Sai

Inter Intra
Quyết định lựa chọn mode Inter/Intra

Sai
Nếu COST16x16<
COST8x8 Lựa chọn mode
Intra phù hợp

Lựa chọn cách Lựa chọn các


Mode lựa chọn tốt
phân chia tốt nhất phân chia tốt nhất
nhất cho MB là
trong các mode trong các mode
mode Skip
16x8 và 8x16 8x4, 4x8 và 4x4

Lựa chọn mode tốt nhất cho MB

Kết thúc

Hình vẽ 2.21: Lưu đồ của thuật toán quyết định mode.

2.3.5. Phép biến đổi và lƣợng tử hóa

Chuẩn nén H.264 sử dụng ba phép biến đổi tuỳ theo loại dữ liệu dư thừa được mã
hóa bao gồm: phép biến đổi Hadamard cho các dãy 4x4 các hệ số DC của thành phần
độ chói trong các MB sử dụng mode dự đoán Intra 16x16, phép biến đổi Hadamard đối
với dãy 2x2 các hệ số DC thành phần sắc độ (trong các MB bất kỳ) và phép biến đổi
dựa trên DCT cho tất cả các block 4x4 khác trong dữ liệu dư thừa [1,5].

30
Dữ liệu trong một MB được truyền đi theo thứ tự được chỉ ra trong hình vẽ sau:

Hình vẽ 2.22: Thứ tự truyền của các block dư thừa trong một MB

Nếu MB được mã hóa trong mode Intra16x16, khi đó block được gán nhãn là „-
1‟ (block chứa hệ số DC đã được biến đổi từ các block 4x4 của thành phần độ chói)
được truyền trước tiên. Tiếp theo là các block chứa dữ liệu dư thừa của thành phần độ
chói (từ block 0 tới block thứ 15) được truyền theo thứ tự như đã được chỉ ra (các hệ
số DC trong một MB được mã hóa trong mode Intra không được truyền đi). Block 16
và 17 (chứa một dãy 2x2 các hệ số DC từ các thành phần sắc độ U và V) được truyền
lần lượt theo thứ tự tương tứng. Cuối cùng, các block dư thừa của thành phần sắc độ
18, .., 25 (không chứa các hệ số DC) được truyền đi.

2.3.5.1. Biến đổi và lƣợng tử hóa dƣ thừa 4x4 (các blok 0÷15, 18÷25)

Phép biến đổi này thực hiện trên các block kích thước 4x4 của các dữ liệu dư
thừa (được gán nhãn 0, .., 15 và 18, .., 25 trong hình vẽ 2.22) sau khi đã được dự đoán
bù chuyển động hoặc dự đoán Intra. Phép biến đổi trong H.264 dựa trên nguyên tắc
của các phép biến đổi DCT thông thường nhưng có một vài điểm khác biệt cơ bản sau:
1- Là một phép biến đổi thực hiện hoàn toàn trên các giá trị số nguyên (tất cả
các phép tính toán có thể được thực hiện bằng việc sử dụng các giá trị số
nguyên mà không làm mất tính chính xác của bộ giải mã).
2- Có thể đảm bảo sự đối xứng hoàn toàn giữa các phép biến đổi xuôi và ngược
trong bộ nén và giải nén.
3- Phần lõi của phép biến đổi có thể được triển khai chỉ bằng việc sử dụng các
phép tính cộng và phép dịch.
31
4- Việc nhân tỷ lệ (là một phần của phép biến đổi) được tích hợp vào bộ lượng
tử.
Các phép lượng tử hóa ngược và biến đổi ngược có thể được thực hiện bằng việc
sử dụng các phép toán số học 16 bít với chỉ một phép nhân cho mỗi hệ số mà không
làm giảm độ chính xác.
Phép biến đổi DCT 4x4 được đưa ra theo biểu thức:

a a a a a a a c 
b c  c  b  a c  a  b 
Y=AXAT=   X    (2.9)
a  a  a a  a  c  a b 
   
c  b b  c a  b a  c 

1 1  1 3
Ở đây: a= , b= cos( ) , c= cos( )
2 2 8 2 8

Phép nhân ma trận có thể biến đổi tương đương dựa theo sự biến đổi các hệ số
như sau:

 1 1 1 1  1 1 1 d   a 2 ab a 2 ab
   
 1 d d  1  1 d  1  1    ab b 2 ab b 2 
Y=(CXCT)  E=   X  
1 1 1 1  1  d  1 1   a 2 ab a 2 ab
     
 d 1 1  d  1  1 1  d    ab b 2 ab b 2 


(2.10)

CXCT là trung tâm của phép biến đổi. E là ma trận của các hệ số điều chỉnh, toán
tử  chỉ ra rằng mỗi thành phần của CXCT được nhân bởi hệ số điều chỉnh ở cùng
một vị trí trong ma trận E. Hằng số a và b giữ nguyên như trước, d = c/b (xấp xỉ
0,414).

1
Để đơn giản hóa sự khai triển của phép biến đổi d được làm xấp xỉ và để đảm
2
bảo rằng phép biến đổi vẫn là trực giao b cần phải sửa đổi như sau:

1 2 1
a= ,b= ,d= .
2 5 2

Các hàng thứ 2 và thứ 4 của ma trận C và cột thứ 2 và thứ 4 của ma trận CT được
điều chỉnh bởi một hệ số là 2. Ma trận E được chia hệ số để bù lại nhằm tránh các phép
1
nhân với trong lõi của phép biến đổi CXCT (dẫn tới các kết quả thiếu chính xác)
2
bằng việc sử dụng các phép toán học thực hiện trên các số nguyên.

32
Cuối cùng phép biến đổi trở thành như sau:

 2 ab ab 
a a2
2 2
 1 1 1  
b2 
1 1  1 2 1
  ab b2 ab
 
 2 1  1  2 1 1  1  2   2 
Y=(CfXCfT)  Ef=   X   4 2 4
1  1  1 1  1 1 1 2    a2 ab ab 
   a2
 1  2 2  1 1  2 1  1   2 2
  
ab b2 ab b2 
 
2 4 2 4

(2.11)
Phép biến đổi này xấp xỉ với phép biến đổi DCT 4x4 nhưng vì có sự thay đổi
của các hệ số b và d nên kết quả của phép biến đổi mới sẽ không giống hoàn toàn với
DCT 4x4. Sự khác nhau khá rõ ở các hệ số lối ra phụ thuộc vào b hoặc d.
Phép biến đổi trong H.264 CODEC xấp xỉ với DCT và có một số thuận lợi quan
trọng sau: Phần lõi của phép biến đổi CXCT có thể được thực hiện bởi các phép toán:
cộng, trừ và phép dịch bít. Phép toán  Ef (yêu cầu một phép tính nhân cho mỗi hệ số)
có thể được bổ xung vào quá trình lượng tử hoá.
Phép biến đổi ngược được biểu diễn bởi phương trình:

1 1 1 1
 1
 
 a 2 ab a 2 ab   1 1 1
1 1
1
 1 1 1      
2  b 2 ab b 2    1  1
T  
Y=Ci (Y  Ei)Ci= 1  1  1 1  X    2
ab 2 2
  a  1 1 1
ab a 2 ab   1
 2    1  1
1  1 1  1 ab b 2 ab b 2   
2
1 1
2

 2 

(2.12)
Trong đó, Y được điều chỉnh trước bằng việc nhân mỗi hệ số với một trọng số
1
thích hợp từ ma trận Ei. Chú ý rằng, các hệ số ± trong ma trận C và CT (được khai
2
triển bởi các phép dịch phải) không làm giảm độ chính xác.
Các phép biến đổi xuôi và ngược là các phép biến đổi trực giao.

2.3.5.2. Lƣợng tử hoá

H.264 sử dụng phương pháp lượng tử hoá vô hướng. Các cơ cấu của bộ lượng
tử hoá thuận và nghịch bị phức tạp bởi các yêu cầu tránh sử dụng các phép tính chia,
các giá trị thập phân và sự kết hợp các ma trận Ef và Ei được mô tả ở trên.

33
Hàm lượng tử theo chiều thuận được biểu diễn bởi:
Zij = round(Yij/QStep) (2.13)
Ở đây: Yij là một hệ số của phép biến đổi ở trên, QStep là kích thước của bước
lượng tử và Zij là hệ số sau khi được lượng tử hoá. QStep có 52 giá trị được cung cấp
bởi chuẩn nén H.264 với chỉ số là QP được cho theo bảng như mô tả bên dưới [4]:

Bảng 2.1: Một số giá trị tiêu biểu của Qstep

QP 0 1 2 3 4 5 6 7 8 9 10 11 12 …

QStep 0.625 0.6875 0.8125 0.875 1 1.125 1.25 1.375 1.625 1.75 2 2.25 2.5 …

QP … 18 … 24 … 30 … 36 … 42 … 48 … 51

QStep … 5 … 10 … 20 … 40 … 80 … 160 … 224

QStep có giá trị gấp đôi khi chỉ số QP tăng lên 6 đơn vị. Tập hợp gồm 52 giá trị
của kích thước bước lượng tử QStep làm cho bộ nén có thể điều khiển được sự trao đổi
một cách chính xác và linh hoạt giữa tốc độ bít và chất lượng của bộ nén. Các giá trị
của QP có thể là khác nhau đối với thành phần độ chói và thành phần sắc độ. Cả hai
thông số đều nằm trong khoảng từ 0 đến 51 và mặc định thông số QPc được dẫn ra từ
thông số QPy sao cho QPc nhỏ hơn QPy đối với QPy>30. Một phép ánh xạ được định
nghĩa bởi người sử dụng giữa QPy và QPc.
Hệ số a2, ab/2 hoặc b2/4 được kết hợp vào bộ lượng tử hoá thuận: Trước tiên,
block lối vào X được biến đổi để thu được một block của các hệ số chưa được điều
chỉnh W=CXCT. Sau đó, mỗi hệ số Wij được lượng tử hoá theo biểu thức sau [1]:
PF
Zij = round(Wij. ) (2.14)
QStep

PF là a2, ab/2 hoặc b2/4 tuỳ thuộc vào vị trí (i, j):
Vị trí PF
(0,0), (2,0), (0,2) hoặc (2,2) a2
(1,1), (1,3), (3,1) hoặc (3,3) b2
Các vị trí khác ab/2
Để đơn giản hoá về mặt số học, hệ số PF/Qstep được triển khai trong mô hình
tham chiếu mềm như là một phép nhân bởi một hệ số MF và dịch phải để tránh sử
dụng các phép chia trong tính toán:
MF
Zij = round(Wij. )
2 qbits
34
MF PF
Ở đây: qbits
= , qbits = 15+floor(QP/6) (2.15)
2 QStep

Biểu diễn theo các tính toán số tự nhiên biểu thức trên có thể được khai triển như
sau:
|Zij|=(|Wij|.MF+f)>>qbits (2.16)
Sign(Zij)=sign(Wij) (2.17)
Ở đây >> biểu diễn phép dịch phải nhị phân. Trong mô hình tham chiếu mềm, f
là 2 /3 đối với các block Intra hoặc 2qbit/6 đối với các block Inter.
qbit

Bảng dưới đây đưa ra 6 giá trị đầu của MF được sử dụng trong H.264:

Bảng 2.2: Các giá trị MF tương ứng với 6 giá trị QP đầu tiên

Các vị trí Các vị trí


QP Các vị trí khác
(0,0);(2,0);(2,2);(0,2) (1,1);(1,3);(3,1);(3,3)

0 13107 5243 8066

1 11916 4660 7490

2 10082 4194 6554

3 9362 3647 5825

4 8192 3355 5243

5 7282 2893 4559

Trong đó, các cột thứ hai và thứ ba của bảng này đã được điều chỉnh so với biểu
thức (2.15). Đối với QP>5, các hệ số MF vẫn được giữ nguyên như trong biểu thức.

2.3.5.3. ReScaling

Biểu thức scaling cơ bản là:


Yij‟ = Zij.Qstep (2.18)
Hệ số pre-scaling đối với biến đổi ngược (từ ma trận Ei, các giá trị chứa a2, ab
và b2 phụ thuộc vào vị trí các hệ số) được kết hợp trong biểu thức này, cùng với hằng
số điều chỉnh 64 để tránh các lỗi khi làm tròn:
35
Wij‟ = Zij.QStep.PF.64 (2.19)
Wij‟ là hệ số đã được điều chỉnh (hệ số đã được biến đổi bởi phép biến đổi
ngược CiTWCi). Các giá trị lối ra của phép biến đổi ngược được chia cho 64 để loại bỏ
hệ số điều chỉnh.

36
CHƢƠNG 3: THUẬT TOÁN DEBLOCKING

3.2. Giới thiệu

Hầu hết các chuẩn nén video như: ITU- H.263{1,2}, MPEG-4{3} và H.264 đều
sử dụng các phép biến đổi dựa trên các block để khai thác tính dư thừa về không gian
trong các khung hình (Các phép biến đổi dựa trên các block bao gồm: biến đổi cosin
rời rạc - DCT, lượng tử hóa và mã hóa entropy…). Việc lượng tử hóa bằng cách chia
các hệ số thu được từ phép biến đổi DCT cho các hệ số lượng tử hoá làm hầu hết các
hệ số có giá trị nhỏ trong mỗi block bị triệt tiêu. Kết quả là khi tỷ số nén cao thì chỉ
còn lại hệ số DC và một số ít các hệ số khác. Điều này làm mất tính liên quan và tính
liên tục của các điểm ảnh ở đường biên giữa các block liền kề. Hiện tượng này được
biết đến như là các blocking artifacts [1, 4-10].

Bảng 3.1: Bộ lọc deblocking đối với các chuẩn nén khác nhau

Với chuẩn nén H.264 các khả năng gây ra blocking artifacts bao gồm:

­ Nguyên nhân thứ nhất được biết đến là việc thực hiện các phép biến đổi DCT
và lượng tử hoá sử dụng trong quá trình mã hoá dự đoán Intra và Inter. Phép
biến đổi DCT dựa trên các block gây ra sai lệch trong quá trình mã hoá dự đoán
Inter/Intra. Việc lượng tử hoá thô các hệ số thu được sau phép biến đổi có thể
gây ra các gián đoạn, xáo trộn về hình ảnh ở biên của các block.
­ Nguyên nhân thứ hai gây ra blocking artifacts là dự đoán bù chuyển động. Các
block bù chuyển động được tạo ra bằng cách sao chép các dữ liệu của điểm ảnh
nội suy từ các vị trí khác nhau từ các khung hình tham chiếu khác nhau một
cách phù hợp. Khi đó các điểm gián đoạn có thể phát sinh ở các đường biên của
các block đã được sao chép. Ngoài ra, trong quá trình sao chép các điểm biên
rời rạc trong các khung hình tham chiếu cũng được đưa vào bên trong các block
được bù chuyển động.

Mặc dù H.264 sử dụng các block với kích thước nhỏ 4x4 làm giảm bớt một phần
lỗi nhưng một bộ lọc Deblocking vẫn là một công cụ cần thiết.
37
Có hai cách tiếp cận chính trong việc tích hợp các bộ lọc Deblocking vào bộ mã
hóa/giải mã video. Bộ lọc Deblocking có thể được sử dụng như là Post-filter hoặc
Loop-filter:

­ Post-filter chỉ hoạt động trên bộ đệm hiển thị bên ngoài vòng lập mã nên không
có tính quy chuẩn và việc sử dụng chúng chỉ mang tính tùy chọn. Các Post-
filters có tính độc lập cao đối với các quá trình nén và giải nén.

Encoder Decoder
Deblocking
Filter

Hình vẽ 3.1: Deblocking với vai trò là một bộ lọc post-filter

­ Khác với Post-filter, Loop-filter hoạt động bên trong vòng lập mã. Các khung
hình sau khi lọc được sử dụng như là các khung hình tham chiếu cho việc bù
chuyển động của các khung hình được mã hoá tiếp sau đó. Điều này làm cho tất
cả các bộ giải mã hợp chuẩn phải thực hiện việc lọc giống nhau để đồng bộ giữa
bộ nén và giải nén. Một cách tự nhiên, bộ giải mã vẫn có thể sử dụng Post-filter
bổ xung nếu thấy cần thiết trong một ứng dụng riêng biệt nào đó.

Thực hiện việc lọc bên trong vòng lập mã của Loop-filter có một số thuận lợi so
với Post-filter như sau:

­ Thứ nhất, Loop-filter có thể đảm bảo một mức cụ thể về chất lượng. Với một
Loop-filter sử dụng trong thiết kế Codec, nhà cung cấp nội dung có thể được
yên tâm rằng các đoạn video của họ được xử lý bởi các bộ lọc Deblocking một
cách chính xác, đảm bảo mức độ chất lượng mong đợi của nhà sản xuất.
­ Thứ hai, không cần có một bộ đệm khung hình bên ngoài ở bộ giải mã. Trong
cách tiếp cận bằng Post-filter, việc bổ sung bộ đệm khung hình là cần thiết để
lưu giữ các khung hình đã được lọc và truyền tới thiết bị hiển thị. Tuy nhiên,
trong cách tiếp cận với Loop-filter, việc lọc có thể được thực hiện trên từng MB
trong suốt quá trình giải nén. Lối ra sau khi lọc được lưu giữ trực tiếp tới bộ
đệm khung hình tham chiếu.
­ Thứ ba, các thử nghiệm đã chỉ ra rằng Loop-filter cải tiến chất lượng dòng
video của cả chủ thể lẫn khách thể với tính phức tạp giảm một cách đáng kể so
với Post-filter. Các khung hình được lọc cho phép thực hiện việc dự đoán tốt
hơn đối với bù chuyển động.

Với những thuận lợi này, việc yêu cầu sử dụng Loop-filter mang tính qui chuẩn
38
đã được thảo luận một cách rộng rãi trong suốt quá trình phát triển của chuẩn nén
H.264/MPEG-4 AVC.

Hình vẽ 3.2: Loop-filter trong chuẩn nén H.264

Trong bộ nén cũng như giải nén, Loop-filter thực hiện việc lọc trên các khung
hình sau khi đã được khôi phục lại để làm khung hình tham chiếu cho việc mã hoá
hoặc giải mã khung hình tiếp theo.

Tính phức tạp của Loop-filter chủ yếu dựa trên tính thích hợp cao của bộ lọc với
các điều kiện biên của block và các mức mẫu. Đây là vấn đề tiêu tốn rất nhiều thời
gian và năng lực đối với quá trình xử lý song song trong phần cứng DSP hoặc chương
trình nén trên các bộ vi xử lý dùng chung.

Một lý do khác dẫn tới tính phức tạp cao là kích thước block nhỏ sử dụng cho
việc nén dư thừa trong thuật toán nén H264. Với các block 4x4 cùng với chiều dài bộ
lọc tiêu biểu (sử dụng hai mẫu điểm ảnh theo mỗi hướng), hầu như mọi mẫu trong một
khung hình đều được tải từ bộ nhớ được để sửa đổi hoặc để xác định các mẫu cạnh nó.

Hoạt động của bộ lọc được phân ra làm ba bước chính bao gồm: phân tích biên
(tính toán chiều dài bộ lọc), các quyết định lọc và triển khai việc lọc.

39
3.2. Phân tích biên

3.2.1. Lỗi phân bố trong block 4x4

Khi sử dụng một biến đổi block cho việc nén dư thừa, các lỗi trong quá trình nén
càng gần biên càng lớn. Các con số sau chỉ ra một ví dụ về lỗi phân bố trong block
4x4:

Bảng 3.2: Ví dụ về các giá trị mẫu trong một block

122 107 106 111


103 102 101 112
106 100 98 108
118 105 106 120

Với mỗi block có thể thấy rằng các mẫu bên trong và một vài mẫu xung quanh
bổ sung làm trọng số cho việc xây dựng lại các mẫu ở đường biên tốt hơn. Đó cũng là
lý do mà một mẫu ở phía biên có trọng số ít hơn. Dẫn đến một kết quả là sự phân bố
lỗi không đồng đều, đây là một tiềm năng cho sự cải tiến chất lượng bằng việc lọc các
đường biên của block.

Bộ lọc Deblocking theo chuẩn H.264/MPEG-4 AVC phù hợp với một vài mức:

­ Ở mức Slice: chiều dài toàn bộ của bộ lọc có thể được điều chỉnh theo các đặc
tính riêng của các chuỗi video.
­ Ở mức đường biên block: chiều dài bộ lọc tuỳ thuộc vào quyết định dự đoán
Intra/Inter, sự khác nhau về chuyển động, sự có mặt của các dư thừa được mã
hoá trong từng block cụ thể. Bộ lọc mạnh nhất được áp dụng cho các MB với
các đặc tính phẳng để loại bỏ các “tiling artifacts”.
­ Ở mức điểm ảnh (mẫu): các giá trị mẫu và các ngưỡng (phụ thuộc vào bộ lượng
tử hóa) mà có thể xác định dừng việc lọc cho mỗi điểm riêng rẽ.

3.2.2. Tính thích ứng mức đƣờng biên của bộ lọc

Đối với mỗi đường biên giữa hai block 4x4 của thành phần độ chói, một thông
số chiều dài biên BS được gán bởi một trị số từ 0 đến 4. Bảng sau cho thấy giá trị của
BS phụ thuộc vào các mode và các điều kiện mã hoá của hai block liền kề. Trong bảng
này, các điều kiện được đánh giá từ đỉnh xuống đáy, tới khi một trong các điều kiện
thoả mãn và giá trị tương ứng được gán cho BS.

40
Bảng 3.3: Các điều kiện xác định giá trị BS

Các điều kiện và các kiểu block BS


Một trong các block là Intra và biên của
4
nó cũng là biên của MB
Một trong các block là Intra 3
Một trong các block được mã hoá dư
2
thừa
Sự dịch chuyển của block ≥ khoảng
1
cách 1 mẫu thành phần độ chói
Bù chuyển động từ các khung hình tham
1
chiếu khác nhau
Các trường hợp khác 0

Trong thuật toán lọc thực tế, BS xác định chiều dài của bộ lọc. Giá trị BS = 4 có
nghĩa là một mode đặc biệt của bộ lọc được áp dụng, nó cho phép lọc mạnh nhất. Giá
trị BS = 0 có nghĩa là việc lọc không được áp dụng cho đường biên này. Chế độ lọc
bình thường được áp dụng cho các đường biên với BS đạt giá trị từ 1†3.

Sự thay đổi giá trị của BS cho thấy các blocking artifact mạnh nhất có thể gây ra
chủ yếu bởi việc sử dụng mode dự đoán Intra trong bộ nén và giảm dần đối các dự
đoán và bù chuyển động trong mã hóa Inter.

3.2.3. Tính thích ứng mức mẫu của bộ lọc

Trong bộ lọc, một điều khá quan trọng là khả năng phân biệt giữa đường biên
thực tế của hình ảnh với những đường biên được tạo ra bởi việc lượng tử hóa các hệ số
DCT. Để giữ nguyên được độ nét của hình ảnh thì những đường biên thực của ảnh
phải được giữ nguyên và không được lọc bỏ trong khi các đường biên giả thì cần phải
được giảm thiểu và loại bỏ.

Để phân loại được hai trường hợp này, các điểm ảnh qua các đường biên phải
được phân tích và so sánh. Các giá trị mẫu bên trong hai khối 4x4 liền kề: p3, p2, p1, p0
và q0, q1, q2, q3 với đường biên thực tế giữa p0 và q0 được chỉ ra trong hình vẽ 3.3. Có
thể có tới ba giá trị mẫu cho thành phần độ chói và một cho thành phần sắc độ ở mỗi
phía của đường biên là có thể bị sửa đổi bởi quá trình lọc.

41
q3

q0 q2
q1

p0
p2
p3
p1

Hình vẽ 3.3: Mô tả đường biên giữa các block mang tính trực quan

Như đã đề cập trong phần trước, việc lọc không được thực hiện đối với các
đường biên có giá trị BS = 0. Đối với các đường biên mà các giá trị BS khác 0, một
cặp thông số phụ thuộc quá trình lượng tử hóa được sử dụng để làm tham chiếu cho
việc xác định khi nào thì tập hợp các mẫu được lọc là α và β. Việc lọc được thực hiện
trên một dòng các mẫu chỉ thực hiện nếu thỏa mãn ba điều kiện sau:

|p0-q0| < α(IndexA) (3.1)

|p1-p0| < β(IndexB) (3.2)

|q1-q0| < β(IndexB) (3.3)

Trong các điều kiện này, cả hai bảng giá trị ngưỡng α và β đều phụ thuộc vào
thông số lượng tử hóa được áp dụng qua đường biên, cũng như là bộ nén lựa chọn các
giá trị offset có thể được sử dụng để điều khiển các tính chất của bộ lọc ở mức slice.
Các giá trị chỉ số bảng này có thể được tính toán như sau:

IndexA = Min(Max(0, QP+OffsetA), 51) (3.4)

IndexB = Min(Max(0, QP+OffsetB), 51) (3.5)

Ở đây: (0†51) biểu diễn khoảng giá trị có nghĩa của QP.

Các giá trị của α và β được định nghĩa một cách xấp xỉ theo các mối liên hệ sau:

α(x)=0,8(2x/6 - 1) (3.6)

β(x)=0,5x - 7 (3.7)

Để định nghĩa các bảng giá trị thực tế, các thay đổi từ mối liên hệ cơ bản này
được thực hiện dựa trên các thử nghiệm để tạo ra các kết quả phù hợp về hình ảnh đối
42
với các nội dung khác nhau. Trong thực tế, với các giá trị được làm tròn thì khi các chỉ
số IndexA < 16 hoặc IndexB tương ứng thì các hệ số α và β sẽ có giá trị là 0 và như
thế bộ lọc coi như ngừng hoạt động.

Các giá trị α và β phụ thuộc vào QP và liên quan tới chiều dài của bộ lọc. Khi
các giá trị ngưỡng tăng cùng với QP, các biên chứa thông tin chi tiết về nội dung sẽ có
lỗi mã hóa tăng (kích thước của các artifact tăng). Số mũ của α phản ánh sự phụ thuộc
của QP vào kích thước blocking artifact.

Dưới đây là bảng các giá trị của α và β được sử dụng trong chuẩn nén H.264
tương ứng với từng thông số lượng tử hoá [4]:

Bảng 3.4: Các giá trị của α và β sử dụng trong H.264

43
3.2.4. Lƣu đồ thuật toán tính giá trị BS

Sai
p và/hoặc q được p và q được mã
mã hoá Intra? hoá Intra?

Sai
Đúng
Đúng

Sai
Sai
Là đường biên của p và q được mã
MB? các hệ số?

Đúng
Đúng
BS=4 BS=3
BS=2 BS=1

p và q với Frame tham


chiếu khác nhau/có sự
khác nhau về véctơ
Sai Đúng
chuyển động?

BS=0

Hình vẽ 3.4: Lưu đồ thuật toán tính giá trị BS

3.3. Hoạt động của bộ lọc

3.3.1. Tổng quan về hoạt động lọc

Việc lọc Deblocking được thực hiện trên bốn đường biên độ dài 16 đối với thành
phần độ chói và hai đường biên độ dài 8 đối với thành phần sắc độ theo chiều dọc và
theo chiều ngang một cách tương ứng. Các quy tắc sau được áp dụng cho quá trình
triển khai bộ lọc:

­ Các giá trị điểm ảnh phía trên và bên trái của MB hiện hành có thể đã được
sửa đổi bởi bộ lọc thực hiện trên MB trước đó sẽ được sử dụng như là lối
vào đối với bộ lọc thực hiện trên MB hiện hành và có thể bị sửa đổi tiếp
trong suốt quá trình lọc đối với MB hiện hành.
­ Các giá trị được sửa đổi trong quá trình lọc theo các đường biên dọc được sử
dụng làm lối vào cho việc lọc của các đường biên ngang của cùng MB.
­ Các giá trị điểm ảnh được sửa đổi trong quá trình lọc các đường biên trước
đó được sử dụng làm lối vào cho việc lọc của đường biên kế tiếp theo cả hai
hướng ngang và dọc.
Để đảm bảo sự phù hợp hơn trong quá trình lọc giữa bộ nén và giải nén, các hoạt
động lọc phải được xây dựng lại theo một thứ tự riêng qua mỗi hình ảnh đã nén.

44
Việc lọc diễn ra trên một MB được thực hiện theo thứ tự như sau: hướng ngang
của các đường biên dọc được thực hiện trước tiên, sau đó là theo hướng dọc của các
đường biên ngang. Cả hai hướng lọc trên mỗi MB phải được kiểm soát trước khi di
chuyển sang MB kế tiếp. Các MB được lọc theo thứ tự quét lần lượt qua mỗi khung
hình.

Đối với mỗi MB thành phần độ chói, đường biên bên trái của MB được lọc đầu
tiên sau đó lần lượt từ trái qua phải là ba đường biên tiếp theo bên trong của MB.
Tương tự, đường biên trên cùng của MB được lọc trước tiên và theo sau đó lần lượt từ
trên xuống dưới là ba đường biên phía bên trong của MB. Thành phần sắc độ cũng
được lọc theo thứ tự tương tự với một đường biên bên ngoài và một đường biên bên
trong theo mỗi hướng đối với mỗi block 8x8 của thành phần sắc độ.

Hai chế độ lọc được lựa chọn dựa vào thông số BS: mode lọc đặc biệt cho phép
lọc mạnh nhất được áp dụng khi BS=4 và mode lọc thông thường được áp dụng cho
các trường hợp khác với BS<4.

Đối với cả hai mode, giá trị ngưỡng β được sử dụng tương đương với hai điều
kiện bổ xung theo khía cạnh không gian để xác định sự mở rộng của việc lọc trong
trường hợp các mẫu của thành phần độ chói:

|p2-p0| < β(IndexB) (3.8)

|q2-q0| < β(IndexB) (3.9)

Khi những điều kiện này thỏa mãn, nghĩa là ít có thay đổi về cường độ ở mỗi
phía của đường biên, chiều dài của bộ lọc được tăng lên.

3.3.2. Việc lọc đối với các đƣờng biên có BS từ 1÷3

Trong chế độ lọc này, các giá trị sau khi được lọc của p0 và q0 là:

p0‟=p0 + ∆0 (3.10)

q0‟=q0 - ∆0 (3.11)

Ở đây ∆0 được tính toán theo quá trình hai bước, bắt đầu với việc tính toán giá trị
khởi tạo ∆0i. Giá trị khởi tạo ∆0i được tính toán dựa trên các giá trị mẫu ngang qua các
đường biên:

∆0i = (4(q0-p0)+(p1-q1)+4) >> 3 (3.12)

Các giá trị của p1 và q1 chỉ được sửa đổi nếu điều kiện (3.8) hoặc (3.9) tương
ứng là đúng. Ngược lại, các giá trị đó sẽ không bị thay đổi.

45
Nếu điều kiện (3.8) đúng, khi đó giá trị p1‟ là giá trị được lọc của p1 sẽ được tính
toán như sau:

p1‟= p1 + ∆p1 (3.13)

Một cách tương tự, nếu điều kiện (3.9) đúng, q1‟ sẽ được lọc và được tính như
sau:

q1‟= q1 + ∆q1 (3.14)

Các giá trị này cũng được tính toán theo quá trình hai bước. Giá trị khởi tạo cho
việc tính toán p1‟ như sau:

∆p1i = (p2 + ((p0 + q0 + 1) >> 1) - 2p1) >> 1 (3.15).

Giá trị ∆q1i thu được theo cách thay thế q2 và q1 cho p2 và p1 một cách tương
ứng.

Nếu các giá trị trung gian ∆0i, ∆p1i và ∆q1i được sử một cách trực tiếp trong các
phương trình lọc sẽ dẫn đến kết quả sai khác nhiều. Một phần có ý nghĩa của tính thích
ứng của bộ lọc (đạt được bằng việc giới hạn các giá trị ∆ này) được gọi là cắt
(clipping).

Các giá trị ∆ sử dụng cho việc lọc các mẫu bên trong sẽ bị cắt nếu nằm ngoài
khoảng (-c1, c1). Ở đây c1 là thông số được xác định dựa trên bảng thông số mà được
chỉ thị theo hai hướng, với giá trị của IndexA khi được tính toán để xác định α được sử
dụng theo một hướng và giá trị BS được sử dụng trong hướng khác. Giá trị c1 tăng khi
việc lọc mạnh hơn, khi giá trị của IndexA và BS tăng. Cuối cùng, các giá trị để lọc p1
và q1 được tính toán như sau:

∆p1 = Min(Max(-c1, ∆p1i ), c1) (3.16)

∆q1 = Min(Max(-c1, ∆q1i ), c1) (3.17)

Đối với việc lọc các mẫu ở đường biên p0 và q0, khoảng cắt áp dụng đối với ∆0i
được xác định dựa vào giá trị c1 và các điều kiện (3.8) và (3.9). Việc cắt thực hiện với
giá trị c0 trước tiên được đặt bằng c1 và sau đó được tăng lên 1 mỗi khi điều kiện (3.8)
và (3.9) thỏa mãn. Khi đó, tổng số thay đổi có thể áp dụng đối với các mẫu ở đường
biên được tính toán như sau:

∆0 = Min(Max(-c0, ∆0i), c0) (3.18)

Do đó, việc lọc mạnh hơn được áp dụng đối với các mẫu ở đường biên khi
những thay đổi về cường độ ở mỗi phía của đường biên là nhỏ hơn ngưỡng β (các giá
trị mẫu p1 và/hoặc q1 cũng bị sửa đổi).

46
Đối với việc lọc thành phần sắc độ, chỉ các giá trị p0 và q0 là có thể được sửa đổi.
các giá trị này được lọc theo cùng cách với các giá trị mẫu của thành phần độ chói. Giá
trị cắt c0 được đặt bằng c1+1. Theo cách này, người ta không cần các điều kiện tương
đương (3.8) và (3.9) đối với các đường biên với BS<4, và do đó không cần phải truy
nhập đến các giá trị mẫu p2 và q2.

Bảng 3.5: Các giá trị c0 sử dụng trong H.264

3.3.3. Việc lọc đối với các đƣờng biên có BS = 4

Mã hóa Intra trong H.264/MPEG-4 AVC sử dụng các mode dự đoán Intra16x16
đối với thành phần độ chói khi mã hóa các vùng hình ảnh gần như đồng nhất. Điều này
gây ra các blocking artifacts biên độ nhỏ ở biên của MB. Để bù lại ảnh hưởng của các
hiệu ứng này, các bộ lọc mạnh hơn được áp dụng trên các biên giữa hai MB.

Đối với các thành phần độ chói, quyết định lựa chọn giữa một bộ lọc rất mạnh 4
hay 5-tap (sửa đổi mẫu đường biên và hai mẫu bên trong trên mỗi phía) hoặc một bộ
lọc 3-tap yếu hơn (sửa đổi chỉ với mẫu ở đường biên) được dựa trên nội dung của hình
ảnh.

Bộ lọc mạnh được áp dụng khi điều kiện ràng buộc sau được thỏa mãn:

|p0-q0| < (α >> 2) + 2. (3.19)

Chú ý rằng điều kiện (3.19) tương đương với điều kiện (3.1) nhưng ràng buộc
chặt hơn ở giá trị mẫu lớn nhất ngang qua đường biên.

Khi mà các điều kiện (3.8) và (3.19) thỏa mãn, các giá trị mẫu của thành phần độ
chói sau khi lọc được tính toán theo các biểu thức sau:
47
p0‟= (p2+2p1+2p0+2q0+2q1+q1+4) >> 3 (3.20)

p1‟= (p2+p1+p0+q0+2) >> 2 (3.21)

p2‟= (2p3+3p2+p1+p0+q0+ 4) >> 3 (3.22)

Các giá trị q bị thay đổi theo cùng một cách tương tự.

3.3.4. Lƣu đồ thuật toán của bộ lọc Deblocking

Start

Sai

(BS>0)&&(|p0-q0|<α)
&&(|p1-p0|<β)

Đúng

Sai Đúng
|p2-p0|<β

Sai Đúng
|q2-q0|<β
I
0<BS<4 BS=4
BS BS
0<BS<4 BS=4

p0'=p0+∆0 p0'=p0+∆0
q0'=q0-∆0 |p2-p0|<β
q0'=q0-∆0
q1'=q1+∆q1 Sai
Đúng
p0‟=(2p1+p0+q1+2)>>2 p0‟=(2p1+p0+q1+2)>>2
q0‟=(2q1+q0+p1+2)>>2 q0‟=(2q1+q0+p1+2)>>2

p0‟=(2p1+p0+q1+2)>>2
q0‟=(q2+2q1+2q0+2p0+p1+4)>>3
q1'=(2q2+q1+q0+p0+2)>>2
q2'=(2q3+3q2+q1+q0+p0+4)>>3

Hình vẽ 3.5: Lưu đồ thuật toán của bộ lọc Deblocking

48
I

Sai Đúng
|q2-q0|<β

0<BS<4 0<BS<4 BS=4


BS BS=4 BS

p0'=p0+∆0 p0'=p0+∆0
q0'=q0-∆0 q0'=q0-∆0
p1'=p1+∆p1 p1'=p1+∆p1
q1'=q1+∆q1

Sai |p0-q0| Đúng Sai |p0-q0|


<(α>>2)+2 Đúng
<(α>>2)+2

p0‟=(2p1+p0+q1+2)>>2 p0‟=(2p1+p0+q1+2)>>2
q0‟=(2q1+q0+p1+2)>>2 q0‟=(2q1+q0+p1+2)>>2

p0‟=(2p1+p0+q1+2)>>2 p0‟=(p2+2p1+2p0+2q0+q1+4)>>3
q0‟=(q2+2q1+2q0+2p0+p1+4)>>3 p1‟=(2p1+p0+q1+2)>>2
q1'=(2q2+q1+q0+p0+2)>>2 p2‟=(2p3+3p2+p1+p0+q0+4)>>3
q2'=(2q3+3q2+q1+q0+p0+4)>>3 q0‟=(q2+2q1+2q0+2p0+p1+4)>>3
q1'=(q2+q1+q0+p0+2)>>2
q2'=(2q3+3q2+q1+q0+p0+4)>>3

Hình vẽ 3.6: Lưu đồ thuật toán của bộ lọc Deblocking (tiếp theo)

49
CHƢƠNG 4: CHƢƠNG TRÌNH MÔ PHỎNG
4.1. Giới thiệu

 Chương trình mô phỏng được xây dựng dựa trên ngôn ngữ lập trình Visual C++
6.0.
 Chương trình thực hiện một số chức năng sau:

­ Từ một file video: “Test.avi” được ghi lại bởi một PC camera theo định
dạng YUY2 không nén, 30 khung hình/s, độ phân giải 640x480. Chương
trình thực hiện phân tách dòng dữ liệu thành các khung hình của thành
phần độ chói Y, hai thành phần sắc độ U và V riêng rẽ. Sau đó, để đơn
giản hoá chương trình chỉ tập trung vào phân tích và mô phỏng các thuật
toán dựa trên các khung hình hình đặc trưng là thành phần độ chói Y.

­ Từ khung hình đầu tiên đọc được, chương trình thực hiện việc nén theo
miền không gian (Intra coding) với kích thước block 4x4 ở mode DC. Dữ
liệu dư thừa thu được sau mã hoá Intra được biến đổi và lượng tử hoá sẽ
được biến đổi và lượng tử hoá ngược để xây dựng lại dữ liệu sai khác.
Phần dữ liệu này sau đó lại được kết hợp lại với các giá trị trọng số trung
bình để thu được khung hình ảnh ban đầu như là kết quả của quá trình giải
nén. Khung hình xây dựng lại sau đó sẽ được lọc theo thuật toán
Deblocking và được sử dụng làm khung hình tham chiếu cho quá trình nén
của khung hình tiếp theo.

­ Các khung hình tiếp theo sẽ được thực hiện nén sử dụng dự đoán Inter:
Khung hình được phân chia thành các block với kích thước thay đổi 4x4,
4x8, 8x4, 8x8, 8x16, 16x8 hoặc 16x16 tuỳ thuộc vào mức độ đồng đều
hoặc chi tiết của hình ảnh. Các block này sau đó được tìm kiếm trong vùng
tìm kiếm đã được xác định trước trong khung hình tham chiếu để tìm ra
block tương ứng phù hợp nhất. Sau đó, lấy hiệu các giá trị mẫu tương ứng
trong mỗi block của hai khung hình này. Thông tin lối ra sẽ bao gồm: vị trí
block trong khung hình hiện tại so với khung hình tham chiếu. Khung hình
dư thừa sau khi đã thực hiện các phép biến đổi và biến đổi ngược (DCT và
IDCT). Khung hình được xây dựng lại từ các dữ liệu đó sẽ được sử dụng
làm khung hình tham chiếu cho khung hình tiếp theo.

­ Lối ra của chương trình là các khung hình thu được sau mỗi bước biến đổi
và xử lý. Các khung hình này được lưu thành các file ảnh theo định dạng
BITMAP để tiện cho việc quan sát kết quả. Ngoài ra, chương trình còn có
dữ liệu đầu ra là các giá trị PSNR của mỗi khung hình sau mỗi quá trình
phân tích xử lý.
50
 Giao diện của chương trình:

 Chương trình gồm một cửa sổ chính: có hai thanh công cụ Parameter và
Run:

Hình vẽ 4.1: Giao diện chính của chương trình

 Thanh công cụ Parameter cho phép thiết lập các thông số của bộ nén bao
gồm:

­ Thông số lượng tử hoá (QP): Trong chương trình các thông số này được
lược bớt chỉ sử dụng một số giá trị tiêu biểu bao gồm: QP = 0, 1, 2, 3, 4, 5,
6, 7, 8, 9, 10, 11, 12, 18, 24, 36, 42, 48, 51.

­ Kích thước cửa sổ search: cho phép thiết lập kích thước vùng tìm kiếm
block phù hợp trong khung hình tham chiếu.

­ Các thông số ngưỡng: Alpha_MB, Alpha_8x16/16x8, Alpha_8x8,


Alpha_4x8, Alpha_4x4 xác định các ngưỡng để phân chia MB thành các
block với các kích thước thay đổi 4x4, 4x8, 8x4, 8x8, 8x16, 16x8 hoặc
16x16.

51
Hình vẽ 4.2: Giao diện chính nhập thông số cho chương trình

­ Khung hình_Y (Khung hình thành phần độ chói): xác định thứ tự khung
hình quan sát ở chế độ dự đoán Inter trong một chuỗi các khung hình tính
từ khung hình đầu tiên.

­ Các ô chọn MB và 4x4, 4x8, 8x8, 8x16, 16x16: cho phép chương trình
thực hiện chế độ dự đoán Inter với kích thước duy nhất MB hoặc các kích
thước thay đổi.

­ Ô chọn Intra: cho phép chương trình thực hiện phép biến đổi trực tiếp trên
khung hình hoặc thực hiện dự đoán Intra trên các block 4x4 ở mode DC.

 Lối ra của chương trình là các file ảnh theo định dạng BITMAP.

52
4.2. Sơ đồ khối của chƣơng trình mô phỏng

­ Sơ đồ khối tổng quan:

Start

Đọc Frame, phân


Điều khiển đọc Frame tách Frame chứa
thành phần độ
chói Y

Thông tin về Frame


dự đoán Intra Thực hiện nén Đúng Sai Thông tin về Frame
Frame Y đầu
theo miền không Thực hiện nén dự đoán Inter
tiên?
gian (Intra coding) theo miền thời
gian (Inter coding)

Frame chứa
thông tin dư thừa

Khôi phục lại Biến đổi và lượng


Biến đổi và lượng
Frame dự đoán tử hoá
tử hoá
Intra

Khôi phục lại


Frame dự đoán
Inter

Biến đổi và lượng Biến đổi và lượng


tử hoá ngược tử hoá ngược

Deblocking Filter Deblocking Filter

Bộ đệm Frame
+ +
tham chiếu

Hình vẽ 4.3: Sơ đồ khối tổng quát của chương trình

53
­ Sơ đồ khối mô tả quá trình Intra coding mode dự đoán DC 4x4 được sử
dụng trong chương trình mô phỏng:

Phân chia Frame


Y đầu vào thành
160x120 block4x4

Tính toán giá trị


trung bình mẫu
cho từng block4x4

Các giá trị DC (giá


Trừ giá trị của các
trị trung bình) Frame chứa các
mẫu trong block
tương ứng của các thông tin sai khác
cho giá trị trung
block4x4

Đi tới bộ khôi phục lại Đi tới bộ biến đổi


Frame dự đoán Intra và lượng tử hoá

Hình vẽ 4.4: Sơ đồ khối thực hiện chức năng Intra coding

­ Sơ đồ khối mô tả quá trình nén liên ảnh (Inter coding) được sử dụng trong
chương trình mô phỏng:

54
Frame thứ n
được đọc từ file

Phân chia Frame


Y đầu vào thành
các Macroblock
16x16

Khởi tạo các giá trị


ngưỡng, kích
thước cửa sổ tìm
kiếm….

Tính toán giá trị


MSE của từng MB

Phân chia MB
thành 2 block 8x16
hoặc 16x8 (Lưu lại MSE(MB)
Giữ nguyên MB
thông tin về cách <ngưỡng
phân chia)

Tìm kiếm MB phù Lưu thông tin vị trí


Tính toán giá trị Frame tham chiếu hợp nhất trong tương đối giữa MB
MSE của các vùng tìm kiếm của trongFrame hiện
block 8x16 Frame tham chiếu tại và Frame tham
so với MB hiện tại chiếu

Lưu thông tin về


Trừ các giá trị mẫu
sự sai khác gữa
trong MB hiện tại
Phân chia block MB hiện tại so với
cho MB tìm được
8x16 hoặc 16x8 Frame tham chiếu
MSE(8x16)<
thành 2 block 8x8
ngưỡng
(Lưu lại thông tin
về cách phân chia)

Giữ nguyên kích


thước block vừa
phân chia
Tính toán giá trị
MSE của các
block 8x8
Tìm block phù hợp
Lưu thông tin vị trí
Frame tham chiếu nhất trong vùng
tương đối giữa
tìm kiếm của
block trongFrame
Frame tham chiếu
hiện tại và Frame
so với block hiện
tham chiếu
tại
I

Lưu thông tin về


Trừ các giá trị mẫu
sự sai khác gữa
trong block hiện tại
block hiện tại so
cho block tìm
với Frame tham
được
chiếu

Hình vẽ 4.5: Sơ đồ khối thực hiện chức năng Inter coding


55
I

Phân chia block


8x16 hoặ 16x8 Sai
thành 2 block 8x8 MSE<ngưỡng
Đúng
(Lưu lại thông tin
về cách phân chia)

Giữ nguyên kích


thước block vừa
phân chia
Tính toán giá trị
MSE của các
block 8x8

Tìm block phù hợp Lưu thông tin vị trí


Frame tham chiếu trong vùng tìm tương đối giữa
kiếm của Frame block trong Frame
tham chiếu so với hiện tại và Frame
block hiện tại tham chiếu
Phân chia block
Sai
8x8 thành 2 block MSE(8x8) Đúng
4x8 hoặc 8x4 (Lưu <ngưỡng
lại thông tin về Lưu thông tin về
Trừ các giá trị mẫu
cách phân chia) sự sai khác gữa
trong block hiện tại
block hiện tại so
cho block tìm
với Frame tham
được
chiếu
Tính toán giá trị
MSE của các
block 4x8 hoặc
8x4
Giữ nguyên kích
thước block vừa
phân chia

Đúng
MSE<ngưỡng Tìm block phù hợp
Lưu thông tin vị trí
Frame tham chiếu nhất trong vùng
tương đối giữa
tìm kiếm của
block trong Frame
Frame tham chiếu
hiện tại và Frame
so với block hiện
tham chiếu
Sai tại

Phân chia block Lưu thông tin về


4x8 hoặc thành 2 Trừ các giá trị mẫu
sự sai khác gữa
block 4x4 (Lưu lại trong block hiện tại
block hiện tại so
thông tin về cách cho block tìm
với Frame tham
phân chia) được
chiếu

Tìm block phù hợp


Lưu thông tin vị trí
nhất trong vùng
tương đối giữa
tìm kiếm của
block trong Frame Giữ nguyên kích
Frame tham chiếu
hiện tại và Frame thước block vừa
so với block hiện
tham chiếu phân chia
tại

Lưu thông tin về


Trừ các giá trị mẫu Tìm block phù hợp
sự sai khác gữa Lưu thông tin vị trí
trong block hiện tại Frame tham chiếu nhất trong vùng
block hiện tại so tương đối giữa MB
cho block tìm tìm kiếm của
với Frame tham trongFrame hiện
được Frame tham chiếu
chiếu tại và Frame tham
so với block hiện
chiếu
tại

Lưu thông tin về


Trừ các giá trị mẫu
sự sai khác gữa
trong block hiện tại
block hiện tại so
cho block tìm
với Frame tham
được
chiếu

Hình vẽ 4.6: Sơ đồ khối thực hiện chức năng Inter coding (tiếp theo)
56
­ Việc lọc Deblocking được thực hiện theo sơ đồ đã chỉ ra trong chương 3.

4.3. Các kết quả lối ra của chƣơng trình

Lối ra của chương trình bao gồm các hình ảnh (thành phần độ chói) sau mỗi quá
trình biến đổi và các giá trị PSNR của các ảnh sau khi thực hiện biến đổi khi sử dụng
bộ lọc và khi không sử dụng bộ lọc.

Sau đây là một số hình ảnh kết quả sau khi thực hiện các phép biến đổi trong
chương trình với các thông số: QP = 18, kích thước cửa sổ tìm kiếm là 8, sử dụng
mode dự đoán Intra và mode dự đoán Inter với các kích thước block thay đổi.

4.3.1. Kết quả hình ảnh thu đƣợc trong quá trình phân tích khung hình đầu tiên

­ Ảnh khung hình đầu tiên nguyên bản:

Hình vẽ 4.7: Khung hình thành phần độ chói đầu tiên trong chuỗi video

57
­ Ảnh dữ liệu dư thừa của khung hình đầu tiên sau khi thực hiện dự đoán
Intra:

Hình vẽ 4.8: Khung hình thành phần độ chói sau khi dự đoán
Intra4x4 mode DC

­ Sau khi thực hiện biến đổi DCT:

Hình vẽ 4.9: Khung hình thành phần độ chói sau khi thực hiện
DCT và lượng tử hoá
58
­ Sau thực hiện biến đổi ngược IDCT:

Hình vẽ 4.10: Khung hình thành phần độ chói sau khi thực
hiện IDCT và lượng tử hóa ngược

­ Khung hình khôi phục lại không sử dụng Filter:

Hình vẽ 4.11: Khung hình thành phần độ chói sau khi khôi phục lại nhưng
không sử dụng bộ lọc

59
­ Khung hình khôi phục lại có sử dụng bộ lọc:

Hình vẽ 4.12: Khung hình thành phần độ chói sau khi khôi
phục lại có sử dụng bộ lọc

4.3.2. Kết quả hình ảnh thu đƣợc trong quá trình phân tích khung hình bất kỳ
trong chuỗi video

­ Khung hình chưa xử lý:

Hình vẽ 4.13: Khung hình thành phần độ chói trong chuỗi video
chưa được xử lý
60
­ Khung hình sau thực hiện dự đoán Inter:

Hình vẽ 4.14: Khung hình thành phần độ chói trong chuỗi video
sau khi thực hiện dự đoán Inter

­ Khung hình sau khi thực hiện dự đoán Inter và biến đổi DCT:

Hình vẽ 4.15: Khung hình thành phần độ chói trong chuỗi video sau khi
thực hiện biến đổi DCT và lượng tử hoá

61
­ Khung hình sau khi thực hiện biến đổi ngược IDCT:

Hình vẽ 4.16: Khung hình thành phần độ chói trong chuỗi video
sau khi thực hiện biến đổi IDCT và lượng tử hoá ngược

­ Hình ảnh khôi phục lại nhưng không sử dung bộ lọc:

Hình vẽ 4.17: Hình ảnh trong khung hình thành phần độ chói sau khi khôi
phục lại nhưng không sử dụng bộ lọc

62
­ Hình ảnh trong khung hình khôi phục lại có sử dụng bộ lọc:

Hình vẽ 4.18: Hình ảnh trong khung hình thành phần độ chói sau khi
khôi phục lại có sử dụng bộ lọc

4.4. Đánh giá kết quả và nhận xét

4.4.1. Đánh giá kết quả

Các kết quả đánh giá được dựa trên giá trị PSNR của các khung hình khi sử dụng
hoặc không sử dụng bộ lọc của hai file video khác nhau thực hiện các thuật toán theo
chuẩn H.264 với các thông số lượng tử hoá khác nhau.

 File video “Test1.avi” với một khung hình của thành phần Y trong file:

63
Hình vẽ 4.19: Một khung hình thành phần độ chói đại diện cho chuỗi
video “Test1.avi”

­ QP = 0, kích thước cửa sổ tìm kiếm bằng 8, các thông số ngưỡng đặt bằng
nhau và bằng 4. Mode dự đoán Inter với các kích thước thay đổi, sử dụng
mode Intra đối với khung hình đầu tiên:

Khung Khung Khung Khung Khun Khung


PSNR hình hình hình hình g hình hình
1 2 3 4 5 6
Không
31.547 23.712 19.598 18.265 17.981 17.230
Deblocking
Sử dụng
31.547 23.712 19.598 18.265 17.981 17.230
Deblocking

­ QP=18, kích thước cửa sổ tìm kiếm bằng 8, các thông số ngưỡng đặt bằng
nhau và bằng 4. Mode dự đoán Inter với các kích thước thay đổi, sử dụng
mode Intra đối với khung hình đầu tiên:

Khung Khung
Khung Khung Khung Khung
PSNR hình hình
hình 1 hình 2 hình 4 hình 6
3 5

64
Không
31.296 23.746 19.600 18.273 17.988 17.229
Deblocking
Sử dụng
31.310 23.750 19.603 18.275 17.990 17.231
Deblocking

­ QP=48, kích thước cửa sổ tìm kiếm bằng 8, các thông số ngưỡng đặt bằng
nhau và bằng 4. Mode dự đoán Inter với các kích thước thay đổi, sử dụng
mode Intra đối với khung hình đầu tiên:

Khung Khung Khung Khung Khung Khung


PSNR
hình 1 hình 2 hình 3 hình 4 hình 5 hình 6
Không
28.513 24.010 19.788 18.466 18.195 17.413
Deblocking
Sử dụng
29.291 24.137 19.901 18.563 18.267 17.469
Deblocking

 File video “Test2.avi” với một khung hình của thành phần Y trong file:

Hình vẽ 4.20: Một khung hình thành phần độ chói đại diện cho
chuỗi video “Test2.avi”

­ QP = 0, kích thước cửa sổ tìm kiếm bằng 8, các thông số ngưỡng đặt bằng
nhau và bằng 4. Mode dự đoán Inter với các kích thước thay đổi, sử dụng
mode Intra đối với khung hình đầu tiên:

65
Khung Khung Khung Khung Khung Khung
PSNR
hình 1 hình 2 hình 3 hình 4 hình 5 hình 6
Không
29.291 24.137 19.901 18.563 17.469 17.230
Deblocking
Sử dụng
29.291 24.137 19.901 18.563 17.469 17.230
Deblocking
­ QP=18, kích thước cửa sổ tìm kiếm bằng 8, các thông số ngưỡng đặt bằng
nhau và bằng 4. Mode dự đoán Inter với các kích thước thay đổi, sử dụng
mode Intra đối với khung hình đầu tiên:

Khung Khun
Khung Khung Khung Khung
PSNR hình g hình
hình 2 hình 3 hình 4 hình 5
1 6
Không
29.053 21.999 19.382 18.497 17.995 17.704
Deblocking
Sử dụng
29.057 22.003 19.384 18.499 17.997 17.706
Deblocking

­ QP=48, kích thước cửa sổ tìm kiếm bằng 8, các thông số ngưỡng đặt bằng
nhau và bằng 4. Mode dự đoán Inter với các kích thước thay đổi, sử dụng
mode Intra đối với khung hình đầu tiên:

Khung
Khung Khung Khung Khung Khung
PSNR hình
hình 2 hình 3 hình 4 hình 5 hình 6
1
Không
25.994 23.122 20.342 19.417 18.852 18.525
Deblocking
Sử dụng
26.028 23.431 20.621 19.624 19.017 18.673
Deblocking

4.4.2. Nhận xét

­ Từ các kết quả thu được cho thấy với khung hình đầu tiên sử dụng phương
pháp dự đoán Intra cho ta giá trị PSNR lớn hơn giá trị PSNR của các khung
hình sử dụng phương pháp dự đoán Inter. Điều này có thể giải thích như
sau: Sai lệch trong phương pháp dự đoán Intra là do quá trình thực hiện các
phép biến đổi và lượng tử hoá thuận/nghịch trên các dữ liệu còn dư sau quá
trình dự đoán tạo. Trong khi đối với các khung hình sử dụng dự đoán Inter
66
thì ngoài các sai khác do phép biến đổi và lượng tử hoá gây ra trên các
khung hình dư thừa còn có sai lệch tích luỹ từ khung hình tham chiếu.
­ Với kết quả hình ảnh thu được cho thấy: dữ liệu sai lệch giữa hai khung hình
liên tiếp trong một cảnh video là đáng kể. Điều này có thể gây ra do nhiễu
của bản thân thiết bị (đối với các camera chất lượng kém) hoặc do nhiễu của
môi trường tác động (như thay đổi cường độ sáng của môi trường...) làm
giảm hiệu quả của dự đoán Inter.
­ Khi QP = 0, giá trị PSNR của khung hình sau khi nén và giải nén trong hai
trường hợp có sử dụng bộ lọc và không sử dụng bộ lọc là như nhau. Kết quả
này là hoàn toàn phù hợp vì khi QP=0 cũng đồng nghĩa với quá trình nén là
ít tổn hao và sai khác giữa block ban đầu so với block sau khi nén và giải
nén là rất nhỏ.
­ Đối với QP > 0, giá trị PSNR của khung hình khôi phục lại có sử dụng bộ
lọc luôn lớn hơn giá trị PSNR của khung hình khôi phục lại không sử dụng
bộ lọc. Sự chênh lệch càng lớn khi QP càng lớn. Điều đó cho thấy sự cải
thiện về chất lượng hình ảnh khi sử dụng bộ lọc.
­ Đối với cùng một khung hình sử dụng dự đoán Inter, khi QP tăng thì PSNR
của nó tăng theo. Điều này có vẻ như là vô lý nhưng về thực tế có thể giải
thích như sau: theo kết quả hình ảnh thu được từ chương trình mô phỏng
cho thấy hai khung hình liên tiếp trong một chuỗi hung hình video của một
cảnh chuyển động thì sự khác nhau là rất lớn. Sự khác nhau này xuất hiện do
chất lượng của camera ghi hình hoặc do sự thay đổi cường độ sáng của môi
trường cảnh video được ghi. Trong khi ảnh thu được sau dự đoán Intra
(chưa kết hợp với phần dư) sẽ có chất lượng video là trung gian với hai
khung hình (khung hình dự đoán Intra và khung hình thứ hai sử dụng dự
đoán Inter). Như vậy, khi QP càng lớn thì khung hình khôi phục sau dự
đoán Intra (được dùng làm khung hình tham chiếu cho khung hình tiếp theo)
càng tiến gần tới khung hình trung gian và sai khác của khung hình này với
khung hình thu được sau dự đoán Inter cũng giảm dần. Điều này có thể khắc
phục một phần bằng cách sử dụng nhiều khung hình tham chiếu khác nhau.
Tuy nhiên, tính phức tạp của chương trình nén và giải nén sẽ bị tăng lên.

67
KẾT LUẬN

Một số kết quả đạt đƣợc và ứng dụng của luận văn:

Luận văn đã trình bày các khái niệm, các nguyên lý và kỹ thuật cơ bản về nén
video trong chuẩn nén H.264.
Triển khai thành công một số thuật toán chính trong chuẩn nén (các phương pháp
biến đổi DCT, IDCT; các phép lượng tử hoá; các phương pháp dự đoán Intra/Inter...)
làm cơ sở cho việc xây dựng và triển khai thuật toán chính của luận văn - thuật toán
Deblocking trong xử lý video theo chuẩn H.264.
Các kết quả thu được giúp tác giả có được cái nhìn trực quan hơn về một số vấn
đề trong kỹ thuật nén video như: đánh giá được mối tương quan giữa tỷ lệ nén với chất
lượng của video nén và vai trò của bộ lọc trong việc cải thiện chất lượng của video
nén. Thấy được một số yêu cầu cần giải quyết trong các trường hợp của chuỗi video cụ
thể... Làm cơ sở cho việc áp dụng chuẩn nén này trong các ứng dụng thực tế.

Hƣớng nghiên cứu và phát triển:

Luận văn mới chỉ đưa ra được một số nét chính của chuẩn nén để phục vụ cho
việc triển khai thuật toán Deblocking mà chưa xây dựng một cách hoàn chỉnh về bộ
nén và giải nén.
Trong tương lai hướng phát triển và mở rộng của luận văn sẽ tập trung vào hoàn
thiện hơn các thuật toán của chuẩn nén như:
­ Xây dựng thuật toán nén và giải nén đầy đủ, cải tiến các thuật toán để làm giảm
tính phức tạp tính toán cho phép tích hợp chương trình trong các ứng dụng bị hạn
chế về năng lực xử lý.
­ Áp dụng chuẩn nén cho việc xây dựng và phát triển các ứng dụng thực tế như:
các ứng dụng về camera giám sát tích hợp trong các thiết bị cầm tay (như điện
thoại di động...), áp dụng xây dựng các phần mềm cho các ứng dụng băng thông
giới hạn như: video internet....
­ Trên cơ sở các yêu cầu thực tế đòi hỏi sẽ xây dựng và phát triển các thuật toán
mới.

68
TÀI LIỆU THAM KHẢO

[1] Iain E.G.Richardson, H.264 and MPEG-4 Video Compression: Video coding
for Next-generation Multimedia, Jơnh Wiley&Sons, Ltd.ISBN:0-470-84837-5,
2003.

[2] Mohammed Ghanbari, Standard Codecs: Image Compression to Advanced


Video Coding, The Institution of Electrical Engineers, London, United
Kingdom, 2003

[3] Jianwen Chen, Yanmei Qu, Yun He, “A Fast Mode Decision Algorithm In
H.264”, State Key Lab on Microwave & Digital Communications, Department
of Electronics Engineering, Tsinghua University, Beijing, China, 100084.

[4] Thomas Wiegand, Draft IUT-T Recommendation and Final Draft International
Standard of Joint Video Specification (ITU-T Rec. H.264 | ISO/IEC 14496-10
AVC), 8th Meeting: Geneva, Switzerland, 23-27 May, 2003.

[5] L.Hanzo, P. Cherriman and J. Streit, Video Compression and Communications,


John Wiley & Sons Ltd, The Atrium, Southern Gate, Chichester, West Sussex
PO19 8SQ, England, 2007.

[6] Peter List, Anthony Joch, Jani Lainema, Gisle Bjøntegaard, and Marta
Karczewicz, Adaptive Deblocking Filter, IEEE TRANSACTIONS ON
CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY, VOL. 13, NO. 7,
JULY 2003.

[7] A. Averbuch, A. Schclar, D. L. Donoho, Deblocking of Block-Transform


Compressed Images Using Weighted Sums of Symmetrically Aligned Pixels,
November 8, 2001.

[8] Gwang Hoon Park, Min Woo Park, Sung-Chang Lim, Woo Sung Shim, and
Yung-Lyul Lee, Senior Member, IEEE, Deblocking Filtering for Illumination
Compensation in Multiview Video Coding, IEEE TRANSACTIONS ON
CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY, VOL. 18, NO. 10,
OCTOBER 2008.

[9] Jung-Ah Choi and Yo-Sung Ho, Simple and Efficient Deblocking Algorithm for
H.264/AVC Decoder, 15th International Conference on Systems, Signals and
Image Processing, IWSSIP 2008, 25-28 June 2008.

[10] ISO/IEC, Improved deblocking filter for open-loop MCTF in the JSVM,
ISO/IEC MPEG & ITU-T VCEG (ISO/IEC JTC1/SC29/WG11 and ITU-T
SG16 Q.6) 15th Meeting: Busan, R, 16-22 April, 2005.

69

You might also like