Trong hoàn cảnh mạng thế hệ mới NGN và di động thế hệ sau tiếp tục đòi hỏi phải hoàn thiện hơn các thuật toán nén - giải tín hiệu video số với mục đích làm cho chất lượng hình ảnh tốt hơ
Trang 1LỜI CAM ĐOAN
Tôi cam đoan đây là công trình nghiên cứu của riêng tôi
Các số liệu, kết quả nêu trong luận văn là trung thực và chưa từng được ai công bố trong bất kỳ công trình nào khác
Trang 2LỜI CÁM ƠN Luận văn thạc sĩ chuyên ngành công nghệ thông tin với đề tài “Kỹ thuật nén Video
& thử nghiệm dựa trên mã nguồn mở” là kết quả của quá trình cố gắng không
ngừng của bản thân và được sự giúp đỡ, động viên khích lệ của các thầy, bạn bè đồng nghiệp và người thân Qua trang viết này tôi xin gửi lời cảm ơn tới những người đã giúp đỡ tôi trong thời gian học tập - nghiên cứu khoa học vừa qua
Tôi xin tỏ lòng kính trọng và biết ơn sâu sắc đối với thầy giáo PGS.TS Nguyễn Văn Tam đã trực tiếp tận tình hướng dẫn cũng như cung cấp tài liệu thông tin khoa học cần thiết cho luận văn này
Xin chân thành cảm ơn Lãnh đạo trường Đại học mở Hà Nội, khoa Công nghệ thông tin đã tạo điều kiện cho tôi hoàn thành tốt công việc nghiên cứu khoa học của mình
Cuối cùng tôi xin chân thành cảm ơn đồng nghiệp, đơn vị công tác đã giúp đỡ tôi trong quá trình học tập và thực hiện Luận văn
TÁC GIẢ
Vũ Quang Huy
Trang 3MỤC LỤC
LỜI CAM ĐOAN i
LỜI CÁM ƠN ii
MỞ ĐẦU 1
CHƯƠNG 1: GIỚI THIỆU VỀ NÉN VIDEO 3
1.1 Giới thiệu 3
1.2 Độ dư trong tín hiệu video, nhu cầu cần thiết nén video 4
1.2.1 Độ dư trong tín hiệu video 4
1.2.3 Nhu cầu cần thiết nén video 7
1.3 Khái niệm về nén video 7
1.4 Yêu cầu về ứng dụng nén video 8
1.5 Kết luận chương 1 10
CHƯƠNG 2: CHUẨN MÃ HÓA, NÉN ẢNH JPEG VÀ MÃ HÓA, NÉN VIDEO MPEG-4 PART 10/H.264 11
2.1 Kỹ thuật mã hóa, nén ảnh JPEG 11
2.1.1 Giới thiệu chung 11
2.1.2 Phương pháp nén ảnh chuẩn JPEG 12
2.2 Chuẩn mã hóa và nén video MPEG-4 Part 10/H.264 16
2.2.1 Cấu trúc chuẩn MPEG-4 Part10 16
2.2.3 Kỹ thuật nén video MPEG-4 Part 10/ H.264 22
2.3 Kết luận chương 2 46
CHƯƠNG 3: THỰC NGHIỆM CHUẨN NÉN VIDEO H.264 TRÊN CÁC PHẦN MỀM MÃ NGUỒN MỞ 47
3.1 Công cụ nén video mã nguồn mở FFMPEG 47
3.1.1 Giới thiệu 47
3.1.2 Cài đặt FFMPEG trên hệ điều hành Ubuntu 12.04 47
3.1.3 Các tham số sử dụng trong FFMPEG 50
3.1.4 Nén/giải nén video theo chuẩn H.264 với FFMPEG 55
3.2 Thực nghiệm và đánh giá kết quả 55
3.2.1 Môi trường mô phỏng và một số kịch bản thực nghiệm 55
3.2.2 Kết quả thực nghiệm và đánh giá 57
3.3 Kết luận chương 3 65
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 66
TÀI LIỆU THAM KHẢO 67
Trang 4DANH MỤC HÌNH VẼ
Hình 1.1 Nén video trong truyền video 4
Hình 1.2 (a) khung hình thứ nhất và (b) thứ hai của dãy ảnh "Foreman" 6
Hình 2.1 Sơ đồ thuật toán nén JPEG 12
Hình 2.2 Sơ đồ thuật toán giải nén JPEG 13
Hình 2.3 Cấu trúc phân lớp H.264 17
Hình 2.4 Cấu trúc dòng bit 17
Hình 2.5 Minh họa một chuỗi thành phần RBSP 18
Hình 2.6 Cấu trúc dòng bit MPEG-4 H.264/AVC 21
Hình 2.7 Sơ đồ khối mã hóa H.264/AVC 22
Hình 2.8 Sơ đồ khối giải mã H.264/AVC 23
Hình 2.9 Sơ đồ khối mã hóa ảnh I 24
Hình 2.10 Phân chia MB - Sub MB cho bù chuyển động 25
Hình 2.11 Chỉ ra thứ tự sắp xếp của các VOP 25
Hình 2.12 Hiệu ứng mờ dần 28
Hình 2.13 Quét Zig-Zag cho kiểu mã hóa frame 34
Hình 2.14 Quét Zig-Zag cho kiểu mã hóa field 34
Hình 2.15 Minh họa quá trình mã hóa xen kẽ 35
Hình 2.16 Trật tự hiện thị của các bức ảnh 36
Hình 2.17 Thứ tự luồng Video khác với trật tự hiển thị 36
Hình 2.18 Sơ đồ khối nguyên lý nén ảnh P 37
Hình 2.19 Sơ đồ khối nguyên lý nén ảnh B 38
Hình 2.20 Các mẫu dự đoán trong ảnh B 40
Hình 2.21 Nguyên lý bù chuyển động tực tiếp Vector chuyển động trước và sau MVf, MVb tách ra từ MV trong VOP tham chiếu ngược 41
Hình 2.22 Hai bức ảnh liên tiếp trong chuỗi Video 43
Hình 2.23 Phần dư giữa frame 1 và frame 2 43
Hình 2.24 Vector chuyển động 44
Hình 2.25 Minh họa dự đoán liên khối của H.264/AVC 44
Hình 2.26 Chuyển mạch luồng sử dụng slice I 46
Hình 3.1.Giao diện sau khi cài đặt xong FFMPEG trên Ubuntu 12.04 50
Hình 3.2 Kết quả thực hiện nén video Foreman_CIF.y4m sang H.264 58
Hình 3.3 Ví dụ kết quả tính chỉ số PSNR 58
Trang 5DANH MỤC BẢNG
Bảng 2.3 Các thành phần RBSP 18
Bảng 2.4 Giá trị Qstep được quy định trong tiêu chuẩn 31
Bảng 2.5 Bảng giá trị thừa số co dãn V 33
Bảng 3.1 Các tham số cho bộ mã hóa x264 56
Bảng 3.2 Kết quả nén video 1-pass với video NEWS 59
Bảng 3.3 Kết quả nén video 2-pass với video NEWS 60
Bảng 3.4 Kết quả nén video 1-pass với video FOREMAN 61
Bảng 3.5 Kết quả nén video 2-pass với video FOREMAN 62
Bảng 3.6 Kết quả nén video 1-pass với video BUS 63
Bảng 3.7 Kết quả nén video 2-pass với video BUS 64
Trang 6BẢNG KÝ HIỆU, CHỮ VIẾT TẮT
Ký hiệu, viết
tắt
Ý nghĩa tiếng Anh Ý nghĩa tiếng Việt
AVC Advanced Video Coding Mã hóa video tiên tiến
DCT Discrete Cosine Tranform Biến đổi cosin rời rạc
FFMPEG Fast Forward MPEG
HVS Human Visual System Hệ thống nhìn của con người IDR Instantaneous Decoding Refresh Giải mã ngay lập tức
IEC International Electrotechnical
Commission
Ủy ban Kỹ thuật điện tử quốc tế
IEC International Electrotechnical
Commission
Ủy ban Kỹ thuật điện tử quốc tế
Telecommunication Union
Liên minh Viễn thông quốc tế
IDCT Inverse Discrete Cosine
NTSC National Teltevision System
Committee
Hệ video được sử dụng ở Bắc và Nam Mỹ với tần số quét ngang là
60MHz NAL Network Abstraction Layer Lớp mạng trừu tượng
PSNR Peak Signal-to-Noise Ratio Tỉ số tín hiệu cực đại trên nhiễu VLC Variable Length Coding Mã chiều dài thay đổi
Trang 7MỞ ĐẦU
1 Lý do lựa chọn đề tài
Những năm gần đây, truyền tải và lưu trữ video càng trở nên phổ biến hơn
do một số yếu tố như giá thành các sản phẩm liên quan như máy quay video HD,
TV màn hình lớn, các thiết bị lưu trữ… đang giảm rất nhanh Bên cạnh đó, các bộ vi
xử lý mới có tốc độ cao hơn rất nhiều, cùng với tốc độ Internet được cải thiện đáng
kể giúp việc tải một bộ phim nhanh chóng và xem mượt mà hơn Nhưng chừng đó
là không đủ, nhu cầu cuộc sống luôn ngày càng lớn, trước đây việc thưởng thức các
bộ phim ở độ phân giải 480p rồi đến mHD 720p đã là thỏa mãn, thì giờ đây các film
độ phân giải Full HD 1080p đã tràn ngập Nhu cầu đó càng thể hiện mạnh mẽ hơn khi 2 năm gần đây xuất hiện các TV với công nghệ hình ảnh 4K với độ phân giải siêu cao làm người xem phải ngẩn ngơ như lạc vào thế giới thực Các thiết bị lưu trữ và đường truyền Internet với áp lực phải lớn hơn đã không kịp đáp ứng và bức thiết cần có một chuẩn nén video mới hiệu quả hơn giảm tải cho áp lực này
Chính vì điều đó học viên đã chọn đề tài: "Kỹ thuật nén video và thử nghiệm dựa trên mã nguồn mở" để tìm hiểu, nghiên cứu, và đưa ra được giải pháp
thích hợp khi xử lý video dựa trên những tri thức đã tìm hiểu được
2 Mục đích của đề tài
- Nghiên cứu tìm hiểu các chuẩn nén hình ảnh, video
- Thử nghiệm với hình ảnh, video để đưa ra được sự so sánh về chất lượng cũng như hiệu quả của các phương pháp
3 Đối tượng và phạm vi nghiên cứu
- Các công nghệ nén hình ảnh và video
- Các chuẩn MPEG
- Chuẩn nén hình ảnh JPEG
4 Phương pháp nghiên cứu
- Thu thập, phân tích và tổng hợp các tài liệu, thông tin về đề tài
- Xây dựng chương trình thử nghiệm cho phương pháp biểu diễn nén video dựa trên phần mềm mã nguồn mở
Trang 85 Ý nghĩa khoa học và thực tiễn của đề tài
- Làm chủ về một số giải pháp nén ảnh, video
- Là tài liệu tham khảo về lĩnh vực nén ảnh, video
- Đề tài có ý nghĩa công nghệ và thực tiễn
6 Cấu trúc luận văn
Nội dung luận văn gồm phần mở đầu, kết luận và 03 chương:
Chương 1 Tổng quan về nén video: giới thiệu vai trò, vị trí, yêu cầu, mô hình hệ thống và một số kỹ thuật nén video
Chương 2 Chuẩn mã hóa, nén ảnh JPEG và chuẩn nén video MPEG-4 Part 10/H.264: trình bày về kỹ thuật nén hình ảnh dựa trên chuẩn JPEG và chuẩn nén video chất lượng cao H.264 (MPEG-4 Part10)
Chương 3 Xây dựng ứng dụng thử nghiệm: tiến hành cài đặt và thử nghiệm ứng dụng nén video theo chuẩn H.264 dựa trên các phần mềm mã nguồn mở nổi tiếng nhất hiện nay như FFMPEG và JM version 19.0 Đưa ra các đánh giá về chất lượng (dựa trên các chỉ số Q, PSNR, MSE ), tốc độ, dung lượng của video được nén và giải nén theo chuẩn H.264
Trang 9CHƯƠNG 1: GIỚI THIỆU VỀ NÉN VIDEO
1.1 Giới thiệu
Để truyền được các chương trình video trên các hệ thống thông tin di động,một bài toán đặt ra là phải nén hình ảnh để tiết kiệm băng tần truyền dẫn mà vẫn đảm bảo chất lượng hình ảnh Đây là một yêu cầu đã và đang được nhiều nhà nghiên cứu quan tâm Truyền dẫn số tín hiệu ảnh động qua các hệ thống vệ tinh đã được nghiên cứu từ năm 1990, trong đó nén video bằng phương pháp mã hoá đóng vai trò rất quan trọng Cho đến nay, khi các hệ thống thông tin di động 3G và hệ thống NGN ra đời cho phép truyền các chương trình video trên đó thì việc nghiên cứu tìm ra các giải pháp nén mới càng đòi hỏi cấp thiết hơn bao giờ hết Nhóm chuyên gia về hình ảnh động (MPEG) đã hoàn thiện hai bộ tiêu chuẩn về mã hoá video là MPEG-1 và MPEG-2, xác định các phương pháp truyền thông tin video số theo các định dạng truyền hình và đa môi trường Ngày nay MPEG-4 đang nhắm vào việc truyền video tốc độ bit rất thấp; còn MPEG-7 đưa ra chuẩn hoá trong các dịch vụ lưu trữ và phục hồi video Trong hoàn cảnh mạng thế hệ mới NGN và di động thế hệ sau tiếp tục đòi hỏi phải hoàn thiện hơn các thuật toán nén - giải tín hiệu video số với mục đích làm cho chất lượng hình ảnh tốt hơn, băng tần truyền dẫn thấp hơn
Nén video số là một quá trình trong đó người ta tìm các giải pháp để giảm số lượng số liệu biểu thị hình ảnh video để đáp ứng tốc độ bit yêu cầu mà vẫn đáp ứng chất lượng video được khôi phục ở phía thu phải thỏa mãn yêu cầu ứng dụng và độ phức tạp tính toán Hình 1.1 biểu thị sơ đồ khối chức năng nén số liệu video trong
hệ thống truyền dẫn Nén video có nhiệm vụ rất quan trọng vì lượng dư của số liệu trong các hình ảnh nguyên thủy thường lớn hơn nhiều dung lượng mà các thiết bị điện tử ngày nay có thể xử lý
Ta cũng biết rằng thông tin và số liệu là hai khái niệm khác nhau nhưng liên quan chặt chẽ với nhau Số liệu biểu thị thông tin và chất lượng số liệu có thể đo được Nội dung của số liệu video thường được đo bằng số đơn vị bit; còn thông tin
Trang 10được xác định bằng sự nhận biết Như vậy toàn bộ số liệu biểu thị sự nhận biết, tuy vậy nó cũng có đơn vị đo của nó
Hình 1.1: Nén video trong truyền video
Tốc độ bit hay còn gọi là tốc độ mã hóa là một tham số quan trọng trong nén video và thường được biểu thị bằng đơn vị bit/giây Trong mã hóa nguồn tin, đôi lúc tốc độ bit được biểu thị bit trên ký hiệu Chất lượng hình ảnh được cấu trúc lại ở phía thu phụ thuộc vào ứng dụng vì vậy sẽ có loại nén tổn thất và nén không tổn thất Trong ứng dụng truyền các ảnh động, các chương trình truyền hình thì cho phép một lượng tổn thất nào đó Từ định nghĩa này, ta có thể nhận thấy rằng nén số liệu video có một số khái niệm cơ bản bao gồm: thông tin, số liệu, chất lượng nhìn được của video và độ phức tạp tính toán Chương này tập trung vào một số vấn đề chính như sau:
- Phân tích độ dư trong tín hiệu video, nhu cầu cần thiết nén video
- Khái niệm về nén video
- Yêu cầu về ứng dụng nén video và một số kỹ thuật nén video
1.2 Độ dƣ trong tín hiệu video, nhu cầu cần thiết nén video
1.2.1 Độ dư trong tín hiệu video
1.2.1.1 Độ dư thống kê của ảnh
Độ dư thống kê có thể được phân thành hai kiểu: độ dư giữa các pixel và độ
dư mã hóa Độ dư giữa các pixel có nghĩa là các pixel của một khung ảnh và các pixel của một nhóm các khung ảnh hoặc video liên tiếp không độc lập thống kê với nhau Trái lại, chúng tương quan với nhau theo mức độ khác nhau Kiểu tương quan giữa các pixel như vậy được coi là độ dư giữa các pixel Độ dư giữa các pixel có thể
Truyền hoặc Lưu trữ
Nén Video
Tái cấu trúc
số liệu
Trang 11được chia thành hai loại: độ dư không gian và độ dư thời gian Độ dư mã hoá là độ
dư thống kê liên quan đến các kỹ thuật mã hóa
- Độ dư không gian
Độ dư không gian thể hiện mối tương quan thống kê giữa các pixel trong một khung ảnh Do đó nó còn được gọi là độ dư ngoài khung Ta biết rằng các giá trị cường độ của các pixel thuộc một hàng (hoặc một cột) có hệ số tự tương quan rất cao (gần bằng độ tự tương quan cực đại là 1) với các giá trị cường độ của các pixel thuộc chính hàng đó (hoặc chính cột đó) nhưng bị dịch đi một pixel Điều này không hề bất ngờ bởi vì hầu hết các giá trị cường độ thay đổi liên tục từ pixel này đến pixel khác trong một khung ảnh, ngoại trừ các miền rìa
Độ dư không gian ngụ ý rằng giá trị cường độ của một pixel có thể được ước lượng theo giá trị cường độ của các pixel lân cận nó Nói một cách khác, người ta không cần miêu tả từng pixel trong khung ảnh một cách độc lập Thay vào đó, người ta có thể dự đoán một pixel từ các pixel ở bên cạnh nó Mã hóa dự đoán là một loại mã hóa vi sai dựa vào nhận xét này Thành quả trực tiếp của việc nhận biết
độ dư không gian là bằng cách loại bỏ một số lượng lớn độ dư thừa trong một khung ảnh, chúng ta có thể tiết kiệm được rất nhiều dữ liệu trong việc biểu thị khung, vì vậy đạt được việc nén dữ liệu
- Độ dư thời gian
Độ dư thời gian có liên quan với tương quan thống kê giữa các pixel của các khung liên tiếp trong một dãy ảnh hoặc video theo thời gian Vì vậy nó còn được gọi là độ dư giữa các khung
Xét một dãy ảnh theo thời gian, với điều kiện là khoảng thời gian giữa hai bức ảnh đủ ngắn, tức là các bức ảnh được chụp đủ dày đặc, chúng ta có thể hình dung rằng đặc điểm giống nhau giữa hai khung là rất lớn Hình 1.2 (a) và hình 1.2 (b) tương ứng với hai khung hình liên tiếp của video “Foreman” Các khung có độ phân giải là 176×144 Từ khung hình a sang khung hình b, trong tổng số 25.344 pixel chỉ có 3,4% thay đổi giá trị xám vào khoảng hơn 1% của giá trị xám cực đại (trong trường hợp này là 255) Như vậy đối với tín hiệu giống như điện thoại video
Trang 12có dịch chuyển vừa phải trong cảnh, trung bình có ít hơn 10% pixel thay đổi các giá trị xám giữa hai khung liên tiếp vào khoảng 1% tín hiệu đỉnh
Hình 1.2: (a) khung hình thứ nhất và (b) thứ hai của dãy ảnh "Foreman"
Điều đó dẫn ta tới suy nghĩ là có thể dự đoán một khung từ các khung cạnh
nó theo miền thời gian bằng cách mã hóa dự đoán trong khung và cũng giúp nghiên cứu sinh hướng tới ý tưởng sử dụng hàm tương quan giữa các pixel để ước lượng sự chuyển động của các khung kế tiếp nhau
sẽ cho ta kết quả nén dữ liệu hình ảnh và video Với nghĩa đó thì độ dư mã là khác,
nó không thực hiện việc gì đối với sự dư thừa thông tin mà nó thực hiện với việc biểu diễn thông tin, nghĩa là chính việc mã hoá Từ việc nghiên cứu độ dư mã, rõ ràng là chúng ta nên tìm kiếm các kỹ thuật mã hiệu quả hơn để nén dữ liệu hình ảnh
và video Mã Huffman và mã số học là hai kỹ thuật mã hóa VLC thường được dùng trong xử lý ảnh và video
Trang 131.2.2 Độ dư khả năng nhìn thấy
Trong khi độ dư giữa các pixel vốn đã có trong số liệu hình ảnh và video, độ
dư khả năng nhìn thấy bắt nguồn từ các đặc trưng về hệ thống nhìn của con người
Ta biết rằng HVS cảm nhận được thế giới bên ngoài theo một cách thức khá phức tạp Đáp ứng của nó đối với các tác nhân nhìn không phải là một hàm tuyến tính theo cường độ của một vài thuộc tính vật lý, như độ sáng và màu Năng lực tri giác của HVS khác hẳn với độ nhạy của camera Trong HVS, thông tin nhìn thấy không được cảm nhận như nhau, một số thông tin có thể quan trọng hơn một số thông tin khác Điều đó có nghĩa rằng nếu chúng ta sử dụng ít dữ liệu hơn để biểu diễn những thông tin ít quan trọng hơn về nhìn thấy thì khả năng cảm nhận sẽ không bị ảnh hưởng Theo nghĩa đó, chúng ta thấy rằng một số thông tin có liên quan đến thị giác
là dư thừa về khả năng nhìn thấy Loại bỏ sự dư thừa khả năng nhìn thấy này chính
là nén dữ liệu
1.2.3 Nhu cầu cần thiết nén video
Những thành tựu đạt được trong công nghệ điện tử - viễn thông - tin học đã tạo điều kiện phát triển các kỹ thuật truyền video đáp ứng nhu cầu ngày càng tăng trong các ứng dụng cuộc sống hàng ngày như điện thoại video, hội nghị video, truyền hình độ phân giải cao… Video là một dãy các khung ảnh bao gồm một lượng khổng lồ các số liệu, ví dụ mỗi khung video có độ phân giải 288 dòng và 352 pixel trên một giây Mỗi một màu trong ba màu chính (đỏ, xanh, xanh da trời) được biểu thị bằng 1 pixel có 8 bit và thông thường tốc độ khung truyền là 30 khung trên một giây để tạo ra video chuyển động liên tục Tốc độ bit yêu cầu là: 288×352×8×3×30
= 72.990.720 bit/s Do đó tỷ số giữa tốc độ bit cần thiết và tốc độ bit có thể lớn nhất khoảng 1289 lần Điều này chứng tỏ rằng chúng ta cần phải nén số liệu video ít nhất
là 1289 lần để truyền được trên mạng viễn thông
1.3 Khái niệm về nén video
Các phương tiện liên lạc video qua kênh thông tin số thế hệ mới yêu cầu rất lớn về việc truyền thông tin Nén video được xem xét ở đây bao hàm việc làm giảm tốc độ bit mã tín hiệu video số mang thông tin nhìn được hoặc loại bỏ các phần tử
Trang 14dư thừa trong tín hiệu Mức độ mà bộ mã hoá làm giảm tốc độ bit được gọi là hiệu suất mã và nghịch đảo của hiệu suất mã được gọi là tỷ số nén:
Nén có làm tổn thất hoặc không làm tổn thất thông tin Tổn thất thông tin thường được tính bằng sai số trung bình bình phương (MSE), sai số tuyệt đối trung bình (MAE) hoặc tỷ số tín hiệu đỉnh trên nhiễu (PSNR):
∑ ∑( )
và , với ảnh I và ảnh tái cấu trúc của nó (P), cỡ ảnh là NxM pixel và
n bit/pixel (với các ảnh dạng PGM thì n=8)
∑ ∑( )
⌊
⌋ Các tín hiệu video chứa thông tin ba chiều được mô hình trong miền không gian và thời gian trong quá trình mã hoá Các phương pháp nén video số đặt mục tiêu sao cho tối thiểu hoá lượng tin dư thừa mà không phụ thuộc vào mỗi miền đã nói ở trên
1.4 Yêu cầu về ứng dụng nén video
Hiện nay có nhiều ứng dụng video số khác nhau, chúng trải rộng từ các ứng dụng có yêu cầu đơn giản với độ phân giải thấp và độ rộng băng tần thấp (thiết bị đa phương tiện, điện thoại thấy hình) đến các ứng dụng có yêu cầu độ phân giải rất cao
và độ rộng băng tần cao (HDTV)
Độ rộng băng tần cần thiết của tín hiệu TV số gần bằng một nửa số phần tử ảnh (pixel) xuất hiện trên một giây Cỡ pixel tương tự theo chiều đứng là khoảng cách giữa các đường quét và theo chiều ngang là khoảng cách vết quét chuyển động
Trang 15trong khoảng thời gian một nửa chu kỳ của tần số truyền tín hiệu video cao nhất Độ rộng băng tần cho bởi [1]:
( ) trong đó là độ rộng băng tần hệ thống, F R là số khung đã phát đi trên một giây (fps), N L là số đường quét trên một khung, R H là phân giải ngang tỷ lệ với phân giải pixel Theo tiêu chuẩn NTSC thì F R = 29,97 fps, N L = 525 đường, R H = 340 đường thì B w = 4,2 MHz
Đối với pixel màu số gồm 3 thành phần: thành phần độ chói (Y) chiếm 8 bit
và hai thành phần màu khác (U và V), mỗi thành phần yêu cầu 8 bit Khung ảnh NTSC có tổng cộng 720×480×2 pixel độ chói và màu Để truyền thông tin này trên
hệ thống truyền hình NTSC với tốc độ 29,97 khung/giây thì yêu cầu độ rộng băng tần là [1]:
( ) (
)
Độ rộng băng tần truyền các tín hiệu NTSC hiện nay là 6 MHz còn HDTV là
12 MHz [1]
Một số yêu cầu đối với hệ thống nén video:
- Các đặc tính video: Các tham số video như giải động, các thông số thống kê của nguồn, độ phân giải pixel và nhiễu ảnh hưởng đến hiệu năng của hệ thống nén
- Yêu cầu truyền dẫn: Các yêu cầu về tốc độ bit truyền xác định năng lực của
hệ thống nén Các yêu cầu rất cao về độ rộng băng tần truyền dẫn, dung lượng bộ nhớ hoặc chất lượng có thể phải đòi hỏi nén không tổn thất Ngược lại, các yêu cầu tốc độ bit cực kỳ thấp có thể phải đòi hỏi các hệ thống nén đánh đổi chất lượng ảnh
để có tỷ số nén lớn Ngoài ra, các lỗi kênh cũng ảnh hưởng đến hiệu năng của hệ thống và chất lượng video tái cấu trúc Để làm giảm ảnh hưởng của các lỗi kênh người ta thường dùng mã sửa sai (ECC)
Trang 16- Các đặc tính và hiệu năng của hệ thống nén: Căn cứ vào đặc điểm ứng dụng video mà người ta đưa ra các yêu cầu đối với hệ thống nén video Các ứng dụng video tương tác như hội nghị video thì đòi hỏi các hệ thống nén phải có khả năng đối xứng Nghĩa là mỗi phần trong đoạn video tương tác phải có cùng khả năng mã hoá và giải mã video và các yêu cầu năng lực hệ thống phải đáp ứng cho cả bộ mã hoá và bộ giải mã Trái lại, truyền hình video yêu cầu năng lực của máy phát phải rất cao vì nó phải đáp ứng việc cung cấp video được nén với chất lượng cao, thời gian thực phù hợp với dung lượng kênh truyền dẫn Các yêu cầu thực hiện hệ thống video số có thể thay đổi một cách đáng kể Hội nghị truyền hình qua máy tính có thể được thực hiện bằng cách dùng phần mềm cho việc mã hoá và giải mã hoặc dùng phần cứng chuyên dụng và các năng lực truyền dẫn để đạt được chất lượng cao Để chọn được giải pháp tốt nhất cần phải phân tích tỷ mỉ toàn bộ hệ thống và các phương án mã hoá
- Yêu cầu về tỷ lệ méo: Đây là yêu cầu cơ bản trong việc lựa chọn bộ mã video Bộ mã video phải có khả năng đáp ứng được tốc độ bit và độ trung thực của hình ảnh theo yêu cầu của ứng dụng
- Yêu cầu về tiêu chuẩn: Bộ mã hoá video phải tương thích với các tiêu chuẩn hiện tại và tương lai để có thể cùng hoạt động được với các hệ thống hiện tại hoặc trong tương lai
1.5 Kết luận chương 1
Chương 1 của luận văn đã giới thiệu chung về bài toán nén video trong các
hệ thống truyền tin, từ đó diễn tả một cách tổng quan nhất tại sao phải nén tín hiệu video trước lúc truyền dẫn, các tham số có thể tác động vào để giảm lượng tin thừa trong tín hiệu, các tham số để đánh giá kết quả nén, chương 1 đã giới thiệu:
- Độ dư trong tín hiệu video và sự cần thiết phải nén video
- Phân tích các yêu cầu về ứng dụng nén video
Trang 17CHƯƠNG 2: CHUẨN MÃ HÓA, NÉN ẢNH JPEG VÀ MÃ HÓA,
NÉN VIDEO MPEG-4 PART 10/H.264 2.1 Kỹ thuật mã hóa, nén ảnh JPEG
2.1.1 Giới thiệu chung
Nén trong ảnh là loại nén làm giảm bớt thông tin dư thừa trong miền không gian Nén trong ảnh sử dụng cả hai quá trình có tổn thất và không tổn thất thông tin Quá trình này không sử dụng thông tin các ảnh trước và ảnh sau của ảnh đang xét Trong đó kỹ thuật chính là phương pháp biến đổi DCT
Tiêu chuẩn JPEG – Định dạng ảnh JPEG là một tiêu chuẩn nén ảnh được phát triển bởi Nhóm chuyên gia xử lý ảnh (Joint Photographic Experts Group – JPEG) thành lập năm 1986 với sự hợp tác của các tổ chức ITU (International Telecommunication Union – Liên minh Viễn thông quốc tế), ISO (International Organization for Standardization – Tổ chức tiêu chuẩn quốc tế) và IEC (International Electrotechnical Commission - Ủy ban Kỹ thuật điện tử quốc tế),
và do đó tiêu chuẩn được đặt tên của nhóm JPEG Chuẩn JPEG được công nhận là chuẩn ảnh quốc tế năm 1990 phục vụ các ứng dụng truyền ảnh cho các lĩnh vực như
y học, khoa học, kỹ thuật, ảnh nghệ thuật, báo chí, camera số, Fax màu, lưu trữ ảnh… Hiện nay có 3 phiên bản về JPEG được công bố như sau:
- Tiêu chuẩn JPEG năm 1992: sử dụng mã hóa ảnh tĩnh liên tục có tổn thất (lossy) dựa trên biến đổi cosin rời rạc DCT, đã được ITU công bố là một tiêu chuẩn viễn thông ITU-T Recommendation T.81 và được công nhận là tiêu chuẩn quốc tế với tên chính thức là ISO/IEC 10918-1:1994 Mục tiêu của tiêu chuẩn JPEG năm
1992 là hỗ trợ nén ảnh với nhiều kích cỡ/không gian màu sắc, với tỉ lệ nén theo yêu cầu người dùng, hỗ trợ tái tạo lại ảnh với chất lượng cao và hỗ trợ quản lý mức độ phức tạp tính toán khi nén ảnh
- Tiêu chuẩn JPEG-LS: sử dụng mã hóa ảnh tĩnh liên tục không tổn thất (lossless) và tổn thất ít (nearlossless) dựa trên mã hóa tiên đoán và mã hóa ngẫu nhiên, đã được công bố là tiêu chuẩn quốc tế ISO/IEC IS 14495-1|ITU-T Recommendation T.87
Trang 18- Tiêu chuẩn JPEG 2000: sử dụng mã hóa co giãn (scalable) ảnh tĩnh liêntục (từ có tổn thất đến không tổn thất) dựa trên biến đổi wavelet Tiêu chuẩn JPEG
2000 không chỉ cung cấp khả năng nén ảnh với chất lượng và hiệu quả cao hơn hệ thống cơ bản JPEG mà nó còn có khả năng biểu diễn một ảnh với nhiều tính năng hơn, hỗ trợ trong cùng bit-stream (chuỗi bit được mã hóa hoặc giải mã một phần chứa đoạn mã hóa dữ liệu ngẫu nhiên) đáp ứng được rất nhiều ứng dụng hiện có và ứng dụng mới
2.1.2 Phương pháp nén ảnh chuẩn JPEG
Mã hóa JPEG bao gồm nhiều công đoạn, sơ đồ thuật toán nén và giải nén được mô tả dưới đây
Hình 2.1: Sơ đồ thuật toán nén JPEG
Quá trình giải nén sẽ được làm ngược lại, người ta giải mã từng phần ảnh nén tương ứngvới phương pháp nén đã sử dụng trong phần nén nhờ các thông tin liên quan ghi trong phần header của file nén Kết quả thu được là hệ số đã lượng tử Các hệ số này được khôi phục về giá trị trước khi lượng tử hóa bằng bộ tương tự hóa Tiếp đó đem biến đổi Cosin ngược ta được ảnh ban đầu với độ trung thực nhất định
Trang 19Hình 2.2: Sơ đồ thuật toán giải nén JPEG
Bảng mã và bảng lượng tử trong sơ đồ giải nén được dựng lên nhờ những thông tin ghi trong phần cấu trúc đầu tệp (Header) của tệp ảnh nén Quá trình nén chịu trách nhiệm tạo ra và ghi lại những thông tin này Phần tiếp theo sẽ phân tích tác dụng của từng khối trong sơ đồ
Phân khối
Chuẩn nén JPEG phân ảnh ra các khối 8x8 Công đoạn biến đổi nhanh Cosin hai chiều cho các khối 8x8 tỏ ra hiệu quả hơn
Biến đổi Cosin rời rạc ( Discrete cosine transform)
DCT là phép biến đổi giá trị một khối các điểm ảnh thành một khối các hệ số trong miền tần số
Công thức tính toán cho DCT 2 chiều với ma trận vuông giá trị điểm NxN sinh ra ma trận vuông hệ số như sau:
Trong đó
F(u,v) = Hệ số của khối DCT NxN
f(x,y) = Giá trị mẫu của khối NxN điểm ảnh
u = Tần số trục ngang (0<u<7)
v= Tần số trục đứng (0 < v < 7)
Trang 20C(u), C(v) = 1/√ nếu u,v= 0
C(u), C(v) = 1 nếu u,v = 1,2,…,7
DCT có một tính chất quan trọng Đó là tính biến đổi thuận nghịch Có nghĩa
là từ khối các hệ số có thể hồi phục giá trị các điểm ảnh ban đầu theo công thức chuyển đổi ngược sau:
Quét zigzag
Dòng số là dòng truyền tải các bit nối tiếp theo thời gian Do vậy một quá trình sắp xếp các hệ số DCT đã lượng tử trong ma trận hai chiều thành dãy một chiều nối tiếp nhau Việc quét này sẽ làm cho các hệ số “0” đứng cạnh nhau lớn nhất, tạo thuận lợi cho việc giảm tốc độ bit khi mã hóa
Trang 21độ dài ngắn sao cho chứa đựng một khối lượng thông tin nhiều nhất với số bit truyền tải ít nhất mà vẫn đảm bảo chất lượng yêu cầu
Mã hóa loạt dài ( Run length coding)
Do có sự liên hệ tương hỗ giữa các điểm ảnh lân cận nên trong ảnh số thường
có các chuỗi điểm lặp lại, đặc biệt dễ thấy đối với ảnh nhị phân Khi đó, nếu sử dụng số đếm để thay thế dãy các điểm giống nhau, có thể tiết kiệm số bit cần để mã hoá Ý tưởng này được phát triển trong một dạng mã gọi là “mã hoá loạt dài” (RLC) Trong mã này điểm đại diện đầu tiên được thay thế bằng một biểu trưng và xem như điểm xuất phát, còn độ dài dãy dùng để thay thế loạt dài Để phân tách giữa hai dãy có 2 giải pháp như sau:
Dùng số chạy dài và mã nguồn nếu mã nguồn đó không phải là số hoặc một biểu trưng đặc biệt để thay thế mã nguồn là số
Thiết kế từ mã cho mỗi loạt dài và kết hợp mã nguồn
Ví dụ: $$$$$$$**^^^^^^**$$$$$$$ mã hoá thành: 7$2*6^2*7$
Đối với ảnh nhị phân ta thay mã nguồn {0,1} bởi hai ký hiệu {w,b}
Ví dụ: 000001111111111111111100 mã hóa thành 5w17b2w
Bảng 2.2: Quét Zigzag và mã hóa Huffman
Mã độ dài thay đổi VLC ( variable length coding) (mã Huffman)
Trang 22Trong các công nghệ nén, mã Huffman là dạng mã được sử dụng phổ biến nhất Bảng mã Huffman có thể cho độ dài mã trung bình để mã hoá cho một mẫu là nhỏ nhất
do tận dụng xác suất xuất hiện của các mẫu trong nguồn tín hiệu Trong đó, mẫu có xác suất xuất hiện cao nhất sẽ được gắn với một từ mã có độ dài ngắn nhất
Mặc dù có độ dài mã thay đổi song mã Huffman vẫn có khả năng giải mã đúng do có thuộc tính tiền tố duy nhất (không có bất cứ từ mã nào lại là phần đầu của từ mã tiếp theo)
Để xây dựng cây mã Huffman gồm các bước sau:
- Bước 1: Hai nút tự do với trọng lượng thấp nhất được định vị
- Bước 2: Nút cha cho hai nút này được thiết lập Nó có trọng lượng bằng
tổng trọng lượng của hai nút con
- Bước 3: Nút cha được liệt kê vào danh sách các nút tự do và hai nút con
được xoá khỏi danh sách
- Bước 4: Một trong hai nút con được ký hiệu như đường dẫn từ nút cha và
mã hoá bit “0” Nút còn lại có thuộc tính thiết lập là bít “1”
Các bước được lặp lại cho đến khi chỉ còn lại một nút tự do Nút này được đánh dấu là gốc của cây
Phương pháp mã hoá thống kê Huffman sẽ trở nên nặng nề khi số tin của nguồn quá lớn Trong trường hợp này người ta dùng một biện pháp phụ để giảm nhẹ công việc mã hoá Trước tiên liệt kê các tin của nguồn theo thứ tự xác suất giảm dần, sau đó ghép thành từng nhóm tin có tổng xác suất gần bằng nhau Dùng một
mã đều để mã hoá các tin trong cùng một nhóm Sau đó xem các nhóm tin như một khối tin và dùng phương pháp Huffman để mã hoá các khối tin Từ mã cuối cùng tương ứng với mỗi tin của nguồn gồm hai phần: một phần là mã Huffman và một phần là mã đều
2.2 Chuẩn mã hóa và nén video MPEG-4 Part 10/H.264
2.2.1 Cấu trúc chuẩn MPEG-4 Part10
Để có thể truyền trong các môi trường khác nhau được hiệu quả, sự tích hợp các giao thức và cấu trúc mạng là rất quan trọng H.264/AVC có sự phân biệt giữa
Trang 23đặc tính mã hóa và truyền tải của 2 lớp VCL và NAL như hình 2.3 mang lại hiệu quả cao trong môi trường mạng khắc nghiệt
Hình 2.3: Cấu trúc phân lớp H.264
Ngoài ra trong H.264/AVC còn hỗ trợ ảnh IDR, ảnh này được tạo ra từ ảnh I hoặc ảnh SP nhằm xóa nội dung vùng nhớ đệm ảnh tham khảo hay nói cách khác là làm tươi bộ nhớ Khi nhận được ảnh IDR thì bộ giải mã sẽ đánh dấu tất cả các bức
ảnh trong bộ đệm là “không sử dụng cho tham khảo” Tất cả các chuỗi con có các
slice được truyền đi có thể giải mã mà không cần bất kỳ một ảnh tham khảo nào trước ảnh IDR Cấu trúc của một dòng bit H.264/AVC minh họa như hình sau
.NAL header RBSP
NAL header RBSP
NAL header RBSP
Hình 2.4 Cấu trúc dòng bit
Lớp trừu tượng mạng NAL
Tất cả dữ liệu được chứa trong các khối NAL, mỗi khối chứa một số nguyên byte xác định định dạng chung cho cả hệ thống định hướng gói (packet - oriented)
và hệ thống định hướng dòng bit (bitstream), ngoại trừ mỗi khối NAL trong lớp truyền tải định hướng dòng bit có thể có một tiền tố mã hóa ở trước, và có thể là một trong 2 định dạng sau: định dạng theo từng đơn vị NAL hoặc theo từng byte
Định dạng theo từng đơn vị NAL là một kiểu định dạng cơ bản, bao gồm các chuỗi cấu trúc cú pháp NAL được sắp xếp để giải mã
Trang 24 Định dạng theo từng byte có thể được xây dựng lại từ cấu trúc của NAL bằng cách xắp xếp các đơn vị NAL trong quá trình giải mã và thêm vào một tiền
tố mã bắt đầu cho mỗi NAL
Một chuỗi video H.264 bao gồm một chuỗi các đơn vị NAL, mỗi đơn vị NAL sẽ chứa các thành phần RBSP như bảng 1, RBSP là một tập hợp dữ liệu tương ứng với dữ liệu video được mã hóa hay thông tin đầu mục, ví dụ một chuỗi các đơn
vị RBSP như hình 2.5, trong đó các đơn vị được truyền đi dưới dạng các đơn vị NAL riêng biệt Byte đầu tiên của NAL hay còn gọi là header có chiều dài 1 byte chỉ ra loại RBSP được sử dụng, còn những byte còn lại thì chứa dữ liệu cho việc truyền tải hoặc lưu trữ
Sequence
parameter set SEI
Picture parameter set I slice
Picture delimiter P slice P slice
Hình 2.5 Minh họa một chuỗi thành phần RBSP
Bảng 2.3: Các thành phần RBSP
Thông số cài đặt Thông số về kích thước, định dạng video, vị trí ánh xạ
MB, số lượng ảnh tham khảo, thông số lượng tử…
Thông tin mở rộng Mảng báo tin Yếu tố này không cần thiết cho việc giải
mã đúng thứ tự chuỗi video
Bộ phân đoạn ảnh Đường biên giữa các ảnh, nếu không có thì bộ giải mã sẽ
dựa vào số thứ tự frame trong mỗi tiền tố slice để phân đoạn Slice mã hóa Chứa tiền tố và dữ liệu mã hóa
Phân vùng dữ liệu A, B, C Ba dạng phân vùng nhằm tăng cường khả năng chống lỗi
Kết thúc chuỗi Chỉ định bức ảnh kế tiếp trong thứ tự giải mã là ảnh
IDR (Không cần thiết)
Kết thúc luồng dữ liệu Không còn ảnh tiếp theo nào cả
Dữ liệu lấp đầy Chứa dữ liệu “giả” nhằm tăng số lượng byte trong
chuỗi (Không cần thiết)
Trang 25Lớp mã hóa video VCL (Video Coding Layer)
Ngõ ra của quá trình mã hóa là các dữ liệu VCL bao gồm một chuỗi các bits đặc trưng cho dữ liệu video mã hóa được ánh xạ vào NAL để truyền đi hoặc lưu trữ
Nó là sự kết hợp dự đoán theo thời gian và không gian và với mã chuyển vị Thuật toán mã hóa nguồn cơ bản vẫn dựa trên kỹ thuật nén liên ảnh để khai thác, thống kê
sự phụ thuộc dư thừa về thời gian và dự đoán mã hóa biến đổi để khai thác sự dư thừa về mặt không gian nhằm mục đích cuối cùng là nâng cao hiệu suất nén Hơn nữa, lớp VCL bao gồm nhiều đặc tính như 17 kiểu dự đoán Intra, thuật toán biến đổi, lọc tách khối, mã hóa Entropy hay mã hóa thích nghi khung và mành…cung cấp một môi trường mạng thân thiện và tăng cường khả năng chống lỗi phù hợp cho các dịch vụ thời gian thực như truyền luồng, quảng bá và ứng dụng hội nghị…
Kỹ thuật FMO và Data Partitioned Slices
Kỹ thuật FMO mô tả cách phân chia bức ảnh thành các slice và MB bằng cách sử dụng khái niệm nhóm slice Nhằm che giấu các kênh có khuynh hướng bị lỗi với các ứng dụng có độ trễ thấp Dữ liệu mã hóa từ các Slice được chi thành 3 loại phân vùng như A, B, C chứa tập hợp con của slice được mã hóa Phân vùng A chứa slice header và dữ liệu header cho mỗi MB Phân vùng B chứa phần dữ liệu sai khác được mã hóa cho slice Intra và SI và phân vùng C chứa phần dữ liệu sai khác được mã hóa cho MB mã hóa Inter Mỗi phân vùng có thể được đặt riêng biệt
và truyền tách biệt trong từng NAL Nếu dữ liệu phân vùng A bị mất, thì rất khó khăn cho việc cấu trúc lại Slice, vì thế phân vùng A sẽ ảnh hưởng sâu sắc đến sai số truyền Phân vùng B và C được chọn lựa thông số mã hóa kỹ càng, có thể giải mã độc lập, do đó có thể chỉ mã hóa A và C hoặc chỉ A và B
Kỹ thuật Arbitrary Slice Ordering
Kỹ thuật sắp xếp trật thứ tự slice bất kỳ ASO cho phép bộ giải mã có thể xử
lý slice theo thứ tự bất kỳ mà nó nhận được Do đó bộ giải mã không cần phải chờ đợi slice đúng theo thứ tự để có thể bắt đầu xử lý chúng Điều này làm giảm độ trễ
xử lý ở bộ giải mã, kết quả là độ trễ tiềm ẩn trong các ứng dụng truyền video thời gian thực sẽ nhỏ đi
Trang 26Cấu trúc dòng bit H.264/AVC
Cấu trúc dòng bit H.264/AVC được minh họa như hình 2.6
Trong đó:
Seq : thông tin về chuỗi ảnh (Squence)
- Video Params : thông số chiều cao, rộng, tỷ lệ khuôn hình các phần tử ảnh
- Bistream Params : tốc độ bit và các thông số khác
- QTs : có 2 loại QTs
Nén trong ảnh
Nén liên ảnh
GOP : thông tin về nhóm ảnh
- Time code : SMPTE time code : Giờ, phút, giây, ảnh
- GOP Params: Miêu tả cấu trúc và các thông số của GOP
PICT : thông tin về ảnh (Picture information.)
- Type :ảnh loại I, P hay B
Buffer Params : thông tin về bộ đệm
Encode Params : thông tin về vector chuyển động
Slice : thông tin về Slice ảnh
- Vert Pos : Slice bắt đầu từ dòng nào
- Qscale : thông tin về bảng lượng tử
MB : thông tin về MB
- Addr Incr : Số lượng MB được bỏ qua
- Type : loại vector chuyển động dùng cho MB
- Code Block Pattern (CBP) : chỉ rõ loại khối được mã hoá
Trang 27Hình 2.6: Cấu trúc dòng bit MPEG-4 H.264/AVC
Trang 282.2.3 Kỹ thuật nén video MPEG-4 Part 10/ H.264
2.2.3.1 Nguyên lý hoạt động
Sơ đồ khối mã hóa:
Hình 2.7: Sơ đồ khối mã hóa H.264/AVC
Một bức ảnh ngõ vào gồm có 3 thành phần màu cơ bản R, G, B, sẽ được biến đổi thành Y, U, V sau đó ảnh sẽ được tách thành các khối MB có kích thước là nxn với n=2, 4, 8, và 16 tùy thuộc vào độ phức tạp của bức ảnh Kích thước nhỏ 2x2 sẽ giảm tốc độ đường truyền nhưng thời gian mã hóa sẽ lâu hơn Ảnh đầu tiên hoặc điểm truy nhập ngẫu nhiên thì được mã hóa Intra, các ảnh còn lại của dãy dùng dự đoán bù chuyển động từ các ảnh đã mã hóa trước để mã hóa Inter
Dữ liệu từ các MB cần được mã hóa sẽ được đưa đến cả bộ trừ và bộ dự đoán chuyển động Bộ dự đoán chuyển động sẽ so sánh các MB mới được đưa vào với các MB tham khảo đã được đưa vào trước đó, rồi tìm ra các MB trong frame tham khảo gần giống nhất với MB cần được mã hóa này Bộ dự đoán chuyển động
sẽ tính toán vector chuyển động, vector này sẽ đặc trưng cho sự dịch chuyển theo cả
2 chiều ngang và thẳng đứng của MB mới cần được mã hóa so với frame tham khảo Bộ dự đoán chuyển động cũng đồng thời gửi các MB tham khảo tới bộ trừ với
Trang 29MB mới cần được mã hóa, để tạo ra các sai số tiên đoán đặc trưng cho sự sai khác giữa MB dự đoán và MB cần mã hóa
Tín hiệu sai khác này sẽ được biến đổi nguyên để tạo ra tập hệ số biến đổi sau đó được đưa qua bộ lượng tử để làm giảm số lượng bits cần truyền Đến đây, các hệ số lượng tử được chia làm 2 hướng, một hướng sắp xếp lại và đưa vào mã hóa Entropy, tại đây số bits đặc trưng cho các hệ số tiếp tục được làm giảm đi một cách đáng kể, hướng còn lại đưa qua bộ giải lượng tử và biến đổi ngược để tạo ra khối sai số Sau đó đưa vào bộ cộng với tín hiệu dự đoán và được lọc tách khối trong vòng nhằm làm giảm hiệu ứng khối tạo thành ảnh cấu trúc lại, được lưu trữ nhằm mục đích ước lượng và dự đoán chuyển động Dữ liệu tại đầu ra bộ mã hóa Entropy sẽ kết hợp với vector chuyển động và các thông tin khác như thông tin về ảnh I, ảnh P, và ảnh B rồi truyền ra ngoài kênh truyền dưới dạng dòng bit nén của các đơn vị NAL, gửi tới bộ giải mã Trong H.264/AVC, có hỗ trợ 5 kiểu mã hóa ảnh: đó là ảnh I, P, B, SP và SI
Sơ đồ khối giải mã:
Hình 2.8: Sơ đồ khối giải mã H.264/AVC
Đầu tiên bộ giải mã Entropy nhận được các dòng bit nén từ NAL, một mặt sẽ giải mã Entropy để tách thông tin đầu mục và vector dự đoán chuyển động đưa vào
bù chuyển động, mặt khác các hệ số DCT được giải lượng tử và biến đổi ngược IDCT để biến tín hiệu từ miền tần số thành tín hiệu ở miền không gian, các hệ số
Trang 30biến đổi ngược thu được sẽ cộng với tín hiệu dự đoán Sau đó một phần được đưa qua bộ lọc tách khối để loại bỏ hiện tượng nhiễu trước khi đưa vào lưu trữ, phần còn lại được sử dụng cho mục đích dự đoán
2.2.3.2 Khối nén không gian
Nén theo không gian hay còn gọi là nén tạo ảnh Intra, chỉ sử dụng thông tin trong bức ảnh hiện tại mà không có sự tham khảo ảnh khác, tức là mã hoá độc lập
mà không cần thông tin phụ cho giải mã không cần tham khảo các ảnh khác, do đó hiệu quả nén chỉ phụ thuộc vào sự loại bỏ thông tin dư thừa về không gian nên sẽ không được hiệu quả lắm Nhưng ảnh I cho phép người xem chuyển đổi các kênh, cung cấp điểm truy cập ngẫu nhiên vào dòng bit nén và ngăn chặn sai số truyền Ngoài ra ảnh I còn được dùng liên tục để tạo thành các điểm tựa cho dòng dữ liệu trong quá trình giải mã, cũng như được sử dụng làm điểm chuyển mạch trong quá trình phân cấp Ảnh I chỉ dùng 2 bit/ pixel được mã hóa
Sơ đồ khối mã hóa ảnh I
Hình 2.9: Sơ đồ khối mã hóa ảnh I
2.2.3.2.1 Chia ảnh thành các MacroBlock
Một trong những ưu điểm của chuẩn H.264/AVC là nó có thể phân chia thành các kích thước nhỏ để mô tả chuyển động Phân vùng của thành phần luma có các kích thước mẫu như 16 x 16, 16 x 8, 8 x 16 và 8 x 8 phù hợp cho các chuyển động ở những khu vực giống nhau trong ảnh Khi sử dụng khối 8x8, còn có thể phân chia thành 4 cỡ nhỏ hơn là 8x8, 8x4, 4x8 hoặc 4x4 rất thích hợp khi xử lý
Trang 31chuyển động tại chỗ có nhiều chi tiết, làm giảm hiện tượng vỡ khối và nâng cao chất lượng hình ảnh
Hình 2.10: Phân chia MB - Sub MB cho bù chuyển động
Cấu trúc dự đoán thời gian được mô tả như hình 2.11 sau:
Hình 2.11: Chỉ ra thứ tự sắp xếp của các VOP
Giải thích: ảnh I không sử dụng ảnh tham khảo và được mã hóa kiểu Intra được ký hiệu là Ix Các ảnh P và ảnh B có sử dụng tham khảo, được ký hiệu là Px Các mũi tên miêu tả hướng dự đoán
Khi sử dụng ảnh B làm ảnh tham khảo cho ảnh I và ảnh P, thì ảnh B sẽ được hiển thị sau đó với thời gian hiển thị riêng, các ảnh tham khảo được truyền đi trước các ảnh B tương ứng Theo hình 2.11 thì thứ tự truyền là I0 P1 P3 B2 P5 B4 P7 B6 Bởi vì không có thông tin được truyền cho các ảnh B2 và P5 nên các ảnh B6 và P7
sẽ là ảnh tham khảo cho VOP P3 mà không ảnh hưởng cấu trúc tham khảo
2.2.3.2.2 Dự đoán trong ảnh (Intra-frame)
Trang 32Dự đoán Intra là kiểu dự đoán sử dụng các MB kế bên đã được mã hóa trong cùng một frame để tham khảo, nhằm khai thác sự tương quan về không gian Kiểu
dự đoán Intra thì không được sử dụng cho dự đoán các đường biên của slice để giữ tính độc lập giữa các slice Đối với các chuẩn trước đây việc dự đoán sẽ thực hiện trong miền biến đổi, còn ở H.264/AVC thì dự đoán được thực hiện trong miền không gian bằng việc tham khảo tới các mẫu bên cạnh của các khối đã được mã hóa Trong H.264/AVC hỗ trợ các kiểu dự đoán INTRA 4 x 4, INTRA 8 x 8, INTRA 16 x 16 và kiểu dự đoán INTRA-PCM
INTRA LUMA 4 x 4
Mỗi MB được chia thành 16 khối con 4x4, mỗi khối 4x4 được dự đoán không gian từ các khối bên cạnh Để có thể dự đoán giá trị mẫu của khối 4x4 luma cần sử dụng 13 mẫu kế cận bao gồm 4 mẫu của khối kế cận bên trái, 4 mẫu của khối
kế cận bên trên, 4 mẫu của khối kế cận đỉnh phải, và 1 mẫu của khối kế cận đỉnh trái Mỗi khối 4x4 của thành phần luma có thể dùng 1 trong 9 kiểu dự đoán Ngoài kiểu dự đoán DC, còn hỗ trợ 8 kiểu dự đoán định hướng sau:
- Kiểu dự đoán dọc (Vertical)
- Kiểu dự đoán ngang (Horizontal )
- Kiểu dự đoán chéo xuống/trái (Diagonal Down/Left )
- Kiểu dự đoán chéo xuống/phải (Diagonal Down/Right)
- Kiểu dự đoán dọc/phải (Vertical/Right)
- Kiểu dự đoán dọc/ trái (Vertical/Left)
- Kiểu dự đoán ngang/xuống (Horizontal/Down)
- Kiểu dự đoán ngang/lên (Horizontal/Up)
INTRA LUMA 16 x 16
Chỉ 1 kiểu dự đoán được áp dụng cho toàn bộ MB thích hợp cho những miền ảnh trơn tru, phẳng đều Bốn kiểu dự đoán được hỗ trợ là: chiều ngang, chiều thẳng đứng, dự đoán DC và dự đoán mặt phẳng Trong kiểu dự đoán mặt phẳng sử dụng phương trình đường cong 3 thông số để dự đoán độ luma, độ dốc theo chiều ngang,
Trang 33chiều thẳng đứng cho phù hợp với các điểm ảnh bên cạnh, và kiểu dự đoán này có hiệu quả rất cao trong vùng có thành phần luma ít thay đổi
Để có thể dự đoán giá trị mẫu của khối luma 16x16 cần sử dụng 33 mẫu kế cận bao gồm 16 mẫu của khối kế cận bên trái, 16 mẫu của khối kế cận bên trên và 1 mẫu của khối kế cận đỉnh trái
INTRA CHROMA 8x8
Dự đoán cho thành phần chroma được thực hiện một lần cho toàn bộ MB, 64 giá trị mẫu chroma sử dụng các kiểu dự đoán giống như dự đoán Intra 16x16 cho thành phần Luna: Dự đoán theo chiều ngang, dự đoán theo chiều đứng, dự đoán
DC, dự đoán mặt phẳng
INTRA-PCM
Là một MB 16x16, chứa một mặt phẳng các thành phần luma và chroma chưa nén Làm cho bộ mã hóa xử lý đơn giản hơn bằng cách xử lý mã hóa và biến đổi thay vì phải gửi trực tiếp mẫu các giá trị mã hóa Và kiểu dự đoán I-PCM còn có một số lợi ích sau:
Cho phép mã hóa chính xác ký tự đại diện của giá trị mẫu
Cung cấp giá trị đúng cho những bức ảnh có nội dung bất thường mà không cần mở rộng dữ liệu quan trọng
Cho phép đặt giới hạn số lượng bit điều khiển MB mà không ảnh hưởng đến hiệu suất nén
2.2.3.2.3 Dự đoán trọng số
Là một phương pháp điều chỉnh mẫu cho bù chuyển động dữ liệu trong MB
P hoặc MB B rất thích hợp cho mã hóa mặt người hoặc mã hóa chuyển động Có 3 loại dự đoán trọng số như sau:
- P slice macroblock, dự đoán trọng số “hiện thị” (explicit)
- B slice macroblock, dự đoán trọng số “hiện thị” (explicit)
- B slice macroblock, dự đoán trọng số “ẩn” (implicit)
Mỗi mẫu dự đoán pred0(i, j) hoặc pred1(i, j) được co dãn bởi trọng số thống
kê W0 hoặc W1 trong dự đoán bù chuyển động trước đó Ở loại “hiện” thì trọng số
Trang 34thống kê được xác định bởi bộ mã hóa và truyền đi ở Slice header Nếu sử dụng loại
“ẩn” thì trọng số thống kê W0, W1 được tính toán dựa vào mối quan hệ vị trí thời gian của list 0 và list1 trong ảnh tham khảo Giá trị trọng số thống kê lớn nếu ảnh tham khảo gần giống với ảnh hiện tại và giá trị trọng số thống kê nhỏ nếu ảnh tham khảo khác với ảnh hiện tại
Một số ứng dụng cho phép cả 2 hàm ẩn và hiện điều khiển sự liên quan của ảnh tham khảo đối với quá trình bù chuyển động, dự đoán trọng số có hiệu quả đặc biệt trong mã hóa các hiệu ứng mờ dần như minh họa ở hình 2.12
sự dịch chuyển Những vector chuyển động ở các khối kế cận sẽ cung cấp một giá trị pixel ước lượng khác nhau và được tính toán trong mỗi khối của MB Giá trị dự đoán là giá trị trung bình của các ước lượng này Dự đoán chuyển động của MPEG-
2 có nhược điểm là ảnh tham khảo thích ứng nhất với MB hiện tại phải kích thước 16x16 và vùng thích ứng phải nằm ngay trong ảnh tham khảo đó dẫn đến hiệu quả
Trang 35nén chưa cao Nguyên tắc bù chuyển động trong H.264/AVC cũng giống như các chuẩn trước là tìm kiếm trong ảnh tham khảo khối thích hợp nhất sao cho năng lượng của phần sai số dự đoán là nhỏ nhất, tuy nhiên ưu điểm của chuẩn H.264/AVC có thể bù chuyển động với kích thước nhỏ 8x8, 4x4 hoặc bù chuyển động trên cơ sở các điểm ảnh con, đặc điểm này đã mang lại 12% hiệu quả nén so với các chuẩn cũ
2.2.3.2.5 Phép biến đổi nguyên ICT (Integer Discrete Cosin Transform)
Phép biến đổi nguyên được thực hiện trên các khối 4x4 sau khi được dự đoán
bù chuyển động hoặc dự đoán Intra Về cơ bản thì cũng giống biến đổi DCT, chỉ bổ sung một số đặc điểm sau:
Đây là một phép biến đổi nguyên xấp xỉ với phép biến đổi DCT, tất cả các bước được thực hiện với số nguyên, quá trình giải mã sẽ không mất dữ liệu
Các bước tính toán được tích hợp trong bộ lượng tử hóa nhằm làm giảm số lượng bước tính toán
Tất cả các biến đổi và lượng tử chỉ dùng các thuật toán cộng hoặc thuật toán dịch bit trên các giá trị nguyên 16 bit và chỉ thực hiện nhân trên từng hệ số chứ không cần thực hiện phép chia nên đảm bảo không mất đi độ chính xác
1111
2112
1111
54.03.13.154.0
11
11
3.154.054.03.1
11
11
ICT DCT
H.264/AVC cung cấp 3 kiểu biến đổi tùy thuộc vào loại sai số dự đoán, một
là biến đổi Hadamard cho mảng 4x4 hệ số DC luma trong kiểu dự đoán Intra 16x16,
2 là biến đổi Hadamard mảng 2x2 hệ số DC chroma và tất cả các block 4x4 ở trong
dữ liệu dư thừa được biến đổi ICT
Phép biến đổi ICT cho các khối 4x4 theo công thức sau:
Trang 36b a c a
b a c a
c a b a X
c b b c
a a a a
b c c b
a a a a AXA
2 2
2 2
2 2
111
111
111
111
11
1111
11
1111)
(
b ab b ab
ab a ab a
b ab b ab
ab a ab a
d d
d
d X
d d
d d E
X là ma trận 4x4 của tín hiệu video, hình ảnh ngõ vào
Phép toán có nghĩa là mỗi thành phần của ma trận CXCT
sẽ nhân với hệ số tỷ lệ ở cùng vị trí trong ma trận E (nhân vô hướng)
414 0
c
b d
Để đơn giản, ở chuẩn H.264/AVC thực hiện xấp xỉ a = 0.5,
2 / 2
/
4 / 2 / 4 / 2 /
2 / 2
/
1 1 2 1
2 1 1 1
2 1 1 1
1 1 2 1
1 2 2 1
1 1 1 1
2 1 1 2
1 1 1 1 )
(
2 2
2 2
2 2
2 2
b ab b
ab
ab a
ab a
b ab b
ab
ab a
ab a
X E
tử hóa và co dãn theo công thức sau: