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

Phương pháp nén video tiên tiến AVC và ứng dụng

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.46 MB, 0 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
TRƯỜNG
ĐẠITHÔNG
HỌC BÁCH
KHOA
HÀ NỘI
VIỆN CÔNG
NGHỆ
TIN VÀ
TRUYỀN
THÔNG
VIỆN CÔNG NGHỆ
THÔNG* TIN
VÀ TRUYỀN THÔNG
────────
───────
──────── * ───────

BÀI TẬP LỚN
BÀI TẬP LỚN

TRUYỀN
THÔNG

XỬ LÝ DỮ LIỆU

ĐA
PHƯƠNG
TIỆN
ĐA PHƯƠNG TIỆN
MÃ HỌC PHẦN: IT4681
MÃ HỌC PHẦN: IT4621


ĐỀ TÀI: NÉN VIDEO THEO CHUẨN
ĐỀ TÀI: 14
- PHƯƠNG
PHÁP
NÉN VIDEO
MPEG
VÀ ỨNG
DỤNG
TIÊN TIẾN AVC VÀ ỨNG DỤNG

Sinh viên thực hiện :
Nguyễn
Công
Sinh
viênMinh
thực hiện
: – Lớp CNTT1 01 – K57
Trần Trọng
– Lớp
CNTT1
02 – K57
Nguyễn
MinhGiáp
Công
– MSSV:
20121339
Trần Xuân
Giáp––MSSV:
Lớp CNTT1
02 – K57

Hoàng
Anh Đức
20093795
Nguyễn Hữu Phúc – Lớp CNTT1 02 – K57
Giáo viên hướng dẫn :
Giáo viênNguyễn
hướng dẫn
PGS.TS.
Thị :Hoàng Lan
PGS.TS. Nguyễn Thị Hoàng Lan

HÀ NỘI 05-2016
1


MỤC LỤC

I.

Tìm hiểu chung về chuẩn H.264/MPEG-4 AVC và phương pháp nén video tiên
tiến

1. Giới thiệu chung

3

2. Profile

5


3. Level

6

4. Network Abstraction Layer

7

II. So sánh phương pháp nén video theo chuẩn H.264/MPEG-4 AVC với phương
pháp nén video theo chuẩn MPEG-1
1. So sánh sơ đồ khối 2 phương pháp nén video

8

2. So sánh các điểm khác nhau khác của 2 phương pháp nén video

10

III. Tìm hiểu một thuật toán trong nén video theo chuẩn H.264/MPEG-4 AVC và
thử nghiệm ứng dụng
1. Thử nghiệm nén video theo chuẩn H.264 sử dụng thư viện libx264 (ffmpeg) và
so sánh với nén video theo chuẩn MPEG-1

12

2. Thử nghiệm thuật toán dự đoán kiểu intra đối với block trên Matlab

16

TÀI LIỆU THAM KHẢO


18

2


I.

Tìm hiểu chung về chuẩn H.264/MPEG-4 AVC và phương pháp nén video tiên
tiến

1. Giới thiệu chung
Mục đích ra đời: nén video để có video chất lượng tốt ở tốc độ bit thấp hơn so với
các chuẩn trước (MPEG-2, H.263, MPEG-4 part 2). Sử dụng được chuẩn 1 cách
linh hoạt với nhiều ứng dụng trên nhiều hạ tầng mạng, hệ thống khác nhau. Phiên
bản đầu tiên của H.264/AVC hoàn thành vào 5/2003.

Tính năng Scalable Video Coding (SVC) được bổ sung vào giai đoạn 2005-07.

Video được nén dùng tính năng này sẽ có 1 dòng bit chính và các dòng bit con,
dòng bit chính có thể được giải mã bởi bộ H.264/AVC codec không hỗ trợ SVC.

Tuỳ vào mục đích sử dụng và hệ thống nghe nhìn, các dòng bit con có thể có tần
số lấy mẫu thấp hơn hoặc độ phân giải, chất lượng hình ảnh thấp hơn dòng bit
chính.

Tính năng nổi bật tiếp theo được thêm vào bộ chuẩn này là Multiview Video
Coding (MVC). Nó cho phép tạo nên các dòng bit biểu diễn nhiều hơn 1 góc nhìn
của đoạn video. 1 ứng dụng của MVC là nén video 3D lập thể (tạo ra 2 hình ảnh
khác nhau cho mắt trái và mắt phải). Multiview Video Coding được hoàn thành
vào 11/2009.


Các phiên bản của H.264/MPEG-4 AVC:
Ngày chấp
Phiên thuận cuối
bản
cùng (của
ITU-T)

Sự thay đổi so với phiên bản liền trước

1 30/05/2003 Phiên bản được chấp thuận đầu tiên của H.264/AVC, bao
gồm Baseline, Main và Extended profile
2 07/05/2004 Chỉnh sửa một vài sai sót nhỏ
3 01/03/2005 Lần sửa đổi lớn đầu tiên, mở rộng phạm vi trung thực bằng
việc thêm High, High 10, High 4:2:2 và High 4:4:4 profile
3


4 13/09/2005 Chỉnh sửa vài sai sót nhỏ và thêm 3 tỉ lệ khung hình
5 13/06/2006 Bỏ High 4:4:4 profile
6 13/06/2006 Hỗ trợ các không gian màu rộng hơn
7 06/04/2007 Thêm High 4:4:4 Predictive profile và 4 Intra-only profile
(High 10 Intra, High 4:2:2 Intra, High 4:4:4 Intra và
CAVLC 4:4:4 Intra)
8

22/11/2007 Thêm chức năng Scalable Video Coding gồm Scalable
Baseline, Scalable High và Scalable High Intra profile

9 13/01/2009 Vài chỉnh sửa nhỏ
10 16/03/2009 Định nghĩa thêm Constrained Baseline profile với các khả

năng là tập con các công cụ/thuật toán của Baseline
11 16/03/2009 Thêm Multiview Video Coding với Multiview High Profile
12 09/03/2010 Định nghĩa Stereo High profile của MVC, hỗ trợ nén video
2 góc nhìn, các công cụ nén quét xen kẽ. Định nghĩa thêm 1
tin nhắn SEI.
13 09/03/2010 Vài chỉnh sửa nhỏ
14

29/06/2011 Quy định level 5.2, thêm Progressive High profile

15

29/06/2011 Vài chỉnh sửa nhỏ

16 13/01/2012 Thêm 3 profile mới mục đích dành cho các ứng dụng liên
lạc thời gian thực: Constrained High, Scalable Constrained
Baseline, Scalable Constrained High
17 13/04/2013 Thêm một số tin nhắn SEI
18 13/04/2013 Quy định về mã hoá chiều sâu cho video 3D lập thể, thêm
Multiview Depth High profile
19 13/04/2013 Sửa 1 lỗi liên quan đến quá trình tách dòng bit con của
multiview video
20 13/04/2013 Thêm các định danh cho không gian màu
21 13/02/2014 Cụ thể hoá Enhanced Multiview Depth High profile
22 13/02/2014 Cải tiến MFC (Multi-resolution frame compatible) cho
video 3D lập thể, thêm MFC High profile và một vài thay
đổi nhỏ

4



2. Profile
Profiles:
Profile định nghĩa một tập hợp các công cụ & thuật toán có thể được sử dụng để
tạo ra dòng bit của video. Nói cách khác, profile cho biết các kỹ thuật cụ thể có thể
hay không thể dùng khi nén video sử dụng profile đó (Ví dụ: B-frame là kỹ thuật
không thể dùng ở Baseline Profile nhưng có thể ở Main và High Profile).

Một số profile thường gặp là: Baseline, Extended, Main, High, High 10, High
4:2:2 và High 4:4:4 Predictive profile. Bảng dưới cho biết ở sự khác nhau giữa các
profile:

Từ trái qua phải, profile sử dụng nhiều thuật toán nén tiên tiến hơn, cho chất lượng
video tốt hơn. Vì vậy, Main và High profile sẽ cho chất lượng video tốt hơn
Baseline profile. Nhưng đi kèm với thuật toán nén tiên tiến, quá trình giải nén sẽ
phức tạp hơn và video có thể sẽ không phát được trơn tru trên các máy tính cũ,
chậm.

5


3 profile thường được hỗ trợ nhiều nhất bởi các bộ codec là: Baseline, Main và
High:

- Baseline profile hỗ trợ nén kiểu intra (frame I) và kiểu inter (frame P), mã hoá
entropy kiểu CAVLC (context-adaptive variable length coding). Ứng dụng của
Baseline profile là trong cuộc gọi video và truyền thông không dây.

- Main profile hỗ trợ thêm: nén video kiểu quét xen kẽ (interlaced), mã hoá kiểu
inter dùng frame B, mã hoá kiểu inter dùng weighted prediction, mã hoá

entropy kiểu CABAC (context-adaptive binary arithmetic coding). Ứng dụng
của Main profile: các video nén để lưu trữ dài ngày, truyền hình.

- High Profile hỗ trợ thêm: ma trận lượng tử hoá có tỷ lệ (các giá trị trong ma trận
LTH không bằng nhau), sự lựa chọn sử dụng 8x8 hoặc 4x4 DCT trong 1 block.
High Profile là lựa chọn tối ưu của truyền hình HD và lưu trữ trên đĩa (Blu-ray).

Với máy quay và ứng dụng chỉnh sửa chuyên nghiệp, có thêm 4 intra-frame-only
profile. SVC có các profile riêng: Scalable Baseline Profile, Scalable Constrained
Baseline Profile, Scalable High Profile, Scalable Constrained High Profile,
Scalable High Intra Profile. MVC có các profile riêng: Stereo High Profile,
Multiview High Profile, Multiview Depth High Profile.

3. Level
“Level” (Cấp độ) là tập hợp các giới hạn cho biết mức độ hiệu năng của bộ giải mã
cần thiết đối với 1 profile. Dùng để đánh giá khả năng của bộ giải mã (decoder). Ví
dụ, ở cấp độ 1, bộ giải mã phải làm việc được với video có tốc độ bit tới 64kbit/s
nếu có hỗ trợ Baseline, Extended hoặc Main profile và tới 80 kbit/s nếu có hỗ trợ
High profile. Các cấp độ được sắp xếp từ thấp đến cao (thấp nhất =1, cao nhất
=5.2), khi bộ giải mã ở một cấp độ thì nó phải hỗ trợ giải mã mọi dòng bit mã hoá
cho cấp độ đó và các cấp độ thấp hơn.

6


4. Network Abstraction Layer
Chuẩn H.264/AVC được thiết kế với mục đích sử dụng ở nhiều lớp ứng dụng khác
nhau: hội thoại hoặc không phải hội thoại, trên nhiều hạ tầng mạng khác nhau: từ
các hạ tầng chỉ cho phép tốc độ dữ liệu thấp như Cable Modem, xDSL, UMTS đến
các hạ tầng mạng cho phép tốc độ dữ liệu lớn như: FTTx, LTE… Vì vậy, một tầng

trong suốt với mạng ra đời, gọi là Network Abstraction Layer (NAL). NAL bao
gồm tầng mã hoá video (Video Coding Layer - VCL) và tầng mã hoá các dữ liệu
khác video (Non-video Coding Layer). Công việc của NAL là định dạng tầng VCL
và cung cấp thông tin header một cách phù hợp với tầng giao vận hoặc thiết bị lưu
trữ.

NAL đảm bảo việc tuỳ biến tầng VCL đơn giản, hiệu quả cho nhiều hệ thống đa
dạng. NAL cho phép dữ liệu VCL làm việc với tầng giao vận bằng các cách như:

- Hệ thống RTP/IP cho các dịch vụ Internet thời gian thực
- Định dạng file phù hợp, ví dụ như MP4 để lưu trữ và dịch vụ tin nhắn đa
phương tiện

- Hệ thống H.32x cho các dịch vụ hội thoại
- Hệ thống MPEG-2 cho các dịch vụ phát thanh
Dữ liệu video sau nén được chia thành các NAL unit - mỗi unit là 1 gói chứa 1 số
nguyên byte. Byte đầu tiên là header cho biết loại dữ liệu trong NAL unit. Tất cả
byte còn lại trong unit là phần tải (payload), là dữ liệu thuộc kiểu đã ghi trong
header. Khi NAL unit được truyền trong hệ thống truyền thông hướng dòng bit,
mỗi NAL unit được gắn thêm 3 byte vào trước nó để biết bao giờ kết thúc packet.
Còn trong hệ thống truyền thông hướng packet thì không cần 3 byte này.

NAL unit được chia làm 2 loại: VCL unit và non-VCL unit . Non-VCL unit có thể
chứa các thông tin quan trọng như: bộ thông số (áp dụng với lượng lớn VCL unit),

7


thông tin đồng bộ thời gian, các thông tin khác làm tăng tính hữu dụng của video
giải mã.


II. So sánh phương pháp nén video theo chuẩn H.264/MPEG-4 AVC với phương
pháp nén video theo chuẩn MPEG-1
1. So sánh sơ đồ khối 2 phương pháp nén video

Sơ đồ khối nén video theo chuẩn MPEG-1:

\
Sơ đồ khối nén video theo chuẩn H.264/MPEG-4 AVC:

8


So sánh 2 sơ đồ khối:

- Giống nhau:
• Cả 2 sơ đồ phương pháp nén video theo chuẩn MPEG-1 và nén video theo
chuẩn H.264/MPEG-4 AVC đều có các khối: biến đổi (T), biến đổi ngược (T-1),
lượng tử hoá (Q), lượng tử hoá ngược (Q-1), bộ đệm lưu các frame tham chiếu,
đánh giá chuyển động, bù chuyển động, mã hoá entropy.

- Khác nhau:
• Phương pháp nén video theo chuẩn H.264/MPEG-4 AVC có bộ lọc để khử hiện
tượng blocking thường xuất hiện với các kỹ thuật mã hoá dựa trên DCT. Vị trí
khối này nằm ở trước bộ đệm lưu frame tham chiếu.

9


• Phương pháp nén video theo chuẩn H.264/MPEG-4 AVC giới thiệu thêm kỹ

thuật dự đoán kiểu intra đối với block. Khi khối điều khiển quyết định 1 block
được mã hoá theo cách “dự đoán kiểu intra”, block đó sẽ được đưa vào khối “dự
đoán kiểu intra” đầu tiên, sau đó mới đến biến đổi và lượng tử hoá.

• Sơ đồ nén video chuẩn H.264/MPEG-4 AVC có khối điều khiển mã hoá. Khối
này lựa chọn kỹ thuật được dùng trong các khối biến đổi, lượng tử hoá (dẫn đến
kỹ thuật dùng ở khối lượng tử hoá ngược, biến đổi ngược), đánh giá chuyển
động. Khối này còn quyết định 1 block sẽ được mã hoá theo kiểu intra, dự đoán
intra hay inter. Đầu ra của khối là các dữ liệu điều khiển, sẽ đi qua khối mã hoá
entropy.

• Khối biến đổi của sơ đồ nén video chuẩn MPEG-1 sử dụng phép biến đổi cosine
rời rạc (DCT) còn với nén video chuẩn H.264/MPEG-4 AVC, khối biến đổi sử
dụng kỹ thuật DCT số nguyên và biến đổi Hadamard.

2. So sánh các điểm khác nhau khác của 2 phương pháp nén video

- Dự đoán giữa các frame: MPEG-4 AVC cho phép có tối đa 16 frame tham chiếu
để dự đoán. Với MPEG-1, khi dự đoán frame B chỉ có 1 frame tham chiếu (dự
đoán tiến) hoặc 2 (dự đoán tiến + lùi).

- Với MPEG-4 AVC, trong 1 macroblock 16x16 có thể chia ra nhiều block để ước
lượng chuyển động. Block Y (độ sáng) có thể có 7 kích thước 16x16, 16x8,
8x16, 8x8, 8x4, 4x8, 4x4. Với MPEG-1, đơn vị nhỏ nhất để ước lượng chuyển
động là macroblock 16x16.

- Chuẩn MPEG-4 AVC cho phép ước lượng sử dụng nhiều vector chuyển động
trên 1 macroblock, tối đa = 32 (TH macroblock 16x16 của frame B chứa 16
block 4x4). Với MPEG-1, macroblock được ước lượng bởi tối đa 2 vector
chuyển động.


10


- MPEG-4 AVC: có thể nén các macroblock trong frame B theo mọi kiểu (intra,
dự đoán tiến, dự đoán 2 chiều). Trong MPEG-1, không thể nén macroblock
frame B theo kiểu intra.

- MPEG-4 AVC: vector chuyển động có độ chính xác tới 1/4 pixel, cho phép ước
lượng vùng di chuyển chính xác hơn. Trong MPEG-1: vector chuyển động
chính xác tới 1/2 pixel.

- MPEG-4 AVC có tính năng “weighted prediction”: khi 1 vật chuyển động với
quỹ đạo xác định nhưng độ sáng (luminance) giảm dần thì không thể ước lượng
chuyển động một cách bình thường được. Vì vậy WP ra đời, nó sử dụng các tỷ
lệ và offset trên ma trận của block Y trước khi tìm kiếm ước lượng chuyển
động.

- Block trong MPEG-4 AVC có thể được dự đoán theo không gian: sử dụng cạnh
của các block liền kề để dự đoán toàn bộ block. Khi dự đoán kiểu này thì trong
ảnh Y của macroblock, có thể chia thành các block kích thước 16x16, 8x8, 4x4
để dự đoán. MPEG-1 không có khả năng này.

- MPEG-4 AVC cho phép nén macroblock theo kiểu lossless, sau khi giải mã thu
được dữ liệu giống toàn bộ như trước khi nén. MPEG-1 không có khả năng này.

- MPEG-4 AVC cho phép nén những video kiểu quét xen kẽ (interlaced
scanning), giúp tăng tần số quét cảm nhận mà không tốn thêm băng thông.
Trong đó có 2 kiểu nén: theo macroblock (MBAFF) hoặc theo ảnh (PicAFF).
MPEG-1 không hỗ trợ video quét xen kẽ.


- Các tính năng mới của MPEG-4 AVC trong giai đoạn biến đổi (Transform):
• Sử dụng biến đổi DCT số nguyên thay vì DCT bình thường
11


• Có thể sử dụng biến đổi Hadamard cho thành phần DC của block chroma
- Các tính năng mới của MPEG-4 AVC trong giai đoạn lượng tử hoá:
• Các bước lượng tử được hình thành theo hàm logarit: giúp làm giảm tốc độ bit
• Tối ưu quá trình lượng tử hoá theo mô hình cảm quan
- Giai đoạn mã hoá entropy có những điểm mới: MPEG-4 AVC có các kỹ thuật
mã hoá mới: Mã hoá số học nhị phân theo bối cảnh (context-adaptive binary
arithmetic coding - CABAC), mã hoá từ mã độ dài thay đổi theo bối cảnh
(context-adaptive variable length coding - CAVLC), kỹ thuật ExponentialGolomb coding.

- MPEG-1 dùng chủ yếu ở những video độ phân giải 352x288, 352x240,
320x240, với mục đích lưu trữ là chính. MPEG-4 AVC/H.264 được sử dụng
rộng rãi ở mọi ứng dụng, từ các ứng dụng streaming qua internet, tốc độ dòng
bit thấp, cho đến truyền hình HD và nén các phim điện ảnh, với chất lượng gần
đạt tới “lossless”.

III. Tìm hiểu một thuật toán trong nén video theo chuẩn H.264/MPEG-4 AVC và
thử nghiệm ứng dụng
1. Thử nghiệm nén video theo chuẩn H.264 sử dụng thư viện libx264 (ffmpeg) và
so sánh với nén video theo chuẩn MPEG-1

12


- Đầu vào: video gốc không nén (Ảnh trên)

- Đầu ra: video được nén theo chuẩn H.264 (High profile) với tốc độ bit 512 kb/s
(Ảnh dưới)
- Tỷ số nén: 71:1, PSNR: Y: 37.7 U: 42.4 V: 44.3, avg: 38.9 min: 35.7 max: 43.2

13


- Đầu vào: video gốc không nén (Ảnh trên)
- Đầu ra: video được nén theo chuẩn H.264 (High profile) với tốc độ bit 60 kb/s
(Ảnh dưới)
- Tỷ số nén: 570:1, PSNR: Y: 27.8 U: 37.8 V: 38.5, avg: 29.4 min: 27.0 max: 31.8

14


- Ảnh trên: video nén theo chuẩn MPEG-1 ở tốc độ bit 320 kb/s
- Ảnh dưới: video nén theo chuẩn H.264 (High profile) ở tốc độ bit 320 kb/s
- PSNR video MPEG-1: Y: 29.7 U: 37.8 V: 38.4, avg: 31.1 min: 28.4 max: 44.8
- PSNR video H.264: Y: 35.6 U: 41.2 V: 42.8, avg: 36.8 min: 33.6 max: 39.6

15


Nhận xét:
- Khi nén video theo chuẩn H.264 ở cùng 1 profile, tăng tỷ số nén sẽ dẫn tới suy
giảm chất lượng hình ảnh. Ở tỷ số nén 71:1 chất lượng video tốt, khó phân biệt với
video gốc bằng mắt thường, tăng tỷ số nén lên 570:1 chất lượng video suy giảm rõ
rệt so với video gốc và video nén ở tỷ số 71:1.
- Cùng 1 video được nén ở cùng 1 tốc độ bit nhưng khi sử dụng phương pháp nén
video tiên tiến H.264 cho kết quả chất lượng hình ảnh tốt hơn nhiều khi sử dụng

phương pháp nén video MPEG-1 (quan sát dễ dàng bằng mắt thường và chỉ số
PSNR cũng chứng minh điều đó).

2. Thử nghiệm thuật toán dự đoán kiểu intra đối với block trên Matlab
Khi khối điều khiển quyết định 1 block được mã hoá theo cách dự đoán kiểu intra,
block đó sẽ được đưa vào khối “dự đoán kiểu intra” đầu tiên, sau đó mới đến khối
biến đổi.
Dự đoán kiểu intra là dự đoán giá trị của 1 block (4x4, 8x8 hoặc 16x16) dựa theo
không gian (các giá trị trong ma trận của block ngay trên và block liền trái). Với
block 4x4 có 9 cách để dự đoán còn block 8x8 hoặc 16x16 có 4 cách.

Dữ liệu đầu vào khối dự đoán kiểu intra: ma trận dữ liệu ảnh, vị trí của block cần
dự đoán trong ảnh đó, kích thước block dự đoán
Dữ liệu đầu ra khối dự đoán kiểu intra: ma trận dữ liệu của block sau khi dự đoán,
chế độ dự đoán đã chọn và kích thước block dự đoán

Các bước của thuật toán này:

- B1: đặt N là kích thước block (=4, 8 hoặc 16). Tạo 2 ma trận T [1x2N], L
[2Nx1] tương ứng với các điểm ở hàng phía trên và cột bên trái block cần dự
đoán và điểm LT là điểm ở góc trên bên trái

- B2: Nếu N=4 hoặc 8, tính toán ra 9 ma trận dự đoán tương ứng với 9 chế độ dự
đoán bằng cách sử dụng các công thức

16


- B3: Tính SAD (sum of absolute differences - tổng các sai khác tuyệt đối) của
từng ma trận với ma trận gốc. Chọn ma trận ước lượng có SAD thấp nhất và trả

về kết quả là ma trận đó.

- B4: Nếu N=16, tạo ra 4 ma trận dự đoán ứng với 4 chế độ. Sau đó thực hiện như
B3.

Đối với 1 block cụ thể hoặc 1 vùng trong ảnh thì kỹ thuật này có thể mang lại hiệu
quả, giúp tăng tỷ số nén rất nhiều mà không làm mất quá nhiều thông tin. Kỹ thuật
này giúp tăng tỷ số nén vì chúng ta chỉ cần lưu trữ/truyền đi chế độ dự đoán đã
thực hiện cùng với ma trận sai khác giữa block dự đoán và block thực tế (các giá
trị trong ma trận này sẽ cần ít bit để mã hoá hơn).

17


TÀI LIỆU THAM KHẢO
1. ITU-T Official document for H.264 : Advanced video coding for generic
audiovisual services (02/2014)
2. Motion Estimation and Intra Frame Prediction in H.264/AVC Encoder - Rahul
Vanam (University of Washington)
3. Fast Intra-Prediction Mode Selection for H.264 - Jason Fritts, Huakai Zhang,
Hui Zhang, Frederick Steiling
4. Overview of the H.264/AVC - Dinesh Kumar, Pavan Shastry, Anirban Basu
(MMCodec TI India)
5. H.264 Motion Estimation and Motion Compensation - Darshankumar Shah

B.E., Veer Narmad South Gujarat University, India, 2007

18




×