Περίληψη
Η Εξίσωση Ιστογράμματος είναι μια αυτόματη διαδικασία που καθορίζει ένα μετασχηματισμό που
αναζητά την παραγωγή μιας εικόνας με ομοιόμορφο ιστόγραμμα των τιμών έντασης. Είναι μια τεχνική που
μπορεί να χρησιμοποιηθεί για την βελτίωση της ποιότητας μιας εικόνας, όταν η αντίθεση της (contrast)
είναι χαμηλή.
Στο άρθρο αυτό θα αναλυθεί τι είναι ιστόγραμμα μιας εικόνας και θα παρουσιαστεί η διαδικασία εκείνη
που επιτρέπει την εξίσωση. Ως επίδειξη εφαρμογής της μεθόδου θα χρησιμοποιηθούν 2 εικόνες, το
περιεχόμενο των οποίων θα αποκαλυφθεί κάνοντας χρήση της εν λόγω τεχνικής. Για λόγους απλότητας οι εικόνες
που θα χρησιμοποιηθούν είναι 8-bit grayscale εικόνες.
Προαπαιτούμενα
Για την κατανόηση των εννοιών που σχετίζονται με την τεχνική της εξίσωσης ιστογράμματος
δεν απαιτούνται ιδιαίτερες γνώσεις εκ μέρους του αναγνώστη. Παρόλα αυτά, μικρή εξοικίωση με βασικές
έννοιες που σχετίζονται με την επεξεργασία εικόνας σε υπολογιστή ίσως βοηθήσουν στην καλύτερη κατανόηση.
Στο άρθρο αυτό παρουσιάζεται μια υλοποίηση της τεχνικής σε MATLAB. Γνώση της scripting γλώσσας της
MATLAB απαιτείται για την κατανόηση του κώδικα. Αν ο αναγνώστης επιθυμεί να πειραματιστεί με την
MATLAB ίσως η εγκατάσταση του Image Processing Toolbox να απαιτείται.
Ιστόγραμμα Εικόνας
Μια 8-bit grayscale εικόνα θα αποτελείται από n pixels καθένα από τα οποία μπορεί να πάρει 256
διακριτές τιμές (0 έως 255). Έστω n(k) ότι είναι ο αριθμός των pixels της εικόνας που έχουν φωτεινότητα
k, με 0 ≤ k ≤ 255. Tότε το ιστόγραμμα pr(rk) δίνεται από την σχέση :
Η διαμόρφωση των ολοκληρωμένων αυτών βασίζεται σε SRAM, καθιστώντας δυνατό τον απεριόριστο αριθμό
επαναπρογραμματισμών τους. Παράλληλα προσφέρονται πολλαπλοί τρόποι για τον προγραμματισμό, αυξάνοντας
την ευελιξία τους.
Το ιστόγραμμα μιας εικόνας φέρει σημαντικές πληροφορίες για το περιεχόμενο της εικόνας. Για
παράδειγμα για τις εικόνες im1 και im2 έχουμε τα ακόλουθα ιστογράμματα :
H εικόνα im1
To ιστόγραμμα της εικόνας im1
H εικόνα im2
To ιστόγραμμα της εικόνας im2
Οι παραπάνω γραφικές παραστάσεις αποκαλύπτουν ότι τα ιστογράμματα των δύο εικόνων είναι
συγκεντρωμένα σε δύο πολύ μικρές περιοχές φωτεινοτήτων, οπότε η αντίθεση (contrast) των εικόνων
καθώς η υποκειμενική ποιότητα τους είναι πολύ χαμηλή. Για να βελτιωθεί η ποιότητα των εικόνων
μπορεί να τροποποιηθεί το ιστόγραμμα τους, ώστε να εξαπλωθεί σε μεγαλύτερο εύρος τιμών.
Έστω ότι η μεταβλητή r συμβολίζει τα διαφορετικά gray levels, άρα παίρνει τιμές από 0 μέχρι 255.
Έστω η συνάρτηση μετασχηματισμού Τ :
s = T(r)
για την οποία θα ισχύουν οι εξής συνθήκες :
1. Τ(r) : γνήσιως αύξουσα στο [0 255]
2. 0 ≤ Τ(r) ≤ 255 , για 0 ≤ r ≤ 255
Η πρώτη συνθήκη εξασφαλίζει ότι αν εφαρμοστεί ο μετασχηματισμός αυτός σε μια εικόνα δεν θα
αντιστραφεί η φωτεινότητα σε κανένα σημείο της εικόνας, ενώ η δεύτερη εξασφαλίζει ότι τα output gray
levels θα είναι στην ίδια περιοχή τιμών με τα input gray levels.
Αν 0 ≤ k ≤ 255 , τότε η rk όπως αναφέρθηκε, συμβολίζει τα διαφορετικά gray levels.
Η πιθανότητα να εμφανιστεί το gray level rk στην εικόνα θα είναι :
όπου nk είναι το πλήθος των pixels της εικόνας που έχουν gray level rk και
n είναι το συνολικό πλήθος pixels της εικόνας. Μπορεί, λοιπόν, να οριστεί η εξής συνάρτηση
μετασχηματισμού :
Οπότε, χρησιμοποιώντας την συνάρτηση αυτή, μπορεί να παραχθεί μια εικόνα αν σε κάθε pixel της
αρχικής εικόνας με gray level rk αντιστοιχηθεί ένα pixel της εικόνας εξόδου με gray level
sk. To αποτέλεσμα που θα προκύψει θα είναι μια εικόνα το ιστόγραμμα της οποίας θα είναι
πιο εξομαλυμένο από της αρχικής εικόνας και θα καλύπτει μια ευρύτερη περιοχή τιμών.
Η συνάρτηση που ακολουθεί υλοποιεί την ανωτέρω διαδικασία σε MATLAB :
function y = istoeq(x)
%Συνάρτηση υλοποίησης της μεθόδου εξισωσης ιστογράμματος
n = size(x,1)*size(x,2);
count = zeros(1,256);
%εύρεση του πλήθους των pixels που έχουν κάθε στάθμη grey
for k = 1:n
count(1,x(k)+1) = count(1,x(k)+1) + 1;
end
%υπολογισμός της νέας τιμής κάθε pixel
g = zeros(1,256);
for k = 1:256
if (count(1,k) ~= 0)
for l = 1:k
g(1,k) = g(1,k) + count(1,l)/n;
end
end
end
for k = 1:n
%οι τιμές του διανύσματος g είναι από 0 μέχρι 1.Για να πάρουμε από αυτές τις
%τιμές, τα grey levels (από 0 μέχρι 255) πολλαπλασιάζουμε με 255 και κάνουμε
%στρογγυλοποίηση στο κοντινότερο επίπεδο
x(k) = round(255*g(1,x(k)+1));
end
y = x;
|
Στην αρχή του άρθρου αναφέρθηκε ότι η τεχνική της εξίσωσης ιστογράμματος θα χρησιμοποιηθεί
για να αποκαλυφθεί το περιεχόμενο των εικόνων im1 και im2. Είναι ενδιαφέρον να εξηγηθεί γιατί
εφαρμόζοντας αυτή τη τεχνική στις εικόνες που έχουν θα απόκαλυφθεί το περιεχόμενο τους. Αυτό που
οπτικά μπορεί να παρατηρηθεί όταν κοιτάξει κάποιος τις εικόνες im1 και im2 είναι ουσιαστικά δύο
περιοχές, μια μαύρη και μια άσπρη (με μόνη διαφορά στα σχήματα των
περιοχών αυτών). Αυτό που αποκαλύπτει όμως το ιστόγραμμα είναι ότι οι οπτικά μαύρες περιοχές
δεν περιέχουν μόνο pixels με τιμή ίση 0 (καθαρό μαύρο δηλαδή) αλλά και έναν αριθμό από pixels με
τιμές μεγαλύτερες (άρα πιο φωτεινά - πιο «γκρι» pixels), που απλά δεν είναι ευδιάκριτα στο μάτι.
Εφαρμόζοντας την εξίσωση ιστογράμματος αυτό που θα αλλάξει είναι η κατανομή των pixels στην
περιοχή τιμών [0 255] με αποτέλεσμα να επιτευχθεί μια εικόνα με καλύτερο contrast και φωτεινότητα,
αφού πλέον οι τιμές των pixels θα απλώνονται σε ένα ευρύτερο φάσμα τιμών.
Εφαρμόζοντας τον ανωτέρω μετασχηματισμό στις εικόνες im1 και im2 αντίστοιχα, εμφανίζονται τα
ακόλουθα αποτελέσματα :
H εικόνα im1 μετά την εφαρμογή της συνάρτησης istoeq().
H εικόνα im2 μετά την εφαρμογή της συνάρτησης istoeq().
Σε αυτό το σημείο, είναι ενδιαφέρον να παρουσιαστεί το νέο ιστόγραμμα των εικόνων σε σχέση
με το ιστόγραμμα των αρχικών εικόνων από τις οποίες προέκυψαν :
          ΣΥΝΟΔΕΥΤΙΚΑ ΑΡΧΕΙΑ.
1. Μπορείτε να κατεβάσετε τον κώδικα της συνάρτησης istoeq από εδώ.
2. Τα αρχεία των εικόνων im1 και im2 σε μορφή .mat είναι επίσης διαθέσιμα : im1.mat , im2.mat.
          ΠΗΓΕΣ.
1. Digital Image Processing, Second Edition - Rafael C. Gonzalez, Richard E. Woods
2. Ψηφιακή Επεξεργασία Εικόνας, Ιωάννης Πίττας
|