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:
  • Diomidis Spinellis. Implementing multimedia applications: File storage and compression methods. Win Magazine, pages 80–83, July 1993. In Greek. Green Open Access

The document's metadata is available in BibTeX format.

Find the publication on Google Scholar

This material is presented to ensure timely dissemination of scholarly and technical work. Copyright and all rights therein are retained by authors or by other copyright holders. All persons copying this information are expected to adhere to the terms and constraints invoked by each author's copyright. In most cases, these works may not be reposted without the explicit permission of the copyright holder.

Diomidis Spinellis Publications

ΥΛΟΠΟΙΗΣΗ ΕΦΑΡΜΟΓΩΝ MULTIMEDIA

Διομήδης Δ. Σπινέλλης
Multimedia Products Technical Support
FAST Hellas S.A.
Εθνικής Αντιστάσεως 14α, 152 32 Χαλάνδρι

Στα προηγούμενα άρθρα της σειράς εξετάσαμε τους μηχανισμούς ένθεσης κινούμενης εικόνας σε συνδυασμό με τη Screen Machine στο περιβάλλον των Windows. Οι σταθερές γραφικές εικόνες αποτελούν βασικό τμήμα των εφαρμογών multimedia. Καταλαμβάνουν λίγο σχετικά χώρο αλλά προσθέτουν ρεαλισμό και ζωντάνια στην εφαρμογή. Στο άρθρο αυτό θα εξετάσουμε τους μηχανισμούς αποθήκευσης, παρουσίασης και μετατροπής σταθερών εικόνων.

Τύποι αρχείων αποθήκευσης

