Συµπίεση Δεδοµένων: Συµπίεση Ψηφιακού Βίντεο Αλέξανδρος Ελευθεριάδης Αναπ. Καθηγητής & Marie Curie Chair Τµήµα Πληροφορικής και Τηλεπικοινωνιών Εθνικό και Καποδιστριακό Πανεπιστήµιο Αθηνών eleft@di.uoa.gr, (210) 727-5210 p1 Διεθνή Πρότυπα Αναλογικού Βίντεο p2 1
Progressive/Interlaced p3 Ασπρόµαυρο Έγχρωµο Βίντεο Αναλογικό Ψηφιακό (CCIR-601) p4 2
Πρότυπα NTSC National Television Stadards Committee 1941 µονόχρωµο, 525 lines, 30 fps, 2:1 interlaced, 4:3 aspect ratio 1950 έγχρωµο, 29.97 fps PAL Phase Alternating Line 1963 έγχρωµο, 625 lines,25 fps, 2:1 interlaced, 4:3 aspect ratio p5 Διαµόρφωση NTSC PAL p6 3
Ψηφιακό Βίντεο CCIR-601 / ITU-R BT.601 720x525@60 (active 480) 720x625@50 (active 576) 2:1 interlace, 4:2:2 Chroma Formats: 4:2:2 CCIR-601 4:2:0 SIF p7 Άλλα Chroma Formats p8 4
SIF Source Interchange Format Ευρώπη: 360χ288@25 (µισές γραµµές των active) Β. Αµερική: 360χ240@30 Μετατροπή από CCIR-601 απαιτεί φιλτράρισµα (nonstandard): Luminance Chrominance (σηµ.: ζυγός αριθµός συντελεστών) p9 CIF Common Interchange Format Εφαρµογές videoconferencing Μισό resolution σε σχέση µε CCIR-601, παίρνοντας το µέγιστο αριθµό γραµµών (625) και µέγιστο ρυθµό εικόνων (30): 360χ288@30 (29.97) Υποδιαιρέσεις: QSIF, QCIF p10 5
HDTV Formats p11 Formats Η/Υ Formats από υπολογιστές: VGA 640x480 SVGA 800x600 XGA 1024x768 SXGA 1280x1024 UXGA 1600x1200 Πρόθεµα W για widescreen (π.χ. WXGA 1366x768) Πρόθεµα Q για µισές διαστάσεις (π.χ. QVGA = 320x240) Συχνότητα 60 Hz, 75 Hz, κτλ., progressive p12 6
Film 24 εικόνες/sec Δειγµατοληψία µόνο χρονικά Μετατροπή σε NTSC/PAL δεν είναι απλή (telecine). Παράδειγµα Film-to-NTSC: 3:2 pull-down 3:2 - Πρόσθεσε ένα field σε κάθε δεύτερο frame (24x2.5=60) pull-down - Αφού το NTSC έχει 59.94 fields/sec, επιβράδυνε τον ήχο κατά 0.1% για συγχρονισµό p13 Μέτρηση Ποιότητας σε Βίντεο Υποκειµενική Subjective Double-Stimulus Impairment Scale Double-Stimulus Continuous Quality Scale Single-Stimulus Continuous Quality Scale Double-Stimulus Unknown Reference (2 γύροι, πρώτα για να βρεθεί το reference) κτλ. MOS, Mean Opinion Score Αντικειµενική Objective PSNR Μέση τιµή σε όλη την ακολουθία εικόνων (mean PSNR) Συνήθως µόνο σε luma (Y-PSNR) p14 7
Καµπύλες R-D Παράδειγµα σύγκρισης p15 Bjontegaard Delta (2001) Ιδέα: κάνε 4 πειράµατα, προσάρµοσε δύο καµπύλες, και υπολόγισε το ολοκλήρωµα της διαφοράς => ένας αριθµός σύγκρισης για όλα τα bit rates SNR = (a + b*bit + c*bit 2 )/(bit + d) Πρoβλήµατα: πόλοι σε µερικές περιπτώσεις υπερίσχυση υψηλών bit rates PSNR (db) 35 34 33 32 31 30 29 28 27 26 25 "Normal" RD-plot Plot2 Plot1 0 500 1000 1500 2000 2500 Bitrate p16 8
Bjontegaard Delta (2) Λύση: χρήση λογαριθµικής κλίµακας για το bit rate 35 34 Log/Log plot 33 32 PSNR (db) 31 30 29 28 27 26 Plot2 Plot1 Lim2 Lim1 Lim4 Lim3 25 25 26 27 28 29 30 31 32 33 34 10xlog(bitrate) Απόσταση µεταξύ καθέτων γραµµών 10 0.05 = 1.122 (ή 12.2%). Χρήση απλούστερου πολυωνύµου για παρεµβολή: SNR = a + b*bit + c*bit 2 + d*bit 3 p17 Ιστορική Εξέλιξη (µέχρι 2004) MPEG: Motion Pictures Experts Group ISO/IEC JTC1/SC29/WG11 VCEG: Video Coding Experts Group ITU-T SG16/Q6 H.264 Scalable Video Coding (SVC, 2007) H.265 High Efficiency Video Coding (HEVC, 2013) p18 9
Επιτεύγµατα στην Κωδικοποίηση Βίντεο PSNR [db] 40 38 36 35 34 32 30 28 Variable block s iz e Variable block s iz e (16x16 4x4) + (16x16 8x8) quarter-pel + multi-frame motion compensation (H.264/AVC, 2003) (H.263, 1996) + quarter-pel motion compensation (MPEG-4, 1998) Half-pel motion compensation (MPEG-1 1993 MPEG-2 1994) Bit-rate Reduction: 75% Integer-pel motion compensation (H.261, 1991) Intraframe DCT coding (JPEG, 1990) 0 100 200 300 Foreman 10 Hz, QCIF 100 frames Rate [kbit/s] p19 Codec Wars http://www.appleinsider.com/articles/12/03/14/mozil la_considers_h264_video_support_after_googles_vp8_fa ils_to_gain_traction.html Diagram (next page): http://photos.appleinsider.com/webm.h.264.002.jpg p20 10
p21 Επικρατέστεροι Κωδικοποιητές Με άδεια χρήσης: H.264 (AVC & SVC) H.265 (HEVC) πρόβληµα µε royalties Open Source: VP8 (WebRTC) VP9 (YouTube, WebRTC) Στα σκαριά: Alliance for Open Media (AV1), http://aomedia.org Η.266 p22 11
Ύλη M. Ghanbari, Standard codecs: Image Compression to Advanced Video Coding, IEE, 2003, ISBN 0-85296-710-1 Κεφάλαια 1 History of Video Coding Κεφάλαιο 2 Video Basics Κεφαλαιο 3 Principles of Video Compression Κεφάλαιο 4 Subband and Wavelets εκτός Κεφάλαιο 5 JPEG Baseline JPEG2000 εκτός Κεφάλαιο 6 Η.261 p23 Βασικές Αρχές Συµπίεσης 1. Ελαχιστοποίηση χωρικής πλεονασµατικότητας (spatial redundancy) π.χ. transform coding 2. Ελαχιστοποίηση χρονικής πλεονασµατικότητας (temporal redundancy) π.χ. motion compensated prediction 3. Κωδικοποίηση εντροπίας (entropy coding) π.χ. Huffman coding p24 12
DPCM Μεταξύ pixels αλλά και µεταξύ frames p25 Transform Coding Παράδειγµα p26 13
Discrete Cosine Transform Προσέγγιση του KLT Κατανοµή σταθερών ώστε οι συντελεστές να είναι µεταξύ -2047 και +2047 C(u)=sqrt(1/2) άν u=0, 1 διαφορετικά Mismatch Control Μη τυποποιηµένη υλοποίηση συσσωρεύει σφάλµα στο δέκτη. Προσθήκη ψευδοτυχαίου σήµατος το κρατάει µέσα σε όρια p27 Κβαντισµός (quantization) Με dead-zone (τυπικά για AC) Χωρίς (τυπικά για DC) p28 14
Motion Estimation Διαφορά διαδοχικών εικόνων χωρίς (a) και µε (b) εκτίµηση κίνησης p29 Μοντέλο ME MSE MAE p30 15
Τεχνικές ΜΕ Full-search, πολυπλοκότητα (2w+1) 2 50-65 % συνολικής υπολογιστικής πολυπλοκότητας τυπικού κωδικοποιητή Παράδειγµα ταχύ αλγορίθµου Cross-Search Algorithm (CSA), πολυπλοκότητα 5+4log 2 w p31 Ιεραρχική Εκτίµηση (Hierarchical ME) Ιδιαίτερα χρήσιµη σε scalable codecs p32 16
Κωδικοποίηση Εντροπίας Εντροπία Huffman & Arithmetic Coding Παράδειγµα Huffman: p33 Γενική Αρχιτεκτονική Κωδικοποιητή Βίντεο Interframe predictive encoder Καλύπτει όλες τις γενιές κωδικοποιητών βίντεο! Παρατηρήστε σύvδεση buffer-quantizer (rate control) p34 17
Αποκωδικοποιητής p35 H.261 Video codec for audiovisual services at p x 64 kbit/s Κωδικοποίηση για µετάδοση από κανάλια ψηφιακής τηλεφωνίας (64 kbit/s) 1 p 30 Σηµείωση: 30 κανάλια είναι η χωρητικότητα Ε1 γραµµής (µε 2 ακόµα κανάλια για framing/signaling) Διαθέσιµο: http://www.itu.int/rec/t-rec-h.261/en Τρέχουσα έκδοση 3/93, 25 σελίδες Θα το δούµε λεπτοµερώς, σελίδα-σελίδα. p36 18
Οργάνωση της εικόνας p37 Παρουσίαση από το κείµενο του Η.261 Οι διαφάνειες 6-14 (µέχρι την «Κωδικοποιητής» χρησιµοποιούνται επεξηγηµατικά για το κείµενο του Η.261) p38 19
Loop Filter a αρχική, b 256 Kbps (χωρίς loop filter) a 128 Kbps, b 64 Kbps (χωρίς loop filter) p39 Loop Filter (2) a 128 Kbps, b 64 Kbps (χωρίς loop filter) a 128 Kbps, b 64 Kbps (µε loop filter) p40 20
Loop Filter (3) {1/4, 1/2, 1/4} 2D separable Στα άκρα της εικόνας γίνεται {0, 1, 0} Το βιβλίο έχει λάθος φίλτρα στα άκρα (Σχήµα 6.16): p41 ΜΒ Addressing p42 21
Motion Vector Εύρος [-15, +15] MVDs κωδικοποιούνται µε VLC διπλών τιµών Predictor reset όταν: Αρχή γραµµής σε GOB Μετά από skipped MB Μετά από MB χωρίς MV p43 Block Addressing Coded Block Pattern (CBP), VLC-encoded (25=16+8+1) (6=4+2) p44 22
Κβαντισµός Intra DC - βήµα 8 (χωρίς dead zone) Όλοι οι άλλοι µεταβλητός (1-31) µε dead zone Παραδείγµατα: QUANT=1: 0, ±3, ±5, ±7, QUANT=2: 0, ±5, ±9, ±13, QUANT=3: 0, ±9, ±15, ±21, Το βιβλίο έχει λάθος δεν µεταδίδεται το Th (Κεφ. 6.4, Σχήµα 6.3) p45 Παράδειγµα Κωδικοποίησης Κβαντισµένων Συντελεστών DCT Σηµείωση: Λάθος βιβλίου - τα quantized values είναι κατά 1 µικρότερα (Η.261, σελ. 17, quant even) QUANT=8 (κατωφλίωση) p46 23
Παράδειγµα 2-D VLC ( Claire ) p47 Κωδικοποιητής ΔΕΝ περιγράφεται από το πρότυπο Δυνατότητα για διαφοροποίηση/καινοτοµία του σχεδιαστή Ανάπτυξη «εργαστηριακού» κωδικοποιητή που χρησιµοποιείται κατά την ανάπτυξη του προτύπου: Reference Model (RM) H.261 Test Model (TM) MPEG-2/H.262 Verification Model (VM) MPEG-4 Test Model Near-term (TMN) H.263 Joint Model (JM) H.264 Joint Software Verification Model (JSVM) H.264 SVC HM (Test Model under Consideration TMuC) - HEVC p48 24
H.261 RM8 (1989) Απλός κωδικοποιητής που υλοποιεί βασικούς αλγορίθµους για coder control (για κάθε MB) COMP - a comparator for deciding the inter/intra coding mode for an MB Th - thres hold, to ex tend the quantis ation range P - picture memory with motion compensated variable delay F - loop filter p - flag for inter/intra t - flag for trans mitted or not q - quantisation index for transform coefficients qz - quantiser indication v - motion vector information f - switching on/off of the loop filter p49 RM8 Prediction Πρόβλεψη χωρίς MV Πρόβλεψη µε MV: ME σε luma µόνο, full search (±15 pixels) p50 25
RM8 MC/NO_MC Decision Σύγκριση µέσου σφάλµατος µε και χωρίς MC (άθροισµα απολύτων τιµών διαφορών, δια 16χ16=256 pixels) «Προτίµηση» σε NO_MC λόγω κόστους των MVs. p51 RM8 Inter/Intra Decision Σύγκριση της διακύµανσης (variance) µεταξύ: Intra Inter (µε ή χωρίς MV) Forced updating : intra κάθε 132 εικόνες λόγω DCT mismatch p52 26
Κατηγορίες MB p53 RM8 Rate Control p54 27
RM8 Rate Control (2) Μέγεθος buffer Β max = 6400p, όπου p από το px64 Κωδικοποίηση πρώτης I picture µε Q p =16 Χωρητικότητα buffer B αρχικοποιείται στο 50% Προσαρµογή Q p σε κάθε GOB σύµφωνα µε: Σε περίπτωση: Overflow forced skipped MBs Underflow bit stuffing (filler data) p55 H.264 AVC (Advanced Video Coding) Σηµ.: Μερικές διαφάνειες και διαγράµµατα είναι από τον Thomas Wiegand, HHI p56 28
Standardization of H.264/AVC 1993-1997: VCEG planning phase H.26P ð H.263, H.26L ð H.264/AVC August 1999: 1 st test model (TML-1) December 2001: Formation of Joint Video Team (JVT) between VCEG and MPEG ð joint project H.264/AVC (similar to H.262/MPEG2 Video) JVT Chairs: Gary Sullivan (Microsoft), Ajay Luthra (Motorola), and Thomas Wiegand (HHI) ITU-T ISO/IEC Approval: Spring 2003 ITU-T ISO/IEC Approval of Fidelity Range Extensions: Autumn 2004 ITU-T ISO/IEC Approval of Scalability Extension: July 2007 Initiation of Multi-view Video Extension: July 2006 p57 Hybrid Video Coding Structure Input Video Signal Split into Macroblocks 16x16 pixels - Decoder Coder Control Transform/ Scal./Quant. Intra-frame Prediction Motion- Scaling & Inv. Transform De-blocking Filter Control Data Quant. Transf. coeffs Outpu t Entropy Coding Intra/Inter Compensation Video Motion SignaMotion l Data Estimation p58 29
Motion Compensation Accuracy Input Video Signal Split into Macroblocks 16x16 pixels - Decoder Coder Control Transform/ Scal./Quant. Intra-frame Prediction Motion- Intra/Inter Compensation Motion Estimation Scaling & Inv. Transform De-blocking 16x16 Filter MB Types 0 8x8 Types Control Data Quant. Transf. coeffs 16x8 0 8x16 0 1 Entropy Coding 8x8 0 1 2 3 Outpu1 t 8x8 8x4 4x8 Video 0 0 Signa 0 1 Motion 1 l Data Motion vector accuracy 1/4 (6-tap filter) 4x4 0 1 2 3 p59 Multiple Reference Pictures and Generalized B Pictures D=1 D=4 D=2 4 Prior Decoded PicturesCurrent as Reference Picture 1. Extend motion vector by reference picture index D 2. Provide reference 3. In case of bipredictive coding (B pictures at decoder side pictures): decode 2 sets of motion parameters Flexible buffering of reference pictures generalizes B pictures: B pictures can be reference pictures (decoupling of concepts) Reference picture for a B picture can be any prior decoded picture p60 30
Input Video Signal Split into Macroblocks 16x16 pixels - Decoder Coder Control Transform/ Scal./Quant. Intra-frame Prediction Motion- Intra/Inter Compensation Motion Estimation Directional spatial prediction Q A Control B C D E F G H (9 types for luma, 1 chroma) I a b Data c d J e f Quant. g h Transf. coeffs K i j k l Scaling & Inv. Transform L m n o p De-blocking Filter Intra Prediction M N O P Output Video Signal 4 Motion Data 6 1 5 Entropy Coding 0 7 2 8 3 e.g., Mode 3: p61 Transform Coding Input Video Signal 4x4 Block Integer Transform Decoder 1 1 1 1 2 1 1 2 H = 1 1 1 1 1 2 2 1 Split into - Coder Control Transform/ Scal./Quant. Macroblocks 1 1 1 1 1 1 16x16 pixels Intra-frame 1 1 8x8 12/8 Block 10/8 Integer 6/8 3/8 Transform -3/8-6/8-10/8-12/8 Prediction Motion- H = 1 1/2-1/2-1 -1-1/2 1/2 1 Intra/Inter Compensation 10/8-3/8 12/8-6/8 6/8-12/8 3/8-10/8 1-1 -1 1 1-1 -1 1 6/8-12/8 3/8 10/8-10/8-3/8 12/8-6/8 Motion 1/2-1 1-1/2-1/2 1-1 1/2 3/8-6/8 10/8-12/8 12/8-10/8 6/8-3/8 Estimation Scaling & Inv. Transform De-blocking Filter Control Data Quant. Transf. coeffs Output Video Signal Motion Data Entropy Coding p62 31
Entropy Coding Input Coder Video Control Control Signal - Decoder Transform/ Scal./Quant. Inv. Scal. & Transform Data Quant. Transf. coeffs Entropy Split into Macroblocks 16x16 pixels Intra-frame Prediction Motion- Intra/Inter Compensation De-blocking Filter Output Video Signal Coding Motion Motion Data Estimation p63 Variable Length Coding Exp-Golomb code is used universally for all symbols except for transform coefficients (Section 9.1) p64 32
Context-Adaptive VLC (CAVLC) Context adaptive VLCs for coding of transform coefficients Contexts are built dependent on transform coefficients No end-of-block, but number of coefficients is decoded Coefficients are scanned backwards p65 Context-based Adaptive Binary Arithmetic Codes (CABAC) Usage of adaptive probability models for most symbols Exploiting symbol correlations by using contexts Restriction to binary arithmetic coding Simple and fast adaptation mechanism Fast binary arithmetic codec based on table look-ups and shifts only Average bit-rate saving over CAVLC 10-15% for broadcast video p66 33
H.264 SVC (Scalable Video Coding) Σηµ.: Μερικές διαφάνειες και διαγράµµατα είναι από τον Thomas Wiegand, HHI p67 Scalable Video Coding (SVC) Principle SVC encoder QCIF@ 128 kbit/s H.264/AVC decoder 7,5 Hz CIF@ 256 kbit/s 512 kbit/s SVC decoder SVC decoder 15 Hz CIF@ 30 Hz scene 1024 kbit/s SVC decoder TV@ 60 Hz p68 34
Scalability of Video - Modalities Temporal: change of frame rate 30 Hz 15 Hz 7.5 Hz Spatial: change of frame size TV CIF QCIF Fidelity: change of quality (e.g. SNR) p69 Temporal Decomposition of Video Video Coding Experiment with H.264/AVC: N=1 I P P P P P P P Foreman, CIF 30Hz @ 132 kbit/s P Cascaded QP assignment Temporal Scalability I/P: best quality, B0 : much worse quality than I/P, N=2 I B0 P B0 P B0 P B0 B1 : slightly worse quality than B0, P 33,2 33 Y-PSNR [db] 32,8 N=4 32,6 32,4 I B1 B0 B1 P B1 B0 B1 P Same QP for all pictures 32,2 32 31,8 N=8 I B2 B1 B2 B0 B2 B1 B2 P 31,6 31,4 1 2 4 8 16 32 64 Distance between two P pictures N p70 35
SNR Scalability: Typical Encoding Hierarchical MCP & Intra prediction tex tu re motion Base layer coding Inter-layer prediction: Intra Mo tio n Resid u al Hierarchical MCP & Intra prediction tex tu re motion Base layer coding Mu ltip lex Scalable bit-stream Inter-layer prediction: Intra Mo tio n H.264/AVC MCP & Intra prediction Resid u al tex tu re motion Base layer coding H.264/AVC-compatible base layer bit-stream H.264/AVC compatible encoder p71 36