Tải bản đầy đủ (.pdf) (43 trang)

Xây dựng thuật toán ẩn lỗi hiệu quả nhằm nâng cao chất lượng truyền video trên kênh truyền vô tuyến

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.99 MB, 43 trang )

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ





LÊ VĂN HUYÊN






XÂY DựNG THUậT TOÁN ẩN LỗI HIệU QUả
NHằM NÂNG CAO CHấT LƯợNG TRUYềN VIDEO
TRÊN KÊNH TRUYềN VÔ TUYếN










LUẬN VĂN THẠC SĨ













Hà Nội – 2011
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ




LÊ VĂN HUYÊN




XÂY DựNG THUậT TOÁN ẩN LỗI HIệU QUả
NHằM NÂNG CAO CHấT LƯợNG TRUYềN VIDEO
TRÊN KÊNH TRUYềN VÔ TUYếN





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Ĩ


HƯỚNG DẪN KHOA HỌC: TS. ĐINH TRIỀU DƯƠNG











Hà Nội – 2011

Trang 3

MỤC LỤC
Bảng từ khoá 5
Danh sách các hình vẽ 6
Danh sách bảng – biểu 7
I. Đặt vấn đề 8

II. Giới thiệu về H.264 9
1. Tổng quan về nén video 9
2. Đặc điểm và ứng dụng của H.264 10
3. Lớp trừu tượng mạng – NAL 13
4. Lớp mã hoá video – VCL 14
a. Hình, Khung, và Miền 15
b. Phân loại khung 16
c. Định dạng YCbCr 17
d. Macro-block 18
e. Mảnh và nhóm mảnh 18
III. Các thuật toán ẩn lỗi 21
1. Ẩn lỗi ở mức MB 23
a. Thuật toán ẩn lỗi ở mức MB trên miền không gian 23
b. Thuật toán ẩn lỗi ở mức MB trên miền thời gian 24
2. Thuật toán ẩn lỗi ở mức khung 24
a. Thuận toán ẩn lỗi Frame Copy 25
b. Thuật toán Motion Vector Copy 25
3. Đề xuất thuật toán sửa lỗi mất toàn khung 25
a. Phương pháp véc-tơ trung vị có định hướng 26
b. Xử lý các MB tĩnh 28
IV. Kết quả thực hiện – đánh giá 30
1. So sánh kết quả giữa các thuật toán 30
2. So sánh kết quả giữa các mẫu video 33

Trang 4

3. Thuật toán đề xuất 34
V. Kết luận 35
VI. Phụ lục 36
VII. Tài liệu tham khảo 43



Trang 5

Bảng từ khoá
Tiếng Anh
Tiếng Việt
Bit-rate
Tốc độ bit
Blocking artefact
Hiện tượng/hiệu ứng (viền) khối giả
De-blocking filter
Lọc làm mịn/lọc loại bỏ viền khối
Error-propagation
(Hiệu ứng) lỗi lan truyền
Field
Miền
Frame
Khung
Macro-block
Khối
Motion compensation
Bù chuyển động
Motion-vector
Véc-tơ chuyển động
Picture
Hình
Ringing artefact
Hiện tượng/hiệu ứng vòng giả
Slice

Mảnh
Sub-block
Khối nhỏ
Video streaming
Truyền tải video

Trang 6

Danh sách các hình vẽ
Hình 1 - Quá trình mã hoá và giải mã video H.264 11
Hình 2 - Phân lớp H.264 12
Hình 3 - Sơ đồ khối mã hoá 1 Macro-Block trong H.264 15
Hình 4 - Progressive - interlaced frame 15
Hình 5 - Phân loại khung: I, P, B 16
Hình 6 - Hiệu ứng lan truyền lỗi 17
Hình 7 - YUV 4:4:4 và 4:2:2 18
Hình 8 - YUV 4:2:0 18
Hình 9 - Mảnh (slice) khi không sử dụng FMO 19
Hình 10 - Chia MB vào các nhóm mảnh (slice group) 19
Hình 11 - Ẩn lỗi trên miền không gian WABP cho MB 16x16 24
Hình 12 - Phương pháp Frame Copy 25
Hình 13 - Lỗi trong MVC khi có các khối không chuyển động 26
Hình 14 - Vị trí các khối lân cận 27
Hình 15 - Lọc lấy các véc-tơ cùng hướng 28
Hình 16 - Bổ sung 4 khối lân cận 28
Hình 17 - So sánh kết quả các thuật toán với mẫu Stefan 32
Hình 18 - So sánh kết quả giữa các mẫu video 33


Trang 7


Danh sách bảng – biểu
Bảng 1 - Kích thước trung bình của khung P trong một số mẫu video CIF 22
Bảng 2 - Kích thước trung bình của khung P trong một số mẫu video QCIF 22
Bảng 3 - So sánh kết quả các thuật toán với mẫu Stefan 30
Bảng 4 - So sánh kết quả giữa các mẫu video 33


Trang 8

I. Đặt vấn đề
Hiện nay việc truyền cũng như lưu trữ video số đang rất phổ biến, có thể
kể đến các ứng dụng như phát quảng bá (bao gồm cả broadcast và multicast)
trong truyền hình số, trao đổi video thời gian thực trong các ứng dụng gọi điện
thấy hình, cao cấp hơn là các ứng hội nghị truyền hình; lưu trữ phim trên đĩa
quang, trên ổ cứng,…
Trong quá trình lưu trữ, và đặc biệt là trong khi trao đổi gói tin trên mạng,
việc video bị lỗi là không thể tránh khỏi. Đối mặt với vấn đề này, một mặt
người ta vẫn sử dụng các biện pháp cổ điển với lưu trữ/truyền dẫn dữ liệu số
như sao lưu dự phòng, nâng cao chất lượng truyền dẫn,… đồng thời, người ta
còn xây dựng các phương pháp ẩn lỗi video. Các phương pháp này không thực
hiện khôi phục lại dữ liệu ban đầu, mà hướng tới việc làm thế nào để người
xem, qua cảm nhận thị giác của mình, ít thấy được những ảnh hưởng của lỗi.
Để tiết kiệm chi phí truyền dẫn, chi phí lưu trữ, hình ảnh sau khi được
quay từ máy quay sẽ được xử lý để giảm dung lượng. Việc này đồng nghĩa với
mỗi đơn vị dữ liệu sẽ mang nhiều thông tin hơn, và việc sửa lỗi/ẩn lỗi càng trở
lên quan trọng. Trong truyền dẫn video ngày nay, đảm bảo tính thời gian thực
có thể coi là yêu cầu quan trọng nhất. Khi gặp phải lỗi, phương pháp cổ điển là
truyền lại gói tin lỗi/mất sẽ rất dễ gây ảnh hưởng tới chỉ số chất lượng này, nên
sẽ kém hiệu quả hơn việc cứ tiếp tục truyền các gói tin tiếp theo song song với

thực hiện ẩn lỗi khi phát lại video ở phía thu.
Đề tài này sẽ thực hiện nghiên cứu về chuẩn nén dữ liệu phổ biến/tiên tiến
nhất hiện nay là chuẩn H.264, cùng với một số thuật toán cơ bản trong việc ẩn
lỗi video, nhằm mục tiêu đưa ra một số đề xuất cải tiến nâng cao hiệu quả ẩn
lỗi.

Trang 9

II. Giới thiệu về H.264
H.264, hay AVC, hay MPEG-4 part 10, là chuẩn mã hoá video tiên tiến
nhất hiện nay. Tiêu chuẩn H264 phiên bản đầu tiên được đưa ra năm 2003
hướng tới khả năng mã hoá chuỗi video với tốc độ bit chỉ bằng một nửa so với
MPEG-2, nhưng vẫn có chất lượng tương đương. H264 cũng mang đến những
cải thiện đáng kể về hiệu quả mã hoá, khả năng phòng/sửa lỗi, và độ thân thiện
với môi trường truyền bằng việc sử dụng những phương thức dự đoán hiệu quả
hơn cho các khung I, P, và B.
1. Tổng quan về nén video
Video sơ khai là một chuỗi các hình ảnh liên tiếp. Ở công nghệ phim
nhựa, để lưu lại một đoạn phim, người ta lưu liên tiếp các ảnh với tốc độ 24
ảnh/s. Khi xem lại phim, chuỗi ảnh này sẽ được chiếu tuần tự lên màn ảnh với
tốc độ giống như khi quay.
Chuyển sang thời đại kỹ thuật số, ảnh được phân ra thành các điểm ảnh,
với thông tin về màu sắc, độ sáng được số hoá, và được lưu lại thành file định
dạng RAW, BMP,… Các phương pháp mã hoá thông tin khác nhau đã được sử
dụng nhằm mục đích giảm bớt số lượng bit (nén) cần thiết để lưu ảnh, dựa trên
đặc tính dư thừa thông tin do cách biểu diễn, và dư thừa thông tin do bản chất
hình ảnh: ảnh là tập các mảng có màu sắc/độ sáng tương tự nhau (hay còn được
gọi là dư thừa thông tin theo không gian).
Với video số, bên cạnh 2 dạng dư thừa thông tin trên còn có dư thừa thông
tin theo thời gian: các ảnh (khung – frame) liên tiếp nhau thường tương tự

nhau, ảnh sau mang lượng thông tin rất ít so với ảnh trước. Người ta đã tận
dụng cả 3 dạng dư thừa thông tin này để thực hiện nén video, với tỉ lệ nén lên
tới hàng trăm lần, trong khi chất lượng hình ảnh vẫn được đảm bảo sắc nét,
trung thực.
Trong công nghệ video, khái niệm mã hoá (encoding) thường được sử
dụng nhiều, và mang nghĩa tương đương với nén (compress). Mã hoá để nén,
hay nén bằng cách mã hoá.
Nén dựa trên dư thừa thông tin theo không gian và theo thời gian thường
dựa trên các thuật toán nén có tổn hao thông tin (lossly compression). Để thấy

Trang 10

được hiệu quả của việc nén video, có thể lấy ví dụ về những bộ phim HD
Blueray. Một phiên bản của phim 2012 trên mạng, với định dạng FullHD
(1920x800) với độ dài 158 phút, tốc độ 24fps, có dung lượng phần video
13GiB (~14 * 10
9
byte). Nếu cũng video này, đem lưu trữ ở dạng tập các ảnh
liên tiếp, sử dụng 24 bit màu sẽ cần có dung lượng: 1920 * 800 * 3 * 24 * 158
* 60 = 1,48 * 10
12
byte. Từ đó, có thể thấy lỷ số nén video đạt được tới hơn 100
lần.
2. Đặc điểm và ứng dụng của H.264
Hiện nay trên thế giới có nhiều chuẩn nén hình ảnh ra đời theo thời gian,
như H.261, MPEG-1 part 2, H.262, H.263, MPEG-4 part 2, Các chuẩn nén
hình ảnh càng về sau càng có nhiều cải tiến về công nghệ nén. Tức là lượng dữ
liệu hay nói cách khác kích thước của tập tin video sau khi nén được giảm
nhiều hơn so với các chuẩn nén trước, nhưng vẫn giữ được chất lượng tương
đương hoặc tốt hơn. Đồng nghĩa với điều đó là các thuật toán và phương thức

xử lý ngày càng phức tạp hơn.
Ra đời tháng 05/2003 dưới sự hợp tác của 2 nhóm ITU-T VCEG (Video
Coding Experts Group – nhóm chuyên gia mã hoá video) và ISO/IEC MPEG,
H.264 thường được đánh giá chuẩn mã hoá thông tin tốt nhất tại thời điểm hiện
tại. Chuẩn H264 thực tế không quy định cách thực hiện việc mã hoá, mà chỉ
quy định định dạng hình ảnh sau mã hoá và các bước thực hiện giải mã. Việc
mã hoá thế nào được để mở cho các nhà sản xuất thiết bị/phần mềm mã hoá.
Ưu điểm có thể thấy được ngay của việc có khả năng nén tốt hơn này là
tiết kiệm chi phí: giảm được lưu lượng đường truyền trong quá trình trao đổi
video, và giảm được chi phí lưu trữ video.

Trang 11


Hình 1 - Quá trình mã hoá và giải mã video H.264
H.264 được thiết kế để sử dụng cho nhiều mục đích khác nhau, có thể kể
ra như
[4]
:
 Phát video quảng bá qua cáp đồng trục, DSL, vệ tinh, sóng mặt đất,…
 Lưu trữ trên ổ cứng, đĩa quang,…
 Hội nghị truyền hình qua mạng ISDN, LAN, DSL, mạng di động,…
 Truyền hình theo yêu cầu Video-on-demand,…
 …
Danh sách các dịch vụ không bị giới hạn, và luôn có khả năng xuất hiện
thêm các dịch vụ mới. Vấn đề này đã được đặc biệt quan tâm khi thiết kế
H.264.
H.264 được xây dựng thành 2 lớp (Hình 2): lớp mã hoá video (Video
Coding Layer – VCL) và lớp trừu tượng mạng (Network Abstraction Layer –
NAL). VCL là phần lõi, thực hiện mã hoá nội dung video theo cách hiệu quả

nhất có thể, trong khi NAL làm nhiệm vụ đưa dữ liệu sau mã hoá vào đúng
định dạng để truyền trên mạng hoặc để lưu trữ.

Trang 12


Hình 2 - Phân lớp H.264
Khi so sánh với các chuẩn mã hoá video trước, ví dụ MPEG-2, H.264 có
một số đặc điểm mới, hoặc cải tiến như sau:
 Bù chuyển động với nhiều kích thước block khác nhau. Block nhỏ nhất
có kích thước 4x4 điểm ảnh giúp cho hình ảnh ít bị dạng khối hơn.
 Ước lượng chuyển động tới mức ¼ pixel. Điều này giúp cho việc ước
lượng được chính xác hơn, hình ảnh tạo ra mịn hơn. Các chuẩn trước đó
thường chỉ thực hiện tới mức ½ pixel.
 Sử dụng nhiều khung tham chiếu: trong các chuẩn trước đó, thông
thường chỉ sử dụng một khung hình tham chiếu (là khung liền trước
khung hiện tại), cá biệt có trường hợp sử dụng 2 khung – một khung
trước và một khung sau. Trong H264, có thể sử dụng tới 5 khung tham
chiếu. Việc này giúp cho mức độ chính xác của việc dự đoán véc-tơ
chuyển động được nâng lên rõ rệt. Và tất nhiên, điều này giúp cho kết
quả của việc giải mã sát hơn với nguồn hình ảnh trước khi mã hoá.
 Khung B có thể được sử dụng làm khung tham chiếu. Điều này cho phép
việc mã hoá được thực hiện linh hoạt hơn, hiệu quả hơn.
 Thực hiện lọc làm mịn trong mỗi chu trình xử lý (in-loop de-blocking
filter) giúp loại bỏ các đường viền khối giả phát sinh do bước biến đổi và
lượng tử
 Thực hiện biến đổi với khối kích thước nhỏ: trong tất cả chuẩn mã hoá
phổ biến trước H.264, việc biến đổi được thực hiện với các khối có kích
thước 8x8. Trong khi đó H.264 sử dụng chủ yếu khối 4x4. Việc này cho


Trang 13

phép bộ mã hoá hoạt động chi tiết hơn, giảm thiểu hiện tượng vòng giả
(“ringing artifact”).
 Sử dụng hai phương pháp mã hoá entropy: mã hoá số học nhị phân tương
thích ngữ cảnh (Context-adaptive binary arithmetic coding – CABAC)
và mã hoá có độ dài từ thay đổi tương thích ngữ cảnh (Context-adaptive
variable-length coding – CAVLC)
 Biến đổi cosin rời rạc (DCT) được thay bằng biến đổi số nguyên
 Sử dụng các bộ tham số (Parameter sets) để đảm bảo đồng bộ các luật
mã hoá, và cũng để phân loại dữ liệu, tránh mất những dữ liệu quan
trọng.
 Sắp xếp macro-block linh hoạt: thực hiện phân mảnh mỗi khung hình ra
thành nhiều nhóm slices khác nhau. Khi giải mã, các nhóm slice sẽ được
giải mã độc lập. Điều này đặc biệt có ích trong trường hợp thực hiện ẩn
lỗi mức macro-block.
 Cho phép thay đổi linh hoạt kích thước slice.
 Dự phòng dữ liệu: để tăng độ an toàn, H.264 cho phép phía mã hoá bổ
sung dữ liệu dự phòng cho một vùng của khung hình.
 Phân loại dữ liệu: dữ liệu của mỗi slice được phân ra thành 3 gói (A, B,
C) dựa theo mức độ quan trọng, và sẽ có mức độ ưu tiên khác nhau khi
truyền tin, và thậm chí là khi lưu trữ.
3. Lớp trừu tượng mạng – NAL
Mục tiêu của lớp trừu tượng mạng là mang lại tính “phù hợp với môi
trường”. Với NAL, dữ liệu sau khi đã mã hoá bởi lớp VCL có thể được sử dụng
trên các môi trường khác nhau:
 RTP/IP, H.32X, MPEG-2 cho việc trao đổi/quảng bá thông tin thời gian
thực trên mạng vô tuyến/hữu tuyến.
 Các định dạng file khác nhau để lưu trữ, hay để gửi trên mạng như một
bản tin MMS.

Trong NAL sử dụng một số khái niệm như: đơn vị NAL (NAL units),
luồng byte (byte stream), gói

Trang 14

 Đơn vị NAL: dữ liệu video sau mã hoá được phân thành những đơn vị
NAL, là một nhóm các byte. Byte đầu tiên của mỗi đơn vị NAL là byte
tiêu đề, mang thông tin về loại dữ liệu được chứa trong các byte còn lại
của đơn vị NAL tương ứng. Đơn vị NAL có thể được sử dụng trong cả
hai phương pháp truyền tải: theo luồng (bitstream-oriented) và theo gói
(package-oriented).
 Đơn vị NAL khi sử dụng theo luồng: Một số hệ thống như H.320,
H.222.0 yêu cầu việc trao đổi các đơn vị NAL dưới dạng một luồng bit,
và cần có phương pháp để phân tách các đơn vị NAL trong luồng. Khi
đó, mỗi đơn vị NAL được xác định bởi một nhóm 3 byte được gọi là tiền
tố khởi đầu (start code prefix).
 Đơn vị NAL khi sử dụng theo gói: Trong các hệ thống như RTP/IP, dữ
liệu sau mã hoá được chuyển tại dưới dạng các gói của lớp truyền tải.
Khi đó, mỗi đơn vị NAL có thể được đặt trong 1 gói riêng, nên không
còn cần phải có tiền tố khởi đầu như trường hợp trên.
 Phân loại đơn vị NAL: có 2 loại đơn vị NAL: 1 loại chứa thông tin từ lớp
VCL – là thông tin của bản thân video đã được mã hoá, và một loại dữ
liệu chứa các thông tin khác, ví dụ như bộ tham số mã hoã, hay các thông
tin phụ trợ khác.
 Bộ tham số mã hoá: mỗi bộ là một tập các tham số phục vụ việc giải mã
như định dạng video (PAL, NTSC,…), phương pháp mã hoá entropy
(CABAC/CAVLC),…
4. Lớp mã hoá video – VCL
Giống như các chuẩn video khác kể từ H.261, lớp mã hoá video của H.264
tuân theo cấu trúc như chỉ ra trong Hình 3

[6]
. Theo đó, H.264 không bổ sung
thêm một khối nào để thực hiện tăng hiệu quả nén so với các chuẩn trước mà
chỉ thực hiện cải tiến đối với từng khối, từ đó tăng được hiệu quả chung.

Trang 15


Hình 3 - Sơ đồ khối mã hoá 1 Macro-Block trong H.264
a. Hình, Khung, và Miền
Một đoạn video H.264 là một chuỗi các các hình (Picture). Mỗi hình có
thể là toàn bộ một khung (Frame) hay chỉ là một miền (field) của khung. Tuy
nhiên, khái niệm hình và khung nhiều khi được sử dụng tương đương nhau.
Thông thường, một khung bao gồm 2 miền đan xen – miền trên và miền
dưới. Miền trên chứa các dòng điểm ảnh chẵn (0, 2, …, H-2) còn miền dưới
chứa các dòng lẻ (1, 3, …, H-1), trong đó H là số lượng điểm ảnh theo chiều
dọc của khung. Tuỳ theo thời điểm của 2 miền trên/dưới của một khung mà
khung được xác định là loại p (progressive - Hình 4a) – 2 miền mang thông tin
về hình ảnh tại cùng một thời điểm, hay loại i (interlaced - Hình 4b) – 2 miền
chứa thông tin của 2 thời điểm khác nhau.
(a) (b)
Hình 4 - Progressive - interlaced frame

Trang 16

b. Phân loại khung
Trong nén video khung được phân ra thành 3 loại: khung I, khung P, và
khung B (Hình 5)
[7]


Hình 5 - Phân loại khung: I, P, B
 Khung I (intra-coded): là một hình ảnh hoàn chỉnh, như một hình ảnh
tĩnh thông thường. Thông tin lưu trữ trong khung I có thể được nén dựa
trên đặc tính dư thừa thông tin theo không gian, giống như khi nén ảnh
tĩnh (ví dụ: chuẩn nén ảnh tĩnh JPEG).
 Khung P (predicted/predictive): chỉ lưu thông tin về phần thay đổi so với
khung trước đó. Ví dụ, khi có hình ảnh một quả bóng vàng chuyển động
trên nền trắng, bộ mã hoá H.264 sẽ chỉ mã hoá thông tin về sự chuyển
động của quả bóng, mà không lưu thông tin gì về nền trắng. Do đó,
lượng dữ liệu cần lưu sẽ được giảm đi rất nhiều.
 Khung B (bi-predictive): mang thông tin về sự khác biệt giữa khung hiện
tại với các khung trước đó và các khung sau đó.
Do lượng dữ liệu lưu trong khung P và khung B nhỏ hơn nhiều so với
khung I, nên mức độ nén sẽ phụ thuộc vào tỉ lệ giữa số lượng khung trong từng
loại khung I, P, B. Tỉ lệ khung I càng ít thì tỉ lệ nén sẽ càng cao, tuy nhiên, khi
giảm tỉ lệ khung I sẽ dẫn tới vấn đề sau: Do chỉ có khung I mới không bị ảnh
hưởng của hiệu ứng lan truyền lỗi (error propagation) nên giảm tỉ lệ khung I
đồng nghĩa với tăng ảnh hưởng của lan truyền lỗi.

Trang 17


Hình 6 - Hiệu ứng lan truyền lỗi
Bên cạnh đó, giảm tỉ lệ khung I còn có những ảnh hưởng nhỏ như làm hạn
chế khả năng tua khi xem phim. Thông thường, các phần mềm xem phim chỉ
cho phép tua nhảy cách tới những vị trí của khung I.
c. Định dạng YCbCr
Mắt người thông thường có đặc điểm là nhạy cảm với mức độ sáng hơn so
với màu sắc (nhận biết được mức độ thay đổi độ sáng ở mức độ nhỏ). Các hệ
thống mã hoá/hiển thị video đã lợi dụng đặc điểm này để có được chất lượng

hiệu quả nhất bằng cách sử dụng không gian màu YCbCr (thay vì RGB) cùng
với việc giảm tần suất lấy mẫu cho các thành phần Cb, Cr.
YCbCr (hay còn được gọi là YUV – YUV thường được sử dụng trong kỹ
thuật tương tự, còn YCbCr là tên thường được sử dụng trong kỹ thuật số) là
một không gian màu với 3 thành phần: Y là thành phần độ sáng, còn Cb, Cr là
hai thành phần màu. Do mắt người nhạy cảm hơn với độ sáng, nên khi lấy mẫu
video, thông thường người ta lấy mẫu Cb, Cr với tần suất thấp hơn. Tần suất
lấy mẫu thường được biểu thị bởi một bộ số, ví dụ: 4:4:4, 4:2:2, 4:2:0, …
Trong đó 4:2:0 là tần suất phổ biến hơn cả, với tần suất lấy mẫu của thành phần
Cb, Cr bằng ¼ thành phần Y (½ theo chiều dọc và ½ theo chiều ngang).

Trang 18


Hình 7 - YUV 4:4:4 và 4:2:2

Hình 8 - YUV 4:2:0
d. Macro-block
Một hình (picture) được phân ra thành nhiều khối macro-block (MB). Mỗi
MB là một hình vuông gồm 16x16 mẫu độ sáng và 8x8 mẫu màu. MB là phần
tử cơ bản của hình khi thực hiện mã hoá và giải mã.
e. Mảnh và nhóm mảnh
Mảnh (slice) là một chuỗi các MB khi quét hình theo dòng (raster scan).
Một hình thường được chia thành một hoặc một số mảnh. Trong quá trình mã
hoá/giải mã, mỗi mảnh là một đơn vị độc lập – việc giải mã một mảnh không
ảnh hưởng/phụ thuộc vào các mảnh khác (Hình 9). Với mỗi ảnh gồm nhiều

Trang 19

mảnh, khi thực hiện mã hoá/giải mã có thể tiến hành song song đối với các

mảnh, từ đó nâng cao được tốc độ xử lý.

Hình 9 - Mảnh (slice) khi không sử dụng FMO
Tuy nhiên, trong H.264, với việc sử dụng FMO, đã xuất hiện khái niệm
mới là nhóm mảnh (slice group), đồng thời thay đổi khái niệm về mảnh. Theo
đó, các MB trong một hình được chia vào các nhóm mảnh khác nhau (Hình
10). Việc chia MB không còn được thực hiện theo dạng quét dòng, mà việc xác
định MB nào thuộc nhóm nào được mô tả trong một bảng ánh xạ. Khi đó, khái
niệm mảnh sẽ là một chuỗi các MB liên tiếp trong nhóm mảnh.

Hình 10 - Chia MB vào các nhóm mảnh (slice group)
Trường hợp không sử dụng FMO, khi đó, sẽ là một trường hợp đặc biệt
của FMO – toàn bộ hình chỉ có một nhóm mảnh duy nhất.
Tuy nhiên, việc mã hoá một mảnh không phụ thuộc việc có sử dụng FMO
hay không. Mỗi mảnh có thể được mã hoá theo một trong những phương pháp
sau:
 Mảnh loại I: là mảnh với tất cả các MB được mã hoá với đầy đủ thông
tin gốc, không phải tham chiếu tới khác khung hình khác.
 Mảnh loại P: là mảnh có chứa một số MB được mã hoá có sử dụng tham
chiếu từ các khung hình khác, với tối đa một dự đoán bù chuyển động.

Trang 20

 Mảnh loại B: bổ sung thêm một số MB có 2 dự đoán bù chuyển động.

Trang 21

III. Các thuật toán ẩn lỗi
Trong những năm gần đây, việc truyền video trên trên mạng, đặc biệt là
mạng vô tuyến, xuất hiện ngày càng nhiều. Do các kênh truyền này thường

