http://www.spinellis.gr/pubs/trade/1993-Winmag/fastwin4/html/win4.html This is an HTML rendering of a working paper draft that led to a publication. The publication should always be cited in preference to this draft using the following reference:
|
Στα προηγούμενα άρθρα της σειράς εξετάσαμε τους μηχανισμούς ένθεσης κινούμενης εικόνας σε συνδυασμό με τη Screen Machine στο περιβάλλον των Windows. Οι σταθερές γραφικές εικόνες αποτελούν βασικό τμήμα των εφαρμογών multimedia. Καταλαμβάνουν λίγο σχετικά χώρο αλλά προσθέτουν ρεαλισμό και ζωντάνια στην εφαρμογή. Στο άρθρο αυτό θα εξετάσουμε τους μηχανισμούς αποθήκευσης, παρουσίασης και μετατροπής σταθερών εικόνων.
Σχήμα
1. Χώρος που καταλαμβάνει
μια εικόνα
320 x 200 με παλέτα
256 χρωμάτων.
Εικόνα
1. Παράσταση
με 256 τόνους
του γκρι.
Εικόνα
2. Παράσταση
ασπρόμαυρη
(dithering με αλγόριθμο
Flyod-Steinberg).
Εκτός από τις τεχνικές που αναφέρθηκαν παραπάνω, τα τελευταία
χρόνια χρησιμοποιείται όλο και περισσότερο η συμπίεση αρχείων
σύμφωνα με το πρότυπο JPEG.
Το πρότυπο αυτό αναπτύχθηκε
από το Joint Photographic Expert Goup με σκοπό τη δημιουργία
προτύπου για υψηλής απόδοσης συμπίεση φυσικών εικόνων.
Έχει ήδη
υιοθετηθεί από τους οργανισμούς τυποποίησης ISO και CCITT.
Η συμπίεση JPEG βασίζεται στη φυσιολογία της όρασης, έτσι ώστε να
μην αποθηκεύονται χαρακτηριστικά της εικόνας που δεν είναι ορατά
στο ανθρώπινο οπτικό σύστημα.
Γι' αυτό το λόγο η συμπίεση JPEG
συνεπάγεται συνήθως απώλειες (lossy), δηλαδή μια εικόνα που θα
περάσει από τη διαδικασία συμπίεσης και αποσυμπίεσης δε θα είναι
κατά ψηφιολέξη ίδια με την πρωτότυπη.
Παρ' όλα αυτά σε μέτριες συμπιέσεις ένας άνθρωπος δε μπορεί να διακρίνει
διαφορές.
Μπορεί κανείς να επιλέξει το
βαθμό συμπίεσης με ανάλογη επίδραση στην ποιότητα της εικόνας.
Έτσι συνήθως συμπίεση μέχρι και 8 φορές (δηλαδή αρχείο 900Kb να
γίνει 112 Kb) δεν έχει ορατή επίδραση στην ποιότητα, ενώ μπορεί
κανείς να επιλέξει συμπίεση μέχρι και 50 φορών, με κάποιες βέβαια
παραχωρήσεις στην ποιότητα.
Στις εικόνες 3-5 βλέπουμε μια εικόνα σε ανάλυση 320 x 200
συμπιεσμένη κατά 6, 12 και 14 φορές έτσι ώστε από 160Kb να καταλαμβάνει
26, 12 και 11 Kb αντίστοιχα.
Εικόνα
3. Συμπίεση
6 φορές με JPEG (από
160Kb σε 26Kb).
Εικόνα
4. Συμπίεση
12 φορές με JPEG (από
160Kb σε 12Kb).
Εικόνα
5. Συμπίεση
14 φορές με JPEG (από
160Kb σε 11Kb).
Στην ασπρόμαυρη εκτύπωση η ασυμπίεστη εικόνα δεν έχει ορατές διαφορές
από αυτή που έχει συμπιεστεί 6 φορές.
Παρατηρούμε την εντυπωσιακή συμπίεση των 6 φορών χωρίς ορατές
απώλειες και ότι σε ακόμα
υψηλότερες συμπιέσεις το κέρδος σε χώρο ελαχιστοποιείται
ενώ η ποιότητα χαλάει αισθητά.
Οι τεχνική συμπίεσης JPEG είναι βασισμένη σε ένα διακριτό συνημιτονοηδή
μετασχηματισμό κομματιών 8x8 ακολουθούμενο από κβαντοποίηση του
αποτελέσματος και κωδικοποίηση Huffman για μείωση της εντροπίας
των δεδομένων.
Στο περιβάλλον ανάπτυξης εφαρμογών της Screen Machine
παρέχονται βιβλιοθήκες για τη συμπίεση JPEG βελτιστοποιημένες
για επεξεργαστές 380 και άνω.
Eτσι μια πλήρης εικόνα μπορεί να
συμπιεστεί μέσα σε τέσσερα δευτερόλεπτα σε έναν υπολογιστή με
επεξεργαστή i386/33MHz.
(C) Copyright 1993-97 Διομήδης Σπινέλλης. Επιτρέπεται η ελεύθερη ανάγνωση από browsers του WWW και παρόμοια προγράμματα. Με την επιφύλαξη κάθε άλλου δικαιώματος.
Μετατροπή χρωμάτων
Οι κάρτες ένθεσης συνήθως υποστηρίζουν πολλά περισσότερα χρώματα
απ' ό,τι οι περισσότερες κάρτες παραστάσεως γραφικών.
Για παράδειγμα, η Screen Machine II υποστηρίζει 16 εκατομμύρια
χρώματα ενώ μια
μέση κάρτα VGA υποστηρίζει 256 ή το πολύ 32.000 χρώματα.
Σε μια εφαρμογή multimedia είναι πολλές φορές απαραίτητο να
χρησιμοποιήσουμε τον υπολογιστή ανεξάρτητα από την κάρτα ένθεσης.
Αυτό δημιουργεί την απαίτηση για μείωση του αριθμού των
χρησιμοποιουμένων χρωμάτων ανάλογα με τον αριθμό που υποστηρίζει ο
υπολογιστής.
Υπάρχουν πολλοί και διαφορετικοί αλγόριθμοι για την
πραγματοποίηση αυτής της μετατροπής.
Οι περισσότερες συσκευές παραστάσεως γραφικών μπορούν να δείξουν
ταυτόχρονα 256 χρώματα επιλέγοντάς τα από μια παλέτα δύο
εκατομμυρίων χρωμάτων.
Έτσι, η βάση για μια σωστή παράσταση της
εικόνας με περιορισμένο αριθμό χρωμάτων είναι η κατάλληλη επιλογή
των χρωμάτων αυτών.
Ο κβαντισμός αυτός των χρωμάτων είναι επίσης
απαραίτητος όταν μετατρέπουμε τα δεδομένα σε έναν τύπο αρχείου που
υποστηρίζει λιγότερα χρώματα.
Οι βασικοί τρόποι κβαντισμού των χρωμάτων είναι οι εξής:
Παραγωγή χρωμάτων με σύνθεση (dithering)
Η σύνθεση των χρωμάτων για την παραγωγή νέων χρωμάτων είναι
ανεξάρτητη από τον κβαντισμό και μπορεί να χρησιμοποιηθεί
ξεχωριστά από αυτόν.
Με τη μέθοδο αυτή κουκκίδες διαφορετικών χρωμάτων
τοποθετούνται μαζί, έτσι ώστε να δημιουργήσουν την ψευδαίσθηση
ενός άλλου χρώματος.
Το βασικό πρόβλημα αυτής της μεθόδου είναι η
ταξινόμηση των λαθών που δημιουργούνται.
Οι βιβλιοθήκες της
Screen Machine υποστηρίζουν την σύνθεση των χρωμάτων με τον
αλγόριθμο φιλτραρίσματος Floyd-Steinberg.
Ο αλγόριθμος αυτός μεταφέρει τα λάθη της μετατροπής σε γειτονικά
εικονοστοιχεία για την αποφυγή δημιουργίας ενοχλητικών εικονικών ειδώλων
από την κβαντοποίηση.
Στις εικόνες 1 και 2 βλέπουμε την ίδια εικόνα τυπωμένη με 256 τόνους
του γκρίζου (όπως αυτοί βέβαια αναπαράγονται από την τεχνολογία εκτύπωσης
του περιοδικού) και με τη χρήση μόνο άσπρων και μαύρων εικονοστοιχείων
(σε ανάλυση 320 x 200) με τον αλγόριθμο Floyd Steinberg.
Συμπίεση αρχείων
Τα αρχεία που περιέχουν εικόνες καταλαμβάνουν αρκετό χώρο.
Για παράδειγμα ένα αρχείο 640 x 480 με χρώμα 24 δυαδικών ψηφίων
καταλαμβάνει 900Kb.
Για να ελαχιστοποιηθεί ο χώρος που
καταλαμβάνουν θα ήταν επιθυμητό να συμπιεστούν.
Πολλοί από τους
τύπους αρχείων που αναφέραμε παραπάνω καταλαμβάνουν πολύ λιγότερο
χώρο από τον αριθμό που αναφέραμε παραπάνω.
Αυτό επιτυγχάνεται με
διάφορες τεχνικές όπως η φύλαξη μόνο των χρωμάτων που
χρησιμοποιούνται, ή και ενός υποσυνόλου τους, η κωδικοποίηση
σειρών ιδίων ψηφιολέξεων (run length encoding) ή και η
χρησιμοποίηση γενικών αλγορίθμων συμπίεσης όπως ο αλγόριθμος
Lempel-Ziv.
Οι τεχνικές αυτές συμπίεσης υποστηρίζονται από τις
βιβλιοθήκες της Screen Machine όταν γίνεται επεξεργασία για τον
αντίστοιχο τύπο αρχείου.
ΣΥΝΕΧΙΖΟΝΤΑΣ
Στο επόμενο άρθρο της σειράς αυτής θα εξετάσουμε τον έλεγχο
συσκευών multimedia μέσω του οδηγού MCI των
Windows.
Ο οδηγός αυτός παρέχει έναν ομοιόμορφο τρόπο αντιμετώπισης
όλων των συσκευών multimedia και διευκολύνει την
ανάπτυξη και χρήση
λογισμικού συγγραφής τέτοιων εφαρμογών (authoring software).
Καλό καλοκαίρι.