Tài liệu Tổng quan về chuẩn nén MPEG-4H 264/AVC và khả năng ứng dụng trong thực tiễn: ... Ebook Tổng quan về chuẩn nén MPEG-4H 264/AVC và khả năng ứng dụng trong thực tiễn
113 trang |
Chia sẻ: huyen82 | Lượt xem: 2426 | Lượt tải: 0
Tóm tắt tài liệu Tổng quan về chuẩn nén MPEG-4H 264/AVC và khả năng ứng dụng trong thực tiễn, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Tên đề tài : “Tổng quan về chuẩn nén MPEG-4 H.264/AVC và khả năng ứng dụng trong thực tiễn”
GVHD : TS. TRẦN DŨNG TRÌNH
SVTH : NGUYỄN QUANG HOÀNG SƠN
MSSV : 103101088
LỚP : 03DDT2
Tp.HCM ngày tháng năm 2008
GVHD
TS. Trần Dũng Trình
NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
Tên đề tài : “Tổng quan về chuẩn nén MPEG-4 H.264/AVC và khả năng ứng dụng trong thực tiễn”
GVHD : TS. TRẦN DŨNG TRÌNH
GVPB : KS. TRẦN DUY CƯỜNG
SVTH : NGUYỄN QUANG HOÀNG SƠN
MSSV : 103101088
LỚP : 03DDT2
Tp.HCM ngày tháng năm 2008
GVPB
KS. Trần Duy Cường
MỤC LỤC
LỜI GIỚI THIỆU
H
iện nay, chúng ta đang sống trong một kỷ nguyên mới “Kỷ nguyên truyền thông đa phương tiện” các thiết bị mới, các kỹ thuật mới lần lượt ra đời nhằm mục đích đáp ứng nhu cầu giải trí cho con người ngày một tốt hơn. Các ứng dụng đa phương tiện thời gian thực truyền trên mạng di động, mạng Internet, mạng truyền hình…ngày càng phát triển rầm rộ, các nhà sản xuất thiết bị chú trọng áp dụng các công nghệ nén tiên tiến vào thiết bị của mình nhằm thõa mãn nhu cầu “chất lượng trung thực về âm thanh, hình ảnh” của con người cũng như khả năng đáp ứng yêu cầu thực tế của công nghệ. Thế nhưng không phải nhu cầu nào của chúng ta đều có thể được đáp ứng một cách thuận lợi, vì sự gắn liền giữa độ phức tạp, tốn kém chi phí đầu tư cơ sở hạ tầng, thiết bị đầu cuối…, luôn đi kèm với công nghệ cao. Bên cạnh đó vấn đề truyền thông nội dung đa phương tiện hiện nay đang gặp một số khó khăn: băng thông đường truyền, nhiễu kênh, giới hạn của pin cho các ứng dụng…. Trong khi băng thông kênh truyền phải chờ đợi một công nghệ mới của tương lai mới có thể cải thiện, còn việc cải thiện giới hạn của pin dường như không đáp ứng được sự phát triển của các dịch vụ trong tương lai, thì phương pháp giảm kích thước dữ liệu bằng các kỹ thuật nén là một cách giải quyết hiệu quả các khó khăn trên.
Cho đến nay có rất nhiều kỹ thuật nén dữ liệu đa phương tiện như: chuẩn JPEG, chuẩn JPEG2000 và chuẩn MPEG… tuy nhiên hiệu quả nén của các tiêu chuẩn này cũng chưa được cao, và vẫn chưa đáp ứng tốt yêu cầu của truyền hình HDTV…cũng như việc lưu trữ dung lượng còn rất lớn. Gần đây nhất là sự thành công của tiêu chuẩn mã hóa MPEG-2 được đánh dấu nổi bật từ những lần phóng thương mại đầu tiên các hệ thống vệ tinh DTH vào giữa những năm 1990 và thành công của chuẩn nén MPEG-4 Part 2 trong ứng dụng truyền hình số, các ứng dụng đồ họa… Nhưng với yêu cầu bộ mã hóa có thể tương thích với các ứng dụng tốc độ bit thấp, thì nó không đáp ứng hiệu quả. Từ việc nghiên cứu khắc phục nhược điểm của MPEG-2, phát triển bổ sung cho MPEG-4 Part 2 để cho ra đời những chuẩn nén tiên tiến hơn, mà nổi bật là MPEG-4 H.264/AVC. Nó là sự kết hợp hoàn hảo giữa 2 tổ chức nổi tiếng: nhóm chuyên gia mã hóa video của tổ chức ITU và nhóm chuyên gia xử lý ảnh động ISO/IEC. Ta thử xét một ví dụ minh họa trong truyền hình số, nếu sử dụng kỹ thuật nén MPEG-2 cung cấp định dạng SDTV với độ phân giải 640x480 pixel thì cần băng thông 4.3Mbps trên một kênh truyền còn đối với HDTV thì cần 19Mbps, nhưng nếu sử dụng chuẩn nén H.264 thì băng thông cho truyền hình SDTV chỉ có 1.5 – 2 Mbps hoặc 6-9 Mbps đối với HDTV. Chính vì những ưu điểm đó mà MPEG-4 H.264/AVC đã dần dần chứng tỏ vị thế số 1 của mình, những ưu việt mà chuẩn nén này mang lại chắc chắn sẽ có ảnh hưởng tích cực đến thị trường phim ảnh, cũng như ngành công nghiệp chế tạo thiết bị đầu cuối. Để có thể hiểu biết hơn về tiêu chuẩn nén tiên tiến này, em đã chọn đề tài “Tổng quan về chuẩn nén MPEG-4 H.264/AVC và khả năng ứng dụng trong thực tiễn” làm đề tài tốt nghiệp của mình. Sau hơn 3 tháng nỗ lực hết mình, về cơ bản Đồ án cũng đã cho ta cái nhìn tổng quát về chuẩn nén MPEG-4 H.264/AVC, đồng thời với sự minh họa bằng chương trình Matlab 7.01, cũng giúp cho ta hiểu rõ hơn những ưu điểm của chuẩn nén này, tuy nhiên do có sự hạn chế về kinh nghiệm, thời gian,…nên sẽ không tránh khỏi sai sót, kính mong Quý Thầy Cô, bạn bè, đồng nghiệp tham khảo đóng góp ý kiến.
Em xin chân thành cảm ơn TS. Trần Dũng Trình đã bỏ ra chút thời gian quý báu, hướng dẫn tận tình và cung cấp tài liệu bổ ích trong quá trình làm Đồ án. Đồng thời cũng xin cảm ơn Quý Thầy Cô Trường Đại Học Kỹ Thuật Công Nghệ Thành Phố Hồ Chí Minh, đã tận tình dạy dỗ, truyền thụ kiến thức và kinh nghiệm cho em trong suốt hơn bốn năm qua, cảm ơn các bạn bè đã quan tâm, chia xẻ, đóng góp ý kiến.
Kính chuùc Quyù Thaày Coâ vaø baïn beû ñöôïc nhieàu söùc khoûe.
Tp.hcm, thaùng 01/2008
Sinh vieân thöïc hieän
Nguyeãn Quang Hoaøng Sôn
CÁC THUẬT NGỮ TIẾNG ANH
BAC Mã hóa số học nhị phân (Binary Arithmetic Coding)
CA Mã hóa thích nghi theo nội dung (Context Adaptive)
CC Mã xóa (Clear code)
CIF Định dạng mã hóa hình ảnh có kích thước 352 x 288 (Common Intermediate Format)
DAB Phát quảng bá âm thanh số (Digital Audio Broadcasting)
DCT Biến đổi Cosine rời rạc (Discrete Cosine Transform)
DFT Biến đổi Fourier rời rạc (Discrete Fourier Transform)
DPCM Điều xung mã vi sai (Differential Pulse Code Modulation)
DS Thuật toán tìm kiểu hình thoi (Diamond Search)
DTH
DWT Biến đổi Wavelet rời rạc (Discrete Wavelet Transform)
EOI Mã kết thúc (End Of Information)
ES Dòng cơ bản (Elemenatary Stream)
Exp-Golomb Mã Exponential Golomb
FLC Mã hóa có chiều dài cố định (Fixed-Length Code)
FMO Thứ tự MB mềm dẻo (Flexible Macroblock Order)
GOP Nhóm ảnh (Group Of Pictures)
GMC Bù chuyển động toàn phần (Global Motion Compensation)
HDS Thuật toán tìm hình thoi nằm ngang (Horizontal Diamond search)
HDTV Truyền hình phân giải cao (High Definition Television)
HEXBS Thuật toán tìm kiểu hình lục giác (Hexagon-Based Search)
ICT Biến đổi nguyên Cosine rời rạc (Integer Discrete Cosine Transform)
IDR Ảnh làm tươi tức thời bộ giải mã (Instantaneous Decoder Refresh Picture)
IDCT Biến đổi ngược Cosine rời rạc (Inverse Discrete Cosine Transform)
IP Giao thức Internet ( Internet Protocol)
ISDN Mạng tích hợp dịch vụ số (Integrated Service Digital Network)
JPEG Chuẩn nén ảnh của ủy ban JPEG quốc tế (Joint Photographic Experts Group)
JPEG2000 Chuẩn nén ảnh JPEG2000
LOSSLESS Kỹ thuật nén ảnh không tổn hao (không mất dữ liệu)
LOSSY Kỹ thuật nén ảnh có tổn hao (có mất dữ liệu)
MB Đa khối (Macroblock)
MBAFF Mã hóa khung mành thích nghi (Macroblock-Adaptive Frame-Field coding)
MC Bù chuyển động (Motion Compensation)
ME Ước lượng chuyển động(Motion Estimate)
MMS Dịch vụ tin nhắn đa phương tiện (Multimedia Messaging Services)
MSE Sai số bình phương trung bình (Mean Square Error)
MPEG Nhóm chuyên gia nén ảnh động (Moving Pictures Experts Group)
NAL Lớp trừu tượng mạng (Network Abstraction Layer)
NNS Tìm ở khối gần nhất (Nearest Neighbors Search)
PCM Điều xung mã (Pulse Code Modulation)
PF Hệ số co dãn (Parameter Factor)
MF Hệ số nhân(Multipy Factor)
PSNR Tỷ số tín hiệu đỉnh trên nhiễu (Peak Signal to Noise Ratio)
QCIF Định dạng hình ảnh có kích thước 176 x 144 (Quarter Common Intermediate Format)
QP Thông số lượng tử (Quantization Parameter)
RBSP (Raw Byte Sequence Payload)
RGB Ba màu cơ bản màu đỏ/Xanh/Lam (Red/Green/Blue)
RLC Mã hoá dọc chiều dài (Run Length Coding)
RSVP Giao thức dành riêng tài nguyên mạng (Resource Reservation Protocol)
RTP Giao thức truyền tải thời gian thực (Real Time Transport Protocol)
SDTV Truyền hình tiêu chuẩn ( Standard Televison)
SMIL Ngôn ngữ tích hợp Multimedia đồng bộ (Synchronized Multimedia Integration Language)
SRC Điều khiển tốc độ bit biến đổi được ( Scalable Rate Control)
TSS Thuật toán tìm ba bước (Three-Step search)
UMTS (Universal Mobile Telecommications System)
VCL Lớp mã hóa Video (Video Coding Layer)
VLC Mã có chiều dài thay đổi (Variable Length Code)
VO Đối tượng Video (Video Object)
VOP Đối tượng mặt phẳng Video (Video Object Plane)
YCbCr Độ chói, màu lam, màu đỏ (Luminance, Blue chrominance, Red chrominance)
ISO Tổ chức quốc tế về tiêu chuẩn chất lượng (International Organization for Standardization)
IEC Ủy ban kỹ thuật điện quốc tế (International Electro-technical Commission)
JTC1 Ủy ban kỹ thuật 1 (Joint Technical Committee 1)
SC29 Ủy ban phụ 29 (Sub-committee 29)
WG11 Nhóm làm việc 11( Work Group 11)
LỜI MỞ ĐẦU
Để có thể đi sâu vào nghiên cứu chuẩn nén MPEG-4 H.264/AVC, thì chúng ta cần nắm được các thuật ngữ, các kỹ thuật cần thiết cho việc nén tín hiệu, cũng như là các ưu nhược điểm của các chuẩn nén trước đó đã mang lại.Vì đây là một đề tài lý thuyết, nên bước quan trọng nhất của quá trình làm Đồ án tốt nghiệp là tìm kiếm tài liệu và tổng hợp nó thành một chuỗi các kiến thức liên tục tránh lang man và yếu tố thuyết phục người tham khảo cũng rất quan trọng, do đó bên cạnh trình bày chi tiết về cách thức nén, em đã cố gắng mô phỏng một phần ưu điểm của chuẩn nén này nhằm góp phần sinh động cho đề tài.
TỔ CHỨC ĐỒ ÁN
Đồ án được trình bày thành 6 chương và 1 phụ lục.
Chương I: Trình bày cơ sở về nén tín hiệu video, các thông số đặc trưng của tín hiệu số và quá trình biến đổi tín hiệu màu, phân loại các nguyên lý nén.
Chương II: Trình bày các kỹ thuật được sử dụng trong nén Video, các phép biến đổi và các kỹ thuật mã hóa, các tiêu chuẩn đáng giá chất lượng ảnh nén MSE, PSNR, MAE,SAE …
Chương III: Trình bày các chuẩn nén thuộc họ MPEG, cấu trúc dòng bit, các ưu điểm đã đạt được.
Chương IV: Cũng là chương quan trọng nhất, trình bày chuẩn nén tiên tiến nhất hiện nay: MPEG-4 H.264/AVC, các đặc tính nổi bật và các kỹ thuật mới trong chuẩn nén này.
Chương V: Các ứng dụng của MPEG-4 H.264/AVC trong thực tế và tương lai.
Chương VI: Mô phỏng một phần quá trình nén và giải nén của MPEG-4 H.264/AVC, mô phỏng kiểu mã hóa tiên tiến như bù chuyển động với kích thước 4x4, sử dụng bảng lượng tử vô hướng 52 giá trị…
Tuy nhiên, do kinh nghiệm còn hạn chế, đồng thời MPEG-4 H.264/AVC là một kỹ thuật còn trong giai đoạn nghiên cứu và phát triển, nên chắc chắn Đồ án sẽ không tránh khỏi sai sót, kính mong Quý Thầy Cô, và bạn bè đồng nghiệp đóng góp ý kiến nhằm hoàn thiện tốt Đồ án tốt nghiệp này.
CƠ SỞ VỀ NÉN TÍN HIỆU VIDEO
SỰ CẦN THIẾT CỦA NÉN TÍN HIỆU
Một tín hiệu video số thường chứa một lượng lớn dữ liệu, do đó sẽ gặp rất nhiều khó khăn trong việc lưu trữ và truyền đi trong một băng thông kênh truyền hạn chế. Với sự phát triển của khoa học kỹ thuật, ngày nay đã sản xuất được bộ cảm biến màu có độ phân giải lên đến 16 triệu pixel tương đương với một bức ảnh có độ phân giải 4096x4096 pixels, nhưng thực tế ứng dụng cần độ phân giải cao nhất hiện nay cũng chỉ dùng lại ở 1920x1080 pixel, do đó để có thể tiết kiệm không gian lưu trữ và băng thông kênh truyền thì cần nén tín hiệu.
Quá trình nén ảnh thực hiện được là do thông tin trong bức ảnh có tổ chức, có trật tự, vì vậy nếu xem xét kỹ tính trật tự, cấu trúc ảnh sẽ phát hiện và loại bỏ được các lượng thông tin dư thừa, chỉ giữa lại các thông tin quan trọng nhằm giảm số lượng bit khi lưu trữ cũng như khi truyền mà vẫn đảm bảo tính thẩm mỹ của bức ảnh. Tại đầu thu, bộ giải mã sẽ tổ chức, sắp xếp lại được bức ảnh xấp xỉ gần chính xác so với ảnh gốc nhưng vẫn đảm bảo thông tin cần thiết. Tín hiệu video thường chứa đựng một lượng lớn các thông tin dư thừa, chúng thường được chia thành 5 loại như sau:
Có sự dư thừa thông tin về không gian: giữa các điểm ảnh lân cận trong phạm vi một bức ảnh hay một khung video, còn gọi là thừa tĩnh bên trong từng frame.
Có sự dư thừa thông tin về thời gian: giữa các điểm ảnh của các khung video trong chuỗi ảnh video, còn gọi là thừa động giữa các frame
Có sự dư thừa thông tin về phổ: giữa các mẫu của các dữ liệu thu được từ các bộ cảm biến trong camera, máy quay…
Có sự dư thừa do thống kê: do bản thân của các ký hiệu xuất hiện trong dòng bit với các xác suất xuất hiện không đồng đều.
Có sự dư thừa tâm thị giác: thông tin không phù hợp với hệ thống thị giác con người, những tần số quá cao so với cảm nhận của mắt người.
Ưu điểm của việc nén tín hiệu:
Tiết kiệm băng thông kênh truyền ( trong thời gian thực hoặc nhanh hơn).
Kéo dài thời giản sử dụng của thiết bị lưu trữ, giảm chi phí đầu tư cho thiết bị lưu trữ.
Giảm dung lượng thông tin mà không làm mất tính trung thực của hình ảnh.
Có nhiều phương pháp nén tín hiệu, phương pháp nén bằng cách số hóa tín hiệu vẫn tỏ ra hữu hiệu trong mọi thời đại, một mặt nó có thể làm giảm lượng thông tin không quan trọng một cách đáng kể, mặt khác nó còn giúp cho tín hiệu được bảo mật hơn.
QUÁ TRÌNH SỐ HÓA TÍN HIỆU
Quá trình số hoá tín hiệu tương tự, bao gồm quá trình lọc trước (prefiltering), lấy mẫu, lượng tử và mã hoá minh họa như hình I.1. Quá trình lọc trước nhằm loại bỏ các tần số không cần thiết ở tín hiệu cũng như nhiễu, bộ lọc này còn gọi là bộ lọc chống nhiễu xuyên kênh Aliasing.
LẤY MẪU
Thực chất đây là một phép toán rời rạc hay là một phép điều biên xung PAM và được thực hiện bằng các mạch Op-amp có cực khiển strobe. Nó tạo ra giá trị tín hiệu tương tự tại một số hữu hạn các giá trị có biến rời rạc gọi là các mẫu. Các mẫu được lấy cách đều nhau gọi là chu kỳ lấy mẫu. Tần số lấy mẫu phải thoả mãn định lý Nyquist-Shannon :
Trong đó: + fs là tần số lấy mẫu.
+ fmax là tần số cực đại của phổ tín hiệu tương tự.
LƯỢNG TỬ HÓA.
Quá trình lượng tử là quá trình chuyển một xung lấy mẫu thành một xung có biên độ bằng mức lượng tử gần nhất hay nói cách khác là lượng tử chuyển đổi các mức biên độ của tín hiệu đã lấy mẫu sang một trong các giá trị hữu hạn các mức nhị phân. Lượng tử hoá biến đổi tín hiệu liên tục theo thời gian thành tín hiệu có biên độ rời rạc, nhằm làm giảm ảnh hưởng của tạp âm trong hệ thống, hạn chế các mức cho phép của tín hiệu lấy mẫu và chuẩn bị truyền tín hiệu gốc từ tương tự sang số. Giá trị thập phân của các mẫu sau khi lượng tử hoá sẽ được biểu diễn dưới dạng số nhị phân n bit (N= 2n), với n là độ phân giải lượng tử hoá, n càng lớn thì độ chia càng mịn, do đó độ chính xác càng cao.
Do làm tròn các mức nên tín hiệu bị méo dạng do sai số lượng tử gọi là méo lượng tử, tỷ số tín hiệu trên méo lượng tử (S/N) được xác định bởi:
Maõ hoaù tín hieäu
Tín hieäu ñöôïc laáy maãu
Xung laáy maãu
Tín hieäu goác
t
t
t
t
1000
0001
0000
TS chu kyø laáy maãu
Hình I.1: Sô ñoà quaù trình taïo tín hieäu soá.
Lượng tử hóa có hai loại:
Lượng tử tuyến tính: phép nén tín hiệu theo quy luật đường cong đồng đều, bước lượng tử bằng nhau.
Lượng tử phi tuyến: phép nén tín hiệu theo quy luật đường cong không đồng đều, tập trung nhiều mức lượng tử ở những vùng tín hiệu nhỏ. Trong kỹ thuật nén ảnh, nén video thì loại lượng tử phi tuyến được dùng nhiều hơn vì nó giảm dung lượng đến mức tối đa với độ méo lượng tử có thể chấp nhận được.
MÃ HÓA
Là quá trình thay thế mỗi mức điện áp cố định sau khi lượng tử bằng một dãy nhị phân gọi là từ mã. Tất cả các từ mã đều chứa số xung nhị phân cố định và được truyền trong khoảng thời gian giữa 2 thời điểm lấy mẫu cạnh nhau. Bộ mã được sử dụng để tái tạo các xung nhị phân hoặc các từ mã từ các giá trị đã lượng tử xuất hiện ở đầu ra của bộ lượng tử hoá.
TỐC ĐỘ BIT VÀ THÔNG LƯỢNG KÊNH TRUYỀN TÍN HIỆU SỐ
TỐC ĐỘ BÍT
Tốc độ bit là số lượng bit được truyền đi hay lưu trữ trong một đơn vị thời gian.
(bit/s)
Trong đó :
+là tần số lấy mẫu (Hz).
+ n là số bit nhị phân trong một ký hiệu.
+ C là tốc độ bit (bps).
THÔNG LƯỢNG KÊNH TRUYỀN
Là tốc độ số liệu cực đại có thể truyền được trên kênh truyền có độ rộng băng tần B.
(bps)
Trong đó
+ C là tốc độ bit (bps)
+ là tỷ số tín hiệu trên nhiễu trắng.
+ B là băng thông kênh truyền (Hz).
Tốc độ bit càng lớn thì tín hiệu tương tự khôi phục lại càng trung thực tuy nhiên nó sẽ là cho dung lượng lưu trữ và băng thông kênh truyền càng lớn. Trong thực tế để truyền tín hiệu có tốc độ bit là C (bps) thì cần băng thông kênh truyền là: (Hz)
Ví dụ: với n = 4, fs = 44,1Khz thì:
Tốc độ truyền thông tin là : C = n x fs = 4 x 44,1 = 176,3.103 bits/s
Và độ rộng băng tần là =
QUÁ TRÌNH BIẾN ĐỔI TÍN HIỆU MÀU
R, G, B
Hình I.2. Quá trình biến đổi màu
Hình II.2. Minh hoïa quaù trình bieán ñoåi maøu.
Một bức ảnh được chuyển từ RGB sang YUV nhằm giảm dung lượng lưu trữ cũng như truyền đi, trong quá trình giải mã, trước khi hiển thị ảnh thì nó được biến đổi ngược lại thành RGB. Công thức minh họa quá trình biến đổi như sau:
(1)
Với , kb = 0.114, kr = 0.299, khi thế vào công thức (1) thì ta được:
Nên ta có ma trận biến đổi từ RGB sang YUV như sau:
Thực hiện tương tự ta suy ra được ma trận biến đổi từ YUV sang RGB như sau:
CÁC TIÊU CHUẨN LẤY MẪU TÍN HIỆU VIDEO SỐ
Kiểu lấy mẫu cho ảnh video cũng là một vấn đề khá quan trọng của kỹ thuật nén ảnh. Một số kiểu lấy mẫu phổ biến minh họa như hình I.3 và có đặc điểm như sau:
Tốc độ lấy mẫu 4:1:1 - tần số lấy mẫu tín hiệu chói là 13,5MHz, và mỗi tín hiệu hiệu màu là 3,375MHz.
Tốc độ lấy mẫu 4:2:2 - tần số lấy mẫu tín hiệu chói là 13,5MHz, và mỗi tín hiệu hiệu màu là 6,75MHz.
Tốc độ lấy mẫu 4:4:4 - cả 3 thành phần có cùng độ phân giải, nghĩa là tần số lấy mẫu tín hiệu chói là 13,5MHz, và mỗi tín hiệu hiệu màu là 13,5MHz.
Tốc độ lấy mẫu 4:2:0 - là kiểu phổ biến, tần số lấy mẫu tín hiệu chói là 13,5MHz, và mỗi tín hiệu hiệu màu là 6,75MHz theo cả 2 chiều
Ví dụ : Một bức ảnh có độ phân giải 720 × 576 pixels
Độ phân giải của thành phần Y là 720 × 576 pixels được mã hóa bằng từ mã 8 bits.
Nếu sử dụng kiểu lấy mẫu 4:4:4 thì độ phân giải của thành phần Cb, Cr là 720 × 576 mẫu cũng được mã hóa bằng từ mã 8 bits.
=> Vậy tổng số bits sử dụng để mã hóa bức ảnh là 720 × 576 × 8 × 3 = 9 953 280 bits
Nếu sử dụng kiểu lấy mẫu 4:2:0 thì độ phân giải của thành phần Cb, Cr là 360 × 288 mẫu, cũng được mã hóa bằng từ mã 8 bits.
=> Vậy tổng số bits sử dụng là (720 × 576 × 8) + (360 × 288 × 8) × 2 = 4 976 640 bits
Hình I.3. Các tiêu chuẩn lấy mẫu phổ biến
Trong kiểu 4:4:4, tổng số mẫu cần thiết là 12 mẫu, do đó tổng số bit là 12 × 8 = 96 bits, và trung bình là 96/4 = 24 bits/pixel
Trong kiểu 4:2:0, tín hiệu được quét xen kẽ, do đó chỉ cần thiết 6 mẫu, 4 mẫu cho thành phần Y, 1 mẫu cho thành phần Cb, 1 mẫu cho thành phần Cr, do đó tổng số bits cần thiết là 6 × 8 = 48 bits, và trung bình là 48/4 = 12 bits/pixel.
Ta thấy kiểu lấy mẫu 4:2:0 giảm một ½ số lượng bits so với 4:4:4, đó cũng chính là lý do mà kiểu lấy mẫu này được sử dụng phổ biến.
MÔ HÌNH NÉN TÍN HIỆU VIDEO
Nén thời gian
Nén không gian
Lưu trữ ảnh
Bộ mã hóa ENTROPY
Hình I.4. Sơ đồ khối nén tín hiệu Video cơ bản
Các khối chính là:
- Khối nén dư thừa thời gian.
Dự đoán chuyển động
Bù chuyển động
- Khối nén dư thừa theo không gian.
Biến đổi DCT, DWT
Lượng tử hóa
Xắp xếp lại trật tự và mã hóa Entropy
NÉN TÍN HIỆU VIDEO
Tín hiệu video có dải phổ nằm trong khoảng 0 -> 6Mhz, do thành phần tần số cao chỉ xuất hiện ở các đường viền của hình ảnh nên năng lượng phổ rất ít tập trung ở miền tần số cao mà chủ yếu tập trung ở miền tần số thấp. Điều đó có nghĩa là số lượng bit ở miền tần số thấp sẽ nhiều hơn ở miền tần số cao.
Trong các hệ thống nén, tỉ số nén chính là tham số quan trọng đánh giá khả năng nén của hệ thống, ta gọi n1, n2 là số lượng bit của tín hiệu trước và sau khi nén nên ta có công thức như sau:
Tỷ số nén sẽ là
Phần trăm nén hay còn gọi là độ dư thừa dữ liệu tương đối.
Nếu n1= n2 thì ta có C =1, và R = 0 nghĩa là không có sự dư thừa dữ liệu.
Nếu n2<<n1 thì C, R, ta nói rằng có sự dư thừa dữ liệu lớn.
Ví dụ : n1 = 100Mb/s, n2 = 20Mb/s thì C = 5:1, R = 80%. Tức là ảnh có sự dư thừa lớn, hiệu quả nén đạt 80%.
LƯỢNG TIN TRUNG BÌNH (ENTROPY)
Trước khi nghiên cứu các phương pháp nén, ta cần đánh giá lượng thông tin chủ yếu được chứa đựng trong hình ảnh, từ đó xác định dung lượng tối thiểu cần sử dụng để miêu tả, truyền tải thông tin về hình ảnh.
Thông tin được ký hiệu là ai và có xác suất p(ai) thì lượng tin được xác định theo công thức sau:
Theo công thức trên ta thấy lượng tin chứa đựng trong một hình ảnh sẽ tỉ lệ nghịch với khả năng xuất hiện của ảnh đó, nghĩa là sự kiện ít xảy ra sẽ chứa đựng nhiều thông tin hơn và bằng tổng số lượng thông tin của từng phần tử ảnh.
Gọi lượng tin trung bình của hình ảnh là H(X) và được tính bằng công thức sau:
Xác suất phân bố càng nhiều thì lượng tin trung bình entropy càng nhỏ. Entropy đạt giá trị cực đại đối với phân bố đều, do đó nếu một ký hiệu có xác suất lớn sẽ có số Entropy nhỏ.
Ví dụ: Giả sử có một ảnh đen trắng với độ phân giải lượng tử 8 bit. Ký hiệu i là mức xám của pixel và bộ ký hiệu A là tập hợp tất cả các mức xám từ 0->255, mức xám 0 tương ứng với màu đen, mức xám 255 tương ứng với màu trắng. Do đó, Entropy của ảnh là
Giả sử ta có kích thước 4x8 pixels như sau:
21 21 21 95 169 243 243 243
21 21 21 95 169 243 243 243
21 21 21 95 169 243 243 243
21 21 21 95 169 243 243 243
Ta sẽ xét các độ dư thừa của các pixel trong ảnh, hoặc giữa các ảnh liên tiếp như sau.
Giả sử các mức xám của tín hiệu hình đen trắng độc lập thống kê với nhau, dựa vào số liệu thống kê cụ thể là.
Mức xám Số lượng pixel Xác suất.
21 12 3/8
95 4 1/8
169 4 1/8
243 12 3/8
Entropy của phần ảnh tĩnh này là:
H(x) =
Tuy nhiên, trong thực tế các mức xám của các pixel không độc lập thống kê với nhau, nên ta có thể biểu diễn theo từng cặp pixel liên tiếp như sau:
Giá trị cặp mức xám Số lượng cặp Xác suất
(21, 21) 8 1/4
(21, 95) 4 1/8
(95, 169) 4 1/8
(169, 243) 4 1/8
(243, 243) 8 1/4
(243, 21) 4 1/8
H(x) =
Ngoài ra còn có thể biểu diễn theo phần chênh lệch mức xám của 2 pixel liên tiếp như sau.
21 0 0 74 74 74 0 0
21 0 0 74 74 74 0 0
21 0 0 74 74 74 0 0
21 0 0 74 74 74 0 0
Giá trị mức xám Số lượng Xác suất.
21 4 1/8
0 16 1/2
74 12 3/8
H(x) =
Như vậy, số lượng tin trung bình tối thiểu cần thiết để truyền một phần tử ảnh sẽ khác nhau, nghĩa là độ dư thừa trong ảnh và giữa các bức ảnh sẽ phụ thuộc vào cách mã hóa Entropy. Do đó cần phải xem xét kỹ để chọn ra loại mã hóa hiệu quả nhất.
CÁC KỸ THUẬT NÉN VIDEO
PHÂN LOẠI CÁC KỸ THUẬT NÉN
Nén video được chia thành hai họ lớn: Nén không tổn hao và nén tổn hao.
Nén không tổn hao là quy trình biểu diễn các ký hiệu trong dòng bit nguồn thành dòng các từ mã sao cho ảnh được khôi phục hoàn toàn giống ảnh gốc, các thuật toán chỉ phụ thuộc vào cách thống kê nội dung dữ liệu và thường dựa trên việc thay thế một nhóm các ký tự trùng lặp bởi một nhóm các ký tự đặc biệt khác ngắn hơn mà không quan tâm đến ý nghĩa của dòng bit dữ liệu, nên đòi hỏi phải có thiết bị lưu trữ và đường truyền lớn hơn.
Nén có tổn hao, tức là ảnh được khôi phục không hoàn toàn giống ảnh gốc, dạng nén này thích hợp cho việc lưu trữ và truyền ảnh tĩnh, ảnh video qua một mạng có băng thông hạn chế. Các dạng nén này thường có hệ số nén cao hơn (từ 2:1 đến 100:1) và gây nên tổn hao dữ liệu và sự suy giảm ảnh sau khi giải nén do việc xóa và làm tròn dữ liệu trong một khung hay giữa các khung. Nó liên quan đến việc dùng các phép biến đổi tín hiệu từ miền này sang miền khác.
Trong thực tế phương pháp nén tổn hao thường được sử dụng nhiều hơn và các kỹ thuật nén tổn hao thường sử dụng như: mã hóa vi sai, biến đổi cosin rời rạc DCT, lượng tử vô hướng, quét zig-zag, mã hóa Entropy…
QUÁ TRÌNH BIẾN ĐỔI
Hình II1. Moâ hình heä thoáng neùn toån hao.
Bieán ñoåi ngöôïc T-1
Giaûi löôïng töû hoùa R
Giaûi maõ D
Bieán ñoåi T
Löôïng töû hoùa Q
Maõ hoùa C
Giaûi neùn
Tín hiệu ngõ vào được biến đổi nhằm mục đích biểu diễn một số liệu khác thích hợp để nén hơn so với tín hiệu nguồn. Ở phía giải mã tín hiệu nén sẽ được biến đổi ngược lại để thu tín hiệu gốc. Một số phép biến đổi được áp dụng phổ biến hiện nay như:
ĐIỀU XUNG MÃ VI SAI DPCM
Các phương pháp nén dùng DPCM dựa trên nguyên tắc phát hiện sự giống nhau và khác nhau giữa các điểm ảnh gần nhau để loại bỏ các thông tin dư thừa. Trong DPCM chỉ có phần khác nhau giữa mẫu - mẫu được truyền đi, sự khác nhau này được cộng vào giá trị mẫu đã giải mã hiện hành ở phía giải mã để tạo ra giá trị mẫu phục hồi. Hình II.2. mô tả sơ đồ khối của bộ mã hóa và giải mã DPCM.
S
Boä löôïng töû
Maõ hoùa entropy
Boä tieân ñoaùn
S
Hình II.2. Boä maõ hoùa vaø boä giaûi maõ DPCM
Ví dụ
Mẫu tín hiệu vào 115 117 116 117 118 117 115 116
Sự khác nhau 2 -1 1 1 -1 -2 1
Dòng bit được nén như sau: 115 2 -1 1 1 -1 -2 1
MÃ HÓA BIẾN ĐỔI
Nhằm biến đổi các hệ số trong miền thời gian (video số), không gian 2D (bức ảnh tĩnh) thành các hệ số trong miền tần số. Các hệ số này ít tương quan hơn có phổ năng lượng tập trung hơn, thuận tiện cho việc loại bỏ thông tin dư thừa.
Biến đổi cosin rời rạc DCT
Vì ảnh gốc có kích thước rất lớn cho nên trước khi đưa vào biến đổi DCT, ảnh được phân chia thành các MB biểu diễn các mức xám của điểm ảnh. Việc phân khối này sẽ làm giảm được một phần thời gian tính toán các hệ số chung, mặt khác biến đổi cosin đối với các khối nhỏ sẽ làm tăng độ chính xác khi tính toán với dấu phẩy tĩnh, giảm thiểu sai số do làm tròn sinh ra. Phép biến đổi DCT cơ bản hoạt động dựa trên cơ sở ma trận vuông của mẫu sai số dự đoán, kết quả cho ta một ma trận Y là những hệ số DCT được minh họa như sau:
Y = AXAT
Trong đó A là ma trận hệ số biến đổi, các thành phần của A như sau:
Nếu i = 0
Nếu i > 0
Với
Tương đương với
Phép biến đổi DCT nguyên 4x4 của chuỗi ngõ vào X được cho bởi công thức
Phép biến đổi ngược DCT cho bởi công thức:
X=ATYA
Tương đương với:
Biến đổi Hadamard
Là một ví dụ tổng quát hóa của biến đổi Fourier rời rạc, nó thực hiện các phép toán cộng và trừ trên các ma trận 2m x 2m trực giao, đối xứng, tuyến tính…được định nghĩa theo công thức sau:
trong đó Hn là ma trận NxN với N = 2m , m thường là các giá trị 1, 2 ,3 tương ứng với các khối 2x2, 4x4, và 8x8, Hn được tạo ra từ phép toán Kronecker như sau: Hn = n lần.
Ví dụ H2 = H1 H1
Với H1=
QUÁ TRÌNH LƯỢNG TỬ
Sau khi thực hiện biến đối DCT, các hệ số sẽ được lượng tử hoá dựa trên một bảng lượng tử Q(u,v) với 0≤u, v≤ n-1, n là kích thước khối. Bảng này được định nghĩa bởi từng ứng dụng cụ thể, các phần tử trong bảng lượng tử có giá trị từ 1 đến 255 được gọi là các bước nhảy cho các hệ số DCT. Quá trình lượng tử được coi như là việc chia các hệ số DCT cho bước nhảy lượng tử tương ứng, kết quả này sau đó sẽ được làm tròn xuống số nguyên gần nhất. Các hệ số năng lượng thấp này, tượng trưng cho các sự thay đổi pixel - pixel cỡ nhỏ, có thể bị xóa mà không ảnh hưởng đến độ phân giải của ảnh phục hồi. Tại bộ mã hoá sẽ có một bảng mã và bảng các chỉ số nội bộ, từ đó có thể ánh xạ các tín hiệu ngõ vào để chọn được các từ mã tương ứng một cách tốt nhất cho tập hợp các hệ số được tạo ra. Có 2 loại lượng tử hóa chủ yếu:
LƯỢNG TỬ HÓA VÔ HƯỚNG
Lượng tử từng giá trị một cách độc lập hay nói cách khác là ánh xạ một mẫu của tín hiệu ngõ vào tạo thành một hệ số lượng tử ở ngõ ra. Đây là một quá trình tổn hao vì khi giải lượng tử, không thể xác định chính xác giá trị gốc từ số nguyên đã được làm tròn. Lượng tử hóa thuận theo công thức FQ = round(X/QP)
Lượng tử hóa ngược theo công thức Y = FQ*QP. Với QP là bước nhảy lượng tử. Ví dụ quá trình giải lượng tử cho một tín hiệu ngõ vào như sau:
Y
X
QP = 1
QP = 2
QP = 3
QP = 5
-4
-4
-4
-3
-5
-3
-3
-2
-3
-5
-2
-2
-2
-3
0
-1
-1
0
0
0
0
0
0
0
0
1
1
0
0
0
2
2
2
3
0
3
3
2
3
5
4
4
4
3
5
5
5
4
6
5
…
…
…
LƯỢNG TỬ HÓA VECTOR
Là một quá trình biểu diễn một tập vector (mỗi vector gồm nhiều giá trị) bằng một tập các số hữu hạn các ký hiệu ở ngõ ra, bảng mã ánh xạ sẽ có các giá trị xấp xỉ với giá trị gốc. Vector lượng tử sẽ được lưu ở cả bộ mã hóa và bộ giải mã, quá trình nén một bức ảnh sử dụng lượng tử vector bao gồm các bước sau.
Phân chia bức ảnh gốc thành các phân vùng MxN pixel
Chọn vector thích ứng nhất từ bảng mã
Truyền chỉ số của vector thích ứng đến bộ giải mã.
Tại bộ giải mã, ảnh cấu trúc lại sẽ xấp xỉ với phân vùng đã lựa chọn vector lượng tử.
Hình II.3. Quá trình lượng tử vector
Và sơ đồ khối của lượng tử vector như sau:
QUÁ TRÌNH MÃ HÓA
Bộ mã hóa có chức năng loại bỏ độ dư thừa trong các ký tự ở ngõ ra lượng tử hóa và ánh xạ các ký tự này thành các từ mã tạo thành dòng bit ở ngõ ra bằng các loại mã hóa như: mã hóa dự đoán, mã hóa VLC, mã hóa số học nhị phân, mã hóa theo hình dạng…
MÃ HÓA ĐỘ DÀI THAY ĐỔI
Kỹ thuật mã hóa độ dài thay đổi VLC dựa trên xác suất các giá trị biên độ giống nhau trong một ảnh để lựa chọn các từ mã để mã hoá. Bộ mã hóa có độ dài thay đổi ánh xạ các ký hiệu ngõ vào thành một chuỗi từ mã có độ dài thay đổi ở ngõ ra nhưng chứa số lượng bít nguyên. Các ký hiệu có xác suất cao sẽ được gán từ mã có độ dài ngắn, còn các ký hiệu có xác suất thấp sẽ được gán từ mã có độ dài lớn hơn, do đó nó sẽ làm tối thiểu chiều dài trung bình của từ mã. Tại phía giải nén có các chỉ định mã giống nhau được dùng để khôi phục lại các giá trị dữ liệu gốc. Các loại mã hóa VLC cơ bản như: mã hóa Huffman, mã hoá RLC, mã hóa Exp-Golomb…
Mã hóa Huffman
Mã hóa Huffman là mã hóa thõa mãn tối ưu tính prefix và phương pháp mã hóa thường dựa vào mô hình thống kê. Dựa vào dữ liệu gốc, người ta tính xác suất xuất hiện của các ký tự. Việc tính toán xác suất được thực hiện bằng cách duyệt tuần tự tệp gốc từ đầu đến cuối và các ký tự nào có xác suất càng cao thì từ mã càng ngắn nên giảm chiều dài trung bình của từ mã một cách rõ rệt, mã hóa Huffman thường được biểu diễn dưới dạng cây mã như sau:
Hình II.4. Cây mã Huffman
Các bước thực hiện mã hóa Huffman.
Bước 1: Các nguồn tin được liệt kê trong cột theo thứ tự xác suất xuất hiện giảm dần.
Bước 2: Hai tin cuối có xác suất nhỏ nhất được hợp thành tin phụ mới có xác suất bằng tổng xác suất các tin hợp thành.
Bước 3: Các tin còn lại (N-2) với tin phụ mới được liệt kê trong cột phụ thứ nhất theo thứ tự xác suất giảm dần.
Bước 4: Quá trình cứ thế tiếp tục cho đến khi hợp thành một tin phụ có xác suất xuất hiện bằng 1.
Mã hoá mức dọc chiều dài RLC
Thông thường dữ liệu hay có sự trùng lặp, chẳng hạn nếu một bức ảnh có cùng một màu, độ chói thì những vùng bên cạnh ảnh đó cũng giống như vậy. Do đó có thể mã hóa bằng một từ mã đặc biệt nhằm chỉ báo sự bắt đầu và kết thúc của giá trị lặp lại, mỗi hệ số khác 0 sau giá trị DC được phát hiện sẽ được gán một từ mã gồm 2 thông số: số lượng bit 0 đứng trước đó và mức của nó sau khi lượng tử, để tạo ra từ mã là một đôi (level và run), trong đó Level biểu thị giá trị của bit và Run biểu thị số lần lặp lại của bit. Khi dữ liệu truyền có sự trùng lặp thì truyền từ mã này thay cho nó. Hình II.5. minh họa mã hóa RLC như sau :
Hình II.5. Minh hoïa maõ hoùa RLC
Từ dữ liệu đầu vào, giá trị 028 lặp lại 5 lần được mã hóa bằng 3 từ mã ở dữ liệu đầu ra. Giá trị đầu tiên 255 đại diện cho cách mã hóa RLC, giá trị thứ 2 là giá trị được lặp lại, giá trị thứ 3 là số lần lặp lại, ._.nên thay vì truyền từ mã dài, ta chỉ cần truyền 255 028 3.
MÃ HÓA SỐ HỌC
Điểm bất lợi cơ bản của mã hóa dọc chiều dài là việc tạo ra bảng tra chứa toàn bộ số lượng bit trên mỗi mẫu nên không thật sự tối ưu, vì số lượng bit tối ưu nhất cho một ký tự tùy thuộc vào nội dung thông tin, mà thường là những số rất nhỏ. Đối với những ký tự có xác xuất lớn hơn 0.5 thì hiệu suất nén không cao, nó chỉ hiệu quả khi mã hóa những ký hiệu này bằng một từ mã bit đơn. Còn mã hóa số học thì dựa vào xác suất của nội dung thông tin nên còn có tên gọi là mã hóa số học thích nghi theo nội dung, mã hóa số học sử dụng các đặc tính về không gian và thời gian để ước lượng khoảng xác suất. Nó biến đổi luồng dữ liệu vào thành một phân số đơn lẻ, và sử dụng phân số tối ưu nhất để mã hóa dữ liệu, do đó hiệu quả nén của nó có thể đạt mức tối đa mà giảm chi phí đầu tư cho lưu trữ.
Giả sử ta có 5 giá trị vector chuyển động (−2, −1, 0, 1, 2) và xác suất của nó như bảng dưới đây. Mỗi vector sẽ được gán một ngưỡng trong khoảng từ 0.0 đến 1.0 tùy thuộc vào xác suất xuất hiện của chúng. Ví dụ giá trị “-2” có xác suất là 0.1 sẽ nằm trong khoảng từ 0->0.1 tức là bằng 10% của khoảng [0 1], tương tự giá trị “-1” có xác suất là 0.2 sẽ nằm trong khoảng từ 0.1->0.3 tức là bằng 20% … Như vậy việc phân chia vùng riêng cho từng giá trị xác suất sẽ thuận tiện cho việc mã hóa.
Vector
Xác suất
Lượng tin trung bình = log2(1/P)
Khoảng chia nhỏ
-2
0.1
3.32
0 0.1
-1
0.2
2.32
0.1 0.3
0
0.4
1.32
0.3 0.7
1
0.2
2.32
0.7 0.9
2
0.1
3.32
0.9 1.0
Các vector sẽ được chia nhỏ thành các khoảng nhỏ theo xác suất như sau:
Ví dụ quá trình mã hóa cho chuỗi vector (0, −1, 0, 2) như sau:
Quá trình mã hóa
Phạm vi
(LH)
Ký hiệu (LH)
Khoảng
chia nhỏ
Chú thích
Cài phạm vi bắt đầu
01.0
Tìm khoảng con tương ứng cho ký hiệu đầu tiên
(0)
0.30.7
Cài lại khoảng mới cho khoảng con.
0.30.7
Tìm khoảng con tương ứng cho ký hiệu tiếp theo
(-1)
0.1 0.3
Cài lại khoảng bắt đầu mới nằm trong khoảng trước đó
0.340.42
0.34 = 10%
0.42 = 30%
Tìm khoảng tíếp theo
(0)
0.30.7
Cài lại khoảng bắt đầu mới nằm trong khoảng trước đó
0.364→0.396
0.364 = 30%
0.396 = 70%
Tìm khoảng tíếp theo
(2)
0.9-1.0
Cài lại khoảng bắt đầu mới nằm trong khoảng trước đó
0.3928→ 0.396
0.3928 = 90%
0.396 = 100%
Sau mỗi lần mã hóa một ký hiệu thì phạm vi LowHigh càng nhỏ dần như minh họa ở hình II.6. Số lượng bit cần thiết để nén chuỗi dữ liệu được tính bởi công thức:
log2(1/P0) + log2(1/P−1) + log2(1/P0) + log2(1/P2) = 8.28bits
Toàn bộ chuỗi dữ liệu có thể được truyền đi bởi bất kỳ một giá trị phân số nào nằm trong khoảng 0.3928-0.396, giả sử giá trị 0.394 có thể được mã hóa như là một phân số có dấu chấm tĩnh bằng từ mã 9 bit, do đó chuỗi vector (0, -1, 0, 2) sẽ được nén bằng từ mã 9bits.
Hình II.6. Minh họa sự sắp xếp trong khoảng [0-1] thành những vùng nhỏ hơn sau mỗi ký hiệu được mã hóa.
Hiệu quả của mã hóa Entropy có được như mong muốn hay không là tùy thuộc vào độ chính xác trong xác suất của ký hiệu.
Quá trình giải mã số học.
Quá trình giải mã
Phạm vi
Khoảng chia nhỏ
Ký hiệu giải mã
Cài phạm vi bắt đầu
01
Tìm khoảng con tương ứng cho ký hiệu đầu tiên
0.30.7
0
Cài lại khoảng mới cho khoảng con.
0.30.7
Tìm khoảng con tương ứng cho ký hiệu tiếp theo
0.340.42
-1
Cài lại khoảng bắt đầu mới nằm trong khoảng trước đó
0.340.42
Tìm khoảng tíếp theo
0.364→0.396
0
Cài lại khoảng bắt đầu mới nằm trong khoảng trước đó
0.364→0.396
Tìm khoảng tíếp theo
0.3928→ 0.396
2
TIÊU CHUẨN ĐÁNH GIÁ CHẤT LƯỢNG ẢNH NÉN
Đánh giá chất lượng video thông qua các giá trị cung cấp bởi hệ thống xử lý, và việc suy giảm chất lượng tín hiệu có thể nhìn thấy được ( thông thường chúng được so sánh với tín hiệu gốc. Qua hệ thống ta có thể thấy được những thay đổi về hình dạng, việc định chuẩn chất lượng video là rất quan trọng. Để đánh giá chất lượng của bức ảnh (hay khung ảnh video) ở đầu ra của bộ mã hoá, người ta thường sử dụng các tham số truyền thống sau để đánh giá:
Sai số bình phương trung bình – MSE (mean square error) định nghĩa cho cường độ sai khác giữa ảnh gốc và ảnh dự đoán
Tỉ số tín hiệu trên nhiễu đỉnh – PSNR (peak to signal to noise ratio).
(dB)
Trong đó NxN kích thước bù chuyển động
hệ số Ci, j và Ri, j tương ứng với mẫu hiện tại và vùng mẫu tham khảo.
b số lượng bit/ mẫu.
Thông thường, nếu PSNR ≥ 40dB thì hệ thống mắt người gần như không phân biệt được giữa ảnh gốc và ảnh khôi phục, tức là ảnh nén có chất lượng xuất sắc.
30 dB PSNR < 33 dB thì chất lượng ảnh nén bình thường, mắt người có sự phân biệt được.
PSNR < 30 dB thì chất lượng ảnh nén kém.
Sai số tuyệt đối trung bình - MAE (Mean Absolute Error)
Tổng của các sai số tuyệt đối- SAE (Sum of Absolute Errors)
CÁC CHUẨN NÉN THUỘC HỌ MPEG TRƯỚC MPEG-4 H.264/AVC
GIỚI THIỆU VỀ LỊCH SỬ PHÁT TRIỂN CỦA KỸ THUẬT MPEG
1993 1995 1997 1999 2000 2001 2003 2005
MPEG-1
(11/1992)
MPEG-4
H.264
(2003)
MPEG-4 v1
(1998/99)
MPEG-4 v2
(1999/00)
MPEG-4 v3
(2001)
MPEG-2
(H.262)
(1994/95)
Hình III.1. Quá trình phát triển của kỹ thuật nén MPEG qua các giai đoạn
Thuật ngữ MPEG viết tắt của cụm từ Moving Picture Experts Group là 1 nhóm chuyên nghiên cứu phát triển các tiêu chuẩn về hình ảnh số và nén âm thanh theo chuẩn ISO/IEC từ năm 1988. Cho đến nay nhóm làm việc MPEG đã phát triển và phát hành nhiều tiêu chuẩn nén cho các loại ứng dụng khác nhau, nhưng nổi bật là các chuẩn MPEG-1, MPEG-2, MPEG-4, và H.264/AVC. MPEG chỉ là một tên riêng, tên chính thức của nó là: ISO/IEC JTC1 SC29 WG11.
CÁC TIÊU CHUẨN NÉN TRƯỚC MPEG-4 H.264/AVC
Vì thời gian có hạn nên trong Đồ án tốt nghiệp này, chúng ta lướt qua một số nét nổi bật nhất của 2 chuẩn MPEG-1 và MPEG-2, còn chuẩn nén MPEG-4 part 2 là nền tảng phát triển của chuẩn nén H.264/AVC nên có rất nhiều điểm giống nhau sẽ được trình bày ở chương sau.
TIÊU CHUẨN MPEG-1
Chuẩn MPEG-1 xuất hiện vào 11/1992 là chuẩn khởi đầu cho việc nén các ảnh động và đây cũng là nền tảng phát triển cho các chuẩn nén khác trong họ MPEG, nó được mệnh danh là chuẩn “khởi động thiết bị số“. MPEG-1 định nghĩa một tiêu chuẩn chuẩn mã hoá video và âm thanh lưu trữ trong CD-ROM, đĩa Winchester với tốc độ vào khoảng 1,5Mbit/s, độ phân giải hình ảnh là 352 x 240 (30 frame/s) hay 352x288 (25 frame/s). Chuẩn MPEG-1 được ứng dụng trong các phần mềm huấn luyện bằng máy tính, các game hành động, video chất lượng VHS, Karaoke..
Tín hiệu video số MPEG-1 bao gồm một tín hiệu chói Y và 2 tín hiệu màu Cr, Cb với tỷ số lấy mẫu là 2:1. Trước khi mã hóa các ảnh có thể được sắp xếp lại theo trật tự giải mã mới vì bộ giải mã chỉ có thể giải mã được ảnh B sau khi đã giải mã ảnh P và I. Sau quá trình giải mã, các ảnh được sẽ được sắp xếp lại như cũ.
Sau khi chọn kiểu ảnh, bộ mã hoá sẽ đánh giá chuyển động cho mỗi khối MB và tạo ra một vector chuyển động cho một ảnh P và 2 vector chuyển động cho ảnh B.
Tùy thuộc kiểu ảnh mà tín hiệu sai số được phát hiện bằng cách tìm ra sai số giữa dự đoán bù chuyển động và dữ liệu hiện tại trong mỗi MB. Tín hiệu sai số dự đoán được chuyển đến khối DCT 8x8 và bộ lượng tử để tạo hệ số lượng tử. Một bộ điều khiển tốc độ bit có nhiệm vụ điều chỉnh dữ liệu ngõ ra thông qua điều chỉnh bước lượng tử. Các hệ số này được quét theo ma trận Zig-Zag và mã hoá bằng mã Entropy rồi mới đưa ra kênh truyền.
Các đặc điểm của tiêu chuẩn MPEG-1
Cấu trúc lấy mẫu 4:2:0
Chỉ có khả năng quét liên tiếp.
Biểu diễn mẫu bằng từ mã 8 bits, độ chính xác của quá trình lượng tử và biến đổi DCT là 9 bits.
Sử dụng phương pháp DPCM để lượng tử hóa cho hệ số DC. Bù chuyển động cho các MB 16x16 trong cùng một khung hình hoặc giữa các khung với nhau.
Độ chính xác dự đoán chuyển động là 1 pixel.
Chuẩn MPEG-1 có 4 kiểu ảnh đó là Intra, Predicted, Bidirectional và ảnh D (DC coded picture). Nó gần giống ảnh I nhưng chỉ có thành phần một chiều ở đầu ra DCT được thể hiện. Nó cho phép dò nhanh nhưng cho chất lượng ảnh thấp.
Cấu trúc dòng bit của MPEG-1
Chuẩn MPEG-1 định nghĩa một kiểu phân cấp cấu trúc trong dữ liệu Video và đây cũng là cấu trúc dữ liệu chung cho cả chuẩn MPEG về sau. Cấu trúc dữ liệu như sau:
+ Khối (Block) gồm 8x8 pixels tín hiệu chói và màu được định nghĩa dùng cho nén DCT.
+ Tổ hợp khối (Macroblock) gồm các khối Y, Cb và Cr tương ứng với nội dung thông tin của một khối 16x16 pixel của thành phần chói hoặc khối 8x8 của 2 thành phần màu trong hình ảnh gốc. Một MB bao gồm 6 khối trong đó có 4 khối Y, 1 khối Cb và 1 Cr như hình vẽ, các khối sẽ được đánh số thứ tự bắt đầu bằng 1.
+ Mảng (Slice) gồm nhiều MB. Kích thước slice lớn nhất là 1 ảnh, nhỏ nhất là 1 MB Thứ tự các MB bên trong slice được xác định từ trái qua phải, trên xuống dưới. Phần header của slice chứa thông tin về vị trí của mảng trong toàn bộ ảnh và hệ số của bộ lượng tử. Slice rất quan trọng trong việc định lỗi, nếu dòng dữ liệu có chứa lỗi, bộ giải mã có thể bỏ qua và tiếp tục ở slice kế tiếp. Nhiều slice trên dòng dữ liệu cho phép che giấu lỗi tốt hơn và được dùng để cải thiện chất lượng hình ảnh.
+ Ảnh (Picture): gồm nhiều slice cho phép bộ giải mã xác định loại mã hóa khung. Thông tin header để chỉ thứ tự truyền khung để bộ giải mã sắp xếp lại các ảnh đúng thứ tự, ngoài ra thông tin header còn chứa các thông tin về đồng bộ, độ phân giải, phạm vị của vector chuyển động …
+ Nhóm ảnh (GOP): gồm nhiều ảnh bắt đầu từ ảnh I. Chỉ báo điểm bắt đầu cho việc biên tập và việc tìm kiếm. Phần header chứa mã điều khiển và mã thời gian 25 bit cho thông tin định thời.Cấu trúc của một GOP được mô tả bằng 2 tham số:
- N: là các ảnh trong GOP
- M: là khoảng cách giữa các ảnh P-pictures.
Ví dụ: Ta có 1 GOP như sau :
B1 B2 I3 B4 B5 B7 B8 P9 B10 B11 P12.
Tức N = 12 và M = 3.
Hình III.2. Cấu trúc chuỗi video MPEG
+ Chuỗi ảnh (Sequence): bắt đầu là một Sequence Header, 1 hay nhiều GOP và 1 mã kết thúc chuỗi End-of-Sequence. Thông tin header chứa kích thước mỗi chiều của bức ảnh, kích thước điểm ảnh, tốc độ bit của dòng video số, tần số ảnh, bộ đệm tối thiểu cần có. Chuỗi ảnh và thông tin header còn được gọi chung là dòng cơ bản ES.
Tiêu chuẩn nén MPEG-1 cho phép truy cập các khung hình ngẫu nhiên video, tìm kiếm thuận nghịch trên dònh tín hiệu nén biên tập và phát lại trên dòng tín hiệu nén. Các công cụ của nó đều có trong các tiêu chuẩn MPEG-2, nên MPEG-2 vẫn có thể giải mã các dòng tín hiệu MPEG-1.
TIÊU CHUẨN MPEG-2
Các đặc điểm của tiêu chuẩn MPEG-2
Kỹ thuật nén MPEG-2 xuất hiện vào 1995, định nghĩa cho một tiêu chuẩn kỹ thuật “truyền hình số”. MPEG-2 có thể tạo hình ảnh lớn gấp 4 lần MPEG-1 với độ nét cao hơn và rõ hơn (720 x 480 và 1280 x 720) cho phép mã hoá ở nhiều mức độ phân giải khác nhau đáp ứng cho nhiều ứng dụng như ứng dụng 2-5Mbps trong SDTV và 6-8Mbps trong DVD, 20Mbps trong HDTV, đặc biệt được ứng dụng trong truyền hình số mặt đất với mỗi thiết bị khác nhau, sẽ có các bộ mã hoá và giải mã khác nhau nhằm giảm băng thông đường truyền.
Những cải tiến của nó như sau:
Chuẩn nén MPEG-2 có tốc độ bit > 4 Mbit/s.
Cấu trúc lấy mẫu 4:4:4, 4:2:2, 4:2:0.
Các giá trị hệ số DCT có thể biểu thị với mức độ chính xác cao.
Các ma trận lượng tử có thể thay đổi theo mức frame, thành phần màu.
Có khả năng quét xen kẽ và liên tục, cho phép xấp xỉ bù chuyển động, xây dựng cơ sở dự báo trên cơ sở mành.
Khả năng tách lỗi và giảm độ nhạy tín hiệu nén đối với các lỗi truyền, nếu tỷ số nén cao bị ảnh hưởng.
Độ chính xác mẫu vào là 10 bit. Dùng lượng tử DPCM chính xác cho các hệ số DC.
Có tính tương hợp và co dãn cao theo không gian, thời gian.
Độ phân giải ước lượng chuyển động là ½ pixel, 1 pixel.
MPEG-2 định nghĩa các profile và các level khác nhau cho phù hợp với nhiều loại ứng dụng. Có 5 định nghĩa profile và 4 level như sau.
Simple
Main
SNR
Spatially
High
Low
4:2:0, 352 x 288 4Mbps
4:2:0, 352 x 288 4Mbps, I, P ,B
Main
4:2:0 720 x 576 15 Mbps, I, P
4:2:0 720 x 576
15 Mbps, I, P, B
4:2:0 720 x 576 15 Mbps, I, P, B
4:2:0 720 x 576 20Mbps, I, P, B
High 1440
4:2:0 1440 x 1152 60 Mbps, I, P, B
4:2:0 1440 x 1152, 60 Mbps, I, P, B
4:2:0, 4:2:2
1440 x 1152
80 Mbps, I, P, B
High
4:2:0 1192 x 1152 80 Mbps, I, P, B
4:2:0, 4:2:2 1192 x 1152
100 Mbps I P, B
Sự khác nhau chính giữa MPEG-1 và MPEG-2
MPEG-1
MPEG-2
Băng thông ở mức trung bình (tối đa 1.5 Mbits/sec)
Băng thông lớn (tối đa 40 Mbits/sec)
1.25 Mbits/sec video 352 x 240 x 30 Hz
Kích thước khổ rộng.
2 kênh âm thanh 250 Kbits/sec
Lên đến 5 kênh âm thanh (như surround sound)
Không quét xen kẽ.
Có thể quét xen kẽ.
Thích hợp cho lưu trữ CD.
Có thể dùng trong truyền hình phân giải cao HDTV
TIÊU CHUẨN MPEG-4
Phiên bản đầu tiên của MPEG-4 xuất hiện vào 2/1999. Cuối 1999 MPEG-4 v2 ra đời và trở thành tiêu chuẩn quốc tế vào đầu năm 2000. So với MPEG-1, MPEG-2 thì MPEG-4 có nhiều nổi bật hơn như hiệu suất nén cao, vận hành trên cơ sở nội dung…và rõ ràng có nhiều ứng dụng hơn. MPEG-4 định nghĩa một tiêu chuẩn cho các ứng dụng truyền thông đa phương tiện, các hình ảnh, âm thanh và dữ liệu đồ hoạ và việc tái hợp chúng trên thiết bị thu, hay nói cách khác nó là sự hội ngộ giữa truyền hình và Web. Đặc điểm chính của MPEG-4 là mã hóa video và audio ở tốc độ bit rất thấp. Thực tế tiêu chuẩn này tối ưu ở ba ngưỡng tốc độ bit sau:
Dưới 64kbps|
Từ 64 đến 384 kbps|
Từ 384 đến 4Mbps|
Hơn nữa một đặc điểm quan trọng của MPEG-4 là cho phép khôi phục lỗi tại phía thu nên rất thích hợp cho các ứng dụng truyền qua môi trường sẽ xảy ra lỗi như moblie, wireless…Chuẩn MPEG-4 là chuẩn quốc tế đầu tiên định nghĩa các VOP mà trong đó các phần của một cảnh có thể được thao tác riêng rẽ trong khi những phần khác vẫn không đổi. Những profile và level khác nhau trong MPEG-4 cho phép sử dụng tốc độ bit lên đến 38.4Mbps và việc xử lý chất lượng studio lên đến 1.2Gbps. MPEG-4 đạt yêu cầu ứng dụng cho các dịch vụ nội dung video có tính tương tác và các dịch vụ truyền thông video trực tiếp hay lưu trữ.
Các đối tượng khác nhau trong ảnh gốc được mã hóa và truyền đi một cách riêng biệt, như ta đã biết không có một phương pháp mã hóa nào là tối ưu hoàn toàn. DCT và phép lượng tử chỉ tối ưu với các ứng dụng có băng thông hạn chế, các ảnh có độ chói ít thay đổi, nhưng với ảnh nhiều chi tiết, có kích thước nhỏ thì không tối ưu. Lấy ví dụ nếu một cảnh có chứa các dòng text, nếu mã hóa bằng MPEG-1, MPEG-2 thì sẽ không hiệu quả vì nó chỉ xem đó như là chi tiết ảnh thông thường.
Trái lại, MPEG-4 cho phép giải mã luồng text kết hợp với video và các thông tin trong luồng bit có thể hiện thị nhiều dạng khác nhau tùy thuộc vào lựa chọn của người sử dụng ví dụ như tùy chọn ngôn ngữ... nên mang lại hiệu suất cao hơn.
Tuy nhiên MPEG-4 cũng có một số nhược điểm là bộ giải mã phải có khả năng giải mã hết tất cả các luồng bit mà nó hỗ trợ và có khả năng kết hợp. Do đó phần cứng bộ giải mã MPEG-4 phức tạp hơn MPEG-2 rất nhiều. Cũng chính vì vậy mà các nhà nghiên cứu luôn nỗ lực tìm tòi, phát minh những công cụ mã hóa tối ưu hơn.
SO SÁNH ĐẶC ĐIỂM NỔI BẬT CỦA CÁC CHUẨN NÉN
Trong tiến trình phát triển của chuẩn nén MPEG, các chuẩn nén sau ra đời là sự kế thừa và phát triển của chuẩn trước, chính vì vậy các chuẩn nén tiên tiến hơn phải có sự phân cấp, mềm dẻo để có thể đáp ứng các ứng dụng của chuẩn nén cũ. Bảng sau so sánh sự khác biệt và sự tối ưu giữa các chuẩn nén thuộc họ MPEG.
Standard
MPEG-1
MPEG-2
MPEG-4
H.264
MB size
16 x 16
16 x 16
16 x 16
16 x 16
Block size
8 x 8
8 x 8
16 x 16, 8 x 8
16x16, 16x8, 8x16
8x8,8x4,4x8,4x4
Transform
DCT
DCT
DCT, DWT
4x4 Int transform
Entropy coding
VLC
VLC
VLC
VLC, CAVLC, CABAC
ME, MC
Yes
Yes
Yes
41 MVs/MB
Pixel accuracy
½ pixel
½ pixel
½ pixel
¼ pixel
Reference frames
1 frame
1 frame
1 frame
5 frame
Picture type
I, P, B
I, P, B
I, P, B
I, P, B
Transmission rate
1.5 Mbps
2-15Mbps
64kbps-2Mbps
64kbps-150Mbps
Hình IV.7. So sánh sự tối ưu giữa các chuẩn nén
CHUẨN NÉN MPEG-4 H.264/AVC
TỔNG QUAN VỀ CHUẨN NÉN MPEG-4 H.264/AVC
LỊCH SỬ PHÁT TRIỂN CỦA MPEG-4 H.264/AVC
Từ các bộ mã hoá đơn giản, hoạt động tốt nhưng đôi khi có một số hình ảnh mà nó không thể nén được, điều này đã thúc đẩy các nhà thiết kế phát triển các công cụ nén mới dựa trên nền của các chuẩn trước, trong đó hiệu quả mã hóa là vấn đề được quan tâm nhất, vì thế MPEG-4 ra đời là điều tất yếu trong tiến trình phát triển. Sự phát triển của MPEG-4 H.264/AVC trải qua nhiều giai đoạn như: MPEG-4 part 2 được ISO công bố vào 1999, nó là tiêu chuẩn cho những ứng dụng truyền thông đa phương tiện với tốc độ bit thấp và cho ứng dụng truyền hình quảng bá trong tương lai. Tuy nhiên chất lượng của nó vẫn chưa đạt được như mong muốn, chính vì vậy mà ISO/IEC (MPEG) và ITU đã cùng nhau hợp tác và thành lập nhóm Joint Video Team (JVT), để nghiên cứu phát triển chuẩn mã hóa tiên tiến là Advanced Video Coding (AVC). Và đến 2003 đã cho ra đời chuẩn MPEG-4 part 10, tên theo tiêu chuẩn ISO/IEC 14496-10 và H.246 AVC trong ITU hay còn gọi là MPEG-4 H.264/AVC, gọi tắt là H.264/AVC.
Phiên bản thứ 2 được tổ chức JVT phát triển mở rộng và phổ biến với tên gọi Fidelity Range Extensions (FRExt) có độ phân giải video mang tính trung thực cao được công bố vào tháng 3/2005 với các đặc tính như:
Coding Tools
High
High 10
High 4:2:2
High 4:4:4
Main Profile Tools
X
X
X
X
4:2:0 Chroma Format
X
X
X
X
8 Bit Sample Bit Depth
X
X
X
X
8x8 vs. 4x4 Transform Adaptivity
X
X
X
X
Quantization Scaling Matrices
X
X
X
X
Separate Cb and Cr QP control
X
X
X
X
Monochrome video format
X
X
X
X
9 and 10 Bit Sample Bit Depth
X
X
X
4:2:2 Chroma Format
X
X
11 and 12 Bit Sample Bit Depth
X
4:4:4 Chroma Format
X
Residual Color Transform
X
Predictive Lossless Coding
X
Bảng IV.1. Những công cụ mới trong H.264/AVC FRExt.
Sự mở rộng này cho phép mã hoá chất lượng hình ảnh cao hơn bằng việc tăng độ chính xác chiều sâu bit lấy mẫu và thông tin độ phân giải màu, bao gồm các cấu trúc lấy mẫu như YUV 4:2:2 và YUV 4:4:4. Ngoài ra còn bổ xung một số đặc tính như chuyển mạch thích nghi giữa phép biến đổi nguyên 4x4 và 8x8, bộ mã hoá theo giác quan dựa trên ma trận lượng tử, kỹ thuật mã hoá tổn hao trong khối và kỹ thuật lọc tách khối.
CÁC PROFLIES VÀ LEVELS TRONG H.264/AVC
Để tạo điều kiện cho người sử dụng lựa chọn công cụ H.264/AVC, các thiết bị được chia thành các nhóm công cụ (profile). Mỗi profile lại có các mức levels khác nhau thể hiện mức độ phức tạp xử lý tính toán dữ liệu của công cụ đó (thông qua việc xác định tốc độ bit, con số tối đa của các đối tượng trong frame, độ phức tạp của quá trình giải mã audio..).
CÁC PROFILES
H.264/AVC định nghĩa 4 profiles như sau
H.264/AVC Profiles
BASELINE
(Video Conferencing & Wireless)
EXTENDED (Streaming)
MAIN
(Broadcast)
HIGH
I Slices
I Slices
I Slices
I Slices
P Slices
P Slices
P Slices
P Slices
CAVLC
CAVLC
CAVLC
CAVLC
4x4 Transform
4x4 Transform
4x4 Transform
4x4 Transform
Weighted Prediction
Weighted Prediction
Weighted Prediction
B Slices
B Slices
B Slices
CABAC
CABAC
Quantization Matrix
8x8 Transform
ASO
ASO
FMO
FMO
Redundant Slices
Redundant Slices
Data Partitioning
SP Slices, SI Slices
Bảng IV.2. H.264/AVC Profiles
CÁC LEVELS
Trong H.264/AVC định nghĩa 16 level xác định các giới hạn trên cho kích thước ảnh, tốc độ xử lý, kích thước vùng nhớ đệm, tốc độ bit video…
Level number
Max MB/s
Max frame size (MBs)
Max video bit rate (VCL) for Baseline, Extended and Main Profiles
Max video bit rate (VCL) for High Profile
Max video bit rate (VCL) for High 10 Profile
Max video bit rate (VCL) for High 4:2:2 and High 4:4:4 Predictive Profiles
Examples for high resolution @frame rate(max stored frames)in Level
1
1485
99
64 kbit/s
80 kbit/s
192 kbit/s
256 kbit/s
128x96@30.9 (8)176x144@15.0 (4)
1b
1485
99
128 kbit/s
160 kbit/s
384 kbit/s
512 kbit/s
128x96@30.9 (8)176x144@15.0 (4)
1.1
3000
396
192 kbit/s
240 kbit/s
576 kbit/s
768 kbit/s
176x144@30.3 (9)320x240@10.0 (3)352x288@7.5 (2)
1.2
6000
396
384 kbit/s
480 kbit/s
1152 kbit/s
1536 kbit/s
320x240@20.0 (7)352x288@15.2 (6)
1.3
11880
396
768 kbit/s
960 kbit/s
2304 kbit/s
3072 kbit/s
320x240@36.0 (7)352x288@30.0 (6)
2
11880
396
2 Mbit/s
2.5 Mbit/s
6 Mbit/s
8 Mbit/s
320x240@36.0 (7)352x288@30.0 (6)
2.1
19800
792
4 Mbit/s
5 Mbit/s
12 Mbit/s
16 Mbit/s
352x480@30.0 (7)352x576@25.0 (6)
2.2
20250
1620
4 Mbit/s
5 Mbit/s
12 Mbit/s
16 Mbit/s
352x480@30.7(10)352x576@25.6 (7)720x480@15.0 (6)720x576@12.5 (5)
3
40500
1620
10 Mbit/s
12.5 Mbit/s
30 Mbit/s
40 Mbit/s
352x480@61.4 (12)352x576@51.1 (10)720x480@30.0 (6)720x576@25.0 (5)
3.1
108000
3600
14 Mbit/s
17.5 Mbit/s
42 Mbit/s
56 Mbit/s
720x480@80.0 (13)720x576@66.7 (11)1280x720@30.0 (5)
3.2
216000
5120
20 Mbit/s
25 Mbit/s
60 Mbit/s
80 Mbit/s
1280x720@60.0 (5)1280x1024@42.2 (4)
4
245760
8192
20 Mbit/s
25 Mbit/s
60 Mbit/s
80 Mbit/s
1280x720@68.3 (9)1920x1088@30.1 (4)2048x1024@30.0 (4)
4.1
245760
8192
50 Mbit/s
62.5 Mbit/s
150 Mbit/s
200 Mbit/s
1280x720@68.3 (9)1920x1088@30.1 (4)2048x1024@30.0 (4)
4.2
522240
8704
50 Mbit/s
62.5 Mbit/s
150 Mbit/s
200 Mbit/s
1920x1088@64.0 (4)2048x1088@60.0 (4)
5
589824
22080
135 Mbit/s
168.75 Mbit/s
405 Mbit/s
540 Mbit/s
1920x1088@72.3 (13)2048x1024@72.0 (13)2048x1088@67.8 (12)2560x1920@30.7 (5)3680x1536/26.7 (5)
5.1
983040
36864
240 Mbit/s
300 Mbit/s
720 Mbit/s
960 Mbit/s
1920x1088@120.5 (16)4096x2048@30.0 (5)4096x2304@26.7 (5)
H.264/AVC trở thành một tiêu chuẩn xử lý tốt với tốc độ bit thấp hơn so với các chuẩn cũ mà không quá phức tạp trong khi thiết kế. Mặt khác nó cũng có tính mềm dẻo cho phép hoạt động trên nhiều hệ thống và mạng khác nhau mà vẫn có tốc độ bit, độ phân giải,...như nhau. H.264/AVC được ứng dụng rộng rãi trong nén ảnh kỹ thuật truyền hình số, các ứng dụng về đồ họa và Video tương tác 2 chiều như Games, Video Conferencing, World Wide Web hoặc các ứng dụng nhằm phân phát dữ liệu Video như truyền hình cáp, Internet TV…H.264/AVC trở thành tiêu chuẩn công nghệ trong quá trình sản xuất, phân phối và truy nhập vào hệ thống Video.
Mã hoá H.264/AVC ngoài việc quan tâm đến hiệu quả mã hoá giống như các tiêu chuẩn mã hoá trước đây, còn bổ sung thêm một số công cụ cho các chức năng khác như: Mã hoá các đối tượng có hình dạng bất kỳ, nén hiệu quả các tín hiệu video liên tục và hình ảnh trên một phạm vi rộng của tỷ lệ bit, phân cấp về không gian, thời gian và chất lượng, khả năng truyền dẫn tốt trong môi trường khắc nghiệt.
NHỮNG ĐẶC TÍNH NỔI BẬT CỦA CHUẨN NÉN 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. Tiêu chuẩn này mang lại sự mềm dẻo cho sự lựa chọn kích thước và hình dạng, 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 ¼ làm giảm tính phức tạp của xử lý nội suy so với các tiêu chuẩn trước đó.
Bù chuyển động với nhiều hình tham khảo. Do camera thay đổi góc quay hay chuyển qua lại giữa các cảnh, việc đoán trước các chuyển động là rất phức tạp ta cần phải có nhiều frame tham khảo để nâng cao hiệu suất và chất lượng. H.264/AVC cho phép sử dụng tối đa 32 frame tham khảo trong khi MPEG-2 chỉ sử dụng 2 frame tham khảo mang tính chất chu kỳ. Bù chuyển động với nhiều hình tham khảo sẽ là chậm quá trình mã hóa và giải mã nhưng sẽ tăng chất lượng ảnh với cùng tỉ số nén.
Tách riêng hình tham khảo và hình hiển thị: ở các tiêu chuẩn trước có sự phụ thuộc giữa hình tham khảo và hình hiển thị, còn trong H.264/AVC bộ mã hóa có thể chọn hình ảnh để tham khảo gần nhất với hình ảnh được mã hóa cho mục đích tham khảo dự đoán nên có thể hiển thị với tính linh hoạt cao, do đó khoảng thời gian trễ sẽ được loại bỏ.
Giảm dư thừa về không gian tốt hơn: sử dụng phép biến đổi nguyên thay vì sử dụng phép biến đổi DCT như MPEG-2, làm giảm ảnh hưởng do sai số làm tròn.
Lượng tử hóa thích nghi: trong quá trình mã hóa với tốc độ bit biến thiên, khi sử dụng lượng tử hóa thích nghi, mỗi frame có thể được nén với những bộ lượng tử khác nhau phụ thuộc vào bản chất hình ảnh của chúng thông qua việc điều khiển tốc độ bit. Ví dụ những phần chuyển động hay những phần hình ảnh sẫm màu khó nhận biết sẽ được xử lý với hệ số lượng tử lớn hơn (độ nén cao hơn, dung lượng nhỏ hơn), những phần hay được hệ thống mắt người chú ý nhiều hơn sẽ được xử lý với hệ số lượng tử thấp hơn (độ nén nhỏ hơn, dung lượng lớn hơn). H.264/AVC cho phép sử dụng tới 52 mức lượng tử trong khi MPEG-2 chỉ có 31 mức.
Sử dụng bộ lọc tách khối: Trái ngược với bộ tiền xử lý hay bộ hậu xử lý, bộ lọc tách khối được áp dụng trong suốt quá trình mã hóa trên mọi frame đơn lẻ, nhưng trước đó nó sẽ được sử dụng để tham khảo cho những frame đến sau. Cải tiến mới này sẽ giúp tránh được hiện tượng kết khối làm ảnh hưởng đến chất lượng hình ảnh, đặc biệt là với tốc độ bit thấp. Nhưng tốc độ mã hóa, giải mã sẽ bị giảm sút.
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),.
Mã hóa Entropy thích nghi: trong H.264/AVC sử dụng 2 phương pháp mã hóa phức tạp hơn đó là CAVLC và CABAC thay vì biến đổi VCL tĩnh trong MPEG-2, nên hiệu quả mã hóa cũng cao hơn rõ rệt.
Một số đặc tính làm tăng cường khả năng chống sai số và mất dữ liệu như :
Thông số cài đặt cấu trúc: tập hợp các thông số nhằm tăng cường cho thông tin đầu mục của quá trình truyền được hiệu quả hơn. Ở những tiêu chuẩn trước, nếu mất một số thông tin quan trọng như thông tin đầu mục của chuỗi ảnh sẽ ảnh hưởng rất lớn đến quá trình giải mã. Còn trong H.264/AVC thì các thông tin này được tách riêng tạo tính linh hoạt và chuyên dụng hơn.
Cấu trúc cú pháp của NAL: Mỗi cấu trúc cú pháp trong H.264/AVC được đặt trong gói dữ liệu vật lý gọi là NAL.
Hỗ trợ kỹ thuật sắp xếp thứ tự mềm dẻo FMO và sắp xếp thứ tự slice bất kỳ ASO
Hỗ trợ 2 ảnh chuyển mạch đồng bộ SI/SP và kỹ thuật phân vùng dữ liệu (Data Partitioning).
Chức năng của H.264/AVC có thể tổng hợp trong những chức năng chính như sau:
Hiệu suất nén: hiệu suất nén là mục tiêu chính trong MPEG-1, MPEG-2. Do đó ở H.264/AVC, việc cải tiến hiệu suất mã hóa các luồng dữ liệu sẽ mở rộng khả năng ứng dụng của nó trong thực tiễn. Tiêu chuẩn H.264/AVC tiết kiệm lên đến 50% tốc độ bit so với MPEG-1, MPEG-2, MPEG-4 part 2 khi mã hóa cùng một cấp độ.
Khả năng tương tác: cho phép người sử dụng có thể tương tác trực tiếp các nội dung chương trình đang xem.
Kiểu truy nhập phổ biến: tăng cường khả năng chống lỗi trong mội trường khắc nghiệt, cung cấp các công cụ cần thiết để giải quyết việc mất mát gói dữ liệu trong khi truyền trong mạng gói và lỗi bit trong môi trường không dây.
Kể từ đó đến nay H.264/AVC liên tục được cải tiến và sự thành công của H.264/AVC thể hiện rõ trong việc giảm tốc độ bit cho các ứng dụng khác nhau như sau:
Đối với dịch vụ hội thoại hoạt động tốt ở tốc độ < 1Mbps với độ trễ thấp.
Đối với dịch vụ giải trí hoạt động tốt ở tốc độ 1- 8Mbps với độ trễ trong khoảng 0.5-2s.
Truyền hình quảng bá qua cáp, vệ tinh, mặt đất, DSL…
DVD cho truyền hình phân giải cao.
Truyền hình theo yêu cầu qua các kênh khác nhau.
Đối với dịch vụ luồng dữ liệu hoạt động tốt ở tốc độ 50 -1500kbps với độ trễ 2s.
KỸ THUẬT NÉN VIDEO H.264/AVC
GIẢI THÍCH NGUYÊN LÝ HOẠT ĐỘNG CƠ BẢN
Ảnh hiện tại
Ảnhtrước đó
Dự đoán chuyển động
Chọn kiểu dự đoán Intra
Dự đoán Intra
Lọc tách khối
Ảnh cấu trúc lại
Lượng tử vô hướng
Mã hóa Entropy
Giải lượng tử
Biến đổi DCT nguyên
Bù chuyển động
Biến đổi ngược
Sắp xếp trật tự
Hình IV.1 Sơ đồ khối mã hóa H.264/AVC
17 kiểu dự đoán Intra
Sơ đồ mã hóa
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 MB 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ơ đồ giải mã
Ảnhtrước đó
Dự đoán Intra
Lọc tách khối
Ảnh cấu trúc lại
Giải mã Entropy
Giải lượng tử
Bù chuyển động
Biến đổi ngược
Sắp xếp trật tự
Hình IV.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ừ N._. Q1 xảy ra khi thỏa mãn các điều kiện sau:
hay
Trường hợp bS
Một bộ lọc đáp ứng xung hữu hạn FIR-4 tap được dùng để lọc các giá trị p1, p0, q1, q0 tạo thành các giá trị p’0 và q’0. Nếu đó là thành phần luma và có |p2-p0|< thì sẽ sử dụng một FIR-4 tap khác để lọc các giá trị p2, p1, p0 và q0 để tạo ra p’1. Còn nếu |q2-q0| < thì sẽ sử dụng một FIR-4 tap khác để lọc các giá trị q2, q1, q0 và p0 để tạo ra q’1.
Trường hợp bS = 4
Nếu đó là thành phần luma và có |p2 - p0| < , |p0 - q0| < round() thì
Sử dụng một FIR-5 tap khác để lọc các giá trị p2, p1, p0, q0 và q1 tạo ra p’0
Sử dụng một FIR-4 tap khác để lọc các giá trị p2, p1, p0 và q0 tạo ra p’1
Sử dụng một FIR-5 tap khác để lọc các giá trị p3, p2, p1, p0, và q0 tạo ra p’2
Sử dụng một FIR-3 tap khác để lọc các giá trị p1, p0, và q1 tạo ra p’0
Nếu đó là thành phần luma và có |q2 - q0| < , |p0 - q0| < round() thì
Sử dụng một FIR-5 tap khác để lọc các giá trị q2, q1, q0, p0 và p1 tạo ra q’0
Sử dụng một FIR-4 tap khác để lọc các giá trị q2, q1, q0 và p0 tạo ra q’1
Sử dụng một FIR-5 tap khác để lọc các giá trị q3, q2, q1, q0, và p0 tạo ra q’2
Sử dụng một FIR-3 tap khác để lọc các giá trị q1, q0, và p1 tạo ra q’0
Hình IV.34. Tác dụng của bộ lọc tách khối đối với ảnh được nén nhịều.Trái : Không có bộ lọc tách khối. Phải : Có bộ lọc tách khối
CẤU TRÚC VÀ CÚ PHÁP CHUẨN H.264/AVC.
Để 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 đặc tính mã hóa và truyền tải của 2 lớp VCL và NAL như hình IV.35. mang lại hiệu quả cao trong môi trường mạng khắc nghiệt.
Network Abstraction Layer
(H.320, MP4FF,H.323/IP,MPEG2…)
Video Coding Layer
Data Partitioning
Control Data
Hình IV.35. Cấu trúc dòng bit 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 IV.36. 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ã.
Đị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 IV.37, 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 1byte 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 IV.37. Minh họa một chuỗi thành phần RBSP.
Bảng các thành phần RBSP được miêu tả như sau:
Loại RBSP
Mô tả
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)
Bảng 1: Các thành phần RBSP
Lớ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.
Cấ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 IV.38.
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á.
Seq
Seq
…
Seq
GOP SC
TimeCode
GOP Params
Pict
…
Pict
PSC
Type
BufferParams
EncodeParams
Slice
…
Slice
SSC
VertPos
Qscale
MB
MB
…
AddrIner
Type
Motion vector
Qscale
CBP
b0
…
b5
Seq QC
VideoParams
BitstreamParams
QTsMisc
GOP
…
GOP
Hình IV.38. Cấu trúc dòng bit MPEG-4 H.264/AVC
MỘT SỐ ỨNG DỤNG CHUẨN H.264/AVC
H
.264/AVC đánh dấu một bước ngoặt trong lĩnh vực nén video, nhờ áp dụng các kỹ thuật tiên tiến nhằm mục đích sử dụng băng thông hiệu quả hơn và đem lại chất lượng ảnh cao hơn và độ trễ thấp. Với các kỹ thuật này, H.264/AVC có thể giảm tốc độ bit xuống hơn 50% so với chuẩn MPEG-2. Tuy nhiên, H.264/AVC đòi hỏi một cấp độ phức tạp cao hơn trong cả quá trình mã hóa lẫn giải mã. Mặc dù vậy, thử thách này hoàn toàn có thể chinh phục được nhờ có những tiến bộ mới liên tiếp trong khả năng xử lý phần mềm cũng như phần cứng. Điều này có nghĩa là H.264/AVC là một ứng cử viên tiềm năng có khả năng thay thế MPEG-2 trong những năm sắp tới ở các lĩnh vực như truyền luồng Internet tốc độ bit thấp tới các ứng dụng quảng bá HDTV và Cinema số, truyền thông video qua mạng Internet, truyền hình di động theo chuẩn DVB-H, truyền hình số mặt đất, truyền hình theo yêu cầu, tin nhắn đa phương tiện MMS… qua các mạng ISDN, DSL, Wireless, LAN và vệ tinh…
Công nghệ truyền hình số ta đã khắc phục được nhiều khuyết điểm của truyền hình tương tự nhưng hơn cả là mở ra cho ta một tiềm năng phát triển vô cùng rộng lớn. Có thể thấy sự hỗ trợ mang tính bản chất cho các hoạt động tương tác là sự khác nhau chủ yếu, thể hiện tính năng ưu việt của công nghệ H.264/AVC so với MPEG-2, là chuẩn hiện đang được áp dụng rộng rãi trong các hệ thống truyền hình. Trên thực tế các hãng cung cấp dịch vụ truyền thông theo dòng đa phương tiện đều đã hỗ trợ chuẩn H.264/AVC trong cấu trúc hạ tầng và sản phẩm đang triển khai của mình, nhằm khắc phục nhược điểm của các mô hình truyền dẫn phát sóng phát thanh và truyền hình đang sử dụng hiện nay. Các ứng dụng của H.264 thực tế đang triển khai như:
TRUYỀN HÌNH INTERNET IPTV
IPTV là mạng truyền hình kết hợp chặt chẽ với mạng viễn thông. Nói rộng hơn IPTV là dịch vụ giá trị gia tăng sử dụng mạng băng rộng IP phục vụ cho nhiều người dùng. Các user có thể thông qua máy vi tính PC hoặc máy thu hình phổ thông cộng với STB để sử dụng dịch vụ IPTV. Đặc điểm nổi bật của IPTV là dựa trên nền công nghệ IP và có khả năng tương tác. IPTV sử dụng chuẩn nén H.264/AVC làm giảm đi một nửa băng thông cần thiết để phân phối video số chất lượng DVB đầy màn hình đến khách hàng, và giảm yêu cầu băng thông truyền dẫn truyền hình số chất lượng chuẩn SDTV xuống 700 kb/s - cả hai nằm trong giới hạn của vòng DSL 1.5 Mb/s. H.264 mở ra các cơ hội mới và cũng giảm giá thành áp dụng và giá thành điều hành khi so sánh với MPEG-2. H.264 nén video hiệu quả hơn, giảm giá thành truyền dẫn qua các kết nối vệ tinh và mặt đất.
Ở nước ta một số Website cũng đã cung cấp thử nghiệm các chuơng trình truyền hình trực tuyến như VietNamNet, Công ty VTC, Đài truyền hình HTV đã ghi nhận số lượng truy cập rất lớn, cho thấy sức hấp dẫn của dịch vụ này đối với công chúng. Với mạng băng hẹp truyền thống, chỉ một số dịch vụ đơn giản của IPTV là có thể thực hiện được. Còn để có thể triển khai thành công dịch vụ IPTV thì mạng băng rộng đóng vai trò tiên quyết, bởi vì chỉ với mạng băng rộng mới có thể bảo đảm cung cấp đầy đủ băng thông theo yêu cầu cho các dịch vụ IPTV (như truyền hình, Video, Games, v.v...).
TRUYỀN HÌNH VỆ TINH DVB-S2
DVB-S2 đã chọn H.264/AVC cho mã hoá nguồn audio và video ở tốc độ 8Mb/s rất phù hợp với một DVD thông thường.Với hiệu suất sử dụng băng thông tăng từ 30% đến 131%, số chương trình mà H.264/AVC mang lại có thể tăng gấp ba so với việc dùng MPEG-2, ví dụ như có thể phát 21-26 chương trình SDTV hoặc 5-6 chương trình HDTV trên một transponder 36Mhz. Công nghệ này thực sự là bộ công cụ hữu hiệu cho các dịch vụ tương tác qua vệ tinh. Truyền hình tương tác là một phương thức quảng cáo truyền hình mới kết hợp điểm mạnh giữa tiếp thị trực tiếp và truyền hình, qua đó người xem có thể chọn mua, xem thông tin chi tiết... chỉ đơn giản qua một thao tác click, hoặc trong khi xem chương trình truyền hình, người xem có thể tham gia vao các trò chơi qua các hình thức gửi tin nhắn SMS …Truyền hình HDTV đã trở thành một một sản phẩm thiết yếu trong các gia đình. Có khoảng hơn 10 triệu hộ gia đình trên toàn cầu hiện sử dụng HDTV, con số này dự kiến sẽ tăng lên 52 triệu vào năm 2009. Đây thực sự là một tiện ích hấp dẫn với khán giả truyền hình. Sẽ ảnh hưởng tích cực đến thị trường phim ảnh, cũng như các dịch vụ quảng bá vì giá cả thấp
TRUYỀN HÌNH DI DỘNG
Truyền hình số tới các thiết bị di động với màn hình nhỏ có một sự tương tự nhất định với truyền hình cố định. Để các kênh truyền hình có thể hiển thị rõ nét với chất lượng cao trên các thiết bị xem truyền hình di động và đi kèm với nó là các tiện ích tương tác đặc thù, các luồng tín hiệu chứa nội dung phải được đóng gói, truyền tải và giải mã trong một quy trình khép kín, đồng bộ... Đầu tiên, nội dung phải được tạo ra phù hợp với thiết bị di động có màn hình nhỏ, và điều này yêu cầu phải có kỹ thuật thu hình tinh tế nếu muốn hình ảnh được thể hiện tốt trên màn hình này (ví dụ có thể dùng 2 camera để lấy cùng một cảnh, một cho màn hình TV lớn, một cho màn hình di động nhỏ với các thông số kỹ thuật khác nhau). Thứ hai, cơ cấu phân phối nội dung cũng có thể khác liên quan tới vấn đề sử dụng phổ tần số. Thứ ba, có nhiều giao thức phân phối nội dung. Và cuối cùng, khả năng phân phối kênh tương tác cũng phong phú hơn. Với tốc độ bit thấp của H.264/AVC cho phép tải nội dung đa phương tiện trên các dụng cụ như điện thoại, PDA, laptop,.. qua các công nghệ Wireless, DAB, CDMA2000, UMTS và DBV-T. Mà hiệu suất nén tăng gấp đôi so với các chuẩn trước.
Hiện nay truyền hình di động đã trở nên phổ biến ở nước ta với hai công nghệ 3G -CDMA 2000 1x EV-DO của S-Fone và công nghệ DVB-H - Nokia và VTC. Việt Nam là nước đầu tiên tại châu Á và là nước thứ 2 trên thế giới (sau Phần Lan) được Nokia triển khai dịch vụ truyền hình di động. Có thể hiểu nôm na là THDĐ hiện có 2 chiều hướng, một là xem truyền hình như bạn vẫn xem trên tivi ở nhà (công nghệ DVB-H và DMB) và vào mạng Internet xem tivi trên máy tính (Media- Flo và 3G). DVB-H cũng sử dụng các bộ mã hóa âm thanh hình ảnh tiên tiến như H.264, cho phép đến 50 kênh truyền hình hoặc dữ liệu có thể được truyền qua DVB-H multiplex. Theo Nokia, ưu điểm của thiết bị này là tiết kiệm pin và có tính năng mạnh ngay cả trong môi trường tiếp nhận khó khăn; giúp tiết kiệm chi phí một cách hiệu quả trên các mạng truyền hình; có dung lượng băng tần rộng cho nội dung hình ảnh, âm thanh phong phú; sử dụng dải tần UHF, được toàn cầu sử dụng cho truyền hình. Ở 3G việc truyền dữ liệu phụ thuộc vào tốc độ đường truyền của mạng di động, chính vì vậy 2G hay 2,5G không đủ mạnh để đáp ứng đòi hỏi đường truyền của dịch vụ này, do tín hiệu video yêu cầu băng thông kênh truyền tương đối lớn (khoảng vài trăm kbps). Với kỹ thuật này, mỗi thuê bao được cấp một kênh trao đổi thông tin trong tài nguyên của mạng điện thoại để trao đổi thông tin truyền hình. Chất lượng hình ảnh không phụ thuộc vào cự ly phát sóng của kênh truyền hình hay các vật che chắn (như truyền hình thông thường). Truyền hình theo cách này cũng không cần phải có tần số riêng. Kênh thông tin trên công nghệ truyền hình 3G có tính chất 2 chiều (tương tự như 1 kênh đàm thoại), nhưng là kênh truyền dữ liệu được trạm thu phát gốc (BTS) cấp cho thuê bao. Như vậy, mỗi thuê bao sẽ chiếm một phần tài nguyên thông tin của trạm BTS khi họ sử dụng dịch vụ, vì vậy sẽ hạn chế số người dùng cùng lúc. Khi lượng người dùng lớn, để có thể phục vụ tốt cho người sử dụng dịch vụ, bắt buộc nhà khai thác mạng phải nâng cấp hệ thống dẫn đến chi phí đầu tư sẽ tăng, cũng đồng nghĩa với phí dịch vụ cao.
MÔ PHỎNG QUÁ TRÌNH NÉN-GIẢI NÉN CỦA H.264/AVC BẰNG MATLAB
LƯU ĐỒ GIẢI THUẬT
Sau đây là quá trình mã hóa và giải mã một frame bằng các kỹ thuật của H.246:
Chuyển file YUV sang Matlab movie
Phân chia thành các frame
Phân chia thành các macroblock
Phân chia thành các block 4x4
Biến đổi ICT các block 4x4 dư thừa
Cấu trúc lại các block 4x4 để tham khảo
Dự đoán chuyển động
Lượng tử các hệ số DCT
Mã hóa Entropy
Lưu thành file “lastmov”
Tìm vector chuyển động trong file“lastmov”
Mở file“lastmov”
Giải mã file“lastmov”
Giải lượng tử
Biến đổi frame từ YUV sang RGB
Tái tạo lại MB từ các block 4x4
Lưu lại thành file “lastmov”
END
Nạp file YUV
Lượng tử các hệ số DCT
CHƯƠNG TRÌNH MÔ PHỎNG:
So với MPEG-2 thì H.264/AVC có rất nhiều ưu điểm nổi bật nhưng vì còn nhiều hạn chế, nên em chỉ có thể mô phỏng một phần cách mã hóa tiên tiến của H.264/AVC như sử dụng 52 bước lượng tử, sử dụng biến đổi ICT cho khối 4x4...Để có thể hoàn thành được chương trình mô phỏng này, ngoài sự cố gắng của bản thân, sự định hướng đúng đắn của TS. Trần Dũng Trình, em còn tham khảo một số module Matlab có sẵn trên Web, một số hàm hỗ trợ từ Matlab...và đặc biệt được sự giúp đỡ của các anh chị trong công ty Sfone đã giúp em hoàn thành tốt Đồ án này. Tuy nhiên, vì việc mã hóa một bức ảnh có quá nhiều công đoạn phức tạp, và việc mã hóa cũng tốn khá nhiều thời gian, yêu cầu bộ xử lý tốc độ cao nên không thể tách riêng từng quá trình để mô phỏng.
Các module mô phỏng như sau:
Hàm main : chương trình chính, sẽ gọi các hàm con để mã hóa, giải mã...
Hàm playmov : hàm play file movie đã được nén.
Hàm plotvector : hàm vẽ vector chuyển động trong ảnh P và ảnh B
Hàm progressbar : hàm hỗ trợ từ Matlab, dùng để minh họa tiến trình xử lý của Matlab, hàm được tham khảo từ trang web mathexchange.com.
Hàm yuv2mov : hàm hỗ trợ từ Matlab, dùng để chuyển file YUV sang file movie trong Matlab, hàm được tham khảo từ trang web mathexchange.com.
Hàm sec2timestr : hàm hỗ trợ từ Matlab, dùng để chuyển một chuỗi số sang dạng thời gian thực, hàm được tham khảo từ trang web mathexchange.com.
KẾT QUẢ MÔ PHỎNG
Với cùng giá trị QP = 31, Frame thứ 1 của bức ảnh foreman.yuv được nén bằng kỹ thuật H.264/AVC có dung lượng và tỷ số PSNR = dB như sau
Còn nén bằng kỹ thuật MPEG-2 có dung lượng và tỷ số PSNR = dB như sau
PHỤ LỤC
function main()
clear all;
clc;
fprintf('\nLUAN VAN TOT NGHIEP\n')
fprintf('\nTONG QUAN VE CHUAN NEN MPEG-4 H.264/AVC VA KHA NANG UNG DUNG TRONG THUC TIEN\n')
fprintf('\nGVHD : TS. TRAN DUNG TRINH\n')
fprintf('\nSVTH : NGUYEN QUANG HOANG SON\n')
fprintf('\nMSSV : 103 101 088\n')
chonf = input('\nNHAP SO LUONG FRAMES SE MA HOA = ');
chonq = input('\nNHAP GIA TRI BUOC LUONG TU TRONG KHOANG 0<=QP<52, QP= ');
nq = chonq;
nf = chonf;
if (nq 51 | nf > 300)
error('NHAP SAI GIA TRI LUONG TU HOAC SO FRAMES!!!!')
end
save nq;
fprintf('\nSE MA HOA %d FRAMES VOI BUOC LUONG TU QP=%d\n',nf,nq);
mov = napmov(nf);
tic;
avc = mahoa(mov);
fprintf('THOI GIAN MA HOA : %s\n',sec2timestr(toc));
tic;
mov2 = giaima(avc);
fprintf('THOI GIAN GIAI MA : %s\n',sec2timestr(toc));
save lastmov mov2 avc mov;
%%%% HAM MO FILE YUV ROI LUU THANH MATLAB MOVIE %%%%
function movdata = napmov(nf)
mov = yuv2mov('carphone.yuv',176,144,'420');
%mov = yuv2mov('foreman.yuv',352,288,'420');
save mov;
load mov;
if nf == 0
nf = length(mov);
end
% MOV(1) : MA TRAN CHOI, MOV (2), MOV(3) MA TRAN MAU
movdata = repmat(uint8(0),size(mov(1).cdata), nf);%tai tao lai MANG MOV RONG
for i = 1:nf % MA HOA TU FRAME 1 DEN FRAME THU nf
movdata(:,:,:,i) = mov(i).cdata;% LUU DU LIEU CUA CAC FRAME
end
%%%%%% HAM MA HOA FILE MATLAB MOVIE %%%%%%%
function avc = mahoa(mov)
fpat = 'IBBPBBPBBPBBPBBI'; % LOAI MAU FRAME (CHO TOAN BO MOVIE)
k = 0; % FRAME DAU TIEN
pf = []; % MA TRAN MAU FRAME LA RONG
progressbar
for i = 1:size(mov,4) % VONG LAP FRAME, TRA VE GIA TRI COT
% THU 4 TRONG MOV
f = double(mov(:,:,:,i)); % BIEN DOI FRAME SANG GIA TRI DOUBLE
f = rgb2yuv(f);
k = k + 1;
if k > length(fpat)
k = 1;
end
ftype = fpat(k); % DAT TEN LOAI FRAME THU k
[avc{i},pf] = mhframe(f,ftype,pf);% GOI HAM MA HOA CHO FRAME THU i
progressbar(i/(size(mov,4))) % HIEN THI % QUA TRINH MA HOA,
end
%%%%% HAM MA HOA TUNG FRAME ANH %%%%%%
function [avc,df] = mhframe(f,ftype,pf)
[M,N,i] = size(f); % M = 176, N= 144,i = 3 TRONG f
mbsize = [M, N] / 16; % PHAN CHIA THANH CAC MACROBLOCK
avc = struct('type',[],'mvx',[],'mvy',[],'scale',[],'coef',[]);
avc(mbsize(1),mbsize(2)).type = [];
pfy = pf(:,:,1);
df = zeros(size(f));
for m = 1:mbsize(1) % VONG LAP THEO CHIEU CAO
for n = 1:mbsize(2) % VONG LAP THEO CHIEU RONG
x = 16*(m-1)+1 : 16*(m-1)+16;% LAP TU 1-CAO
y = 16*(n-1)+1 : 16*(n-1)+16;% LAP TU 1-RONG
[avc(m,n),df(x,y,:)] = mhmblock(f(x,y,:),ftype,pf,pfy,x,y);
end
end
%%%%%%%%%% HAM MA HOA MAROBLOCK %%%%%%%%
function [avc,dmb] = mhmblock(mb,ftype,pf,pfy,x,y)
persistent q1 q2;
if isempty(q1) %Neu mang q1 la rong.
q1 = qintra;
q2 = qinter;
end
load nq; %THONG SO BUOC LUONG TU
scale = nq;
avc.type = 'I'; % CAU TRUC AVC
avc.mvx = 0;
avc.mvy = 0;
% TIM VECTOR CHUYEN DONG CHO ANH P
if ftype == 'P'
avc.type = 'P';
[avc,emb] = getmotionvec(avc,mb,pf,pfy,x,y);
mb = emb; % LAY PHAN SAI SO GIUA CAC FRAME P DE MA HOA
q = q2; % NEU LA ANH P THI DU DOAN INTER
else
q = q1; % NEU LA ANH I
end
% TIM VECTOR CHUYEN DONG CHO ANH B
if ftype == 'B'
avc.type = 'B';
[avc,emb] = getmotionvec(avc,mb,pf,pfy,x,y);
mb = emb; % LAY PHAN SAI SO GIUA CAC FRAME B DE MHOA
q = q2;
else
q = q1;
end
% CHON KHOI VA TIEN HANH BIEN DOI DCT VA LUONG TU
b = getblocks(mb);
for i = 18:-1:1
avc.scale(i) = scale; % DAT VECTOR LUONG TU CHO KHOI i
coef = dct2(b(:,:,i)); % BIEN DOI DCT HAI CHIEU CHO KHOI THU i
avc.coef(:,:,i) = round( 8 * coef ./ (scale * q));
end
% CAU TRUC LAI KHOI DE THAM KHAO
dmb = gmmblock(avc,pf,x,y);
%%%%% PHAN CHIA MACROBLOCK THANH 18 KHOI 4x4 %%%%%
function b = getblocks(mb)
b = zeros([4, 4, 18]); % TAO 18 MA TRAN 4x4 ZEROS
b(:,:,1) = mb( 1:4, 1:4, 1);
b(:,:,2) = mb( 1:4, 5:8, 1);
b(:,:,3) = mb( 1:4, 9:12, 1);
b(:,:,4) = mb( 1:4, 13:16, 1);
b(:,:,5) = mb( 5:8, 1:4, 1);
b(:,:,6) = mb( 5:8, 5:8, 1);
b(:,:,7) = mb( 5:8, 9:12, 1);
b(:,:,8) = mb( 5:8, 13:16, 1);
b(:,:,9) = mb( 9:12, 1:4, 1);
b(:,:,10) = mb( 9:12, 5:8, 1);
b(:,:,11) = mb( 9:12, 9:12, 1);
b(:,:,12) = mb( 9:12, 13:16, 1);
b(:,:,13) = mb( 13:16, 1:4, 1);
b(:,:,14) = mb( 13:16, 5:8, 1);
b(:,:,15) = mb( 13:16, 9:12, 1);
b(:,:,16) = mb( 13:16, 13:16, 1);
% HAI KHOI CHROM (GIA TRI TRUNG BINH CUA 4 KHOI BEN CANH)
b(:,:,17) = 0.25 * ( mb(1:4:15,1:4:15, 2) + mb(1:4:15,2:4:16, 2) ...
+ mb(2:4:16,1:4:15, 2) + mb(2:4:16,2:4:16, 2));
b(:,:,18) = 0.25 * ( mb(1:4:15,1:4:15, 3) + mb(1:4:15,2:4:16, 3) ...
+ mb(2:4:16,1:4:15, 3) + mb(2:4:16,2:4:16, 3) );
%%%% HAM TINH TOAN VECTOR CHUYEN DONG %%%%%%%
function [avc,emb] = getmotionvec(avc,mb,pf,pfy,x,y)
mby = mb(:,:,1); % CHI TIM TRONG THANH PHAN Y
[M,N] = size(pfy);
% TIM KIEU MOI KHIA CANH
% maxstep = 10; % Largest allowable motion vector in x and y
% mvxv = -maxstep:maxstep;
% mvyv = -maxstep:maxstep;
% minsad = inf;
% for i = 1:length(mvxv)
% tx = x + mvxv(i);
% if (tx(1) < 1) | (M < tx(end))
% continue
% end
% for j = 1:length(mvyv)
% ty = y + mvyv(j);
% if (ty(1) < 1) | (N < ty(end))
% continue
% end
% sad = sum(sum(abs(mby-pfy(tx,ty))));
% if sad < minsad
% minsad = sad;
% mvx = mvxv(i);
% mvy = mvyv(j);
% end
% end
% end
% TIM KIEU Logarithmic
step = 8; % KICH THUOC BUOC TIM KIEM Initial step size for logarithmic search
dx = [0 1 1 0 -1 -1 -1 0 1]; % VECTOR CHI HUONG TIM KIEM
dy = [0 0 1 1 1 0 -1 -1 -1]; % [origin, right, right-up, up, left-up,
% left, left-down, down, right-down]
mvx = 0;
mvy = 0;
while step >= 1
minsad = inf;
for i = 1:length(dx)
tx = x + mvx + dx(i)*step;
if (tx(1) < 1) | (M < tx(end)) % NEU GIA TRI tx(1) <1 HOAC
continue % M < GIA TRI tx CUOI CUNG
end
ty = y + mvy + dy(i)*step;
if (ty(1) < 1) | (N < ty(end))
continue
end
sad = sum(sum(abs(mby-pfy(tx,ty))));
if sad < minsad
ii = i
minsad = sad;
end
end
mvx = mvx + dx(ii)*step;
mvy = mvy + dy(ii)*step;
step = step / 2;
end
avc.mvx = mvx; % LUU VECTOR CHUYEN DONG
avc.mvy = mvy;
emb = mb - pf(x+mvx,y+mvy,:); % MACROBLOCK SAI SO
%%%%%%%%%%%%%%%%%% HAM GIAI MA %%%%%%%%%%%%%%%%%%%%
function mov = giaima(avc)
movsize = size(avc{1});
mov = repmat(uint8(0),[16*movsize(1:2), 3, length(avc)]);
pf = [];
for i = 1:length(avc) % GIAI MA TOAN BO KHOI TRONG AVC
f = gmframe(avc{i},pf); % GIAI MA FRAME
pf = f; % LUU FRAME TRUOC DO
f = yuv2rgb(f); % BIEN DOI FRAME SANG RGB
f = min( max(f,0), 255); % GIOI HAN MOVIE TRONG KHOANG 8 BITS
mov(:,:,:,i) = uint8(f); % LUU FRAME
progressbar(i/(length(avc)));
end
%%%%%%%%%%% HAM GIAI MA FRAME %%%%%%%%%%%%%
function fr = gmframe(avc,pf)
mbsize = size(avc); % KICH THUOC MB CHINH LA KICH THUOC FILE
M = 16 * mbsize(1);
N = 16 * mbsize(2);
fr = zeros(M,N,3);
for m = 1:mbsize(1) % LAP TOAN BO MB
for n = 1:mbsize(2)
x = 16*(m-1)+1 : 16*(m-1)+16;% TAO LAI FRAME
y = 16*(n-1)+1 : 16*(n-1)+16;
fr(x,y,:) = gmmblock(avc(m,n),pf,x,y);% GOI HAM GIAI MA MB CHO KHOI
end % macroblock loop
end
%mse = floor((mov(i).cdata)-(avc(i).cdata));
%psnr = 10*log10(255^2/mse);
%save psnr;
%%%%%%%%%%%% HAM DAT KHOI %%%%%%%%%%%%%%%
function mb = putblocks(b)
mb = zeros([16, 16, 3]);
mb( 1:4, 1:4, 1) = b(:,:,1);
mb( 1:4, 5:8, 1) = b(:,:,2);
mb( 1:4, 9:12, 1) = b(:,:,3);
mb( 1:4, 13:16,1) = b(:,:,4);
mb( 5:8, 1:4, 1) = b(:,:,5);
mb( 5:8, 5:8, 1) = b(:,:,6);
mb( 5:8, 9:12, 1) = b(:,:,7);
mb( 5:8, 13:16, 1) = b(:,:,8);
mb( 9:12, 1:4, 1) = b(:,:,9);
mb( 9:12, 5:8, 1) = b(:,:,10);
mb( 9:12, 9:12, 1) = b(:,:,11);
mb( 9:12, 13:16, 1) = b(:,:,12);
mb( 13:16, 1:4, 1) = b(:,:,13);
mb( 13:16, 5:8, 1) = b(:,:,14);
mb( 13:16, 9:12, 1) = b(:,:,15);
mb( 13:16, 13:16, 1) = b(:,:,16);
z = [1 1 1 1; 1 1 1 1; 1 1 1 1; 1 1 1 1 ]; % HAI KHOI MAU CHROMA
mb(:,:,2) = kron(b(:,:,17),z);
mb(:,:,3) = kron(b(:,:,18),z);
%%%%%%%%%%%%%%%%%%%%% HAM GIAI MA MB %%%%%%%%%%%%%%%%
function mb = gmmblock(avc,pf,x,y)
persistent q1 q2
if isempty(q1) % MA TRAN HE SO LUONG TU
q1 = qintra;
q2 = qinter;
end
mb = zeros(16,16,3);
% DU DOAN VOI VECTOR CHUYEN DONG CUA ANH P
if avc.type == 'P'
mb = pf(x+avc.mvx,y+avc.mvy,:);
q = q2;
else
q = q1;
end
% DU DOAN VOI VECTOR CHUYEN DONG CUA ANH B
if avc.type == 'B'
mb = pf(x+avc.mvx,y+avc.mvy,:);
q = q2;
else
q = q1;
end
% GIAI MA KHOI
for i = 18:-1:1
coef = avc.coef(:,:,i) .* (avc.scale(i) * q) / 8; % GIAI LUONG TU
b(:,:,i) = idct2(coef); % BIEN DOI DCT NGUOC CHO HE SO MA HOA
end
% CAU TRUC B
mb = mb + putblocks(b);
%%%%%%%%% HAM BIEN DOI TU RGB SANG YUV %%%%%%%%%%%
function yuv = rgb2yuv(rgb) % BIEN DOI TRUOC KHI MA HOA
m = [ 0.299 0.587 0.144; %Y = 0.299R + 0.587R + 0.144B
-0.168736 -0.331264 0.5; % MA TRAN BIEN DOI
0.5 -0.418688 -0.081312];
% LAY DU LIEU MOVIE
[nr,nc,c] = size(rgb);
rgb = reshape(rgb,nr*nc,3); % TAI TAO CHO MA TRAN NHAN
% MA HOA MAU BIEN DOI
yuv = m * rgb';
yuv = yuv + repmat([0; 0.5; 0.5],1,nr*nc);
yuv = reshape(yuv',nr,nc,3); % TAI TAO LAI ANH GOC
%%%%%%%%%%%%%%% HAM BIEN DOI TU YUV SANG RGB %%%%%%%%%%
function rgb = yuv2rgb(yuv) % BIEN DOI SAU KHI GIAI MA
m = [ 0.299 0.587 0.144;
-0.168736 -0.331264 0.5;
0.5 -0.418688 -0.081312];
m = m^-1; % LAY NGHICH DAO MA TRAN m
[nr,nc,c] = size(yuv); % LAY DU LIEU MOVIE
yuv = reshape(yuv,nr*nc,3); % TAI TAO LAI CHO MA TRAN YUV
rgb = yuv - repmat([0, 0.5, 0.5],nr*nc,1);% MA HOA BIEN DOI MAU
rgb = m * rgb'; % rgb' hoan vi cua rgb
rgb = reshape(rgb',nr,nc,3); % TAI TAO LAI ANH GOC
%%%%%%%%%%%% BANG LUONG TU CHO ANH INTER 4x4 P VA B %%%%%
function q = qinter
q = [17,17,16,16;
17,16,15,15;
16,15,15,15;
16,15,15,15];
%%%%%%%%%%% BANG LUONG TU CHO ANH INTRA 4x4 %%%%%%%
function q = qintra
q = [ 9,13,18,21;
13,18,21,24;
18,21,24,27;
21,24,27,30];
Hàm plotvector.m
function plotvector
load lastmov;
[M,N] = size(avc{1});
for f = 1:length(avc)
if avc{f}(1,1).type == 'I'% neu la anh I thi bo qua
continue
end
for i = 1:M
for j = 1:N
mvx(i,j) = avc{f}(i,j).mvy;
mvy(i,j) = avc{f}(i,j).mvx;
end
end
figure
quiver(flipud(mvx),flipud(mvy))
set(gca,'XLim',[-1, N+2],'YLim',[-1, M+2])% CAI DAT TOA DO CUA HINH
title(sprintf('Vector chuyen dong cho anh thu %i',f))
end
Hàm playmov.m
function playmov(n)
load lastmov
for i = 1:size(mov,4)
m(i).cdata = uint8([mov(:,:,:,i) mov2(:,:,:,i)]);% mov anh goc, mov2 anh giai nen
m(i).colormap = [];
end
figure('Position',[30,100,750,400,]);
axs=axes('Position',[0.05 0.15 0.8 0.55]);
xlabel( 'Anh GOC ------------------------------------------------------>>>>>> Anh NEN');
movie(m,n,5); % Play mang m n lan, nhung lan sau play voi toc do 5fps
TÀI LIỆU THAM KHẢO
[1] TS. Nguyễn Thanh Bình, Ths. Võ Nguyễn Quốc Bảo, “Xử lý âm thanh, hình ảnh”, Học viện công nghệ Bưu chính viễn thông, Hà Nội.
[2] KS. Trương Thị Thủy, “Tiêu chuẩn mã hóa tiên tiến H.264-MPEG-4 AVC”, Tạp chí khoa học kỹ thuật truyền hình 1/2004.
[3] KS. Cao Văn Liết, “Bù chuyển động trong kỹ thuật mã hóa nội dung nguồn video tự nhiên sử dụng tiêu chuẩn nén MPEG-4”, Tạp chí khoa học kỹ thuật truyền hình 1/2005.
[4]Th.S. Nguyễn Minh Hồng, “Chuẩn nén H.264/AVC và khả năng ứng dụng trong truyền hình”, Tạp chí khoa học kỹ thuật truyền hình 2/2005.
[5] Gs.TS. Nguyễn Kim Sách, “Truyền hình số có nén và Multimedia”, Nhà xuất bản khoa học kỹ thuật, Hà Nội
[6] TS. Trần Dũng Trình, “Truyền hình trên Internet IPTV”, Tạp chí khoa học kỹ thuật truyền hình 3/2005
[7] Iain E. G. Richardson, “H.264 And MPEG-4 Video Compression”, The Robert Gordon University, Aberdeen, UK
[8] John Arnold, Michael Frater, Mark Pickering, “Digital Television Technology and Standards”, The University of New South Wales, ADFA Canberra, ACT, Australia
[9] JVT “Draft ITU-T recommendation and final draft international standard of joint
video specification (ITU-T rec. H.264– ISO/IEC 14496-10 AVC),”
[10] THOMAS SIKORA, “MPEG-1 and MPEG-2 Digital Video Coding Standards”, McGraw Hill Publishing Company.
[11] T. Wiegand, G.J. Sullivan, G. Bjontegaard, A. Luthra, ”Overview of the H.264/AVC Video Coding Standard,”
[12] Siwei Ma, Xiaopeng Fan, Wen Gao, “Low Complexity Integer Transform and High Definition Coding”
[13] Các trang web : University of Illinois at Chicago (UIC),
._.
Các file đính kèm theo tài liệu này: