Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 11

[Phần mục lục sẽ được thêm theo thứ tự vào đây]

[Bảng danh mục từ viết tắt sẽ thêm ở đây, sau phần mục lục]

MỞ ĐẦU

Trong mã hóa video phân tán DVC (Distributed Video Coding), thông tin phụ trợ (SI-
Side Information) được tạo ra tại bộ giải mã cho phép phân bố linh hoạt độ phức tạp
tính toán giữa bộ mã hóa và bộ giải mã. Lợi thế này rất có ích đối với các yêu cầu của
các ứng dụng như giám sát video, mạng cảm biến và điện thoại camera di động. Chất
lượng của SI tại bộ giải mã có vai trò quan trọng trong việc quyết định hiệu năng méo-
tốc độ (RD-Rate-Distortion) của hệ thống mã hóa video phân tán có thể giúp đạt được
mức tương đương với các hệ thống mã hóa video dự đoán tiêu chuẩn. Do đó việc nghiên
cứu các thuật toán tìm kiếm chuyển động hiệu quả cho nội suy khung hình tại bộ giải
mã là rất cần thiết. Thực tế này đã thúc đẩy sự phát triển của rất nhiều cải tiến so với các
phương pháp tạo SI ban đầu, thường đơn giản và ít hiệu quả hơn, ví dụ tính toán SI là
trung bình của hai frame chính gần nhất như trong giải pháp video WZ Stanford thời kỳ
đầu. Do đó, trong phạm vi đề tài này, nhóm chủ trì sẽ tập trung nghiên cứu một kỹ thuật
tạo thông tin phụ trợ trong hệ thống mã hóa video phân tán nhằm nâng cao hiệu năng
của hệ thống.
Chúng tôi xin chân thành cảm ơn các đồng nghiệp trong Khoa Kỹ thuật điện tửđãđóng
góp cácý kiến quý báu và xin chân thành cảmơn lãnh đạo Học viện Công nghệ Bưu
chính Viễn thông đã tạo điều kiện để chúng tôi hoàn thành đề tài này.
Hà Nội, ngày 1 tháng 12 năm 2017
Chủ trì đề tài
Mai Liêm Chính
CHƯƠNG 1. TỔNG QUAN VỀ MÃ HÓA VIDEO

1.1. Giới thiệu về mã hóa video

Như chúng ta đều biết, thông tin hình ảnh đặc biệt quan trọng đối với con người nếu
muốn cảm nhận, nhận thức và hiểu về thế giới xung quanh. Với sự phát triển mạnh mẽ
của các công nghệ tiên tiến, đặc biệt trong lĩnh vực mạch tích hợp quy mô rất lớn và
hiệu năng cao của các máy tính và các công cụ tính toán, các dữ liệu video ngày càng
được sử dụng rộng rãi trong cuộc sống hàng ngày của chúng ta. Ví dụ trong các ứng
dụng như điện thoại có hình, điện thoại hội nghị, truyền hình độ nét cao HDTV, và đĩa
video số DVD.
Theo số liệu thống kê của [1], trong năm 2015, Youtube có 400 giờ video được tải lên
mạng mỗi phút. Trong tháng 11, Facebook thông báo rằng có 8 tỉ lượt xem video mỗi
ngày. Theo Tubular Labs, có 654,7 triệu video được tải lên bởi 66,7 triệu người tạo
video. Các video này có 2,8 ngàn tỉ lượt xem, hay trung bình có 4590 lượt xem trên mỗi
video. Các số liệu này cho thấy thị trường quan trọng và đầy tiềm năng của video. Vậy
làm thế nào để các hệ thống mạng có thể truyền tải và lưu trữ một lượng video khổng lồ
như vậy.

1.2. Bản chất của nén video

Trước hết chúng ta tìm hiểu về bản chất của video. Về cơ bản, video là một chuỗi các
khung hình video chứa một lượng lớn dữ liệu. Hãy xem xét một ví dụ minh họa. Mạng
điện thoại chuyển mạch hiện nay (PSTN) có thể hoạt động ở tốc độ bit tối đa 56.600
bit/s. Giả sử có một khung hình video có độ phân giải 288 x 352, tương đương với một
hình ảnh TV và được coi ở định dạng trung bình chung (CIF). Mỗi thành phần màu
RGB (Red, Green, Blue) được hiển thị bằng 8 bit, và như thường lệ, tốc độ khung hình
truyền dẫn là 30 khung hình/s để cung cấp một chuỗi video chuyển động liên tục. Khi
đó, tốc độ bit yêu cầu là 288 x 352 x 3 x 30 = 72.990.720 bps. Vì vậy, tỉ số giữa tốc độ
bit yêu cầu và tốc độ bit cao nhất có thể là khoảng 1289. Điều này nhấn mạnh rằng
chúng ta phải nén dữ liệu video ít nhất 1289 lần để có thể truyền được dữ liệu ở ví dụ
này.
Nén video hay mã hóa video là quá trình làm giảm lượng dữ liệu yêu cầu để biểu diễn
một tín hiệu video số, trước khi truyền hoặc lưu trữ. Qúa trình giải nén hay giải mã,
nhằm khôi phục lại tín hiệu video số từ biểu diễn đã nén, trước khi hiển thị. Dữ liệu
video số thường chiếm một lượng lưu trữ lớn hoặc truyền đi và vì vậy việc mã hóa và
giải mã video, hay video coding, là cần thiết cho bất cứ ứng dụng nào khi mà dung
lượng lưu trữ hoặc băng thông truyền dẫn bị hạn chế.
1.3. Mã hóa Video

