Πώς λειτουργεί ένας κωδικοποιητής βίντεο; Μέρος 1: Βασικά

Το δεύτερο μέρος: Πώς λειτουργεί ο κωδικοποιητής βίντεο

Οποιοδήποτε ράστερ image μπορεί να αναπαρασταθεί στη μορφή δισδιάστατη μήτρα. Όταν πρόκειται για χρώματα, η ιδέα μπορεί να αναπτυχθεί κοιτάζοντας μια εικόνα ως τρισδιάστατη μήτρα, στο οποίο χρησιμοποιούνται πρόσθετες διαστάσεις για την αποθήκευση δεδομένων για καθένα από τα χρώματα.

Αν θεωρήσουμε το τελικό χρώμα ως συνδυασμό του λεγόμενου. βασικά χρώματα (κόκκινο, πράσινο και μπλε), στον τρισδιάστατο πίνακα μας ορίζουμε τρία επίπεδα: το πρώτο για το κόκκινο, το δεύτερο για το πράσινο και το τελευταίο για το μπλε.
Πώς λειτουργεί ένας κωδικοποιητής βίντεο; Μέρος 1: Βασικά
Θα ονομάσουμε κάθε σημείο αυτού του πίνακα pixel (στοιχείο εικόνας). Κάθε pixel περιέχει πληροφορίες σχετικά με την ένταση (συνήθως ως αριθμητική τιμή) κάθε χρώματος. Για παράδειγμα, κόκκινο εικονοστοιχείο σημαίνει ότι περιέχει 0 πράσινο, 0 μπλε και μέγιστο κόκκινο. Ροζ pixel μπορεί να διαμορφωθεί με συνδυασμό τριών χρωμάτων. Χρησιμοποιώντας ένα αριθμητικό εύρος από 0 έως 255, ένα ροζ pixel ορίζεται ως Κόκκινο = 255, Πράσινο = 192 и Μπλε = 203.

Πώς λειτουργεί ένας κωδικοποιητής βίντεο; Μέρος 1: Βασικά

Αυτό το άρθρο δημοσιεύτηκε με την υποστήριξη της EDISON.

Αναπτυσσόμαστε εφαρμογές για παρακολούθηση βίντεο, ροή βίντεο, και επίσης είμαστε αρραβωνιασμένοι εγγραφή βίντεο στο χειρουργείο.

Εναλλακτικοί τρόποι κωδικοποίησης έγχρωμης εικόνας

Υπάρχουν πολλά άλλα μοντέλα για την αναπαράσταση των χρωμάτων που συνθέτουν μια εικόνα. Για παράδειγμα, μπορείτε να χρησιμοποιήσετε μια παλέτα με ευρετήριο, η οποία απαιτεί μόνο ένα byte για να αντιπροσωπεύει κάθε pixel, αντί για τα τρία που απαιτούνται όταν χρησιμοποιείτε το μοντέλο RGB. Σε ένα τέτοιο μοντέλο, είναι δυνατό να χρησιμοποιηθεί μια μήτρα 2D αντί για μια μήτρα 3D για την αναπαράσταση κάθε χρώματος. Αυτό εξοικονομεί μνήμη, αλλά δίνει μια μικρότερη χρωματική γκάμα.

Πώς λειτουργεί ένας κωδικοποιητής βίντεο; Μέρος 1: Βασικά

RGB

Για παράδειγμα, ρίξτε μια ματιά σε αυτήν την εικόνα παρακάτω. Το πρώτο πρόσωπο είναι πλήρως βαμμένο. Τα άλλα είναι τα επίπεδα κόκκινου, πράσινου και μπλε (οι εντάσεις των αντίστοιχων χρωμάτων φαίνονται σε κλίμακα του γκρι).

Πώς λειτουργεί ένας κωδικοποιητής βίντεο; Μέρος 1: Βασικά

Βλέπουμε ότι οι αποχρώσεις του κόκκινου στο πρωτότυπο θα βρίσκονται στα ίδια σημεία όπου παρατηρούνται τα πιο φωτεινά μέρη του δεύτερου προσώπου. Ενώ η συνεισφορά του μπλε φαίνεται κυρίως μόνο στα μάτια του Μάριου (τελευταίο πρόσωπο) και στοιχεία της ενδυμασίας του. Παρατηρήστε πού συμβάλλουν λιγότερο και τα τρία χρωματικά επίπεδα (τα πιο σκοτεινά μέρη των εικόνων) - το μουστάκι του Mario.

Για να αποθηκεύσετε την ένταση κάθε χρώματος, απαιτείται ένας συγκεκριμένος αριθμός bits - αυτή η ποσότητα ονομάζεται bit βάθος. Ας υποθέσουμε ότι ξοδεύονται 8 bit (με βάση μια τιμή από 0 έως 255) ανά επίπεδο χρώματος. Τότε έχουμε βάθος χρώματος 24 bit (8 bit * 3 επίπεδα R/G/B).

Μια άλλη ιδιότητα μιας εικόνας είναι ανάλυση, που είναι ο αριθμός των pixel σε μία διάσταση. Συχνά υποδηλώνεται ως πλάτος × ύψος, όπως στην παρακάτω εικόνα παραδείγματος 4 επί 4.
Πώς λειτουργεί ένας κωδικοποιητής βίντεο; Μέρος 1: Βασικά

Μια άλλη ιδιότητα με την οποία ασχολούμαστε όταν εργαζόμαστε με εικόνες/βίντεο είναι αναλογία απεικόνισης, που περιγράφει την κανονική αναλογική σχέση μεταξύ του πλάτους και του ύψους μιας εικόνας ή pixel.

Όταν λένε ότι μια συγκεκριμένη ταινία ή εικόνα έχει μέγεθος 16 επί 9, συνήθως εννοούν αναλογία διαστάσεων οθόνης (ΑΛΛΑ - από Εμφάνιση αναλογίας διαστάσεων). Ωστόσο, μερικές φορές μπορεί να υπάρχουν διαφορετικά σχήματα μεμονωμένων pixel - σε αυτήν την περίπτωση μιλάμε αναλογία εικονοστοιχείων (PAR - από Αναλογία διαστάσεων pixel).

Πώς λειτουργεί ένας κωδικοποιητής βίντεο; Μέρος 1: Βασικά

Πώς λειτουργεί ένας κωδικοποιητής βίντεο; Μέρος 1: Βασικά

Σημείωση προς την οικοδέσποινα: DVD αντιστοιχεί DAR 4 έως 3

Αν και η πραγματική ανάλυση του DVD είναι 704x480, εξακολουθεί να διατηρεί αναλογία διαστάσεων 4:3, επειδή το PAR είναι 10:11 (704x10 / 480x11).

Και τέλος, μπορούμε να προσδιορίσουμε βίντεο σαν μια ακολουθία από n πλαίσια για την περίοδο ώρα, το οποίο μπορεί να θεωρηθεί πρόσθετη διάσταση. ΕΝΑ n τότε είναι ο ρυθμός καρέ ή ο αριθμός των καρέ ανά δευτερόλεπτο (FPS - από Καρέ ανά δευτερόλεπτο).

Πώς λειτουργεί ένας κωδικοποιητής βίντεο; Μέρος 1: Βασικά

Ο αριθμός των bit ανά δευτερόλεπτο που απαιτείται για την εμφάνιση ενός βίντεο είναι δικός του ταχύτητα μετάδοσης - bitrate.

bitrate = πλάτος * ύψος * βάθος bit * καρέ ανά δευτερόλεπτο

Για παράδειγμα, ένα βίντεο 30 fps, 24 bps, 480x240 θα απαιτούσε 82,944,000 bps ή 82,944 Mbps (30x480x240x24) - αλλά αυτό συμβαίνει εάν δεν χρησιμοποιείται μέθοδος συμπίεσης.

Εάν η ταχύτητα μεταφοράς σχεδόν σταθερό, τότε λέγεται σταθερή ταχύτητα μετάδοσης (CBR - από σταθερό ρυθμό μετάδοσης bit). Αλλά μπορεί επίσης να ποικίλλει, στην περίπτωση αυτή ονομάζεται μεταβλητό ρυθμό baud (VBR - από μεταβλητός ρυθμός bit).

Αυτό το γράφημα δείχνει περιορισμένο VBR, όπου δεν χάνονται πάρα πολλά bits στην περίπτωση ενός εντελώς σκούρου πλαισίου.

Πώς λειτουργεί ένας κωδικοποιητής βίντεο; Μέρος 1: Βασικά

Οι μηχανικοί ανέπτυξαν αρχικά μια μέθοδο για να διπλασιάσουν τον αντιληπτό ρυθμό καρέ μιας οθόνης βίντεο χωρίς τη χρήση πρόσθετου εύρους ζώνης. Αυτή η μέθοδος είναι γνωστή ως πλεγμένο βίντεο; Βασικά, στέλνει τη μισή οθόνη στο πρώτο «καρέ» και την άλλη μισή στο επόμενο «καρέ».

Επί του παρόντος, οι σκηνές αποδίδονται κυρίως με χρήση προοδευτικές τεχνολογίες σάρωσης. Είναι μια μέθοδος εμφάνισης, αποθήκευσης ή μετάδοσης κινούμενων εικόνων στην οποία όλες οι γραμμές κάθε καρέ σχεδιάζονται διαδοχικά.

Πώς λειτουργεί ένας κωδικοποιητής βίντεο; Μέρος 1: Βασικά

Καλά! Τώρα γνωρίζουμε πώς αναπαρίσταται μια εικόνα ψηφιακά, πώς είναι τακτοποιημένα τα χρώματά της, πόσα bit ανά δευτερόλεπτο ξοδεύουμε για την εμφάνιση βίντεο, εάν ο ρυθμός μετάδοσης bit είναι σταθερός (CBR) ή μεταβλητός (VBR). Γνωρίζουμε για μια δεδομένη ανάλυση χρησιμοποιώντας έναν δεδομένο ρυθμό καρέ, είμαστε εξοικειωμένοι με πολλούς άλλους όρους, όπως το interlaced video, το PAR και μερικούς άλλους.

Αφαίρεση πλεονασμού

Είναι γνωστό ότι το βίντεο χωρίς συμπίεση δεν μπορεί να χρησιμοποιηθεί κανονικά. Ένα βίντεο διάρκειας μιας ώρας σε ανάλυση 720p και 30 καρέ ανά δευτερόλεπτο θα καταλάμβανε 278 GB. Φτάνουμε σε αυτή την τιμή πολλαπλασιάζοντας τα 1280 x 720 x 24 x 30 x 3600 (πλάτος, ύψος, bits ανά pixel, FPS και χρόνος σε δευτερόλεπτα).

Χρήση αλγόριθμοι συμπίεσης χωρίς απώλειες, όπως το DEFLATE (χρησιμοποιείται σε PKZIP, Gzip και PNG), δεν θα μειώσει αρκετά το απαιτούμενο εύρος ζώνης. Πρέπει να αναζητήσουμε άλλους τρόπους συμπίεσης βίντεο.

Για να το κάνετε αυτό, μπορείτε να χρησιμοποιήσετε τα χαρακτηριστικά του οράματός μας. Διακρίνουμε καλύτερα τη φωτεινότητα από το χρώμα. Ένα βίντεο είναι μια σειρά από διαδοχικές εικόνες που επαναλαμβάνονται με την πάροδο του χρόνου. Υπάρχουν μικρές διαφορές μεταξύ γειτονικών καρέ της ίδιας σκηνής. Επιπλέον, κάθε πλαίσιο περιέχει πολλές περιοχές που χρησιμοποιούν το ίδιο (ή παρόμοιο) χρώμα.

Χρώμα, φωτεινότητα και τα μάτια μας

Τα μάτια μας είναι πιο ευαίσθητα στη φωτεινότητα παρά στο χρώμα. Μπορείτε να το δείτε μόνοι σας βλέποντας αυτήν την εικόνα.

Πώς λειτουργεί ένας κωδικοποιητής βίντεο; Μέρος 1: Βασικά

Αν δεν βλέπετε ότι στο αριστερό μισό της εικόνας τα χρώματα των τετραγώνων A и B είναι στην πραγματικότητα τα ίδια, τότε αυτό είναι φυσιολογικό. Ο εγκέφαλός μας μας αναγκάζει να δίνουμε περισσότερη προσοχή στο φως και τη σκιά παρά στο χρώμα. Στη δεξιά πλευρά μεταξύ των καθορισμένων τετραγώνων υπάρχει ένας βραχυκυκλωτήρας του ίδιου χρώματος - έτσι εμείς (δηλαδή ο εγκέφαλός μας) προσδιορίζουμε εύκολα ότι, στην πραγματικότητα, έχουν το ίδιο χρώμα.

Ας δούμε (με απλοποιημένο τρόπο) πώς λειτουργούν τα μάτια μας. Το μάτι είναι ένα πολύπλοκο όργανο που αποτελείται από πολλά μέρη. Ωστόσο, μας ενδιαφέρουν περισσότερο οι κώνοι και οι ράβδοι. Το μάτι περιέχει περίπου 120 εκατομμύρια ράβδους και 6 εκατομμύρια κώνους.

Ας θεωρήσουμε την αντίληψη του χρώματος και της φωτεινότητας ως ξεχωριστές λειτουργίες ορισμένων τμημάτων του ματιού (στην πραγματικότητα, όλα είναι κάπως πιο περίπλοκα, αλλά θα τα απλοποιήσουμε). Οι ράβδοι είναι κυρίως υπεύθυνες για τη φωτεινότητα, ενώ οι κώνοι για το χρώμα. Οι κώνοι χωρίζονται σε τρεις τύπους, ανάλογα με τη χρωστική που περιέχουν: S-cones (μπλε), M-cones (πράσινοι) και L-cones (κόκκινοι).

Δεδομένου ότι έχουμε πολύ περισσότερες ράβδους (φωτεινότητα) από κώνους (χρώμα), μπορούμε να συμπεράνουμε ότι είμαστε πιο ικανοί να διακρίνουμε τις μεταβάσεις μεταξύ σκούρου και ανοιχτού από τα χρώματα.

Πώς λειτουργεί ένας κωδικοποιητής βίντεο; Μέρος 1: Βασικά

Χαρακτηριστικά ευαισθησίας αντίθεσης

Ερευνητές στην πειραματική ψυχολογία και σε πολλούς άλλους τομείς έχουν αναπτύξει πολλές θεωρίες για την ανθρώπινη όραση. Και ένας από αυτούς ονομάζεται λειτουργίες ευαισθησίας αντίθεσης. Σχετίζονται με τον χωρικό και χρονικό φωτισμό. Εν ολίγοις, πρόκειται για το πόσες αλλαγές απαιτούνται πριν τις παρατηρήσει ένας παρατηρητής. Σημειώστε τον πληθυντικό της λέξης "συνάρτηση". Αυτό οφείλεται στο γεγονός ότι μπορούμε να μετρήσουμε τις λειτουργίες ευαισθησίας αντίθεσης όχι μόνο για ασπρόμαυρες εικόνες, αλλά και για έγχρωμες. Τα αποτελέσματα αυτών των πειραμάτων δείχνουν ότι στις περισσότερες περιπτώσεις τα μάτια μας είναι πιο ευαίσθητα στη φωτεινότητα παρά στο χρώμα.

Επειδή γνωρίζουμε ότι είμαστε πιο ευαίσθητοι στη φωτεινότητα της εικόνας, μπορούμε να προσπαθήσουμε να χρησιμοποιήσουμε αυτό το γεγονός.

Έγχρωμο μοντέλο

Καταλάβαμε λίγο πώς να εργαστούμε με έγχρωμες εικόνες χρησιμοποιώντας το σχήμα RGB. Υπάρχουν και άλλα μοντέλα. Υπάρχει ένα μοντέλο που διαχωρίζει τη φωτεινότητα από το χρώμα και είναι γνωστό ως YCbCr. Παρεμπιπτόντως, υπάρχουν και άλλα μοντέλα που κάνουν παρόμοια διαίρεση, αλλά θα εξετάσουμε μόνο αυτό.

Σε αυτό το χρωματικό μοντέλο Y είναι μια αναπαράσταση της φωτεινότητας και χρησιμοποιεί επίσης δύο κανάλια χρώματος: Cb (πλούσιο μπλε) και Cr (πλούσιο κόκκινο). Το YCbCr μπορεί να προέρχεται από το RGB και η αντίστροφη μετατροπή είναι επίσης δυνατή. Χρησιμοποιώντας αυτό το μοντέλο μπορούμε να δημιουργήσουμε έγχρωμες εικόνες όπως βλέπουμε παρακάτω:

Πώς λειτουργεί ένας κωδικοποιητής βίντεο; Μέρος 1: Βασικά

Μετατροπή μεταξύ YCbCr και RGB

Κάποιος θα αντιταχθεί: πώς είναι δυνατόν να ληφθούν όλα τα χρώματα αν δεν χρησιμοποιείται πράσινο;

Για να απαντήσουμε σε αυτήν την ερώτηση, ας μετατρέψουμε το RGB σε YCbCr. Ας χρησιμοποιήσουμε τους συντελεστές που υιοθετήθηκαν στο πρότυπο BT.601, το οποίο συνέστησε η μονάδα ITU-R. Αυτό το τμήμα θέτει τα πρότυπα για το ψηφιακό βίντεο. Για παράδειγμα: τι είναι το 4K; Ποιος πρέπει να είναι ο ρυθμός καρέ, η ανάλυση, το χρωματικό μοντέλο;

Πρώτα ας υπολογίσουμε τη φωτεινότητα. Ας χρησιμοποιήσουμε τις σταθερές που προτείνει η ITU και ας αντικαταστήσουμε τις τιμές RGB.

Y = 0.299R + 0.587G + 0.114B

Αφού έχουμε τη φωτεινότητα, θα διαχωρίσουμε το μπλε και το κόκκινο χρώμα:

Cb = 0.564(B - Y)

Cr = 0.713(R - Y)

Και μπορούμε επίσης να μετατρέψουμε ξανά και ακόμη και να γίνουμε πράσινοι χρησιμοποιώντας το YCbCr:

R = Y + 1.402Cr

B = Y + 1.772Cb

G = Y - 0.344Cb - 0.714Cr

Συνήθως, οι οθόνες (οθόνες, τηλεοράσεις, οθόνες κ.λπ.) χρησιμοποιούν μόνο το μοντέλο RGB. Αλλά αυτό το μοντέλο μπορεί να οργανωθεί με διάφορους τρόπους:

Πώς λειτουργεί ένας κωδικοποιητής βίντεο; Μέρος 1: Βασικά

Έγχρωμη υποδειγματοληψία

Με μια εικόνα που αναπαρίσταται ως συνδυασμός φωτεινότητας και χρωματισμού, μπορούμε να εκμεταλλευτούμε τη μεγαλύτερη ευαισθησία του ανθρώπινου οπτικού συστήματος στη φωτεινότητα παρά στον χρωματισμό αφαιρώντας επιλεκτικά πληροφορίες. Η υποδειγματοληψία χρωμάτων είναι μια μέθοδος κωδικοποίησης εικόνων με χρήση μικρότερης ανάλυσης για το χρώμα παρά για τη φωτεινότητα.

Πώς λειτουργεί ένας κωδικοποιητής βίντεο; Μέρος 1: Βασικά

Πόσο επιτρέπεται να μειωθεί η χρωματική ανάλυση;! Αποδεικνύεται ότι υπάρχουν ήδη κάποια διαγράμματα που περιγράφουν τον τρόπο χειρισμού της ανάλυσης και της συγχώνευσης (Χρώμα που προκύπτει = Y + Cb + Cr).

Αυτά τα σχήματα είναι γνωστά ως συστήματα υποδειγματοληψίας και εκφράζονται ως 3πλάσια αναλογία - a:x:y, το οποίο καθορίζει τον αριθμό των δειγμάτων σημάτων φωτεινότητας και διαφοράς χρώματος.

a — πρότυπο οριζόντιας δειγματοληψίας (συνήθως ίσο με 4)
x — αριθμός δειγμάτων χρώματος στην πρώτη σειρά pixel (οριζόντια ανάλυση σε σχέση με a)
y — τον αριθμό των αλλαγών στα δείγματα χρώματος μεταξύ της πρώτης και της δεύτερης σειράς εικονοστοιχείων.

Η εξαίρεση είναι 4:1:0, παρέχοντας ένα δείγμα χρώματος σε κάθε μπλοκ ανάλυσης φωτεινότητας 4 επί 4.

Κοινά σχήματα που χρησιμοποιούνται σε σύγχρονους κωδικοποιητές:

  • 4:4:4 (χωρίς μείωση δειγματοληψίας)
  • 4:2:2
  • 4:1:1
  • 4:2:0
  • 4:1:0
  • 3:1:1

YCbCr 4:2:0 - παράδειγμα σύντηξης

Εδώ είναι μια συγχωνευμένη εικόνα χρησιμοποιώντας YCbCr 4:2:0. Σημειώστε ότι ξοδεύουμε μόνο 12 bit ανά pixel.

Πώς λειτουργεί ένας κωδικοποιητής βίντεο; Μέρος 1: Βασικά

Έτσι μοιάζει η ίδια εικόνα, κωδικοποιημένη με τους κύριους τύπους υποδειγματοληψίας χρωμάτων. Η πρώτη σειρά είναι η τελική YCbCr, η κάτω σειρά δείχνει την ανάλυση χρώματος. Πολύ αξιοπρεπή αποτελέσματα, λαμβάνοντας υπόψη τη μικρή απώλεια ποιότητας.

Πώς λειτουργεί ένας κωδικοποιητής βίντεο; Μέρος 1: Βασικά

Θυμάστε όταν μετρήσαμε 278 GB αποθηκευτικού χώρου για να αποθηκεύσουμε ένα αρχείο βίντεο διάρκειας μιας ώρας σε ανάλυση 720p και 30 καρέ ανά δευτερόλεπτο; Εάν χρησιμοποιήσουμε YCbCr 4:2:0, τότε αυτό το μέγεθος θα μειωθεί στο μισό - 139 GB. Μέχρι στιγμής, απέχει ακόμη από ένα αποδεκτό αποτέλεσμα.

Μπορείτε να λάβετε μόνοι σας το ιστόγραμμα YCbCr χρησιμοποιώντας το FFmpeg. Σε αυτήν την εικόνα, το μπλε κυριαρχεί έναντι του κόκκινου, το οποίο είναι καθαρά ορατό στο ίδιο το ιστόγραμμα.

Πώς λειτουργεί ένας κωδικοποιητής βίντεο; Μέρος 1: Βασικά

Χρώμα, φωτεινότητα, χρωματική γκάμα - κριτική βίντεο

