-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathReport_in_Greek.html
More file actions
27 lines (27 loc) · 4.7 KB
/
Copy pathReport_in_Greek.html
File metadata and controls
27 lines (27 loc) · 4.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<html>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<body>
<font size="4">
<p> Ο <i>διακριτός συνημιτονοειδής μετασχηματισμός</i> <b>(Discrete Cosine Transform - DCT)</b>, χρησιμοποιείται ευρέως από απωλεστικούς αλγόριθμους συμπίεσης ήχου
και εικόνας, όπως οι <strong>MP3, JPEG και MPEG</strong>. Με λίγα λόγια, αυτό που επιτυγχάνει είναι να "μαζέψει" τις μεγάλες τιμές σε λίγα συγκεκριμένα σημεία και να
δώσει τη δυνατότητα για αποκοπή κατά την κβαντοποίηση των πολλών χαμηλών τιμών. Για να το πούμε όσο πιο απλά γίνεται, αν χωρίσουμε ένα frame ενός video
στα λεγόμενα <i>macroblocks</i>, (τα οποία όσον αφορά στο πρότυπο MPEG μπορούμε να φανταστούμε ως πίνακες 4x4 από pixels), ο DCT θα "συγκεντρώσει" στη θέση [0,0]
που λέγεται DC το στοιχείο με την "μηδενική συχνότητα" ή αλλιώς: Την μέγιστη "ενέργεια", αφήνοντας πολύ μικρές τιμές στον υπόλοιπο πίνακα.
<p> Το επαναδιατυπώνουμε: Ουσιαστικά, δίνεται η δυνατότητα -σ' έναν επακόλουθο κβαντισμό- να <u>απορρίψουμε</u> <strong>πολλές</strong>
τιμές που <i><b>δεν συμμετέχουν ιδιαίτερα</b></i> στην ίδια την εικόνα. Γι' αυτό, αν τυπώσουμε τις
"ενέργειες" που προκύπτουν μετά την εφαρμογή του DCT (δηλ. <b><u><i>τον μέσο όρο των τιμών για κάθε θέση των macroblocks ενός frame</b></u></i>), βλέπουμε ότι η σαφώς μεγαλύτερη είναι
στη θέση [0,0] (πάνω-αριστερά) και το πολύ να υπάρχει άλλη μία (από τις 16) που <b>δεν είναι</b> εξαιρετικά μικρή! Ο κβαντισμός, μπορεί να απορρίψει (να θεωρήσει πρακτικά μηδενικές)
όσες τιμές είναι <b><i>πολύ μικρότερες</b></i> από την DC. Είναι προφανές το όφελος που προκύπτει σε σχέση με το αρχικό μέγεθος του frame.
Πλέον (μετά τον κβαντισμό) θα έχουμε να κάνουμε με <b>αραιούς πίνακες 4x4</b> που ως γνωστόν αναπαρίστανται πιο ... "οικονομικά".<br>
Λεπτομέρειες εδώ:<br><center><i><a href="https://en.wikipedia.org/wiki/Discrete_cosine_transform#JPEG">https://en.wikipedia.org/wiki/Discrete_cosine_transform#JPEG</a></i>
</center>καθώς και στις σελίδες 50 και 51 του:<center><br><i>Iain E. G. Richardson: <a href="https://goo.gl/qGA23y">"H.264 and MPEG-4 Video Compression"</a>, ISBN 0-470-84837-5</i>
</center>
<p> Ας σημειωθεί ότι υπάρχει ένα typo στη σελίδα 47 του βιβλίου του Richardson. Συγκεκριμένα, λείπει το πρόσημο '-'
από τη θέση (3,3) (C-notation) του πίνακα Α των συντελεστών. Προφανώς ο συντελεστής εκεί είναι '-c'. Επίσης, να πούμε ότι για λόγους
μείωσης του χρονικού κόστους της κωδικοποίησης MPEG, χρησιμοποιούνται στρογγυλεμένοι συντελεστές κατά τον μετασχηματισμό DCT.
<br> Έτσι μειώνεται σημαντικά ο αριθμός των πολλαπλασιασμών που απαιτούνται με αριθμούς κινητής υποδιαστολής. Στον κώδικά μας, το εν λόγω
κομμάτι είναι "commented out", όμως εύκολα μπορούμε να το δοκιμάσουμε βάζοντάς το ανάμεσα σε compiler directives του στυλ:
<i>#ifdef ROUNDED ... #endif</i> ας πούμε και προσθέτοντας το flag <i>-DROUNDED</i> στο Makefile.<br>Θα δούμε τότε πως οι τιμές των <u><i>ενεργειών</u></i>
(aka 'μέσων όρων' - βλ. παραπάνω), δεν αλλάζουν ιδιαίτερα.<br><br></font>
</body>
</html>