1.3.1. Các vấn đề trong mã hóa video

Các kỹ thuật nén video số đóng một vai trò quan trọng trong các hệ thống viễn thông và
đa phương tiện mà ở đó băng tần vẫn là một tài nguyên hạn chế. Vì vậy, các kỹ thuật mã
hóa video có nhiệm vụ giảm lượng thông tin cần để biểu diễn nguồn video mà không
làm giảm đáng kể chất lượng của nó, thường được đánh giá bằng cảm nhận của người
xem. Cụ thể, các mục tiêu chính của các kỹ thuật nén video là:
Hiệu suất nén cao: Băng tần là một tài nguyên rất hạn chế và khan hiếm. Với
một lượng dữ liệu video lớn, việc sử dụng các kỹ thuật mã hóa hiệu quả là rất cần thiết.
Mặc dù các kỹ thuật mã hóa hiện nay có thể cung cấp tỉ lệ nén rất cao, vẫn cần hiệu suất
nén cao hơn để cải thiện chất lượng video (nghĩa là định dạng lớn hơn, tốc độ khung
hình cao hơn và chất lượng hình ảnh tốt hơn) tại các tốc độ bit rất thấp.
Giảm độ phức tạp tính toán: Trong nhiều thiết bị đầu cuối, năng lực xử lý và tuổi
thọ pin rất hạn chế và là các tài nguyên khan hiếm. Để xử lý video yêu cầu lượng đáng
kể năng lực tính toán, do đó sử dụng các kỹ thuật làm giảm độ phức tạp là rất cần thiết.
Cải thiện khả năng chống lỗi: Các kênh truyền dẫn, đặc biệt với các kênh vô tuyến, là
môi trường có tỉ lệ lỗi bit cao do hàng loạt các cơ chế tổn thất, ví dụ như fading đa
đường, nhiễu xuyên kênh. Trong trường hợp video, các ảnh hưởng của các lỗi này sẽ
làm giảm cấp rất nhiều đối với chất lượng video vì thực tế rằng luồng bit đã được nén
rất cao để đáp ứng các hạn chế của băng tần. Thực tế thì nén càng nhiều, luồng bit càng
nhạy cảm với nhiễu bởi vì trong trường hợp này mỗi bit phải biểu diễn một lượng video
lớn hơn. Ảnh hưởng của nhiễu đến video cũng bị tăng lên khi sử dụng mã hóa dự đoán
và mã hóa chiều dài thay đổi (VLC- Variable length coding). Việc sử dụng các phương
pháp mã hóa như thế này có thể dẫn đến lan truyền lỗi theo thời gian và không gian. Vì
vậy, không khó để nhận ra rằng lỗi có thể giảm cấp nghiêm trọng cho video nén và việc
sử dụng các kỹ thuật chống lỗi là rất cần thiết.
Trên đây là ba yêu cầu cơ bản khi nhắc đến các kỹ thuật mã hóa video, nhưng cũng cần
nhấn mạnh rằng đây không phải là các yêu cầu duy nhất đối với một hệ thống truyền
video. Các yêu cầu như độ trễ thấp, tính tương thích, khả năng liên lớp và bảo mật có độ
quan trọng tương tự nhau. Nhưng như chúng ta dễ dàng nhận thấy, ba yêu cầu này luôn
luôn xung đột với nhau và rất khó để đạt được cả ba yêu cầu này cùng một lúc. Thực tế,
các chuẩn mã hóa video dự đoán như H264, HEVC cho hiệu suất nén cao nhưng độ
phức tạp bộ mã hóa cũng cao và khả năng chống lỗi chưa tốt. Ngược lại các nghiên cứu
cho thấy các hệ thống mã hóa video phân tán có độ phức tạp thấp hơn và khả năng
chống lỗi tốt hơn so với các chuẩn truyền thống.

1.3.2. Các thành phần của hệ thống mã hóa video

Mục tiêu của mã hóa video là để giảm, hay nén số lượng bit cần sử dụng để biểu diễn
video. Các tín hiệu video chứa ba loại dư thừa: dư thừa không gian, dư thừa thời gian và
dư thừa thống kê.
Dư thừa không gian: Trong miền không gian thường có sự tương quan cao giữa
các pixel ở gần nhau, nghĩa là giá trị của các mẫu lân cận thường rất giống nhau. Giảm
dư thừa không gian bằng cách sử dụng các kỹ thuật nén dữ liệu, ví dụ mã hóa biến đổi.
Dư thừa thời gian: Giữa các khung hình liên tiếp thường có sự tương quan với
nhau. Giảm dư thừa thời gian, ví dụ bằng cách mã hóa sự sai khác giữa các khung hình
gần nhau.
Dư thừa mã hóa: Nhằm làm giảm dư thừa giữa các ký tự dữ liệu được nén, ví dụ
sử dụng các kỹ thuật mã hóa chiều dài thay đổi.
Ngoài ra còn có thể kể đến dư thừa do cảm nhận hình ảnh. Do thực tế là hệ
thống thị giác người (HVS- Human Visual System) ít nhạy cảm với thông tin hình ảnh
nào đó so với các thông tin hình ảnh khác. Do đó có thể giảm bớt các thông tin hình ảnh
mà mắt người ít nhạy cảm sẽ giúp giảm bớt lượng bit cần biểu diễn mà không làm giảm
nhiều chất lượng của video.
Các codec video thường dựa trên việc giảm hoặc loại bỏ các loại dư thừa này. Hình 1.1
mô tả các thành phần chính của bộ mã hóa video. Mỗi thành phần được thiết kế để giảm
một trong các loại dư thừa cơ bản ở trên.
[Hình 1. 1 Sơ đồ khối của bộ mã hóa Video]
Trong Hình 1.1, sơ đồ khối một bộ mã hóa video gồm mô hình dự đoán, mô hình không
gian và một bộ mã hóa entropy. Đầu vào của mô hình dự đoán là một chuỗi video “thô”
chưa được nén. Khối dự đoán nỗ lực giảm sự dư thừa bằng cách khai thác sự tương
đồng giữa các khung hình video lân cận và/hoặc các mẫu ảnh lân cận nhau, thông
thường bằng cách xây dựng một dự đoán về khung hình hoặc khối video hiện thời của
dữ liệu video. Trong H.264/AVC, dự đoán được tạo ra từ dữ liệu trong khung hình hiện
thời hoặc trong một (hoặc nhiều) khung hình quá khứ và /hoặc tương lai. Nó được tạo ra
bằng cách ngoại suy không gian từ các mẫu ảnh lân cận, dự đoán nội ảnh (intra
prediction), hoặc bằng cách bù sự sai khác giữa các khung hình, dự đoán ngoại ảnh hoặc
bù chuyển động (inter or motion compensated prediction). Đầu ra của khối dự đoán là
một khung hình sai khác, được tạo ra bằng cách trừ dự đoán với khung hình hiện thời
thực sự, và một tập các tham số mô hình chỉ báo loại dự đoán intra hoặc mô tả cách
chuyển động được bù như thế nào.
Khung hình sai khác trở thành đầu vào cho khối mô hình không gian, khối này tận dụng
sự tương đồng giữa các mẫu nội bộ trong khung hình sai khác để giảm dư thừa không
gian. Trong H264/AVC, điều này được thực hiện bằng cách áp dụng biến đổi đối với
các mẫu dư thừa và lượng tử hóa các kết quả. Biến đổi nhằm chuyển các mẫu sang một
miền khác trong đó chúng được biểu diễn bằng các hệ số biến đổi. Các hệ số được
lượng tử hóa để loại bỏ các giá trị không quan trọng, giữ lại một số lượng nhỏ các hệ số
quan trọng sẽ tạo ra một biểu diễn gọn hơn nhiều cho khung hình sai khác. Đầu ra của
khối mô hình không gian là một tập các hệ số biến đổi được lượng tử hóa.
Các tham số của khối mô hình dự đoán, bao gồm chế độ dự đoán intra hoặc chế độ dự
đoán inter và vector chuyển động, khối không gian, tức là các hệ số, được nén bởi bộ
mã hóa entropy. Khối này sẽ loại bỏ dư thừa thống kê trong dữ liệu, ví dụ biểu diễn các
vector và các hệ số có xác suất xảy ra thường xuyên bằng các mã nhị phân ngắn. Bộ mã
hóa entropy tạo ra một luồng bit hoặc file được nén để có thể truyền và/hoặc lưu trữ.
Chuỗi nén bao gồm các tham số dự đoán và các hệ số sai khác được mã hóa và thông tin
tiêu đề.
Bộ giải mã video tái tạo lại khung hình video từ luồng bit được nén. Các hệ số và tham
số dự đoán được giải mã bởi bộ giải mã entropy, sau đó khối không gian được giải mã
để tái tạo một phiên bản của khung hình sai khác. Bộ giải mã sử dụng các tham số dự
đoán, cùng với các pixel ảnh được giải mã trước đó, để tạo nên dự đoán về khung hình
hiện thời, và bản thân khung hình được tái tạo lại bằng cách cộng khung hình sai khác
với dự đoán này.

1.3.3. Giảm dư thừa thời gian

Trong giai đoạn đầu của nén ảnh, các công cụ xử lý tín hiệu và thiết bị lưu trữ đều là các
tài nguyên khan hiếm. Tại thời điểm này, một phương pháp đơn giản để giảm dư thừa là
dự đoán giá trị của các pixel dựa trên các giá trị đã được mã hóa trước đó và mã hóa
phần sai số dự đoán. Phương pháp này gọi là Điều chế mã xung vi sai (DPCM –
Differential Pulse Code Modulation). Hình 1.2 mô tả sơ đồ khối của một CODEC (bộ
mã hóa/giải mã) DPCM ở đó chỉ sự sai khác giữa phần dự đoán và dữ liệu hiện thời
được lượng tử hóa và mã hóa để truyền. Tại bộ giải mã, tín hiệu sai khác nhận được sẽ
được cộng với dự đoán tại phía giải mã để tái tạo lại tín hiệu. Để bộ giải mã có thể tạo
một dự đoán giống phía mã hóa, bộ mã hóa cần phải tạo ra dự đoán mà chỉ sử dụng dữ
liệu sẵn có tại phía giải mã, nghĩa là dữ liệu đã được mã hóa và truyền rồi.

Hình 1. 2 Sơ đồ khối của một Codec DPCM


Các dự đoán tốt nhất là từ các pixel lân cận, hoặc là từ cùng khung hình đó hoặc các
pixel từ khung hình trước đó, hoặc là sự kết hợp của chúng. Loại thứ nhất được gọi là
mã hóa dự đoán nội ảnh và loại thứ hai là mã hóa dự đoán liên ảnh. Sự kết hợp của
chúng được gọi là mã hóa dự đoán lai ghép.
Bằng cách sử dụng sự sai khác giữa các ảnh liên tiếp, có thể giảm được dư thừa thời
gian. Đây chính là mã hóa liên ảnh. Đối với các phần tĩnh của chuỗi ảnh, sự sai khác
thời gian sẽ gần bằng 0 và vì vậy không cần phải mã hóa. Các phần có sự thay đổi giữa
các khung hình, hoặc là do sự thay đổi độ sáng hoặc do chuyển động của các đối tượng,
gây ra sai khác ảnh đáng kể và chúng cần được mã hóa. Các thay đổi của ảnh do chuyển
động có thể giảm đáng kể nếu có thể dự đoán được chuyển động của đối tượng, và sự
sai khác được lấy trên ảnh bù chuyển động.
Tuy nhiên vấn đề là nếu dự đoán cho mỗi pixel thì số lượng thông tin cần gửi đi đến bộ
giải mã lại rất lớn, điều này làm mất đi ưu điểm của truyền sự sai khác vì có dung lượng
nhỏ. Giải pháp cho vấn đề này là thực hiện dự đoán và bù chuyển động trên từng khối.

1.4. Dự đoán và bù chuyển động theo khối

Một phương pháp thực tế và được sử dụng rộng rãi là bù chuyển động cho các vùng chữ
nhật hay khối (block) của khung hình hiện thời. Quy trình sau đây được thực hiện cho
mỗi khối M x N mẫu trong khung hình hiện thời:
Tìm kiếm một vùng của sổ của khung hình tham chiếu, khung hình quá khứ hoặc tương
lai, để tìm ra một vùng mẫu M x N tương tự. Tìm kiếm này có thể được thực hiện bằng
cách so sánh khối M x N trong khung hình hiện thời với một vài hoặc toàn bộ các khối
M x N có thể trong cửa sổ tìm kiếm, nghĩa là một vùng có tâm là vị trí của khối hiện
thời, và tìm kiếm vùng có sự phù hợp tốt nhất. Tiêu chí đối sánh thông dụng là năng
lượng dư thừa được tạo ra bằng cách trừ khối M x N hiện thời cho vùng ứng viên, sao
cho vùng ứng viên nào tối thiểu hóa năng lượng dư thừa sẽ được chọn là sự phù hợp
nhất. Quá trình tìm khối phù hợp nhất gọi là dự đoán chuyển động.
Khối sai khác được mã hóa và truyền và sự dịch chuyển giữa khối hiện thời và
vị trí của vùng ứng viên (vector chuyển động) cũng được truyền.
Bộ giải mã sử dụng vector chuyển động nhận được để tái tạo lại vùng dự đoán. Nó giải
mã khối sai khác, cộng nó vào bộ dự đoán và tái tạo lại phiên bản của khối ban đầu.
Bù chuyển động dựa trên khối rất phổ biến vì một số lý do. Nó tương đối rõ ràng và dễ
tính toán, phù hợp tốt với khung hình video hình chữ nhật và các biến đổi ảnh dựa trên
khối ví dụ như DCT và nó cung cấp mô hình thời gian hiệu quả cho nhiều chuỗi video.
Tuy nhiên có một số nhược điểm. Ví dụ, các đối tượng “thực” hiếm khi có cạnh rõ ràng
phù hợp với các biên hình chữ nhật, các đối tượng thường di chuyển một phần vị trí
pixel giữa các khung hình và nhiều loại chuyển động đối tượng rất khó để bù khi sử
dụng các phương pháp dựa trên khối, ví dụ các đối tượng bị biến dạng, quay, chuyển
động phức tạp và làm cong ví dụ như đám khói. Mặc dù có nhược điểm, bù chuyển
động dựa trên khối là cơ sở cho mô hình dự đoán thời gian được sử dụng bởi tất cả các
chuẩn mã hóa video hiện thời.

1.5. Giảm dư thừa không gian

Mã hóa biến đổi được sử dụng chủ yếu để loại bỏ dư thừa không gian trong ảnh bằng
cách ánh xạ các pixel sang miền biến đổi trước khi giảm dư thừa. Điểm mạnh của mã
hóa biến đổi để đạt được nén dữ liệu là ở chỗ phần lớn năng lượng của ảnh tập trung
chủ yếu vào vùng tần số thấp và vì vậy vào một số ít các hệ số biến đổi. Các hệ số này
sau đó sẽ được lượng tử hóa với mục đích loại bỏ các hệ số không quan trọng mà không
làm ảnh hưởng nhiều đến chất lượng ảnh tái tạo. Qúa trình lượng tử hóa vì vậy là có tổn
thất vì các giá trị ban đầu không được giữ lại nguyên vẹn.
Đối với mã hóa video, biến đổi cosine rời rạc (DCT) được lựa chọn. Lý do là vì các
vector cơ sở thay đổi mượt mà rất giống với sự thay đổi cường độ của hầu hết các ảnh
tự nhiên, điều này dẫn đến năng lượng của ảnh tập trung vào một số lượng nhỏ các hệ
số. Vì lý do này, hiệu năng méo – tốc độ (RD-Rate Distortion) của DCT gần bằng so
với biến đổi Karhunen-Loeve, loại biến đổi được coi là tối ưu.
Biến đổi DCT hoạt động trên X, một khối mẫu N x N, thường là các mẫu ảnh hoặc giá
trị dư thừa sau khi dự đoán, để tạo ra Y, một khối N x N các hệ số. Hoạt động của DCT
và biến đổi ngược của nó, IDCT có thể được mô tả theo ma trận biến đổi A. DCT thuận
(FDCT – Forward DCT) của một khối mẫu N x N được cho dưới đây

1.6. Lượng tử hóa các hệ số DCT

Biến đổi DCT cho các khối thực sự không tạo ra nén. Một khối gồm 64 hệ số được biến
đổi thành 64 hệ số. Do tính trực giao của biến đổi, năng lượng trong cả hai miền pixel
và biến đổi là như nhau, vì vậy không tạo ra nén. Tuy nhiên, biến đổi làm cho phần
năng lượng lớn của ảnh tập trung vào các thành phần tần số thấp, với một lượng lớn các
hệ số lại có năng lượng rất thấp. Để giảm tốc độ bit thực hiện lượng tử hóa và mã hóa
chiều dài thay đổi (VLC:Variable Length Code) đối với các hệ số DCT. Hơn nữa, bằng
cách khai thác đặc tính của mắt người, đó là ít nhạy cảm với méo ở các vùng tần số cao,
ta có thể áp dụng lượng tử hóa thô hơn tại vùng tần số này để đạt được tỉ lệ nén cao hơn.
Kích thước bước lượng tử lớn hơn làm cho nhiều hệ số trở thành 0 và do đó đạt được
nén, tất nhiên chất lượng ảnh sẽ giảm đi.
Bộ lượng tử hóa ánh xạ một tín hiệu với một dải các giá trị X thành một tín hiệu lượng
tử với dải các giá trị Y giảm đi. Có thể biểu diễn tín hiệu lượng tử với ít bit hơn so với
tín hiệu gốc bởi vì dải các giá trị có thể nhỏ hơn. Bộ lượng tử hóa vô hướng (scalar
quantizer) ánh xạ một mẫu của tín hiệu đầu vào thành một giá trị đầu ra lượng tử và một
bộ lượng tử hóa vector (vector quantizer) ánh xạ một nhóm các mẫu đầu vào, một
“vector”, thành một nhóm các giá trị lượng tử hóa.

1.7. Kết luận

Để giảm nhiều hơn nữa số lượng bit, các hệ số biến đổi và các tọa độ của vector chuyển
động được mã hóa chiều dài biến đổi VLC. Trong VLC, các từ mã ngắn được ấn định
cho các giá trị có xác suất cao và các từ mã dài cho các giá trị có xác suất thấp. Chiều
dài của các mã sẽ tỉ lệ nghịch với xác suất xuất hiện của các ký tự khác nhau trong
VLC. Có hai loại VLC được sử dụng trong các CODEC video tiêu chuẩn. Đó là mã
Huffman và mã số học. Cần lưu ý rằng mã Huffman là một mã VLC thực tế, nhưng hiệu
quả nén của nó không bao giờ đạt đến entropy của nguồn do ràng buộc rằng các ký tự
được ấn định phải có số lượng bit nguyên. Tuy nhiên, mã số học có thể tiệm cận entropy
bởi vì các ký tự không được mã hóa riêng biệt. Mã Huffman được sử dụng trong tất cả
các CODEC tiêu chuẩn để mã hóa các hệ số DCT lượng tử hóa cũng như vector chuyển
động. Mã số học được sử dụng trong JPEG, H.263 và mã hóa ảnh của MPEG-4 có yêu
cầu nén nhiều hơn.
CHƯƠNG 2. KIẾN TRÚC MÃ HÓA VIDEO PHÂN TÁN
2. 1. Mã hóa Video phân tán
2.1.1. Định lý Slepian-Wolf và Wyner-Ziv
Trước hết chúng ta xác định bài toán: Giả sử và là hai chuỗi video có phân bố độc
lập, giống nhau, tương quan thống kê từ hai bộ mã hóa riêng biệt nhưng đều biết về sự
tồn tại của nhau. Bộ giải mã cũng có đầy đủ thông tin về các bộ mã hóa. Bài toán là xác
định tốc độ (bit) mã hóa tối thiểu cho mỗi nguồn video sao cho giải mã kết hợp tại bộ
giải mã có thể tái tạo lại mỗi nguồn với đủ độ chính xác. Bài toán này có thể được giải
quyết bằng cách sử dụng entropy kết hợp vì các chuỗi video và là tương quan thống
kê. Có hai phương pháp để tái tạo chúng:

Hình 2. 1. Kiến trúc mã hóa video: a. Phương pháp mã hóa video dự đoán; b. Phương
pháp mã hóa video phân tán.

Định lý Slepian-Wolf đối với nén không tổn thất: Với hai chuỗi ngẫu nhiên phụ thuộc
thống kê, độc lập và có phân bố giống nhau, X và Y, tốc độ tối thiểu để mã hóa độc lập
hai nguồn tương quan bằng tốc độ tối thiểu khi mã hóa kết hợp với xác suất lỗi nhỏ tùy
ý.

Định lý Wyner-Ziv đối với nén có tổn thất: Wyner-Ziv đề xuất mở rộng của định lý
Slepian-Wolf bằng cách định nghĩa một kịch bản tương tự về việc mã hóa độc lập
nhưng trong ngữ cảnh nén có tổn thất và nguồn Y (thông tin phụ trợ) chỉ sẵn có ở bộ
giải mã. Định lý phát biểu rằng khi thực hiện mã hóa độc lập X với thông tin phụ trợ Y
với một số điều kiện: X và Y là các nguồn Gaussian kết hợp, không nhớ và có xét đến
giá trị sai khác bình phương trung bình (Mean Square Error – MSE) thì sẽ không có tổn
thất về hiệu suất mã hóa so với trường hợp mã hóa kết hợp.
Định lý Wyner-Ziv còn được gọi là định lý mã hóa video phân tán Wyner-Ziv. Kiến
trúc mã hóa này được mô tả trong Hình 2.2.

Hình 2. 2. Kiến trúc logic Wyner-Ziv


2.1.2. Ví dụ minh họa quá trình mã hóa với thông tin phụ trợ
Để hiểu hơn về quá trình mã hóa với thông tin phụ trợ có thể xem xét ví dụ dưới đây.
Hình 2. 3. Ví dụ quá trình mã hóa với thông tin phụ trợ
Cho X và Y là dữ liệu nhị phân chiều dài 3 bit nhận một trong 8 trường hợp đồng xác
suất, riêng biệt nhau và có tương quan với nhau. Tương quan giữa chúng phải thỏa mãn
khoảng cách Hamming giữa X và Y lớn nhất bằng 1. Y sẵn có ở bộ giải mã sử dụng 3
bit. Trường hợp (a) cả bộ mã hóa và bộ giải mã sử dụng thông tin phụ trợ Y có tương
quan với X. Khi đó có thể mã hóa X bằng 2 bit. Trường hợp (b), chỉ bộ giải mã truy
nhập được Y. Tuy nhiên trong trường hợp này, X cũng có thể được mã hóa bằng 2 bit.
Cụ thể, với Y cho trước (ví dụ, [010], X hoặc là giống Y ([010] hoặc ([110]), ([000]),
([011]). Mục tiêu là mã hóa X một cách hiệu quả trong hai kịch bản được mô tả trong
Hình 2.5 sao cho nó có thể tái tạo hoàn hảo ở bộ giải mã.
Kịch bản 1: Trong kịch bản đầu tiên (xem hình 2.5(a)), Y xuất hiện ở cả hai phía mã
hóa và giải mã (Y có thể sẵn có ở phía giải mã sử dụng 3 bit). Ở đây X có thể được dự
đoán từ Y. Dư thừa hoặc mẫu sai khác của X tương ứng với Y nhận 4 giá trị riêng biệt
và do đó có thể được mã hóa bằng 2 bit. Đây là tỉ lệ ít nhất có thể (tốt nhất) để mã hóa
X. Bộ giải mã có thể kết hợp mẫu sai khác với Y để giải mã ra X. X tương tự như khối
video hiện thời cần mã hóa, Y tương tự như dự đoán từ bộ nhớ các khung hình, tương
quan giữa X và Y tương tự như tương quan thời gian giữa các khung hình video liên
tiếp, và vì vậy chế độ mã hóa này tương tự như mã hóa dự đoán.
Chú ý rằng việc phân chia X này cũng mang tính phổ quát. Nghĩa là, cùng một cách
phân chia X cho tất cả các Y không quan tâm đến giá trị của Y, chỉ cần cả X và Y thỏa
mãn cấu trúc tương quan. Ví dụ, nếu X là [010] thì cùng một cách mã hóa X (chỉ số của
coset 3) sẽ được áp dụng cho tất cả các trường hợp của Y nghĩa là, [010], [110], [000],
[011]. Vì vậy nếu Y nhận giá trị [010] và trong quá trình truyền dẫn tới bộ giải mã, nó
trở thành [110] để bộ giải mã có một phiên bản lỗi của Y, X vẫn có thể được khôi phục
lại một cách chính xác. Đó là bởi vì phiên bản lỗi của Y cũng thỏa mãn cấu trúc tương
quan. Vì vậy, không giống với mã hóa dự đoán, sẽ không có sự phụ thuộc giữa việc mã
hóa X và giá trị của thông tin tương quan Y, do đó cung cấp khả năng chống lỗi cao.
Dựa trên nền tảng lý thuyết về DVC trong những năm 70, việc thiết kế các hệ thống
DVC thực tế đã được đề xuất trong những năm gần đây. Đóng góp quan trọng nhất là
của hai nhóm nghiên cứu chính chịu trách nhiệm phát triển các hệ thống mã hóa video
nguồn phân tán có liên quan là: nhóm của giáo sư Bernd Girod tại Đại học Stanford hay
còn gọi là kiến trúc Stanford mà sau này được cải tiến thành codec DISCOVER và
nhóm của giáo sư Kannan Ramchandran tại Berkeley (Đại học California) còn được biết
đến là kiến trúc PRISM.
2.2. Kiến trúc mã hóa video WZ Stanford
Kiến trúc mã hóa video WZ lần đầu được đề xuất vào năm 2002 cho miền pixel, và sau
đó được mở rộng sang miền biến đổi. Hình 2.4 mô tả codec video WZ Stanford miền
biến đổi.
Tại phía mã hóa:
1) Chia tách khung hình: Chuỗi video được chia thành các khung hình Wyner-Ziv (WZ)
và khung hình chính (KF) tương ứng với nguồn X và Y như đã đề cập ở phần trước.
Các khung hình chính được mã hóa intra bởi các chuẩn mã hóa video truyền thống còn
các khung hình WZ được mã hóa theo nguyên tắc Wyner-Ziv.
2) Mã hóa biến đổi: Các khung hình WZ được mã hóa biến đổi, thông thường là biến
đổi DCT. Các hệ số DCT của toàn bộ khung hình WZ được nhóm lại với nhau, theo vị
trí của mỗi hệ số DCT trong một khối, tạo thành các dải hệ số DCT.

3) Lượng tử hóa: Mỗi dải DCT được lượng tử hóa đồng nhất với số lượng các mức tùy
thuộc vào chất lượng yêu cầu. Đối với một dải DCT cho trước, các bit của các ký tự đã
lượng tử hóa được nhóm với nhau tạo thành các mặt phẳng bit. Các mặt phẳng bit này
sau đó được mã hóa turbo độc lập.
4) Mã hóa turbo: Mã hóa turbo cho mỗi dải DCT bắt đầu với mặt phẳng bit quan trọng
nhất (MSB). Các thông tin chẵn lẻ được tạo ra cho mỗi mặt phẳng bit sau đó được lưu
trong bộ đệm và được gửi theo từng gói tùy theo yêu cầu từ phía bộ giải mã dựa trên
kênh phản hồi.
2.3. Kiến trúc mã hóa video WZ Bekerly (PRISM)
Kiến trúc bộ mã hóa và giải mã được mô tả trong Hình 2.5, nhấn mạnh đến các module
mã hóa chính.
Trước tiên, các khung hình (thông thường chỉ độ sáng nhưng giải pháp tương tự cũng có
thể áp dụng cho độ chói) được chia thành các khối 8 x8 không chồng lấn nhau. Mỗi
khối sau đó được mã hóa độc lập sử dụng các module mã hóa sau:
1) DCT (Biến đổi cosine rời rạc): DCT làm bộc lộ dư thừa không gian và cung cấp biểu
diễn trong miền tần số của tín hiệu. Vì các hệ số DCT có các đặc tính khác nhau, chúng
sẽ được xử lý tiếp theo các cách khác nhau. Qúa trình này tạo ra ma trận các hệ số biến
đổi đối với mỗi khối (được quét zig-zag) để tạo ra luồng mã hóa.
2) Bộ lượng tử hóa: Tiếp theo áp dụng lượng tử hóa vô hướng lên các hệ số DCT thu
được từ module mã hóa trước. Bước lượng tử hóa được lựa chọn cho mỗi hệ số được
xác định bởi chất lượng tái tạo mong muốn trong khi vẫn xem xét đến độ nhạy khác
nhau của hệ thống thị giác người (HVS) đối với các tần số không gian khác nhau.
2.4. So sánh hai kiến trúc Wyner-Ziv của Stanford và Berkeley
Trong khi các lý do mà cộng đồng nghiên cứu chấp nhận kiến trúc WZ Stanford vẫn
chưa rõ ràng, từ quan điểm kỹ thuật, các sự khác nhau chính về mặt chức năng giữa các
bộ codec video WZ thời kỳ đầu có thể tóm tắt như sau (Stanford và Berkeley):
Mã hóa dựa trên frame với mã hóa dựa trên khối.
Điều khiển tốc độ bộ giải mã và điều khiển tốc độ bộ mã hóa – trong trường hợp
đầu cần có kênh phản hồi, điều này hạn chế các ứng dụng thời gian thực trong khi đó
xây dựng giải pháp điều khiển tốc độ đơn giản hơn nhiều.
Bộ mã hóa cực đơn giản và bộ mã hóa phức tạp hơn và thông minh hơn.
Mã kênh phức tạp hơn với mã kênh đơn giản hơn – Codec video WZ Stanford
sử dụng các mã kênh phức tạp hơn cho module mã hóa Slepian –Wolf, chủ yếu là mã
turbo và LDPC, điều này cho phép tiến đến hiệu năng RD tổng thể cao hơn.
Không dữ liệu phụ trợ với các mã băm – Trong hệ thống thứ hai, bộ mã hóa gửi
các thông tin phụ trợ /giúp đỡ về khung hình hiện thời để giúp bộ giải mã trong quá
trình ước lượng chuyển động.
Khả năng chống nhiễu thấp hơn với khả năng chống nhiễu cao hơn – Cách tiếp
cận giống như tìm kiếm chuyển động PRISM được thực hiện ở phía giải mã cho phép
tìm ra SI ít bị lỗi hơn, và vì vậy giảm ảnh hưởng của nhiễu dư thừa liên quan đến lỗi
kênh.
Theo thời gian, một số sự khác nhau giữa hai bộ codec video WZ này cũng đã mờ dần,
ví dụ ngày này bộ codec dựa trên Stanford ngày này với mã hóa intra dựa trên khối lựa
chọn, bộ mã hóa truyền chữ ký băm và không cần kênh phản hồi. Tuy nhiên, sau một
vài năm, khoảng cách về hiệu năng giữa hai giải pháp này vẫn khá lớn, ít nhất là khía
cạnh hiệu năng RD không lỗi. Tháng 11 năm 2007, dự án châu âu DISCOVER
(DIStributed Coding for video sERvices) đã cho các kết quả về hiệu năng RD không lỗi
đối với codec video WZ dựa trên Stanford – các kết quả này có thể thực hiện tốt hơn
Intra H.264/AVC và, đôi khi, thậm chí cả H.264/AVC Zero Motion với độ phức tạp mã
hóa thấp hơn. Vào tháng 10 năm 2007, đội Berkeley công bố kết quả hiệu năng RD
không lỗi chỉ hơn một chút so với mã hóa H.263+ với cả hai bộ mã hóa thực hiện ước
lượng chuyển động bộ mã hóa; tuy nhiên, với điều kiện có thiên hướng lỗi không dây,
đáng chú ý là lỗi gói theo chuẩn CDMA2000 1X, PRISM thực hiện tốt hơn so với
H.263 + cũng như tốt hơn H.263+ với hiệu chỉnh lỗi trước (FEC) và H.263+ với làm
mới intra, tạo ra giảm cấp lỗi nhỏ
2.5. Kết luận
Trong các hệ thống DVC đã trình bày có thể thấy vai trò quan trọng của thông tin phụ
trợ. Tạo thông tin phụ trợ càng chính xác thì số lượng bit phía mã hóa gửi đi càng ít và
chất lượng của thông tin tái tạo tại phía giải mã càng tốt. Đó là lý do đề tài này tập trung
đề xuất một phương pháp tạo thông tin phụ trợ cho hệ thống mã hóa video phân tán.

KẾT LUẬN & HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI


Đề tài này đã tập trung giới thiệu tổng quan về mã hóa video nói chung, các module
trong kiến trúc mã hóa video truyền thống và kiến trúc mã hóa video phân tán. Trong
mã hóa video phân tán thì việc tạo thông tin phụ trợ đóng một vai trò hết sức quan
trọng. Do đó đề tài đã đề xuất một phương pháp tạo thông tin phụ trợ dựa trên kỹ thuật
siêu phân giải. Các kết quả mô phỏng cho thấy phương pháp này đạt được các kết quả
tốt hơn so với một số phương pháp trước đó.
Đề tài dự kiến sẽ tiếp tục cải tiến hiệu năng của kỹ thuật mã hóa video phân tán bằng
cách thay đổi các module khác trong hệ thống. Từ đó có thể nâng cao hiệu quả nén cũng
như giảm được độ phức tạp ở phía mã hóa của kỹ thuật mã hóa video phân tán.

TÀI LIỆU THAM KHẢO


[1] P.L Dragotti and M. Gastpar, “Distributed Source Coding: Theory, Algorithms and
applications,” Academic Press, Feb. 2009.
[2] J. Boyce et al. , Overview of SHVC: Scalable Extensions of the High Efficiency
Video Coding (HEVC) Standard, IEEE TCSVT, vol. 26, no. 1, pp. 20-34, Jan. 2016.
[3] X. HoangVan, J. Ascenso, and F. Pereira, “HEVC backward compatible scalability:
A low encoding complexity distributed video coding based approach,” Signal Process.:
Image Commun., vol. 33, no. 4, pp. 51-70, Apr. 2015.
[4] X. HoangVan, J. Ascenso, and F. Pereira., “Adaptive Scalable Video Coding: a
HEVC based Framework Combining the Predictive and Distributed Paradigms”, IEEE
TCSVT, vol. 99, no. 00, pp. 1-14, Mar. 2016.
[5] A. Aaron, R. Thang, and B. Girod (2002) “Wyner-Ziv Coding of Motion Video”, in
Proc. Asilomar Conference on Signals and Systems, Pacific Grove, CA, USA,
November 2002.

You might also like