Σας προτείνουμε να παρακολουθήσετε αυτό το εκπληκτικό βίντεο. Εξηγεί τι είναι φωτεινότητα και γενικά όλες οι κουκκίδες είναι διακεκομμένες ё σχετικά με τη φωτεινότητα και το χρώμα.

Τύποι πλαισίων

Ας προχωρήσουμε. Ας προσπαθήσουμε να εξαλείψουμε τον πλεονασμό χρόνου. Αλλά πρώτα, ας ορίσουμε κάποια βασική ορολογία. Ας πούμε ότι έχουμε μια ταινία με 30 καρέ ανά δευτερόλεπτο, εδώ είναι τα πρώτα 4 καρέ της:

Πώς λειτουργεί ένας κωδικοποιητής βίντεο; Μέρος 1: Βασικά Πώς λειτουργεί ένας κωδικοποιητής βίντεο; Μέρος 1: Βασικά Πώς λειτουργεί ένας κωδικοποιητής βίντεο; Μέρος 1: Βασικά Πώς λειτουργεί ένας κωδικοποιητής βίντεο; Μέρος 1: Βασικά

Μπορούμε να δούμε πολλές επαναλήψεις στα καρέ: για παράδειγμα, ένα μπλε φόντο που δεν αλλάζει από καρέ σε καρέ. Για να λύσουμε αυτό το πρόβλημα, μπορούμε να τα ταξινομήσουμε αφηρημένα σε τρεις τύπους πλαισίων.

I-frame (Intro Πλαίσιο)

Το I-frame (πλαίσιο αναφοράς, πλαίσιο κλειδιού, εσωτερικό πλαίσιο) είναι αυτόνομο. Ανεξάρτητα από το τι θέλετε να οπτικοποιήσετε, ένα I-frame είναι ουσιαστικά μια στατική φωτογραφία. Το πρώτο καρέ είναι συνήθως ένα I-frame, αλλά θα παρατηρούμε τακτικά I-frames ακόμα και μεταξύ των όχι των πρώτων καρέ.

Πώς λειτουργεί ένας κωδικοποιητής βίντεο; Μέρος 1: Βασικά

πλαίσιο P (Pανανεωμένο πλαίσιο)

Το P-frame (προγνωστικό πλαίσιο) εκμεταλλεύεται το γεγονός ότι σχεδόν πάντα η τρέχουσα εικόνα μπορεί να αναπαραχθεί χρησιμοποιώντας το προηγούμενο καρέ. Για παράδειγμα, στο δεύτερο καρέ η μόνη αλλαγή είναι η κίνηση της μπάλας προς τα εμπρός. Μπορούμε να πάρουμε το πλαίσιο 2 απλώς τροποποιώντας ελαφρώς το πλαίσιο 1, χρησιμοποιώντας μόνο τη διαφορά μεταξύ αυτών των πλαισίων. Για την κατασκευή του πλαισίου 2, αναφερόμαστε στο προηγούμενο πλαίσιο 1.

Πώς λειτουργεί ένας κωδικοποιητής βίντεο; Μέρος 1: ΒασικάΠώς λειτουργεί ένας κωδικοποιητής βίντεο; Μέρος 1: Βασικά

Β-πλαίσιο (Bi-predictive Frame)

Τι γίνεται με συνδέσμους όχι μόνο σε προηγούμενα, αλλά και σε μελλοντικά πλαίσια για να παρέχουν ακόμα καλύτερη συμπίεση;! Αυτό είναι βασικά ένα πλαίσιο B (αμφίδρομο πλαίσιο).

Πώς λειτουργεί ένας κωδικοποιητής βίντεο; Μέρος 1: ΒασικάΠώς λειτουργεί ένας κωδικοποιητής βίντεο; Μέρος 1: ΒασικάΠώς λειτουργεί ένας κωδικοποιητής βίντεο; Μέρος 1: Βασικά

Ενδιάμεση απόσυρση

Αυτοί οι τύποι πλαισίων χρησιμοποιούνται για να παρέχουν την καλύτερη δυνατή συμπίεση. Θα δούμε πώς συμβαίνει αυτό στην επόμενη ενότητα. Προς το παρόν, ας σημειώσουμε ότι το πιο «ακριβό» όσον αφορά τη μνήμη που καταναλώνεται είναι το I-frame, το P-frame είναι αισθητά φθηνότερο, αλλά η πιο κερδοφόρα επιλογή για βίντεο είναι το B-frame.

Πώς λειτουργεί ένας κωδικοποιητής βίντεο; Μέρος 1: Βασικά

Χρονικός πλεονασμός (πρόβλεψη μεταξύ πλαισίων)

Ας δούμε ποιες επιλογές έχουμε για να ελαχιστοποιήσουμε την επανάληψη με την πάροδο του χρόνου. Μπορούμε να λύσουμε αυτόν τον τύπο πλεονασμού χρησιμοποιώντας μεθόδους διασταυρούμενης πρόβλεψης.

Θα προσπαθήσουμε να ξοδέψουμε όσο το δυνατόν λιγότερα bit για να κωδικοποιήσουμε μια ακολουθία πλαισίων 0 και 1.

Πώς λειτουργεί ένας κωδικοποιητής βίντεο; Μέρος 1: Βασικά

Μπορούμε να παράγουμε αφαίρεση, απλώς αφαιρούμε το πλαίσιο 1 από το πλαίσιο 0. Παίρνουμε το πλαίσιο 1, χρησιμοποιούμε μόνο τη διαφορά μεταξύ αυτού και του προηγούμενου πλαισίου, στην πραγματικότητα κωδικοποιούμε μόνο το υπόλοιπο που προκύπτει.

Πώς λειτουργεί ένας κωδικοποιητής βίντεο; Μέρος 1: Βασικά

Τι θα γινόταν όμως αν σας έλεγα ότι υπάρχει μια ακόμη καλύτερη μέθοδος που χρησιμοποιεί ακόμη λιγότερα bits;! Αρχικά, ας σπάσουμε το πλαίσιο 0 σε ένα καθαρό πλέγμα που αποτελείται από μπλοκ. Και μετά θα προσπαθήσουμε να ταιριάξουμε τα μπλοκ από το πλαίσιο 0 με το πλαίσιο 1. Με άλλα λόγια, θα εκτιμήσουμε την κίνηση μεταξύ των πλαισίων.

Από τη Βικιπαίδεια - αντιστάθμιση κίνησης μπλοκ

Η αντιστάθμιση κίνησης μπλοκ διαιρεί το τρέχον πλαίσιο σε μη επικαλυπτόμενα μπλοκ και το διάνυσμα αντιστάθμισης κίνησης αναφέρει την προέλευση των μπλοκ (μια κοινή εσφαλμένη αντίληψη είναι ότι προηγούμενο το πλαίσιο χωρίζεται σε μη επικαλυπτόμενα μπλοκ και τα διανύσματα αντιστάθμισης κίνησης λένε πού πηγαίνουν αυτά τα μπλοκ. Αλλά στην πραγματικότητα, είναι το αντίστροφο - δεν αναλύεται το προηγούμενο πλαίσιο, αλλά το επόμενο· δεν είναι σαφές πού κινούνται τα μπλοκ, αλλά από πού προέρχονται). Συνήθως τα μπλοκ πηγής επικαλύπτονται στο πλαίσιο προέλευσης. Ορισμένοι αλγόριθμοι συμπίεσης βίντεο συναρμολογούν το τρέχον πλαίσιο από μέρη ούτε καν ενός, αλλά πολλών καρέ που είχαν μεταδοθεί προηγουμένως.

Πώς λειτουργεί ένας κωδικοποιητής βίντεο; Μέρος 1: Βασικά

Κατά τη διαδικασία αξιολόγησης, βλέπουμε ότι η μπάλα έχει μετακινηθεί από (x= 0, y=25) έως (x= 6, y=26), τιμές x и y προσδιορίστε το διάνυσμα κίνησης. Ένα άλλο βήμα που μπορούμε να κάνουμε για να διατηρήσουμε τα bit είναι να κωδικοποιήσουμε μόνο τη διαφορά των διανυσμάτων κίνησης μεταξύ της τελευταίας θέσης μπλοκ και της προβλεπόμενης θέσης, οπότε το τελικό διάνυσμα κίνησης θα είναι (x=6-0=6, y=26-25=1 ).

Σε μια πραγματική κατάσταση, αυτή η μπάλα θα χωριζόταν σε n μπλοκ, αλλά αυτό δεν αλλάζει την ουσία του θέματος.

Τα αντικείμενα στο πλαίσιο κινούνται σε τρεις διαστάσεις, οπότε όταν η μπάλα κινείται, μπορεί να γίνει οπτικά μικρότερη (ή μεγαλύτερη αν κινείται προς τον θεατή). Είναι φυσιολογικό ότι δεν θα υπάρχει τέλεια αντιστοιχία μεταξύ των μπλοκ. Εδώ είναι μια συνδυασμένη άποψη της εκτίμησής μας και της πραγματικής εικόνας.

Πώς λειτουργεί ένας κωδικοποιητής βίντεο; Μέρος 1: Βασικά

Αλλά βλέπουμε ότι όταν χρησιμοποιούμε εκτίμηση κίνησης, υπάρχουν αισθητά λιγότερα δεδομένα για κωδικοποίηση από ό,τι όταν χρησιμοποιούμε μια απλούστερη μέθοδο υπολογισμού του δέλτα μεταξύ των πλαισίων.

