Δίκτυα Υπολογιστών Κεφάλαιο 20 – Πρωτόκολλα πραγματικού χρόνου: Τεχνικές συμπίεσης αρχείων- Σύγκριση TCP και UDP
Δημοσιεύτηκε από τον/την codebrakes στις
Δίκτυα Υπολογιστών
Κεφάλαιο 20 - Πρωτόκολλα πραγματικού χρόνου: Τεχνικές συμπίεσης αρχείων
Συμπίεση ήχου και video
Για να σταλθεί ήχος ή video πάνω στο διαδίκτυο απαιτείται αυτά να συμπιεστούν. Η συμπίεση ήχου μπορεί να χρησιμοποιηθεί για μετάδοση φωνής ή μουσικής. Υπάρχουν δύο τεχνικές που χρησιμοποιούνται για συμπίεση ήχου: η πρώτη είναι η αναμενόμενη κωδικοποίηση (predictive encoding) και η δεύτερη είναι η αντιληπτή κωδικοποίηση (perceptual encoding).
- Στην αναμενόμενη κωδικοποίηση (predictive encoding) κωδικοποιούνται μόνο οι διαφορές μεταξύ των δειγμάτων αντί για όλες τις τιμές δειγμάτων. Αυτός ο τύπος συμπίεσης χρησιμοποιείται για φωνή στο διαδίκτυο. Υπάρχουν μερικά πρότυπα που έχουν οριστεί όπως το GSM (13 kbps), G.729 (8 kbps) και G.723.3 (6.4 ή 5.3 kbps).
- Η αντιληπτή κωδικοποίηση (perceptual encoding) είναι η πιο συνήθης τεχνική συμπίεσης για να δημιουργήσουμε ήχο σε ποιότητα CD. Η τεχνική αυτή βασίζεται στην επιστήμη της ψυχοακουστικής, δηλαδή στο πως το ανθρώπινο αυτί λαμβάνει τους ήχους γύρω του. Υπάρχουν δύο φαινόμενα όταν ακούμε δύο ηχητικές συχνότητες. Η πρώτη λέγεται επικάλυψη συχνότητας (frequency masking) όπου μια υψηλότερη συχνότητα επικαλύπτει μια χαμηλότερη και η προσωρινή επικάλυψη (temporary masking) όπου ένας ήχος «μουδιάζει» το αυτί μας για ένα μικρό χρονικό διάστημα (ακόμη κι αν έχει σταματήσει αυτή η ηχητική συχνότητα). Οι δύο αυτές τεχνικές χρησιμοποιούνται στο πρότυπο συμπίεσης ήχου MP3.
Η συμπίεση video αποτελείται από πολλαπλά frames, όπου κάθε frame είναι μια εικόνα. Μπορούμε να συμπιέσουμε ένα video, συμπιέζοντας πρώτα τις εικόνες. Υπάρχουν δύο πρότυπα συμπίεσης, τα οποία είναι τα εξής:
- Joint Photographic Experts Group – JPEG: Το οποίο χρησιμοποιείται για να συμπιέσουμε φωτογραφίες.
- Moving Picture Experts Group – MPEG: Το οποίο χρησιμοποιείται για συμπίεση video.
Συμπίεση εικόνας – JPEG
Σε μια εικόνα η οποία είναι σε ασπρόμαυρες αποχρώσεις (gray scale), κάθε της pixel μπορεί να αναπαρασταθεί ως ένας 8-bit ακέραιος. Αν μια εικόνα είναι έγχρωμη, κάθε pixel μπορεί να αναπαρασταθεί σε 24 bits (3 * 8 bits), οπού κάθε 8 bits αναπαριστά το κόκκινο (red), πράσινο (green) και μπλε (blue), R.G.B. Για να γίνει πιο απλό ας πάρουμε για παράδειγμα μια ασπρόμαυρη εικόνα (gray scale). Στο πρότυπο JPEG μια ασπρόμαυρη εικόνα χωρίζεται σε blocks των 8 * 8 pixels όπως δείχνει η παρακάτω εικόνα.
Μετασχηματισμός Διακριτού Συνημίτονου (Discrete Cosine Transform – DCT): Στην εικόνα που είδαμε παραπάνω, στο DCT κάθε block των 64 pixel περνάει από έναν μετασχηματισμό που καλείται μετασχηματισμός διακριτού συνημίτονου – DCT. Ας δούμε τρεις περιπτώσεις εικόνων για να δούμε πως λειτουργεί ο μετασχηματισμός DCT.
- Η πρώτη περίπτωση αφορά μια εικόνα η οποία έχει μόνο γκρι χρώμα.
- Η δεύτερη περίπτωση αφορά μια εικόνα που έχει δύο γκρι αποχρώσεις.
- Και η τρίτη περίπτωση αφορά μια εικόνα με διαβαθμιζόμενο (gradient) γκρι.
Στην πρώτη περίπτωση έχουμε ένα block ομοιόμορφου γκρι χρώματος και η τιμή κάθε pixel είναι 20. Όταν εφαρμόσουμε τους μετασχηματισμούς προκύπτει μια μη μηδενική τιμή για το πρώτο στοιχείο (που βρίσκεται στην πάνω αριστερή γωνία). Τα υπόλοιπα pixels έχουν την τιμή μηδέν. Η τιμή 160 (στο παράδειγμα μας) αποτελεί την μέση τιμή του αθροίσματος όλων των pixels (πολλαπλασιαζόμενων με μια σταθερά που στην περίπτωση μας είναι το 8).
Στην δεύτερη περίπτωση έχουμε ένα block με δύο διαφορετικές γκρι αποχρώσεις. Όπως βλέπουμε σε σχέση με την πρώτη περίπτωση παρατηρούμε μεγάλες αλλαγές στις τιμές των pixles (από το 20 έως το 50). Όταν εφαρμόζουμε μετασχηματισμό παίρνουμε μια dc τιμή όπως και μη μηδενικές ac τιμές (στο παράδειγμα μας η dc τιμή είναι η 280 και οι υπόλοιπες μη μηδενικές τιμές είναι οι ac τιμές). Παρόλα αυτά υπάρχουν μόνο μερικές μη μηδενικές τιμές οι οποίες έχουν μαζευτεί γύρω από την τιμή dc. Οι περισσότερες τιμές είναι μηδέν όπως παρατηρούμε και στην παρακάτω εικόνα.
Στην τρίτη περίπτωση, έχουμε ένα block που η απόχρωση του μεταβάλλεται σταδιακά. Δεν υπάρχει δηλαδή μεγάλη αλλαγή ανάμεσα στις τιμές των γειτονικών pixels. Όταν εφαρμόζουμε μετασχηματισμούς, παίρνουμε μια dc τιμή, μαζί με πολλές μη μηδενικές ac τιμές. Από αυτά μπορούμε να συμπεράνουμε τα εξής:
- Ο μετασχηματισμός δημιουργεί έναν πίνακα T από τον πίνακα P.
- Η dc τιμή έχει μια μέση τιμή (η οποία πολλαπλασιάζεται από μια σταθερά) των pixels.
- Οι τιμές ac είναι οι αλλαγές.
- Η έλλειψη αλλαγών στα γειτονικά Pixels δημιουργεί μηδενικές τιμές.
Συμπίεση Video: MPEG
Το πρότυπο MPEG (Moving Picture Experts Group) χρησιμοποιείται για συμπίεση video. Σε αυτήν την αρχή, μια κινούμενη εικόνα είναι μια γρήγορη ροή συνόλων από frames, όπου κάθε frame είναι μια εικόνα. Με απλά λόγια, ένα frame είναι ένας ξεχωριστός συνδυασμός από pixels και ένα video είναι ένας προσωρινός συνδυασμός από frames που στέλνονται το ένα μετά το άλλο. Οπότε λοιπόν όταν συμπιέζουμε ένα video στην ουσία συμπιέζουμε ένα group από frames αυτού του video. Στο πρότυπο MPEG υπάρχουν τρείς κατηγορίες για συμπίεση των frames:
- I-Frames: Είναι ένα ανεξάρτητο frame το οποίο δεν σχετίζεται με τα προηγούμενα frames, δηλαδή ούτε με το προηγούμενο ούτε με το επόμενο από αυτό. Εμφανίζονται περιοδικά (δηλαδή στο παράδειγμα της προηγούμενης διαφάνειας κάθε 7ο frame είναι ένα I-Frame), για να διαχειριστεί κάποια απότομη αλλαγή στο frame την οποία το προηγούμενο ή το επόμενο frame δεν μπορεί να δείξει. Όταν μεταδίδεται ένα video ο χρήστης που το παρακολουθεί μπορεί να συντονιστεί σε οποιοδήποτε σημείο. Εάν υπάρχει μόνο ένα I-Frame στην αρχή της μετάδοσης ο θεατής ο οποίος θα συντονιστεί αργότερα δεν μπορεί να λάβει μια ολοκληρωμένη εικόνα Τα Ι-Frames είναι ανεξάρτητα από τα άλλα frames και δεν μπορούν να δομηθούν από άλλα frames.
- P-Frames: Ένα P-Frame (Predictive frame) σχετίζεται με το προηγούμενο από αυτό I-Frame ή P-Frame. Με απλά λόγια κάθε P-Frame περιέχει μόνο τις αλλαγές που έγιναν από το προηγούμενο frame. Οι αλλαγές όμως δεν μπορούν να καλύψουν ένα μεγάλο τμήμα. Για παράδειγμα σε ένα αντικείμενο που κινείται γρήγορα οι αλλαγές που έγιναν μπορεί να μην καταγραφούν στο P-Frame. Τα P-Frames μπορούν αν δομηθούν μόνο από προηγούμενα I-Frame ή P-Frame. Τα P-Frame περιέχουν λιγότερη πληροφορία από άλλα είδη frames και επίσης λιγότερα bits αφού υποστούν συμπίεση δεδομένων.
- B-Frames: Ένα B-Frame (Bidirectional frame) σχετίζεται και με το προηγούμενο αλλά και με το επόμενο Ι-Frame ή B-Frame. Με απλά λόγια κάθε B-Frame σχετίζεται και με το παρελθόν και με το μέλλον όσον αφορά την λήψη δεδομένων. Ιδιαίτερα σημαντικό είναι το γεγονός, ότι ένα B-Frame δεν μπορεί να συσχετιστεί με ένα άλλο B-Frame.
Τελευταία ενημέρωση: 22/02/2017