ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα ΕΠΕΞΕΡΓΑΣΙΑ ΕΙΚΟΝΑΣ Ενότητα 1: Εισαγωγή στην Ψηφιακή Επεξεργασία Εικόνας Ιωάννης Έλληνας Τμήμα Υπολογιστικών Συστημάτων
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 2
1. Σκοποί ενότητας... 4 2. Περιεχόμενα ενότητας... 4 3. Τύποι εικόνων (Image Types)... 5 4. Τιμές φωτεινότητας (Data Classes)... 5 5. Ανάγνωση εικόνων... 5 6. Απεικόνιση εικόνων... 6 7. Εγγραφή εικόνων... 6 8. Ειδικές περιπτώσεις... 7 9. Aσκήσεις... 7 9.1 1 η Άσκηση... 8 9.1.1 Άσκηση 1.1... 8 9.1.2 Άσκηση 1.2... 9 9.1.3 Άσκηση 1.3... 9 9.1.4 Άσκηση 1.4... 9 9.2 2 η Άσκηση... 9 9.2.1 Άσκηση 2.1... 10 9.2.2 Άσκηση 2.2... 10 9.2.3 Άσκηση 2.3... 10 9.2.4 Άσκηση 2.4... 10 9.2.5 Άσκηση 2.5... 10 9.2.6 Άσκηση 2.6... 11 9.2.7 Άσκηση 2.7... 12 9.2.8 Άσκηση 2.8... 13 9.3 3 η Άσκηση... 14 9.3.1 Άσκηση 3.1... 14 9.3.2 Άσκηση 3.2... 14 9.3.3 Άσκηση 3.3... 15 9.3.4 Άσκηση 3.4... 15 9.4 4 η Άσκηση... 15 3
1. Σκοποί ενότητας Σκοπός της ενότητας είναι να παρουσιάσει τις εισαγωγικές έννοιες στην επεξεργασία εικόνας, όπως την παράσταση των ψηφιακών εικόνων, τα χρωματικά συστήματα και τις εντολές στο Matlab για τον χειρισμό των εικόνων και να κληθεί ο εκπαιδευόμενος να λύσει πρακτικές ασκήσεις. 2. Περιεχόμενα ενότητας H ενότητα αυτή περιλαμβάνει βασικές έννοιες θεωρίας που καλύπτουν τα ακόλουθα: Τι είναι η ψηφιακή εικόνα Τυπικό σύστημα παραγωγής ψηφιακής εικόνας Εισαγωγικές έννοιες Χρωματικά συστήματα Οι εικόνες στο Matlab Το ιστόγραμμα Επίσης, περιλαμβάνει 4 ασκήσεις για λύση που καλύπτουν τις παραπάνω θεματικές. 4
3. Τύποι εικόνων (Image Types) Δυαδικές (Binary): Πίνακας Μ Ν με ακέραιους στην κλίμακα [0, 1]. Χρωματικού δείκτη (Indexed): Πίνακας Μ Ν με ακέραιους στην κλίμακα [0, p- 1]. Επίσης χρωματικός πίνακας p 3 (RGB) με πραγματικούς αριθμούς στην κλίμακα [0, 1]. Το p του πρώτου πίνακα είναι δείκτης στο δεύτερο πίνακα. Φωτεινότητας (Intensity): Πίνακας Μ Ν με πραγματικούς αριθμούς στην κλίμακα [0, 1] ή [0, 255] ή [0, 65535]. Έγχρωμες (RGB): Πίνακας Μ Ν 3 με πραγματικούς αριθμούς στην κλίμακα [0, 1] ή [0, 255] ή [0, 65535]. 4. Τιμές φωτεινότητας (Data Classes) Double: Πραγματικός αριθμός μεγέθους 8 bytes. Uint8: Μη προσημασμένος ακέραιος μεγέθους 1 byte (0 έως 255). Uint16: Μη προσημασμένος ακέραιος μεγέθους 2 bytes (0 έως 65535). Logical: Λογική τιμή 0 ή 1. Ο χαρακτηρισμός μιας εικόνας γίνεται με τον τύπο της και τον τρόπο έκφρασης των τιμών φωτεινότητας. Για παράδειγμα λέμε ότι μια εικόνα είναι τύπου φωτεινότητας με τιμές uint8. 5. Ανάγνωση εικόνων Εντολή: imread ( filename ) Τύποι εικόνων ( filename ): *.tif (Tagged Image File Format) *.jpg *.gif (Joint photographic Experts Group) (Graphics Interchange Format) *.bmp (Windows BitaMaP) *.png (Portable Network graphics) 5
Πληροφορίες για το αρχείο: imfinfo *.tif Παράδειγμα ανάγνωσης: x = imread ( moon.tif ); Πληροφορίες για την εικόνα: whos x Διαστάσεις εικόνας: [M, N] = size ( x ); 6. Απεικόνιση εικόνων Εντολή: imshow ( x, L ) όπου L = 0 1 ή 0 255. imshow ( x, [low high] ) όπου για x<=low τίθεται 0 και για x>=high τίθεται 1 ή 255. imshow ( x, [ ] ) όπου low=min του x high=max του x. imshow ( x, map) εικόνες indexed Σημείωση: Στις εντολές που υπάρχουν όρια, οι ενδιάμεσες τιμές απεικονίζονται με τον προκαθορισμένο αριθμό αποχρώσεων (εάν δεν καθοριστεί είναι 256). 7. Εγγραφή εικόνων 6
Εντολή: imwrite ( x, filename ) Παράδειγμα εγγραφής: imwrite ( x, moon.tif ); Σημείωση: Στην εγγραφή υπάρχουν και άλλες παράμετροι (π.χ. συμπίεση ή ανάλυση) που μπορεί να συνοδεύουν την εντολή. 8. Ειδικές περιπτώσεις Μια συνηθισμένη μορφή αποθήκευσης των εικόνων είναι η μορφή raw ή bin δηλ. σε δυαδικές τιμές. Σε αυτή την περίπτωση η ανάγνωση της εικόνας γίνεται με άνοιγμα και ανάγνωση αρχείου (Σημειώσεις θεωρίας). Ένας πίνακας τιμών x (δηλ. μια εικόνα) μπορεί να αποθηκευτεί με την εντολή: save filename x όπου δημιουργείται δυαδικό αρχείο με όνομα filename.mat. Το φόρτωμα αυτού του αρχείου γίνεται με την εντολή: load filename οπότε επανέρχεται στη μνήμη ο πίνακας x. Ο συντελεστής συμπίεσης ενός αρχείου ευρίσκεται ως εξής: 1. Εκτελείται η εντολή: a = imfinfo( filename.xxx ) (Το a είναι σε μορφή structured). 2. Αριθμός bits εικόνας: b = a.width*a.height*a.bitdepth /8 bytes. 3. Αριθμός bits αρχείου: c = a.filesize bytes. 4. Συντελεστής συμπίεσης = b/c. 9. Aσκήσεις 7
9.1 1 η Άσκηση Να διαβαστεί η εικόνα moon.tif. Να απεικονιστεί με την εντολή imshow(x). Εικόνα 9.1.1 Άσκηση 1.1 Να δοθούν οι πληροφορίες για τον πίνακα που αντιστοιχεί στην εικόνα. Ποιος είναι ο τύπος της εικόνας; 8
9.1.2 Άσκηση 1.2 Παρατηρείστε τις πληροφορίες του αρχείου της εικόνας με την κατάλληλη εντολή. 9.1.3 Άσκηση 1.3 Ποιος είναι ο συντελεστής συμπίεσης για το συγκεκριμένο αρχείο; 9.1.4 Άσκηση 1.4 Να απεικονιστεί η εικόνα με την εντολή imshow(x,[ ]). Υπάρχει διαφορά από την προηγούμενη και γιατί; (Βοήθεια: Να ευρεθεί η ελάχιστη και η μέγιστη τιμή του πίνακα). 9.2 2 η Άσκηση Να απεικονιστεί η εικόνα με την εντολή imshow(x,[80 200]). Υπάρχει διαφορά από τις προηγούμενες και γιατί; Εικόνα 9
9.2.1 Άσκηση 2.1 Να διαβαστεί η εικόνα woman.mat. Να δοθούν οι πληροφορίες για τον πίνακα που αντιστοιχεί στην εικόνα. Ποιος είναι ο τύπος της εικόνας; 9.2.2 Άσκηση 2.2 Ποια είναι η τιμή φωτεινότητας του pixel (1,1); 9.2.3 Άσκηση 2.3 Εάν η εικόνα ήταν τύπου φωτεινότητας, τι τιμή θα είχε αυτό το pixel; 9.2.4 Άσκηση 2.4 Μετατρέψτε την εικόνα σε τύπου φωτεινότητας uint8 με την κατάλληλη εντολή. Ποια είναι η τιμή του πρώτου pixel; 9.2.5 Άσκηση 2.5 Προχωρήστε σε υποδειγματοληψία κατά 8 της εικόνας με την εντολή y=x(1:8:end,1:8:end). Απεικονίστε την εικόνα στις ίδιες διαστάσεις με την αρχική. Τι παρατηρείτε; 10
Εικόνα 9.2.6 Άσκηση 2.6 Ελαττώστε τον αριθμό των αποχρώσεων της αρχικής εικόνας μεταβάλλοντας το χρωματικό πίνακα. Χρησιμοποιείστε την εντολή [z,newmap]=imapprox(x,map,n), όπου n είναι ο νέος αριθμός αποχρώσεων. Απεικονίστε την εικόνα. Τι παρατηρείτε; 11
Εικόνα 9.2.7 Άσκηση 2.7 Διαβάστε την εικόνα pentagon.png και μετατρέψτε την από uint8 σε double. Δοκιμάστε την εντολή y=imadjust(x,[low high],[bottom top]) για μεταβολή στη φωτεινότητα της αρχικής εικόνας. Τοποθετείστε low=min(min(x)) και high=max(max(x)). Επίσης bottom=0 και top=1. Απεικονίστε την εικόνα. Τι παρατηρείτε; Εικόνα 12
9.2.8 Άσκηση 2.8 Απεικονίστε την αρχική εικόνα με την εντολή imshow(x,[]). Τι διαφορά έχει από την προηγούμενη απεικόνιση; Σημείωση: Οι δυο τελευταίοι τρόποι χρησιμοποιούνται για τη μεταβολή της δυναμικής περιοχής φωτεινότητας μιας εικόνας). 13
Εικόνα 9.3 3 η Άσκηση Να διαβαστεί το δυαδικό αρχείο Lenna.bin και να απεικονιστεί η εικόνα. 9.3.1 Άσκηση 3.1 Αποθηκεύστε τον πίνακα σε μορφή Lenna.mat και δοκιμάστε να φορτώσετε και να απεικονίσετε ξανά την εικόνα. 9.3.2 Άσκηση 3.2 Φορτώστε την εικόνα clown.mat. Απεικονίστε την: (α) με τον προκαθορισμένο πίνακα αποχρώσεων, (β) με 256 γκρι αποχρώσεις αγνοώντας το χρωματικό της πίνακα και (γ) με τον προκαθορισμένο χρωματικό πίνακα colormap. 14
Εικόνα 1 Εικόνα 2 Εικόνα 3 9.3.3 Άσκηση 3.3 Μετατρέψτε την εικόνα από εικόνα χρωματικού δείκτη σε εικόνα φωτεινότητας με την κατάλληλη εντολή μετατροπής. Απεικονίστε την και δείτε το αποτέλεσμα. 9.3.4 Άσκηση 3.4 Αποθηκεύσατε την εικόνα σε μορφή clown.bmp. Φορτώστε τη νέα εικόνα και απεικονίστε την. Τι παρατηρείτε και γιατί; 9.4 4 η Άσκηση Διαβάστε την εικόνα pentagon.png. Απεικονίστε το ιστόγραμμά της. Τι παρατηρείτε σε σχέση με την απεικόνισή της; Πως μπορούμε να επεκτείνουμε το ιστόγραμμα σε όλη τη δυναμική περιοχή φωτεινότητας; Πραγματοποιείστε μια αύξηση της δυναμικής περιοχής. Απεικονίστε το ιστόγραμμα που προκύπτει και παρατηρείστε την εικόνα. 15
Ιστόγραμμα 1 Ιστόγραμμα 2 16