Πώς λειτουργεί ένας κωδικοποιητής βίντεο; Μέρος 1: Βασικά

Πώς θα ήταν η πραγματική αντιστάθμιση κίνησης

Αυτή η τεχνική εφαρμόζεται σε όλα τα μπλοκ ταυτόχρονα. Συχνά η υπό όρους κινούμενη μπάλα μας χωρίζεται σε πολλά μπλοκ ταυτόχρονα.

Πώς λειτουργεί ένας κωδικοποιητής βίντεο; Μέρος 1: Βασικά

Μπορείτε να πάρετε μια αίσθηση για αυτές τις έννοιες μόνοι σας χρησιμοποιώντας jupyter.

Για να δείτε διανύσματα κίνησης, μπορείτε να δημιουργήσετε ένα εξωτερικό βίντεο πρόβλεψης χρησιμοποιώντας ffmpeg.

Πώς λειτουργεί ένας κωδικοποιητής βίντεο; Μέρος 1: Βασικά

Μπορείτε επίσης να χρησιμοποιήσετε Intel Video Pro Analyzer (Είναι επί πληρωμή, αλλά υπάρχει μια δωρεάν δοκιμή που περιορίζεται μόνο στα πρώτα δέκα καρέ).

Πώς λειτουργεί ένας κωδικοποιητής βίντεο; Μέρος 1: Βασικά

Χωρικός πλεονασμός (εσωτερική πρόβλεψη)

Αν αναλύσουμε κάθε καρέ σε ένα βίντεο, θα βρούμε πολλές αλληλένδετες περιοχές.

Πώς λειτουργεί ένας κωδικοποιητής βίντεο; Μέρος 1: Βασικά

Ας περάσουμε από αυτό το παράδειγμα. Αυτή η σκηνή αποτελείται κυρίως από μπλε και λευκά χρώματα.

Πώς λειτουργεί ένας κωδικοποιητής βίντεο; Μέρος 1: Βασικά

Αυτό είναι ένα πλαίσιο I. Δεν μπορούμε να πάρουμε προηγούμενα πλαίσια για πρόβλεψη, αλλά μπορούμε να τα συμπιέσουμε. Ας κωδικοποιήσουμε την επιλογή του κόκκινου μπλοκ. Αν κοιτάξουμε τους γείτονές του, παρατηρούμε ότι υπάρχουν κάποιες χρωματικές τάσεις γύρω του.

Πώς λειτουργεί ένας κωδικοποιητής βίντεο; Μέρος 1: Βασικά

Υποθέτουμε ότι τα χρώματα απλώνονται κάθετα στο πλαίσιο. Που σημαίνει ότι το χρώμα των άγνωστων pixel θα περιέχει τις τιμές των γειτόνων του.

Πώς λειτουργεί ένας κωδικοποιητής βίντεο; Μέρος 1: Βασικά

Μια τέτοια πρόβλεψη μπορεί να αποδειχθεί λανθασμένη. Αυτός είναι ο λόγος που πρέπει να εφαρμόσετε αυτήν τη μέθοδο (εσωτερική πρόβλεψη) και στη συνέχεια να αφαιρέσετε τις πραγματικές τιμές. Αυτό θα μας δώσει ένα υπολειπόμενο μπλοκ, το οποίο θα έχει ως αποτέλεσμα μια πολύ πιο συμπιεσμένη μήτρα σε σύγκριση με την αρχική.

Πώς λειτουργεί ένας κωδικοποιητής βίντεο; Μέρος 1: Βασικά

Εάν θέλετε να εξασκηθείτε με εσωτερικές προβλέψεις, μπορείτε να δημιουργήσετε ένα βίντεο με μακρομπλόκ και τις προβλέψεις τους χρησιμοποιώντας το ffmpeg. Για να κατανοήσετε τη σημασία κάθε χρώματος μπλοκ, θα πρέπει να διαβάσετε την τεκμηρίωση του ffmpeg.

Πώς λειτουργεί ένας κωδικοποιητής βίντεο; Μέρος 1: Βασικά

Ή μπορείτε να χρησιμοποιήσετε το Intel Video Pro Analyzer (όπως ανέφερα παραπάνω, η δωρεάν δοκιμαστική έκδοση περιορίζεται στα πρώτα 10 καρέ, αλλά αυτό θα είναι αρκετό για εσάς στην αρχή).

Πώς λειτουργεί ένας κωδικοποιητής βίντεο; Μέρος 1: Βασικά

Το δεύτερο μέρος: Πώς λειτουργεί ο κωδικοποιητής βίντεο

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο