You are on page 1of 65

IT4621

XỬ LÝ DỮ LIỆU ĐA PHƯƠNG TIỆN


Đề tài 13
“Phương pháp tiên tiến nén Video AVC
và ứng dụng”
Giảng viên hướng dẫn: PSG. TS Nguyễn Thị Hoàng Lan
Nhóm:
Nguyễn Duy Hiền 2014 1591 CNTT 1.01 – K59
Nguyễn Huy Hoàng 2014 1771 CNTT 1.02 – K59
Nguyễn Duy Long 2014 2667 CNTT 1.01 – K59
NỘI DUNG

- Tìm hiểu chung phương pháp nén Video tiên tiến (AVC: Advanced
Video Coding)

- Tìm hiểu chuẩn MPEG - 4/ H264 AVC.

- So sánh phương pháp nén Video chuẩn MPEG - 4 với phương pháp
nén Video theo chuẩn MPEG - 1.

- Tìm hiểu một thuật toán trong nén theo chuẩn MPEG - 4, thử nghiệm
ứng dụng.
Tìm hiểu chung phương pháp nén Video tiên
tiến AVC và chuẩn MPEG - 4/ H264 AVC

- H.264/ MPEG - 4 Part 10 hay AVC (Advanced Video Coding),


thường được gọi tắt là H.264.

- Là một chuẩn mã hóa/ giải mã Video và định dạng video đang được
sử dụng rộng rãi hiện nay để ghi, nén và chia sẻ Video phân giải cao,
dựa trên việc bù chuyển động (Motion - Compensation) trên từng
Block (Block Oriented).
Tìm hiểu chung phương pháp nén Video tiên
tiến AVC
- Kỹ thuật SVC (Scalable Video Coding) được sử dụng trong phương
pháp này để thể hiện sự tiên tiến.
Ứng dụng

- MPEG4 Part 10 /H264 hay AVC là một trong những định dạng
đang được dùng phổ biến nhất hiện nay trong công nghệ mã hóa,
phân phối và xử lý Video.

- Ví dụ: Digital Television, DVD and Blu - Ray Disks, Mobile TV,
Video Conferencing and Internet Video Streaming, iTunes Store
Movies/ Videos…
Đặc tính nổi bật của chuẩn nén Video
MPEG - 4/ H.264/ AVC
- Dự đoán không gian định hướng trong kiểu mã hóa Intra: hỗ trợ tới
17 kiểu dự đoán, làm cho việc dự đoán mẫu được chính xác hơn, đạt
hiệu quả nén cao hơn.

- Bù chuyển động với kích thước nhỏ có thể thay đổi. Kích thước bù
chuyển động nhỏ nhất là 4x4, điều này mang lại hiệu suất 15% so
với MPEG - 2.

- Bù chuyển động với nhiều hình tham khảo.

- Tách riêng hình tham khảo và hình hiển thị


Đặc tính nổi bật của chuẩn nén Video
MPEG - 4/ H.264 AVC
- Giảm dư thừa về không gian tốt hơn.

- Lượng tử hóa thích nghi.

- Sử dụng bộ lọc tách khối.

- Kiểu dự đoán trọng số H.264/ AVC có thể hỗ trợ quá trình mờ dần
hay tối dần khung hình trong những đoạn Film có hiệu ứng mờ dần
(những frame đến sau rất giống so với những frame ngay trước nó,
chỉ có sắc độ là khác một chút).
Các Profile và các Level
H.264/AVC có 4 Profile như sau:
Các Profile và các Level

Các phần mã hóa của các Profile trong H.264


Các phần chung cho tất cả các Profile

- Slice I (Slice mã hoá trong ảnh): Slice đã mã hoá bằng việc sử dụng
dự đoán chỉ từ các mẫu đã mã hoá bên trong cùng một Slice .

- Slice P (Predictive - Coded Slice ): các Slice được mã hoá bằng việc
sử dụng dự đoán liên ảnh từ các ảnh tham chiếu đã được mã hoá
trước đó sử dụng hầu hết cho Vector chuyển động và hệ số tham
chiếu để dự đoán các giá trị mẫu cho mỗi Block.

- CAVLC (Context - Based Adaptive Variable Lengh Coding): mã hoá


độ dài biến đổi tương thích với tình huống, cho mã hoá Entropy.
Kiến trúc phân lớp của H.264/ AVC
H.264/ AVC Codec bao gồm 2 khối : Video Coding Layer ( VCL)
và Network Abstraction Layer ( NAL).
Cấu trúc dòng bit

- Bit đầu tiên là bit 0.

- 2 bits tiếp theo được sử dụng để chỉ ra rằng có hay không NALU
chứa chuỗi (tập hợp) các tham số Picture hoặc một mảnh của một
Picture tham chiếu.

- 5 bits tiếp theo được sử dụng để chỉ ra loại của NALU Units, cái
tương ứng với loại dữ liệu được mang trong NALU Unit.
Quá trình nén H264/ MPEG – 4:

Sơ đồ khối mã hóa H.264/ AVC


Bù chuyển động trong các Slice P (dự đoán liên ảnh):

Sơ đồ nguyên lý nén Slice P


- Các dạng mã hóa bù chuyển động được xác định cho các
Macroblock Slice P. Dự đoán liên ảnh làm giảm sự tương quan theo
thời gian với sự trợ giúp của việc ước tính Vector chuyển động và bù
chuyển động.
- Chia các Macroblock thành các Block.
- Các giá trị dự đoán cho thành phần chói và thành phần màu.
- Bù chuyển động MPEG – 4 Part 10/ H.264 cho phép các Vector
chuyển động không hạn chế, tức là chúng có thể hướng ra ngoài
miền ảnh.
- MPEG – 4 Part 10/ H.264 hỗ trợ dự đoán bù chuyển động đa ảnh.
- Ngoài các Mode bù chuyển động được mô tả ở trên, Macroblock
Slice P cũng có thể được mã hóa trong Mode gọi là SKIP.
- So với các tiêu chuẩn trước đó, MPEG – 4 Part 10/ H.264 đã tổng
quát khái niệm Slice B và không chỉ hỗ trợ một cặp dự đoán theo
hướng tiến/ lùi mà còn cả hai cặp theo hướng tiến/ tiến và lùi/ lùi.

- Các Mode dự đoán trong Slice B: Trong Slice B có 4 Mode dự đoán


liên ảnh khác nhau được hỗ trợ: dự đoán list 0, list 1, hai hướng và
trực tiếp.
Bộ giải mã

Sơ đồ khối giải mã H.264/ AVC


- Bù chuyển động: Bù chuyển động thực hiện việc thiết lập lại các
khung trên cơ sở các Vector đã nhận được, dữ liệu Delta (dữ liệu
khác nhau giữa hai khung liên tiếp) và hình ảnh đã được mã hóa
trước đó.

- Khôi phục lỗi: Một trong những nhiệm vụ quan trọng nhất của bộ
giải mã là làm phù hợp và khôi phục lại các lỗi chắc chắn xảy ra, đặc
biệt là khi kết nối qua các liên kết dễ xảy ra lỗi như mạng không dây.
Các kỹ thuật trong H.264/ AVC

- Instantaneous Decoding Refresh Picture.

- Switching I – Slices and Switching P – Slices.

- Transform and QuantizationIntraframe Coding with Directional


Spatial Prediction.

- Adaptive Block Size Motion Compensation


So sánh phương pháp nén Video chuẩn
MPEG – 4 với MPEG – 1
Sơ đồ nén MPEG – 1:
Nén Frame I:
Nén Frame B, P:
Sơ đồ nén MPEG – 4:
- MPEG – 1 (1992) – mã ISO/ - MPEG – 4 dựa trên MPEG – 1
IEC 11172: sử dụng chủ yếu để và tiêu chuẩn MPEG – 2.
ghi CD – ROM, VCD. - MPEG – 4/ H264 AVC xử lý
khối điểm ảnh kích thước 4x4.
- Độ phân giải 352x240, 25-30 - MPEG – 4 tập tin kích thước nhỏ
ảnh/s, tốc độ từ 1.2 - 1.5 Mbit/s, hơn và Streaming trực tuyến, giải
cấu trúc lấy mẫu 4:2:0 quyết vấn đề truyền thông đa
phương tiện hay lưu trữ với
- Không cho phép mã hóa dữ liệu không gian ổ đĩa giới hạn.
có độ phân giải lớn. - do đó thích hợp cho MPEG – 4
cần thuật toán tốt hơn để quét và
- MPEG – 1 xử lý khối điểm ảnh xác định những Pixel có thể
kích thước 8x8. được loại bỏ, để giảm kích thước
dữ liệu hơn nữa.
Mã hóa frame I
Nếu một khối hoặc macroblock được mã hóa trong chế độ
intra, một khối dự đoán được tạo dựa trên các khối được mã
hóa tạo ra trước đó. Khối dự đoán P này được trừ đi khối hiện
tại trước khi mã hóa. Đối với thành phần độ chói (luma), P có
thể được tạo cho mỗi khối phụ 4x4 hoặc cho một macroblock
16x16. Có tổng cộng 9 chế độ dự đoán cho mỗi khối luma 4x4;
4 chế độ cho khối luma 16x16; và một chế độ luôn được áp
dụng cho mỗi khối chroma 4x4.
Mã hóa frame I
Chế độ dự đoán cho khối luma 4x4
Trong hình bên, khối 4x4 bên trái đã
được mã hóa và được sử dụng làm frame
tham chiếu, khối bên phải là khối cần mã
hóa. Frame P được dự đoán dựa trên các
mẫu từ A đến M như bảng dưới. Tiếp
theo là 9 kiểu dự đoán. Nếu các mẫu E,
F, G, H không có, giá trị của chúng được
copy từ mẫu D.
Mã hóa frame I
Chế độ dự đoán cho khối luma 4x4
Ví dụ về các chế độ dự đoán
Mã hóa frame I
Chế độ dự đoán cho khối luma 16x16
Dưới đây là 4 kiểu dự đoán cho khối luma 16x16
Mã hóa frame I
Chế độ dự đoán cho khối luma 16x16
Ví dụ

Khối cần dự đoán

Kết quả dự đoán theo các chế độ khác nhau


Mã hóa frame I
Chế độ dự đoán cho khối chroma 8x8

Mỗi thành phần chroma 8x8 được dự đoán dựa trên các mẫu chroma ở
trên và/hoặc bên trái đã được mã hóa trước đó. 4 chế độ dự đoán tương
tự như các chế độ dự đoán cho khối luma 16x16 đã trình bày ở trên, chỉ
khác ở số hiệu các chế độ:
Mode 0: DC
Mode 1: Horizontal
Mode 2: Vertical
Mode 3: Plane
Mã hóa frame I
Mã hóa kiểu dự đoán

Kiểu dự đoán của mỗi khối 4x4 phải được thông báo cho bộ giải mã và
có thể tốn nhiều dung lượng. Tuy nhiên, kiểu dự đoán của các khối 4x4
kề nhau là có tương quan. Bộ mã hóa sử dụng 1 cờ để đánh dấu cho biết
một khối 4x4 có sử dụng cùng kiểu dự đoán với các khối kề nó hay
không.
Mã hóa frame P
Mã hóa kiểu inter tạo ra mẫu dự đoán từ một hoặc nhiều frame được mã
hóa trước đó bằng cách dịch chuyển các mẫu từ các frame tham chiếu
(dự đoán bù chuyển động). H.264 sử dụng bù chuyển động theo khối
như một số chuẩn trước đó, nhưng khác biệt ở việc hỗ trợ nhiều kích
thước block, nhỏ nhất là 4x4 và hỗ trợ các vector chuyển động rất nhỏ,
tối thiểu ¼ pixel đối với thành phần luma.
Mã hóa frame P
Bù chuyển động theo cấu trúc cây (thành phần luma)
Mã hóa frame P
Ví dụ bộ mã hóa tự động chọn cách phân vùng tốt nhất
Mã hóa frame P
Vector chuyển động nhỏ hơn điểm ảnh

Các mẫu luma và chroma ở các vị trí nhỏ hơn điểm ảnh không tồn tại
trong hình tham chiếu, do đó cần nội suy chúng từ các mẫu gần đó, ví
dụ như hình dưới
Mã hóa frame P
Dự đoán vector chuyển động

Một vector dự đoán MVP được tính dựa trên các vector chuyển động đã
được tính trước đó. Sau đó, vector MVD được tạo ra là sự sai khác giữa
vector thực tế và vector được tính. Việc tạo vector MVP phụ thuộc cách
phân vùng.
Ở bộ giải mã, vector MVP được tạo ra theo cách tương tự, rồi cộng với
vector sai khác MVD
Biến đổi và lượng tử hóa

Nhiều phép biến đổi được mô tả trong chuẩn H.264: biến đổi 4x4 cơ
bản, biến đổi Hadamard 4x4 và 2x2, biến đổi 8x8
Biến đổi và lượng tử hóa
Phép biến đổi chiều thuận
Biến đổi và lượng tử hóa
Tính Cf
Xét biến đổi DCT 2 chiều của khối 4x4 X:
Y = A.X.AT
Với

Bằng cách nhân các thành phần của A với 2.5 và làm tròn, ta được Cf
Biến đổi và lượng tử hóa
Phép biến đổi chiều thuận
Để khôi phục tính trực chuẩn của A, ta lấy

Trong đó

Cuối cùng ta được


Biến đổi và lượng tử hóa
Phép biến đổi chiều thuận

Giá trị của Mf có thể tra từ bảng:


Trong đó QP là hệ số có liên
quan tới Qstep:
QP Qstep
0 0.625
1 0.702
2 0.787
3 0.884
4 0.992
Biến đổi và lượng tử hóa
Vi là ma trận 4x4 được định
nghĩa sẵn trong chuẩn H.264,
phụ thuộc vào Qstep, tức là QP.
Giá trị của Vi với QP từ 0 đến 5
như bảng
CAVLC

Các thông tin cần mã hóa và truyền đi:


- Loại macroblock
- Các hệ số mã hóa
- Các tham số lượng tử
- Chỉ số của frame tham chiếu (dùng cho dự đoán inter)
- Vector chuyển động (vector MVD)
- Dữ liệu còn dư
CAVLC
Mã hóa số các hệ số và dãy các số 1 (Trailing ones) : Coeff_Token

- Coeff_Token mã hóa tổng số hệ số khác 0 (TotalCoeffs) và số dãy


các giá trị +/-1 (T1)
- Có 4 lựa chọn của bảng tìm kiếm sử dụng để mã hóa coeff_token:
Num-VLC0, Num-VLC1, Num-VLC2 và Num-FLC.
- Mã hóa dấu của các T1: Với mỗi T1 được mã hóa kèm theo 1 bit
để mã hóa dấu. Chúng được mã hóa theo thứ tự ngược, bắt đầu bằng
T1 có tần số cao nhất
CAVLC
Mã hóa mức của các hệ số khác 0 còn lại

- Mức của các hệ số khác 0 còn lại được mã


hóa theo thứ tự ngược, bắt đầu từ thành phần
tần số cao về thành phần DC
- Lựa chọn của bảng VLC để mã hóa mỗi mức
dựa trên biên độ của các mức đã mã hóa ->
context based
- Có 7 bảng VLC để lựa chọn: từ Level_VLC0
đến Level_VLC6. Level_VLC0 mã hóa theo
biên độ nhỏ, tiếp tục tăng dần với các bảng
còn lại
CAVLC
Mã hóa tổng số số 0 trước hệ số cuối cùng (TotalZeros): Là số các
số 0 trước hệ số khác 0 lớn nhất trong mảng đã sắp xếp.

Mã hóa từng dãy số 0: Số các số 0 ở trước mỗi hệ số khác 0 (run-


before) được mã hóa theo thứ tự ngược với 2 ngoại lệ
- Không còn số 0 nào để mã hóa (Tổng run-before bằng TotalZeros):
không cần mã hóa thêm giá trị run-before nào nữa.
- Không cần mã hóa giá trị run-before cho hệ số khác 0 có tần số
thấp nhất.
CAVLC
Ví dụ về mã hóa CAVLC

Khối 4x4: sau khi biến đổi và lượng tử hóa:


Dãy thu được khi quét zig-zag: 0,3,0,1,-1,-1,0,1,0,0,...
TotalCoeffs = 5
TotalZeros = 3
T1s = 3
CAVLC
Dãy bit cho khối này là: 000010001110010111101101
Giải mã:

Bộ giải mã đã thêm hai số 0, nhưng TotalZeros = 3 nên một số 0


được thêm vào trước hệ số thấp nhất, ta thu được dãy đầu ra:
0,3,0,1,-1,-1,0,1
CAVLC
Ví dụ về mã hóa CAVLC

Khối 4x4: sau khi biến đổi và lượng tử hóa:


Dãy thu được khi quét zig-zag: -2,4,3,-3,0,0,-1,0,0,...
TotalCoeffs = 5
TotalZeros = 2
T1s = 1
CAVLC
Dãy bit cho khối này là: 000000011010001001000010111001100
Giải mã:

Tất cả các số 0 đã được giải mã nên mảng đầu ra là


-2,4,3,-3,0,0,-1
Thuật toán Deblocking trong H.264/AVC
Video (Deblocking Filter)
Một đặc trưng riêng của mã hóa dựa
trên cơ sở khối là có thể nhìn thấy các
cấu trúc khối. Các mép khối được cấu
trúc lại với độ chính xác kém hơn các
pixel bên trong và nhìn chung “dạng
khối” (blocking) được xem là một
trong những nhiễu (artifact) dễ thấy
nhất với các phương pháp nén hiện tại.
Thuật toán Deblocking trong H.264/AVC
Video (Deblocking Filter)
Bộ lọc tách khối được sử dụng thích nghi ở nhiều mức độ:
- Ở mức Slice: cường độ bộ lọc toàn phần có thể điều chỉnh theo đặc
điểm của chuỗi ảnh

- Ở mức mép khối: cường độ lọc phụ thuộc vào kiểu dự đoán Intra
hay Inter, sai số chuyển động.

- Ở mức mẫu: Các giá trị mẫu và các điểm bắt đầu phụ thuộc vào bộ
lượng tử hóa có thể dừng lọc cho mỗi mẫu riêng biệt
Thuật toán Deblocking trong H.264/AVC
Video (Deblocking Filter)
Boundary Strength (Bs)
Thuật toán deblocking trong H.264/AVC
Video (Deblocking Filter)
Nguyên lý lọc tách khối:
Ở cấp độ xử lý mẫu, nội dung của
một tập hợp các mẫu và lượng tử
hóa ngưỡng tham số có thể bật /
tắt tính năng lọc cho mỗi mẫu cá
nhân
Thuật toán Deblocking trong H.264/AVC
Video (Deblocking Filter)
Quá trình lọc khối
Bước 1: Chia bức ảnh thành các khối MB và tìm khối bị nhiễu
Thuật toán Deblocking trong H.264/AVC
Video (Deblocking Filter)
Bước 2: Lọc cạnh thành phần độ chói theo chiều dọc
Thuật toán deblocking trong H.264/AVC
Video (Deblocking Filter)
Bước 3: Lọc cạnh thành phần độ chói theo chiều ngang
Thuật toán Deblocking trong H.264/AVC
Video (Deblocking Filter)
Bước 4: Lọc cạnh thành phần sắc màu
Thuật toán Deblocking trong H.264/AVC
Video (Deblocking Filter)
Thực hiện bộ lọc
Ứng dụng chuyển đổi Video từ các định
dạng khác sang H264
- WinX H264 Converter Deluxe:
• Chuyển đổi định dạng video H.264 sang các định dạng
video MPEG, MP4, MKV, AVC, AVI, MOV, MP3, AAC,
MP3...
• Chuyển đổi định dạng MKV, AVCHD, MOD, camcorder/Blu-
ray HD, SD sang định dạng H.264.
• Tốc độ chuyển đổi nhanh, chất lượng cao.
- QuickTime Player: Hỗ trợ H.264 nhưng không hỗ trợ tất cả các định
dạng Video khác.
Ứng dụng chuyển đổi Video từ các định
dạng khác sang H264
Giao diện WinX H.264 Video Giao diện Quick Time
Converter Deluxe
Ứng dụng chuyển đổi Video từ các định
dạng khác sang H264
Sử dụng 1 video có dạng .webm không thuộc định dạng H264 nên
không thể mở trên quick time và sử dụng phần mềm WinX H.264 Video
Converter Deluxe để làm video được chuyển đổi sang định dạng H264
Ứng dụng chuyển đổi Video từ các định
dạng khác sang H264
Click vào Run và chờ video được chuyển sang dạng H264
Ứng dụng chuyển đổi Video từ các định
dạng khác sang H264
Kết quả khi chạy trên Quicktime
Ứng dụng chuyển đổi Video từ các định
dạng khác sang H264
So sánh chi tiết giữa 2 file trước và sau khi chuyển

You might also like