xuyên xuất hiện lỗi, trong khi các luồng dữ liệu video với tỉ lệ nén cao lại rất
nhạy cảm với lỗi, việc ẩn lỗi trở nên vô cùng quan trọng, và được quan tâm
ngày càng nhiều. Người ta tìm mọi phương pháp để bảo vệ luồng dữ liệu và tái
tạo các dữ liệu bị mất để làm giảm ảnh hưởng của lỗi.
Việc ẩn lỗi thường được thực hiện ở 2 mức: mức macro-block và mức
khung hình. Ẩn lỗi ở mức macro-block phát sinh khi một số bit trong chuỗi tin
bị mất, trong khi ẩn lỗi ở mức khung hình cần thiết khi toàn bộ thông tin của
một khung bị lỗi/mất. Với mạng IP và các định dạng video hay được sử dụng
hiện tại, việc mất/lỗi một gói tin IP thường dẫn đến mất toàn bộ một khung
hình. Điều này được giải thích đơn giản như sau:

Một gói tin IP có thể mang tới 4040 byte dữ liệu, trong khi đó, một khung
P thường có kích thước tính theo byte khá thấp, dưới 1000 byte (như Bảng 1 và
Bảng 2)
Mẫu video
Tốc độ bit
Kích thước trung bình của
khung P
Stefan
119.94 kbps
600 byte
Football
222.17 kbps
938 byte

Trang 22

Foreman
65.04 kbps
225 byte

Bảng 1 - Kích thước trung bình của khung P trong một số mẫu video CIF
Mẫu video
Tốc độ bit
Kích thước trung bình của
khung P
Stefan
37.45 kbps
200 byte
Football
60.58 kbps
265 byte
Foreman
69.90 kbps
300 byte
Bảng 2 - Kích thước trung bình của khung P trong một số mẫu video QCIF
Ẩn lỗi là một phương thức hiệu quả nhằm đạt được chất lượng hình ảnh
cao hơn, trong khi không yêu cầu thay đổi gì ở khâu mã hoá, và cũng giữ
nguyên tốc độ bit. Trên kênh truyền vô tuyến, sử dụng các phương pháp ẩn lỗi
mức khung hình (Frame-based error concealment – FBEC) là một khâu quan
trọng để nâng cao chất lượng hình ảnh.
Ngoài cách phân loại ẩn lỗi theo mức macro-block hay mức khung, người
ta còn thường phân loại dựa theo loại thông tin cơ sở để thực hiện sửa lỗi.
Các phiên bản JM trước 10.0 chỉ triển khai các phương thức ẩn lỗi mức
macro-block. Trong ẩn lỗi mức macro-block, tuỳ theo loại thông tin cơ sở để tái
tạo mà người ta phân ra ẩn lỗi theo miền không gian hay ẩn lỗi theo miền thời
gian. Ở phương pháp ẩn lỗi theo miền không gian, macro-block bị mất được tái
tạo dựa trên thông tin từ các macro-block lân cận thuộc cùng một khung hình.
Trong phương pháp ẩn lỗi theo miền thời gian, việc tái tạo macro-block được
dựa trên thông tin từ các macro-block có liên quan (thường là macro-block ở
cùng vị trí, hoặc các macro-block lân cận) thuộc các frame tham chiếu.

Kể từ phiên bản JM 10.0 có thêm hai phương pháp ẩn lỗi thực hiện ở mức
khung hình: ẩn lỗi bằng cách sao chép khung (frame-copy – FC) và ẩn lỗi bằng
cách sao chép motion vector (motion-vector-copy – MVC).
Trong phương pháp FC, khung hình tái tạo là bản sao 1-1 của khung hình
trước đó. Còn trong phương pháp MVC, véc-tơ chuyển động của mỗi sub-
block 4x4 trong khung hình trước được sao chép sang khung hình bị mất; với
các véc-tơ chuyển động này, từng sub-block 4x4 của khung hình bị mất sẽ
được tái tạo lại. Phương pháp MVC mang lại hiệu quả cao hơn so với phương
pháp FC, trung bình khoảng 2dB khi so sánh PSNR. Với mức độ tính toán

Trang 23

chênh lệch không quá lớn, trong khi chất lượng lại được cải thiện khá nhiều,
MVC được đánh giá là phương pháp khá ưu việt. Chi tiết về hai phương pháp
này sẽ được đề cập trong phần sau.
Bên cạnh 2 phương pháp trên, hai phương pháp ẩn lỗi mức khung hình
khác hay được nhắc đến là thuật toán ẩn lỗi trên điểm ảnh (CAp - Concealment
Algorithm on Pixels) và thuật toán ẩn lỗi trên khối (CAb – Concealment
Algorithm on Blocks). CAp sử dụng tính chất “luồng quang học” (optical flow
– OF) để dự đoán các điểm ảnh trong khung bị mất. Trong khi đó, CAb thực
hiện dựng lại khung bị mất từ các MB. Tuy nhiên, so sánh với 2 phương pháp
được thực hiện trong JM, hai phương pháp CAp và CAb có độ phức tạp tính
toán cao hơn rất nhiều, trong khi chất lượng hình ảnh không nâng lên được
nhiều.
Phương pháp được đề cập đến trong đề tài này là một phương pháp được
thực hiện dựa trên/cải tiến của phương pháp MVC, với mức độ tính toán tăng
lên không đáng kể, và đem lại hiệu quả hơn một chút trong những hình ảnh
chuyển động nhanh.
1. Ẩn lỗi ở mức MB
Hầu hết các thuật toán ẩn lỗi trước đây được thực hiện ở mức MB (được

thực hiện khi trong khung có một/một số khối bị mất). Người ta cũng chia các
thuật toán ẩn lỗi này ra làm 2 loại:
a. Thuật toán ẩn lỗi ở mức MB trên miền không gian
Tài liệu [5] giới thiệu hai phương pháp ẩn lỗi trên miền không gian và thời
gian trong mô hình thử nghiệm cho H.26L, và hai phương pháp này cũng được
sử dụng trong bộ phần mềm tham chiếu H.264/AVC. Phương pháp ẩn lỗi trên
miền không gian sử dụng phương pháp ngoại suy dựa trên giá trị trung bình
cộng có hệ số của các điểm ảnh ở biên (Weighted Average of Boundary Pixels
– WABP) như trong Hình 11

Trang 24


Hình 11 - Ẩn lỗi trên miền không gian WABP cho MB 16x16
Phương pháp WABP được thực hiện với từng điểm ảnh (điểm ảnh cần
nộii suy) trong MB bị mất, với các giá trị Y, Cb, Cr được tính theo trung bình
cộng của các giá trị tương ứng của 4 điểm ảnh ở biên của các MB lân cận (ô
màu xám ở biên như trong hình). Khi tính trung bình cộng, 4 giá trị đầu vào
được gán các trọng số khác nhau, bản chất là khoảng cách (tính theo điểm ảnh)
từ điểm ảnh đầu vào tương ứng tới điểm ảnh cần nội suy.
b. Thuật toán ẩn lỗi ở mức MB trên miền thời gian
Cách thực hiện ẩn lỗi trên miền thời gian cũng tương tự như theo miền
không gian. Việc dự đoán MVs cho khối bị mất được thực hiện dựa trên mối
liên hệ giữa khối này và các khối lân cận, theo nguyên lý MV của một vùng
không gian nhỏ thường đồng nhất, nên việc nội suy MV của một MB dựa trên
MV của các MB lân cận là có cơ sở.
2. Thuật toán ẩn lỗi ở mức khung
Như đã nói ở trên, JM từ phiên bản 10.0 thực hiện 2 phương pháp ẩn lỗi ở
mức khung: FC và MVC. Khi đánh giá chủ quan, với những đoạn hình tĩnh, hai
phương pháp này có chất lượng tương đương nhau. Tuy nhiên, khi đánh giá

chất lượng dựa trên PSNR, nhất là ở những cảnh chuyển động, MVC thường
cho chất lượng tốt hơn FC khoảng 2dB.

Trang 25

a. Thuận toán ẩn lỗi Frame Copy
Thuật toán FC thực hiện sao chép toàn bộ các điểm ảnh của khung hình
tham chiếu sang khung hình hiện tại (khung hình bị mất) như trong (III.1).
Theo đó, khung hình hiện tại (hình được khôi phục) sẽ giống hệt như khung
hình tham chiếu (Hình 12).









(III.1)


Hình 12 - Phương pháp Frame Copy
b. Thuật toán Motion Vector Copy
Với MVC, việc khôi phục khung hình bị mất được thực hiện bằng các,
trước tiên, sao chép MV của từng khối nhỏ 4x4 từ khung hình t-1 sang khung
hình t (III.2). Sau đó, các giá trị Y, Cb, Cr của khung hình tái tạo t sẽ được khôi
phục sử dụng các MV sao chép được này.












(III.2)
(Trong biểu thức (III.2), (i,j) là chỉ số xác định vị trí của khối 4x4).
3. Đề xuất thuật toán sửa lỗi mất toàn khung
Trong hầu hết các trường hợp, thuật toán MVC đáp ứng tốt trong việc sửa
lỗi mất toàn bộ khung, tuy nhiên, trong một số trường hợp, thuật toán này có
thể được cải thiện để có chất lượng tốt hơn nữa. Cụ thể, khi thực hiện copy MV
từ các khối không chuyển động, trong khung hình tái tạo sẽ xuất hiện một số
khối bị lỗi (Hình 13). Lỗi này xảy ra trong các trường hợp sau:

×