Διαφορετικές εφαρμογές υποστηρίζουν διαφορετικούς τύπους αρχείων αποθήκευσης. Στις επόμενες παραγράφους θα περιγράψουμε συνοπτικά τους τύπους που υποστηρίζονται από την Screen Machine. Η συνάρτηση smipImageConverter υποστηρίζει την ανάγνωση και εγγραφή των τύπων που περιγράφουμε παρακάτω από και προς: τη Screen Machine, ένα γραφικό παράθυρο των Windows ή τον εκτυπωτή.
FLM
Ο τρόπος αποθήκευσης των εικόνων μέσα στη μνήμη της κάρτας ένθεσης είναι άμεσα συνδεδεμένος με τον τρόπο με τον οποίο οι εικόνες κωδικοποιούνται για τηλεοπτική μετάδοση. Στο πρότυπο της έγχρωμης τηλεόρασης - που αποτελεί την κυρίαρχη πηγή εικόνας - η εικόνα μεταδίδεται διαχωρισμένη στα στοιχεία της λαμπρότητας (luminance) και του χρώματος (chrominance). Συγκεκριμένα, η λαμπρότητα μεταδίδεται διαμορφωμένη από τα σήματα του χρώματος. Από τα τρία στοιχεία του χρώματος (κόκκινο, πράσινο, μπλε) μεταδίδονται μόνο τα δύο (κόκκινο και μπλε) και αυτά ως διαφορά από την λαμπρότητα. Δηλαδή αν ονομάσουμε την λαμπρότητα Y και τα τρία άλλα χρώματα R, G και B, τελικά μεταδίδονται το Y και πάνω σε αυτό διαμορφώνονται τα R-Y και G-Y που ονομάζονται U και V αντίστοιχα. Λόγω της μειωμένης ευαισθησίας του ματιού στο χρώμα σε σχέση με την λαμπρότητα (που οφείλεται στο μικρότερο αριθμό των - ευαίσθητων στο χρώμα - κωνίων σε σχέση με τα - ευαίσθητα στην λαμπρότητα - ραβδία μέσα στο μάτι) στα στοιχεία U και V αφιερώνεται μικρότερο τμήμα του εύρους των συχνοτήτων μετάδοσης. Έτσι, στη μνήμη της κάρτας ένθεσης ο βασικός τρόπος αποθήκευσης είναι τέσσερις τιμές λαμπρότητας που κάθε μια καταλαμβάνει μια ψηφιολέξη και ένα ζεύγος (U, V) που αντιστοιχεί και στις τέσσερις τιμές λαμπρότητας. Ο τρόπος αυτός αποθήκευσης χρησιμοποιείται και για τα εσωτερικά αρχεία της Screen Machine μια και μπορεί εύκολα και κυρίως γρήγορα, να μεταφερθεί από τη μνήμη της κάρτας στο δίσκο και αντίστροφα. Τα αρχεία τύπου FLM περιέχουν μία επικεφαλίδα που περιέχει στοιχεία όπως τη διακριτικότητα και τις βαθμίδες των χρωμάτων ακολουθούμενη από τα κυρίως στοιχεία.
DIB και RDIB
Ο τύπος DIB (Device Independent Bitmap) χρησιμοποιείται στο περιβάλλον Microsoft Windows και Presentation Manager του OS/2. Ο τύπος RDIB (RIFF DIB, όπου RIFF υποδηλώνει Resource Interchange File Format), είναι ο βασικός τύπος για ανταλλαγή αρχείων multimedia στο περιβάλλον Windows. Τα αρχεία RIFF είναι βασισμένα σε περιοχές με ετικέτες (tagged format) και μία από τις περιοχές μπορεί να περιέχει στοιχεία DIB. Τα αρχεία τύπου DIB μπορεί προαιρετικά να είναι συμπιεσμένα με έναν αλγόριθμο συμπίεσης συνεχών σειρών (run length encoding). Αυτός ο αλγόριθμος αντικαθιστά συνεχόμενες σειρές που αποτελούνται από την ίδια τιμή με τον αριθμό που παρουσιάζεται αυτή η τιμή ακολουθούμενο από την αντίστοιχη τιμή. Για παράδειγμα μια σειρά "42 42 42 42 42 42" συμπιέζεται ως "6 42" (έξι φορές η τιμή 42).
GIF
Ο τύπος GIF (Graphics Interchange Format και κατά άλλους Girls In Files) ξεκίνησε ως πρότυπος τρόπος ανταλλαγής γραφικών αρχείων μεταξύ των συνδρομητών της βάσης πληροφοριών Compuserve. Υποστηρίζεται από πολλές εφαρμογές. Τα αρχεία τύπου GIF είναι συμπιεσμένα με τον αλγόριθμο συμπίεσης Lempel-Ziv.
PCX
Αρχικά χρησιμοποιήθηκε από το πρόγραμμα Paintbrush της Zsoft Corporation, αλλά τώρα υποστηρίζεται από πολλές εφαρμογές. Τα αρχεία τύπου PCX είναι συμπιεσμένα με έναν αλγόριθμο συμπίεσης συνεχών σειρών (run length encoding).
TGA
Ο τύπος αυτός ορίστηκε το 1984 από την εταιρία Truevision για ανταλλαγή γραφικών στοιχείων με τα video-γραφικά της προϊόντα.
TIFF
Τα αρχεία τύπου TIFF (Tagged Interchange File Format) έχουν οριστεί από την εταιρία Aldus. Υπάρχουν πολλοί τύποι αρχείων TIFF. Οι βιβλιοθήκες της Screen Machine υποστηρίζουν τους τύπους G (8 bit) και R (24 bit).
EPS
Ο τύπος EPS (Encapsulated Postscript) έχει οριστεί από την εταιρία Adobe και περιέχει εντολές της γλώσσας Postscript για την απεικόνιση ενός σχεδίου. Επιπλέον, στην αρχή του αρχείου υπάρχουν στοιχεία όπως η διαστάσεις του σχεδίου και συχνά, ένας μικρός ψηφιοπίνακας (bitmap) που παριστάνει το σχέδιο. Τα αρχεία τύπου EPS μπορούν εύκολα να αλλάξουν μέγεθος και προσανατολισμό, και να ενσωματωθούν σε αρχεία προγραμμάτων που υποστηρίζουν αυτόν τον τύπο.
Διαφορετικοί τύποι αρχείων καταλαμβάνουν διαφορετικό χώρο. Το σχήμα 1 συνοψίζει το χώρο που καταλαμβάνει μια εικόνα διαστάσεων 320 x 200 με παλέτα 256 χρωμάτων.

Σχήμα 1. Χώρος που καταλαμβάνει μια εικόνα 320 x 200 με παλέτα 256 χρωμάτων.

Μετατροπή χρωμάτων

Οι κάρτες ένθεσης συνήθως υποστηρίζουν πολλά περισσότερα χρώματα απ' ό,τι οι περισσότερες κάρτες παραστάσεως γραφικών. Για παράδειγμα, η Screen Machine II υποστηρίζει 16 εκατομμύρια χρώματα ενώ μια μέση κάρτα VGA υποστηρίζει 256 ή το πολύ 32.000 χρώματα. Σε μια εφαρμογή multimedia είναι πολλές φορές απαραίτητο να χρησιμοποιήσουμε τον υπολογιστή ανεξάρτητα από την κάρτα ένθεσης. Αυτό δημιουργεί την απαίτηση για μείωση του αριθμού των χρησιμοποιουμένων χρωμάτων ανάλογα με τον αριθμό που υποστηρίζει ο υπολογιστής. Υπάρχουν πολλοί και διαφορετικοί αλγόριθμοι για την πραγματοποίηση αυτής της μετατροπής. Οι περισσότερες συσκευές παραστάσεως γραφικών μπορούν να δείξουν ταυτόχρονα 256 χρώματα επιλέγοντάς τα από μια παλέτα δύο εκατομμυρίων χρωμάτων. Έτσι, η βάση για μια σωστή παράσταση της εικόνας με περιορισμένο αριθμό χρωμάτων είναι η κατάλληλη επιλογή των χρωμάτων αυτών. Ο κβαντισμός αυτός των χρωμάτων είναι επίσης απαραίτητος όταν μετατρέπουμε τα δεδομένα σε έναν τύπο αρχείου που υποστηρίζει λιγότερα χρώματα. Οι βασικοί τρόποι κβαντισμού των χρωμάτων είναι οι εξής:

Παραγωγή χρωμάτων με σύνθεση (dithering)

Η σύνθεση των χρωμάτων για την παραγωγή νέων χρωμάτων είναι ανεξάρτητη από τον κβαντισμό και μπορεί να χρησιμοποιηθεί ξεχωριστά από αυτόν. Με τη μέθοδο αυτή κουκκίδες διαφορετικών χρωμάτων τοποθετούνται μαζί, έτσι ώστε να δημιουργήσουν την ψευδαίσθηση ενός άλλου χρώματος. Το βασικό πρόβλημα αυτής της μεθόδου είναι η ταξινόμηση των λαθών που δημιουργούνται. Οι βιβλιοθήκες της Screen Machine υποστηρίζουν την σύνθεση των χρωμάτων με τον αλγόριθμο φιλτραρίσματος Floyd-Steinberg. Ο αλγόριθμος αυτός μεταφέρει τα λάθη της μετατροπής σε γειτονικά εικονοστοιχεία για την αποφυγή δημιουργίας ενοχλητικών εικονικών ειδώλων από την κβαντοποίηση. Στις εικόνες 1 και 2 βλέπουμε την ίδια εικόνα τυπωμένη με 256 τόνους του γκρίζου (όπως αυτοί βέβαια αναπαράγονται από την τεχνολογία εκτύπωσης του περιοδικού) και με τη χρήση μόνο άσπρων και μαύρων εικονοστοιχείων (σε ανάλυση 320 x 200) με τον αλγόριθμο Floyd Steinberg.

Εικόνα 1. Παράσταση με 256 τόνους του γκρι.

Εικόνα 2. Παράσταση ασπρόμαυρη (dithering με αλγόριθμο Flyod-Steinberg).

Συμπίεση αρχείων

Τα αρχεία που περιέχουν εικόνες καταλαμβάνουν αρκετό χώρο. Για παράδειγμα ένα αρχείο 640 x 480 με χρώμα 24 δυαδικών ψηφίων καταλαμβάνει 900Kb. Για να ελαχιστοποιηθεί ο χώρος που καταλαμβάνουν θα ήταν επιθυμητό να συμπιεστούν. Πολλοί από τους τύπους αρχείων που αναφέραμε παραπάνω καταλαμβάνουν πολύ λιγότερο χώρο από τον αριθμό που αναφέραμε παραπάνω. Αυτό επιτυγχάνεται με διάφορες τεχνικές όπως η φύλαξη μόνο των χρωμάτων που χρησιμοποιούνται, ή και ενός υποσυνόλου τους, η κωδικοποίηση σειρών ιδίων ψηφιολέξεων (run length encoding) ή και η χρησιμοποίηση γενικών αλγορίθμων συμπίεσης όπως ο αλγόριθμος Lempel-Ziv. Οι τεχνικές αυτές συμπίεσης υποστηρίζονται από τις βιβλιοθήκες της Screen Machine όταν γίνεται επεξεργασία για τον αντίστοιχο τύπο αρχείου.

Εκτός από τις τεχνικές που αναφέρθηκαν παραπάνω, τα τελευταία χρόνια χρησιμοποιείται όλο και περισσότερο η συμπίεση αρχείων σύμφωνα με το πρότυπο 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.

ΣΥΝΕΧΙΖΟΝΤΑΣ

Στο επόμενο άρθρο της σειράς αυτής θα εξετάσουμε τον έλεγχο συσκευών multimedia μέσω του οδηγού MCI των Windows. Ο οδηγός αυτός παρέχει έναν ομοιόμορφο τρόπο αντιμετώπισης όλων των συσκευών multimedia και διευκολύνει την ανάπτυξη και χρήση λογισμικού συγγραφής τέτοιων εφαρμογών (authoring software). Καλό καλοκαίρι.

(C) Copyright 1993-97 Διομήδης Σπινέλλης. Επιτρέπεται η ελεύθερη ανάγνωση από browsers του WWW και παρόμοια προγράμματα. Με την επιφύλαξη κάθε άλλου δικαιώματος.