Phương pháp tiên tiến nén video AVC và ứng dụng
Trang 2NỘ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
Trang 3Tì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).
Trang 4Tì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
Trang 5Ứ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…
Trang 6Đặ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ị
Trang 7Đặ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).
Trang 8Các Profile và các Level
H.264/AVC có 4 Profile như sau:
Trang 9Các Profile và các Level
Các phần mã hóa của các Profile trong H.264
Trang 10Cá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
Trang 11Kiế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)
Trang 12Cấ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
Trang 13Quá trình nén H264/ MPEG – 4:
Sơ đồ khối mã hóa H.264/ AVC
Trang 14Bù chuyển động trong các Slice P (dự đoán liên ảnh):
Sơ đồ nguyên lý nén Slice P
Trang 15- 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
Trang 16- 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
Trang 17Bộ giải mã
Sơ đồ khối giải mã H.264/ AVC
Trang 18- 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
Trang 19Cá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
Trang 20So sánh phương pháp nén Video chuẩn MPEG – 4 với MPEG – 1
Sơ đồ nén MPEG – 1:
Trang 21Nén Frame I:
Trang 22Nén Frame B, P:
Trang 23Sơ đồ nén MPEG – 4:
Trang 24- MPEG – 1 (1992) – mã ISO/ IEC
11172: sử dụng chủ yếu để ghi
CD – ROM, VCD
- Độ phân giải 352x240, 25-30
ảnh/s, tốc độ từ 1.2 - 1.5 Mbit/s,
cấu trúc lấy mẫu 4:2:0
- Không cho phép mã hóa dữ liệu
phương tiện hay lưu trữ với không gian ổ đĩa giới hạn.
- do đó thích hợp cho MPEG – 4 cần thuật toán tốt hơn để quét và xác định những Pixel có thể được loại bỏ, để giảm kích thước dữ liệu hơn nữa.
Trang 25Mã 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.
Trang 26Mã hóa frame I
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
Chế độ dự đoán cho khối luma 4x4
Trang 27Mã hóa frame I
Ví dụ về các chế độ dự đoán
Chế độ dự đoán cho khối luma 4x4
Trang 28Mã hóa frame I
Dưới đây là 4 kiểu dự đoán cho khối luma 16x16
Chế độ dự đoán cho khối luma 16x16
Trang 30Mã 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
Trang 31Mã 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
Trang 32Mã 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
Trang 33Mã hóa frame P
Bù chuyển động theo cấu trúc cây (thành phần luma)
Trang 34Mã hóa frame P
Ví dụ bộ mã hóa tự động chọn cách phân vùng tốt nhất
Trang 35Mã 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
Trang 36Mã 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
Trang 37Biế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
Trang 38Biến đổi và lượng tử hóa
Phép biến đổi chiều thuận
Trang 39Biến đổi và lượng tử hóa
Trang 40Biế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
Trang 41Biế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:
Trang 42Biế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
Trang 43Cá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ư
Trang 44Mã 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à
Trang 45thà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
Trang 46Mã 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ị before nào nữa
run Không cần mã hóa giá trị runrun before cho hệ số khác
0 có tần số thấp nhất
Trang 47Ví 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
Trang 48Dãy bit cho khối này là: 000010001110010111101101Giả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
Trang 49Ví 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
Trang 51Mộ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)
Trang 52Thuậ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
Trang 53Thuật toán Deblocking trong H.264/AVC
Video (Deblocking Filter)
Boundary Strength (Bs)
Trang 54Thuậ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
Trang 55Thuậ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
Trang 56Thuậ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
Trang 57Thuậ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
Trang 58Thuậ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
Trang 59Thuật toán Deblocking trong H.264/AVC
Video (Deblocking Filter)
Thực hiện bộ lọc
Trang 60Ứ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
Trang 61Ứng dụng chuyển đổi Video từ các định dạng khác sang H264
Giao diện WinX H.264 Video
Trang 62Ứ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
Trang 63Ứ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
Trang 64Ứ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
Trang 65Ứ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