Advances in Digital Imaging and Computer Vision Lecture and Lab 4 3/4/2017 Κώστας Μαριάς Αναπληρωτής Καθηγητής Επεξεργασίας Εικόνας 21/2/2017 1
Μετασχηματισμός Fourier Εικόνας 2
Περιεχόμενα Διάλεξης Μετασχηματισμός Fourier Διακριτός Μετασχηματισμός Fourier στην εικόνα. Θεωρητική περιγραφή και παραδείγματα Matlab Για την καλύτερη παρακολούθηση έχουμε 3 ειδών διαφάνειες: Βασική πληροφορία (για προπτυχιακούς), Παραδείγματα Matlab για προπτυχιακούς και προχωρημένα ερευνητικά θέματα (research) Basic Matlab Research 3
Συστήματα στο πεδίο του χρόνου και της συχνότητας x(t) X(s) =Ƒ{x(t)} H(s) = Ƒ {h(t)} y(t) Y(s)= Ƒ{y(t)} x(t): σήμα εισόδου στο πεδίο του χρόνου, X(s) στο πεδίο της συχνότητας y(t): σήμα εξόδου στο πεδίο του χρόνου, Y(s) στο πεδίο της συχνότητας h(t): κρουστική απόκριση του συστήματος, H(s): απόκριση συχνότητας Εξισώσεις του συστήματος: + Στο πεδίο του χρόνου: y(t) = x(t) h(t)= x τ h t τ dt Στο πεδίο της συχνότητας: Y(s) = X(s) H(s) Κρουστική Απόκριση: y(t) == h(t) για x(t) == δ(t) 4
Μετασχηματισμοί στο πεδίο των συχνοτήτων Συνήθεις μετασχηματισμοί: DFT (FFT), DCT Γιατί οι μετασχηματισμοί στο πεδίο των συχνοτήτων είναι χρήσιμοι στην επεξεργασία εικόνας; Βελτίωση εικόνας λαμβάνοντας υπόψιν το συχνοτικό περιεχόμενο Φιλτράρισμα, αφαίρεση θορύβου, κυκλική μετατόπιση, συμπίεση, περιγραφή σχήματος Πλεονεκτήματα: μικρότερη υπολογιστική πολυπλοκότητα / εναλλακτική ερμηνεία 5
Η μορφή της εικόνας στο πεδίο των συχνοτήτων Αριστερά φαίνεται το συχνοτικό περιεχόμενο του DFT (συγκέντρωση ενέργειας γύρω από το (0,0)) lenna Λογαριθμική απεικόνιση του πλάτους του DFT 6
Ποιος ήταν ο Fourier? O Jean Baptiste Joseph Fourier γεννήθηκε στη Γαλλία το1768 και ήταν μαθηματικός/φυσικός. Στο μεγάλο του έργο συμπεριλαμβάνονται η ανάλυση Fourier: Κάθε περιοδική συνάρτηση μπορεί να εκφραστεί ως άθροισμα ημιτόνων και συνημίτονων διαφορετικών συχνοτήτων, κάθε ένα από τα οποία είναι πολλαπλασιασμένο με κάποιο συντελεστή (σειρά Fourier). 7
Μετασχηματισμός Fourier Η ανάλυση Fourier προτάθηκε το 1807 Η συνάρτηση (κάτω) μπορεί να παραχθεί από το άθροισμα των 4 σημάτων (πάνω). 8
Μετασχηματισμός Fourier Ο Μετασχηματισμός Fourier αποσυνθέτει ένα σήμα στις συχνότητες που το συνθέτουν κατά τρόπο παρόμοιο με το πώς μια συγχορδία μπορεί να εκφραστεί ως το εύρος ή η ένταση από τις νότες που την αποτελούν. Ο μετασχηματισμός Fourier του σήματος είναι ένα μιγαδικό σήμα συχνότητας, του οποίου η απόλυτη τιμή αντιπροσωπεύει τη συνεισφορά κάθε συχνότητας στο αρχικό σήμα, και το μιγαδικό μέρος την μετατόπιση φάσης του βασικού ημιτονοειδόυς σε αυτή τη συχνότητα. Ο Μετασχηματισμός Fourier είναι η αναπαράσταση του πεδίου συχνοτήτων του αρχικού σήματος. 9
Μετασχηματισμός Fourier Για παράδειγμα η περιοδική συνάρτηση: Αποσυντίθεται με ένα γραμμικό συνδυασμό ημιτόνων και συνημίτονων: Οι συστατικές συχνότητες αυτών των ημιτόνων και συνημίτονων εξαπλώνονται σε όλο το φάσμα συχνοτήτων και αντιπροσωπεύονται ως κορυφές στο πεδίο συχνότητας (συναρτήσεις Dirac). f Η f είναι αναπαράσταση στο πεδίο των συχνοτήτων της συναρτήσεως f και είναι η συλλογή αυτών των κορυφών στις συχνότητες που εμφανίζονται στην ανάλυση Fourier αυτής της συνάρτησης. 10
Μετασχηματισμός Fourier Ακόμα όμως και μη περιοδικές συναρτήσεις (αλλά με πεπερασμένο εμβαδό κάτω από την καμπύλη) μπορούν να εκφραστούν ως άθροισμα ημιτόνων/συνημιτόνων πολλαπλασιασμένων με κατάλληλους συντελεστές. Ο φορμαλισμός σε αυτήν την περίπτωση ονομάζεται μετασχηματισμός Fourier (Fourier Τransform) και έχει πλήθος εφαρμογών σε διάφορες επιστημονικές εφαρμογές. Η πρόοδος στην επιστήμη υπολογιστών και η ανακάλυψη του γρήγορου μετασχηματισμού Fourier (fast Fourier transform (FFT) στην δεκαετία του 60έφερε επανάσταση στο πεδίο της επεξεργασίας σήματος. 11
Διακριτός Μετασχηματισμός Fourier 1Διάσταση Αν έχουμε ένα σήμα 1Δ: f = [f 0, f 1, f 2,, f M 1 ] Ο Διακριτός μετασχηματισμός Fourier μας δίνει την ακολουθία F = [F 0, F 1, F 2,, F M 1 ] όπου M 1 F u = 1 [e 2πixu M ] f M x x=0 Χρησιμοποιούμε την ταυτότητα του Euler e 2πiθ = cos 2θ + i sin 2θ Για να απλοποιήσουμε τις πράξεις γράφοντας το σήμα ως άθροισμα συναρτήσεων βάσης e 2πiθ 12
Διακριτός Μετασχηματισμός Fourier 1Διάσταση Αν έχουμε ένα σήμα 1Δ: f = [f 0, f 1, f 2,, f M 1 ] Ο Διακριτός μετασχηματισμός Fourier μας δίνει την ακολουθία F = [F 0, F 1, F 2,, F M 1 ]. Ο αντίστροφος μετασχηματισμός Fourier είναι: M 1 x u = [e 2πixu M ] F u x=0 13
Διακριτός Μετασχηματισμός Fourier με Matlab Y = fft(x) computes the discrete Fourier transform (DFT) of X using a fast Fourier transform (FFT) algorithm. If X is a vector, then fft(x) returns the Fourier transform of the vector. If X is a matrix, then fft(x) treats the columns of X as vectors and returns the Fourier transform of each column. 14
Διακριτός Μετασχηματισμός Fourier Matlab f=[1 2 3 4 5 6]; fft(f') ans = 21.0000 + 0.0000i -3.0000 + 5.1962i -3.0000 + 1.7321i -3.0000 + 0.0000i -3.0000-1.7321i -3.0000-5.1962i 15
Διακριτός Μετασχηματισμός Fourier Shifting f=[1 2 3 4 5 6]; f1=(-1).^[0:6].*f fft(f') f=[1 2 3 4 5 6]; f1=(-1).^[0:6].*f fft(f1') f1 = -1 2-3 4-5 6 ans = ans = 21.0000 + 0.0000i -3.0000 + 5.1962i -3.0000 + 1.7321i -3.0000 + 0.0000i -3.0000-1.7321i -3.0000-5.1962i 3.0000 + 0.0000i 3.0000 + 1.7321i 3.0000 + 5.1962i -21.0000 + 0.0000i 3.0000-5.1962i 3.0000-1.7321i 16
Διακριτός Μετασχηματισμός Fourier 2Δ Αν έχουμε ένα σήμα 2Δ: f(x, y) Κάθε εικόνα µπορεί να αναπαρασταθεί ως άθροισµα ηµιτονικών εικόνων, για τις οποίες μπορούμε να δώσουμε ένα γενικό παράδειγμα: I s x, y = 255 sin 2π u M x + v N y Η εικόνα αυτή έχει M γραμμές (x=1:m-1), και N στήλες (y=1:n-1) 17
Διακριτός Μετασχηματισμός Fourier 2Δ Για να δούμε σε MATLAB την εικόνα I s x, y = 255 sin 2π u M x + v N y για u = 30, v = 10 και Μ = Ν = 256 γραφουμε: [x,y]=meshgrid(-128:127,-128:127); z=255*sin(2*pi*((30/256)*x+(10/256)*y)); figure, imshow(z), title(' z=255*sin(2*pi*((30/256)*x+(10/256)*y))'); Η εικόνα που προκύπτει έχει οριζόντια συχνότητα v = 10 Hz (10 περιοδικές επαναλήψεις των στοιχείων της εικόνας στην κατεύθυνση των στηλών) και u = 30 Hz (έχουµε 30 περιοδικές επαναλήψεις των στοιχείων της εικόνας στην κατεύθυνση γραμμών της εικόνας). Στην επόμενη διαφάνεια βλέπουμε την ημιτονική αυτή εικόνα σε 3D με την εντολή: figure, surf(z), shading interp, colormap bone, title('z=255*sin(2*pi*((30/256)*x+(10/256)*y))'); u 255 30 0 255 10 v 18
Διακριτός Μετασχηματισμός Fourier 2Δ Η εικόνα I s x, y = 255 sin 2π u M x + v N y με u = 30, v = 10 και Μ = Ν = 256 19
Διακριτός Μετασχηματισμός Fourier 2Δ Επειδή η διαφορά µιας ηµιτονικής από µια συνηµιτονική εικόνα εξαρτάται απλά από µια διαφορά φάσης (από ποια τιµή γκρίζου ξεκινά η εικόνα) η εικόνα μπορεί να εκφραστεί ως άθροισµα µιγαδικών εκθετικών εικόνων I c : Ι c = 255 e 2πi xu M +yv u N = 255 cos 2π x + v y + sin 2π u x + v y M N M N H µιγαδική εκθετική εικόνα ΔΕΝ είναι υπαρκτή ως φυσική οντότητα 20
Διακριτός Μετασχηματισμός Fourier 2Δ Αν έχουμε ένα σήμα 2Δ: f(x, y) Ο Διακριτός μετασχηματισμός Fourier μας δίνει την F(u, v) όπου F u, v = M 1 x=0 N 1 y=0 [e 2πi xu M +yv N ] f(x, y) 21
Διακριτός Μετασχηματισμός Fourier 2Δ Αν έχουμε ένα σήμα 2Δ: f(x, y) o Διακριτός μετασχηματισμός Fourier μας δίνει την F u, v ο αντίστροφος: ενώ f(x, y) = 1 M 1 ΜΝ u=0 N 1 v=0 [e 2πi xu M +yv N ] F u, v 22
Διακριτός Μετασχηματισμός Fourier 2Δ Επειδή: e 2πi xu M +yv N = e 2πi xu yv 2πi M e N Μπορούμε να διασπάσουμε τις εξισώσεις και να δουλέψουμε κατά γραμμές και στήλες αρχίζοντας από τις γραμμές: F u, : F :, v = x=0 M 1 [e 2πi xu M ] f(x, : ) και μετά στήλες = y=0 N 1 yv 2πi [e N ] F(u, : ) Οπότε ο διακριτός ΜF 2-D μπορεί να υπολογιστεί εκμεταλλευόμενοι την ιδιότητα αυτή της διαχωριστικότητας. 23
Διακριτός Μετασχηματισμός Fourier 2Δ Οπότε αν έχουμε την εικόνα Ι (αριστερά) πρώτα παίρνουμε τον Διακριτός Μετασχηματισμός Fourier (ΔΜF) σε κάθε γραμμή και στην εικόνα F u, : που προκύπτει παίρνουμε τον ΔΜF σε κάθε στήλη για το τελικό αποτέλεσμα. F u, : = M 1 x=0 [e 2πi xu M ] f(x, : ) F :, v = N 1 y=0 [e 2πi yv N ] F(u, : ) Ι F u, : : ΔΜF σε κάθε γραμμή της I ΔΜF σε κάθε στήλη της F u, : 24
Διακριτός Μετασχηματισμός Fourier 2Δ- Θεώρημα Συνέλιξης Έστω ότι θέλουμε να γίνει η συνέλιξη ενός φίλτρου S στην εικόνα Ι δηλαδή: Ι*S. Αν η εικόνα είναι μεγάλης διάστασης μπορούμε να εφαρμόσουμε το θεώρημα συνέλιξης: Γεμίζουμε μηδενικά γύρω γύρο από το φίλτρο (padding) μέχρι να γίνει ίδιας διάστασης με την εικόνα Ι οπότε S S Υπολογίσουμε τους διακριτούς μετασχηματισμούς Fourier F Ι, F S καθώς και το γινόμενό τους F Ι F S στοιχείο προς στοιχείο Τέλος υπολογίζουμε τον αντίστροφο ΜF: F 1 F I Συνολικά I S = F 1 F I F S F S 25
Συζυγής Συμμετρία Συζυγή Συμμετρία στον ΔΜF Ο συζυγής ενός μιγαδικού αριθμού z = a + ib ορίζεται ως z = a ib Η συμμετρία σε έναν ΔΜF όπου έχουμε μετακινήσει τον DC συντελεστή στο κέντρο. Η συμμετρία αυτή σημαίνει ότι μισές από τις πράξεις που κάνουμε για τον υπολογισμό του ΔΜF είναι περιττές! 26
Ο συντελεστής DC του ΔΜF Είναι η τιμή F(0,0) του ΔΜF. Θέτοντας u=v=0 F 0,0 = M 1 x=0 F 0,0 = N 1 [e y=0 M 1 N 1 F 0,0 = 2πi 0 x M +0 y N ] f(x, y) x=0 y=0 M 1 N 1 x=0 [e 0 ] f(x, y) y=0 f(x, y) Δηλαδή το άθροισμα όλων των τιμών της εικόνας 27
Ο συντελεστής DC του ΔΜF Για λόγους απεικόνισης (display) είναι σύνηθες να έχουμε τον συντελεστή DC του ΔΜFστο κέντρο της εικόνας. Αυτό γίνεται αν πριν τον μετασχηματισμό πολλαπλασιάσουμε όλα τα στοιχεία του πίνακα f(x,y) με ( 1) x+y An FFT After shifting 28
Διακριτός Μετασχηματισμός Fourier με Matlab fft2: Μας δίνει τον ΔΜF ενός πίνακα ifft2 : Μας δίνει τον αντίστροφο ΔΜF ενός πίνακα fftshift: Μετασχηματίζει τον ΔΜΦ ώστε ο DC συντελεστής να είναι στο κέντρο της εικόνας Για μιγαδικούς το abs(x) μας δίνει το μέτρο των μιγαδικών στοιχείων του πίνακα X. Το imshow(mat2gray(abs(cf))) μας δείχνει τα μέτρα των τιμών χωρίς να γίνει scaling 29
Οπτικοποίηση ΔΜF με Matlab Ο ΔΜF είναι πίνακας μιγαδικών οπότε απεικονίζουμε το μέτρο του με την εντολή abs της matlab. Ο συντελεστής DC (άθροισμα όλων) έχει τεράστια τιμή σε σχέση με τις υπόλοιπες του ΔΜF. Συνήθψς κάνουμε πρώτα την μετατόπιση που περιγράψαμε πριν. Για να οπτικοποιήσουμε ένα ΔΜF στη Matlab ο ποιο συνηθισμένος τρόπος είναι να πάρουμε πρώτα το λογάριθμο του ΔΜF και στη συνέχεια να γίνει οτπικοποίηση. Επειδή θα έχουμε πολύ υψηλές τιμές θα χρησιμοποιήσουμε την εντολή mat2gray για να τις φέρουμε από 0 έως 1. Στην επόμενη διαφάνεια δίνεται παράδειγμα σε matab 30
Παράδειγμα: Οπτικοποίηση ΔΜF με Matlab c=imread('cameraman.tif'); cf1=fft2(c); cf=fftshift(fft2(c)); Matlab cfnormal1=mat2gray(log(1+abs(cf1))); cfnormal=mat2gray(log(1+abs(cf))); subplot(1,3,1), imshow(c), title('original Image'); subplot(1,3,2), imshow(cfnormal1), title('dft Image'); subplot(1,3,3), imshow(cfnormal), title('dft Image shifted'); 31
Η μορφή της εικόνας στο πεδίο συχνοτήτων Αριστερά φαίνεται το συχνοτικό περιεχόμενο του DFT (συγκέντρωση ενέργειας γύρω από το (0,0)) lenna Λογαριθμική απεικόνιση του πλάτους του DFT 32
Διακριτός Μετασχηματισμός Fourier (ΔΜF) 2Δ Αν έχουμε μια εικόνα ΜxΝ: f x, y, 0 x M 1, 0 y N 1 Ο Διακριτός μετασχηματισμός Fourier μας δίνει την F(u, v) όπου F u, v = M 1 x=0 N 1 y=0 [e 2πi xu M +yv N ] f(x, y) Είναι επίσης ένα πίνακας διαστάσεων ΜxΝ όπου και πάλι: F u, v, 0 u M 1, 0 v N 1 33
Διακριτός Μετασχηματισμός Fourier (ΔΜF) 2Δ Στη πραγματικότητα η μέγιστη οριζόντια συχνότητα που μπορεί να περιέχεται σε μια ψηφιακή εικόνα Μ γραμμές x N στήλες είναι Ν/2 (ένας κύκλος τιμών φωτεινότητας ή χρώματος της εικόνας ολοκληρώνεται εντός δύο pixel). Ομοίως η μέγιστη κάθετη συχνότητα που μπορεί να περιέχεται σε μια ψηφιακή εικόνα Μ x N είναι Μ/2. Nicolas Tsapatsoulis, Βελτίωση Ποιότητας Εικόνας: Επεξεργασία στο πεδίο της Συχνότητας, Lecture notes in Digital Image Processing 2005. 34
Διακριτός Μετασχηματισμός Fourier (ΔΜF) 2Δ Ο ΔΜF που προκύπτει είναι ένας πίνακας με μιγαδικούς αριθμούς (a + ib όπου ) οπότε μπορούμε να τον χωρίσουμε σε πραγματικά και φανταστικά μέρη: R(u, v) = Real F u, v και I(u, v) = Imag(F(u, v)) Ο ΔΜFμίας εικόνας μπορεί να γραφτεί σαν άθροισμα ενός πραγματικού και ενός φανταστικού πίνακα: F u, v = R u, v + i I u, v όπου i = 1 Επειδή εικόνες με μιγαδικές τιμές pixel δεν έχουν κανένα φυσικό νόημα, απεικονίζουμε και δουλεύουμε συνήθως με την Απόλυτη τιμή του ΔΜF: abs(f u, v ) = F(u, v) = R 2 u, v + I 2 u, v 35
Διακριτός Μετασχηματισμός Fourier 2Δ Μέτρο ή Απόλυτη τιμή: Φαση: F(u, v) = R 2 u, v + I 2 u, v I u, v φ u, v = tan 1 R(u, v) = arctan I u, v R(u, v) Εκθετική μορφή: F u, v = F(u, v) e iφ(u,v) Ισχύς του φάσματος του σήματος σε κάθε συχνότητα (Power spectrum): P u, v = F(u, v) 2 36
Ποιοτικές Ιδιότητες Μετασχηματισμού Fourier Μερικές φορές είναι εύκολο να χάσουμε την έννοια του DFT και του περιεχομένου συχνότητας της εικόνας για χάρη των μαθηματικών. Ο DFT αποτελεί μια περιγραφή των περιεχόμενων συχνοτήτων σε μια εικόνα Κοιτάζοντας το DFT ή το φάσμα μιας εικόνας (απεικόνιση του μέτρου του DFT της εικόνας), μπορούμε να προσδιορίσουμε πολλά στοιχεία σχετικά με την εικόνα. Οι φωτεινές περιοχές στην DFT εικόνα αντιστοιχούν στις συχνότητες οι οποίες έχουν μεγάλο μέτρο (ισχύ) στην πραγματική εικόνα. Μεγάλες τιμές κοντά στο κέντρο του (μετατοπισμένου) DFT αντιστοιχούν σε μεγάλες ομαλές περιοχές της εικόνας ή σε ισχυρά φωτεινό φόντο. Από τη στιγμή που οι εικόνες είναι θετικές (τιμές φωτεινότητας ή χρώματος στο διάστημα [0 255]), κάθε εικόνα έχει μια μεγάλη κορυφή στο (u, v) = (0, 0) που είναι ανάλογη με τη μέση φωτεινότητα της εικόνας Nicolas Tsapatsoulis, Βελτίωση Ποιότητας Εικόνας: Επεξεργασία στο πεδίο της Συχνότητας, Lecture notes in Digital Image Processing 2005. 37
Διακριτός Μετασχηματισμός Fourier (ΔΜF) 2Δ Για τον υπολογισμό του ΔΜF μιας εικόνας, χρησιμοποιούμε συνήθως τον αλγόριθμο FFT (Fast Fourier Transform). O FFT είναι ένας αποδοτικός, υπολογιστικά, αλγόριθμος ο οποίος βοηθάει το φιλτράρισμα να μπορεί να γίνει πολύ πιο γρήγορα σε σχέση με το χωρικό πεδίο. Είναι ένας από τους πλέον δημοφιλείς και χρησιμοποιούμενους αλγορίθμους. Στη Matlab ο δισδιάστατος DFT, μιας εικόνας f, υπολογίζεται με την εντολή F = fft2(f). 38
Διακριτός Μετασχηματισμός Fourier με Matlab fft2: Μας δίνει τον ΔΜF ενός πίνακα ifft2 : Μας δίνει τον αντίστροφο ΔΜF ενός πίνακα fftshift: Μετασχηματίζει τον ΔΜΦ ώστε ο DC συντελεστής να είναι στο κέντρο της εικόνας Για μιγαδικούς το abs(x) μας δίνει το μέτρο των μιγαδικών στοιχείων του πίνακα X. Το imshow(mat2gray(abs(cf))) μας δείχνει τα μέτρα των τιμών χωρίς να γίνει scaling 39
Οπτικοποίηση ΔΜF με Matlab Ο ΔΜF είναι πίνακας μιγαδικών οπότε απεικονίζουμε το μέτρο του με την εντολή abs της matlab. Ο συντελεστής DC (άθροισμα όλων) έχει τεράστια τιμή σε σχέση με τις υπόλοιπες του ΔΜF. Συνήθψς κάνουμε πρώτα την μετατόπιση που περιγράψαμε πριν. Για να οπτικοποιήσουμε ένα ΔΜF στη Matlab ο ποιο συνηθισμένος τρόπος είναι να πάρουμε πρώτα το λογάριθμο του ΔΜF και στη συνέχεια να γίνει οτπικοποίηση. Επειδή θα έχουμε πολύ υψηλές τιμές θα χρησιμοποιήσουμε την εντολή mat2gray για να τις φέρουμε από 0 έως 1. 40
Παράδειγμα: Οπτικοποίηση ΔΜF με Matlab I=imread('cameraman.tif'); F1=fft2(I); F2=fftshift(fft2(I)); Matlab cfnormal1=mat2gray(log(1+abs(f1))); cfnormal=mat2gray(log(1+abs(f2))); subplot(1,3,1), imshow(i), title('original Image'); subplot(1,3,2), imshow(cfnormal1), title('dft Image'); subplot(1,3,3), imshow(cfnormal), title('dft Image shifted'); 41
Φιλτράρισμα στο πεδίο συχνοτήτων 42
Φιλτράρισμα στο χώρο της Συχνότητας με ΔΜF 2Δ Input Image f(x,y) Fourier Transform F(u,v) Filter Function H(u,v) Filtering H(u,v) F(u,v) Inverse Fourier Transform Filtered Image g(x,y) Βασικά Βήματα στο φιλτράρισμα στο πεδίο συχνοτήτων Στη χωρική επεξεργασία εικόνας με χρήση μάσκας η μάσκα εφαρμόζεται επαναληπτικά σε όλα τα pixel της εικόνας. Η διαδικασία αυτή είναι γνωστή ως συνέλιξη και συμβολίζεται με *. Για παράδειγμα το αποτέλεσμα g(x,y) της χωρικής επεξεργασίας της εικόνας f(x,y) με τη μάσκα h(x,y) ορίζεται ως: g(x,y) = f(x,y)*h(x,y) Από τις ιδιότητες του μετασχηματισμού Fourier προκύπτει ότι το ίδιο αποτέλεσμα μπορεί να προκύωει με πολλαπλασιασμό των επιμέρους ΔΜF και μετά αντιστροφή στο χωρικό πεδίο: g(x,y) = IDFT{F(u,v) H(u,v)} Nicolas Tsapatsoulis, Βελτίωση Ποιότητας Εικόνας: Επεξεργασία στο πεδίο της Συχνότητας, Lecture notes in Digital Image Processing 2005. 43
Συμμετρία Μετασχηματισμού Fourier Από τις ιδιότητες του DFT προκύπτει ότι ο DFT μιας εικόνας περιέχει πλεονασματικές πληροφρίες, δηλαδή έχουμε τις ίδιες πληροφορίες περισσότερες από μία φορές (συμμετρία). Το επόμενο σχήμα παρουσιάζει τις συμμετρίες που ισχύουν στο μέτρο του DFT μιας εικόνας Συμμετρία ως προς το μέσο (συχνότητα (u,v)=(μ/2,ν/2)) Βλέπε σχήμα στα αριστερά Η κατανομή των συχνοτήτων του DFT φαίνεται στο σχήμα στο κέντρο Πολλές φορές όμως για καλύτερη οπτική απεικόνιση θεωρούμε απεικόνιση με κέντρο των αξόνων το μέσο του πίνακα (εντολή fftshift στη Matlab) - Βλέπε σχήμα στα δεξιά (0, 0) v (0, 0) low freqs v low freqs (0, N-1) (-N/2, -N/2) high v high (-N/2, N/2) u u high freqs u low low freqs low freqs high high (N-1, 0) (N-1, N-1) (N/2, -N/2) (N/2, N/2) Nicolas Tsapatsoulis, Βελτίωση Ποιότητας Εικόνας: Επεξεργασία στο πεδίο της Συχνότητας, Lecture notes in Digital Image Processing 2005. 44
Φιλτράρισμα στο χώρο της Συχνότητας (IΧ) Ορίζοντας κατευθείαν στο χώρο της συχνότητας τους πίνακες H μπορούμε να επεξεργαστούμε συγκεκριμένες περιοχές συχνοτήτων Υψιπερατό φιλτράρισμα => αποκοπή χαμηλών συχνοτήτων (π.χ. χρήση για ανάδειξη ακμών) Χαμηλοπερατό φιλτράρισμα => αποκοπή υψηλών συχνοτήτων (π.χ. χρήση για απαλοιφή θορύβου, λείανση εικόνας) Ζωνοφρακτικό φιλτράρισμα => αποκοπή ενδιάμεσων συχνοτήτων (π.χ. απαλοιφή θορύβου συγκεκριμένων συχνοτήτων όπως σε περιπτώσεις αποκατάστασης εικόνας) H για ζωνοφρακτικό φιλτράρισμα H για υψιπερατό φιλτράρισμα H για χαμηλοπερατό φιλτράρισμα 45
ΔΜF: Χαμηλοπερατά Φίλτρα-Ιδεατό Digital Image Processing, Rafael C.Gonzalez & Richard E. Woods, Addison-Wesley, 3rd edition Το ιδεατό χαμηλοπερατό φίλτρο (IDLPF) έχει συνάρτηση μεταφοράς Η (μετασχηματισμό Fourier της μάσκας h) της μορφής: 1, D( u, v) D H( u, v) 0, D( u, v) D 0 0 Η επιλογή της τιμής του D 0 στο ιδεατό χαμηλοπερατό φίλτρο καθορίζει πόση από τη συνολική ισχύ της εικόνας θέλουμε να διατηρήσουμε!! Όπου D(u,v) είναι η απόσταση του σημείου με συχνότητες (u,v) από το σημείο (0,0), και D 0 είναι ένας θετικός αριθμός (συχνά αναφέρεται ως ακτίνα του χαμηλοπερατού φίλτρου) 46
ΔΜF: Χαμηλοπερατά Φίλτρα-Ιδεατό Για να φιλτράρουμε στο πεδίο συχνοτήτων πρώτα δημιουργούμε μια σφαίρα στο κέντρο της εικόνας, η οποία ανάλογα με την ακτίνα της μπορεί να κρατήσει συγκεκριμένες συχνότητες: [x,y]=meshgrid(-128:127,-128:127); z=sqrt(x.^2+y.^2); c=(z<15); figure, surf(double(c)), shading interp, colormap jet figure, imshow(c) Matlab 47
ΔΜF: Χαμηλοπερατά Φίλτρα-Ιδεατό Στη συνέχεια διαβάζουμε την εικόνα cameraman.tif στη matlab και υπολογίζουμε τον ΔΜF της εικόνας I με την εντολή fft2 της matlab. Επιπλέον εφαρμόζουμε την εντολή fftshift για να έχουμε στο κέντρο τον DC συντελεστή όπως έχουμε εξηγήσει και προκύπτει ο πίνακας F με τον ΔΜF της εικόνας: I=imread('cameraman.tif'); F=fftshift(fft2(I)); Matlab Στη συνέχεια πολλαπλασιάζουμε τη κυκλική μάσκα c ακτίνας 15 pixel με τον F έτσι ώστε να κρατήσουμε χαμηλές συχνότητες στο κέντρο του F: cf=f.*c; figure, imshow(mat2gray(log(1+abs(cf)))); 48
ΔΜF: Χαμηλοπερατά Φίλτρα-Ιδεατό Τέλος υπολογίζουμε τον διακριτό, αντίστροφο μετασχηματισμό F της cf, δηλαδή της εικόνας με τις φιλτραρισμένες συχνότητες με την εντολή ifft2 της matlab: IcF=ifft2(cF); Επειδή η εικόνα που προκύπτει έχει max(max(icf))=235.3163 και min(min(icf)) = - 233.8695, αλλά και για δώσουμε μια καλύτερη οπτικοποίηση (η αλληλουχία fft2 και ifft2 οδηγεί σε σφάλματα), επιλέγω να πάρω πρώτα τις απόλυτες τιμές της IcF (αν και είμαστε πίσω στο χωρικό πεδίο) και μετά να χρησιμοποιήσω το mat2gray της matlab για να μετασχηματιστούν όλες οι τιμές από 0 εως 1 και στη συνέχεια να οπτικοποιηθούν: figure, imshow(mat2gray(abs(icf))) Με την εντολή subplot δείχνουμε όλα τα βήματα-αποτελέσματα του χαμηλοπερατού φιλτραρίσματος με ΔΜF: subplot(2,2,1);imshow(i,[]), title('original Image'); subplot(2,2,2);imshow(mat2gray(log(1+abs(f)))), title('dft of Image'); subplot(2,2,3);imshow(mat2gray(log(1+abs(cf)))), title('lowpass mask'); subplot(2,2,4); imshow(mat2gray(abs(icf))), title('filtered Image'); Matlab 49
ΔΜF: Χαμηλοπερατά Φίλτρα-Ιδεατό Matlab 50
ΔΜF: Χαμηλοπερατά Φίλτρα-Ιδεατό [x,y]=meshgrid(-128:127,-128:127); z=sqrt(x.^2+y.^2); c1=(z<10); c2=(z<35); Matlab I=imread('cameraman.tif'); F=fftshift(fft2(I)); cf1=f.*c1; cf2=f.*c2; IcF1=ifft2(cF1); IcF2=ifft2(cF2); subplot(2,4,1);imshow(i,[]), title('original Image'); subplot(2,4,2);imshow(mat2gray(log(1+abs(f)))), title('dft of Image'); subplot(2,4,3);imshow(mat2gray(log(1+abs(cf1)))), title('lowpass mask cutoff 10'); subplot(2,4,4);imshow(mat2gray(log(1+abs(cf2)))), title('lowpass mask cutoff 35'); subplot(2,4,6);imshow(mat2gray(abs(icf1))), title('filtered with mask cutoff 10'); subplot(2,4,7);imshow(mat2gray(abs(icf2))), title('filtered with mask cutoff 35'); 51
ΔΜF: Χαμηλοπερατά Φίλτρα-Ιδεατό Matlab 52
ΔΜF: Χαμηλοπερατά Φίλτρα Οι συναρτήσεις της matlab fft2 kai ifft2 δίνουν αριθμητικές προσεγγίσεις και περιχέουν, αναπόφευκτα, σφάλματα. Για αυτό το λόγο μετά από τον αντίστροφο ΔΜF χρησιμοποιούμε το imshow στις απόλυτες τιμές του πίνακα (abs) επιδιώκοντας να στρογγυλέψουμε σφάλματα που προκύπτουν κατά τον μετασχηματισμό και την αντιστροφή του. Στο ιδεατό φίλτρο υπάρχουν σφάλματα (με τη μορφή δαχτυλιδιού) από το κέντρο της φιλτραρισμένης εικόνας και προς τα έξω. Αυτά οφείλονται στην απόκριση του ιδεατού φίλτρου λόγω των απότομων ακμών του: Matlab [x,y]=meshgrid(-128:127,-128:127); z=sqrt(x.^2+y.^2); c=(z<15); cf=fftshift(fft2(c)); imshow(mat2gray(log(1+abs(cf)))) b=1./(1+(z./15).^2); figure, imshow(b) cf=fftshift(fft2(b)); imshow(mat2gray(log(1+abs(cf)))) Το πρόβλημα λύνεται με τη χρήση φίλτρων Butterworth που έχουν ομαλή μετάβαση εντάσεων στην περιφέρεια του κύκλου. 53
ΔΜF: Χαμηλοπερατά φίλτρα Butterworth Matlab Digital Image Processing, Rafael C.Gonzalez & Richard E. Woods, Addison-Wesley, 3rd edition Τα ιδεατά χαμηλοπερατά φίλτρα δεν είναι υλοποιήσιμα με υλικό. Επιπλέον δημιουργούν εικόνες με δακτυλίδια (ringing effect) εξαιτίας της απότομης μεταβολής μεταβολής της Hideal από την τιμή 1 στη τιμή 0. Τα χαμηλοπερατά φίλτρα Butterworth (BLPF) έχουν συνάρτηση μεταφοράς Η της μορφής (n είναι η τάξη του φίλτρου): 1 H ( u, v) 2n 1 D( u, v) D0 54
ΔΜF: Χαμηλοπερατά φίλτρα Butterworth n=1 [x,y]=meshgrid(-128:127,-128:127); c1=1./(1+((x.^2+y.^2)/15^2)); c2=1./(1+((x.^2+y.^2)/35^2)); Matlab I=imread('cameraman.tif'); F=fftshift(fft2(I)); cf1=f.*c1; cf2=f.*c2; IcF1=ifft2(cF1); IcF2=ifft2(cF2); subplot(2,4,1);imshow(i,[]), title('original Image'); subplot(2,4,2);imshow(mat2gray(log(1+abs(f)))), title('dft of Image'); subplot(2,4,3);imshow(mat2gray(log(1+abs(cf1)))), title('lowpass mask cutoff 15'); subplot(2,4,4);imshow(mat2gray(log(1+abs(cf2)))), title('lowpass mask cutoff 35'); subplot(2,4,6);imshow(mat2gray(abs(icf1))), title('filtered with mask LP15'); subplot(2,4,7);imshow(mat2gray(abs(icf2))), title('filtered with mask LP 35'); 55
ΔΜF: Χαμηλοπερατά φίλτρα Butterworth n=1 [x,y]=meshgrid(-128:127,-128:127); c1=1./(1+((x.^2+y.^2)/15^2)); c2=1./(1+((x.^2+y.^2)/35^2)); I=imread('cameraman.tif'); F=fftshift(fft2(I)); cf1=f.*c1; cf2=f.*c2; IcF1=ifft2(cF1); IcF2=ifft2(cF2); subplot(2,4,1);imshow(i,[]), title('original Image'); subplot(2,4,2);imshow(mat2gray(log(1+abs(f)))), title('dft of Image'); subplot(2,4,3);imshow(mat2gray(log(1+abs(cf1)))), title('lowpass mask cutoff 15'); subplot(2,4,4);imshow(mat2gray(log(1+abs(cf2)))), title('lowpass mask cutoff 35'); subplot(2,4,6);imshow(mat2gray(abs(icf1))), title('filtered with mask LP15'); subplot(2,4,7);imshow(mat2gray(abs(icf2))), title('filtered with mask LP 35'); Matlab 56
57 Τα χαμηλοπερατά φίλτρα Gauss (GLPF) έχουν συνάρτηση μεταφοράς Η της μορφής (D 0 είναι η τυπική απόκλιση του φίλτρου): 2 0 ), ( 0.5 ), ( D v u D e v u H Χαμηλοπερατά Φίλτρα: Φίλτρα Gauss Digital Image Processing, Rafael C.Gonzalez & Richard E. Woods, Addison-Wesley, 3rd edition
Χαμηλοπερατά Φίλτρα: Φίλτρα Gauss Digital Image Processing, Rafael C.Gonzalez & Richard E. Woods, Addison-Wesley, 3rd edition 58
ΔΜF: Υψιπερατά Φίλτρα Υψιπερατά φίλτρα είναι φίλτρα τα οποία χρησιμοποιούνται για την ανάδειξη ακμών στις εικόνες Ο απλόυστερος τρόπος για τον υπολογισμό της συνάρτησης μεταφοράς ενός υψιπερατού φίλτρου είναι χρησιμοποιώντας τη σχέση Η high =1-H low όπου Η low η συνάρτηση μεταφοράς του αντίστοιχου χαμηλοπερατού φίλτρου., Digital Image Processing, Rafael C.Gonzalez & Richard E. Woods, Addison-Wesley, 3rd edition 59
ΔΜF: Υψιπερατά Φίλτρα Με βάση τη προηγούμενη σχέση έχουμε: IHPF (Ideal High Pass Filter): H IHPF = 1 - H ILPF BHPF (Butterworth High Pass Filter): H BHPF = 1 - H BLPF GHPF (Gauss High Pass Filter): H GHPF = 1 - H GLPF Η μορφή των αντίστοιχων φίλτρων φαίνεται στο διπλανό σχήμα Digital Image Processing, Rafael C.Gonzalez & Richard E. Woods, Addison-Wesley, 3rd edition Digital Image Processing, Rafael C.Gonzalez & Richard E. Woods, Addison-Wesley, 3rd edition 60
ΔΜF: Υψιπερατά Φίλτρα-ιδεατά [x,y]=meshgrid(-128:127,-128:127); z=sqrt(x.^2+y.^2); c1=(z>10); c2=(z>35); Matlab I=imread('cameraman.tif'); F=fftshift(fft2(I)); cf1=f.*c1; cf2=f.*c2; IcF1=ifft2(cF1); IcF2=ifft2(cF2); subplot(2,4,1);imshow(i,[]), title('original Image'); subplot(2,4,2);imshow(mat2gray(log(1+abs(f)))), title('dft of Image'); subplot(2,4,3);imshow(mat2gray(log(1+abs(cf1)))), title('highpass mask cutoff 10'); subplot(2,4,4);imshow(mat2gray(log(1+abs(cf2)))), title('highpass mask cutoff 35'); subplot(2,4,6);imshow(mat2gray(abs(icf1))), title('filtered with mask HP10'); subplot(2,4,7);imshow(mat2gray(abs(icf2))), title('filtered with mask HP 35'); 61
ΔΜF: Υψιπερατά Φίλτρα-ιδεατά [x,y]=meshgrid(-128:127,-128:127); z=sqrt(x.^2+y.^2); c1=(z>10); c2=(z>35); Matlab I=imread('cameraman.tif'); F=fftshift(fft2(I)); cf1=f.*c1; cf2=f.*c2; IcF1=ifft2(cF1); IcF2=ifft2(cF2); subplot(2,4,1);imshow(i,[]), title('original Image'); subplot(2,4,2);imshow(mat2gray(log(1+abs(f)))), title('dft of Image'); subplot(2,4,3);imshow(mat2gray(log(1+abs(cf1)))), title('highpass mask cutoff 10'); subplot(2,4,4);imshow(mat2gray(log(1+abs(cf2)))), title('highpass mask cutoff 35'); subplot(2,4,6);imshow(mat2gray(abs(icf1))), title('filtered with mask HP10'); subplot(2,4,7);imshow(mat2gray(abs(icf2))), title('filtered with mask HP 35'); 62
Αποκατάσταση εικόνας στο πεδίο συχνοτήτων 63
Περιεχόμενα Διάλεξης Η έννοια της αποκατάστασης εικόνας Τυχαίος, περιοδικός θόρυβος σε εικόνα Τεχνικές απομάκρυνσης με ζωνοπερατά φίλτρα στο πεδίο συχνοτήτων Παραδείγματα Matlab Για την καλύτερη παρακολούθηση έχουμε 3 ειδών διαφάνειες: Βασική πληροφορία (για προπτυχιακούς), Παραδείγματα Matlab για προπτυχιακούς και προχωρημένα ερευνητικά θέματα (research) Basic Matlab Research 64
Αποκατάσταση Εικόνας Όπως και στην βελτίωση της εικόνας, ο κύριος στόχος των τεχνικών αποκατάστασης είναι η βελτίωση της εικόνας με βάση κάποια προκαθορισμένα κριτήρια βελτίωσης Υπάρχουν περιοχές επικάλυψης με την βελτίωση εικόνας (π.χ. με φιλτράρισμα στο χωρικό ή συχνοτικό πεδίο) Η διαφορά είναι ότι η βελτίωση εικόνας είναι σε μεγάλο βαθμό μια υποκειμενική διαδικασία, ενώ η αποκατάσταση της εικόνας είναι στο μεγαλύτερο μέρος μια αντικειμενική διαδικασία. 65
Αποκατάσταση Εικόνας Η Αποκατάσταση προσπαθεί να ανακτήσει μια εικόνα που έχει αλλοιωθεί χρησιμοποιώντας όσο το δυνατό περισσότερη γνώση σχετικά με τη διαδικασία αλλοίωσης. Έτσι, οι τεχνικές αποκατάστασης προσανατολίζονται προς μοντελοποίηση της διαδικασίας αλλοίωσης και εν συνεχεία εφαρμογής της «αντίστροφης διαδικασίας» για να ανακτήσουμε την αρχική εικόνα. Οι τεχνικές αποκατάστασης γίνονται είτε στο χωρικό ή στο συχνοτικό πεδίο ανάλογα την εφαρμογή. 66
Αποκατάσταση Εικόνας Για παράδειγμα το να βελτιώσουμε μια εικόνα με φιλτράρισμα, βελτίωση ιστογράμματος γίνεται πρωτίστως για να πετύχουμε καλύτερο οπτικό αποτέλεσμα. Η αποκατάσταση όπως για παράδειγμα απομάκρυνση θολώματος βάση κάποιο μοντέλου είναι περισσότερο μια αντικειμενική επεξεργασία. Στην αποκατάσταση παίζουν βασικό ρόλο όλο το «απεικονιστικό σύστημα» (π.χ. αισθητήρας, digitizer, display) και γι αυτό το λόγο θα δούμε μόνο κάποια βασικά πράγματα που αφορούν την επεξεργασία. 67
Αποκατάσταση Εικόνας Σχηματικό διάγραμμα της διαδικασίας αλλοίωσης και αποκατάστασης: f(x, y) είναι η αρχική εικόνα στην οποία επεμβαίνουν ο θόρυβος n(x, y) και η συνάρτηση αλλοίωσης Η δημιουργώντας την εικόνα g(x, y). Σκοπός μας είναι να μπορέσουμε να αποκαταστήσουμε όσο το δνατόν περισσότερο την εικόνα f (x, y) εκτιμώντας την εικόνα f (x, y)) με χρήση τεχνικών-φιλτρων αποκατάστασης. g(x, y) Θόρυβος n(x,y) f (x, y) Φίλτρα Αποκατάστασης Digital Image Processing, Rafael C.Gonzalez & Richard E. Woods, Addison-Wesley, 3rd edition Συνάρτηση αλλοίωσης H f(x, y) 68
Αποκατάσταση Εικόνας Αν η συνάρτηση αλλοίωσης H είναι μια γραμμική διαδικασία ανεξάρτητη θέσης, τότε η αλλοιωμένη εικόνα μπορεί να υποτεθεί ότι είναι: g x, y = h x, y f x, y + n(x, y) Με δεδομένο ότι η συνέλιξη στο χωρικό πεδίο ισοδυναμεί με πολλαπλασιασμό στο πεδίο συχνοτήτων η ισοδύναμη αναπαράσταση στο πεδίο συχνοτήτων θα δίνεται από τη σχέση: G(u, v) = H(u, v) F(u, v) + N(u, v) 69
Μοντέλα Θορύβου Gaussian noise: p(x) = 1 Rayleigh noise Gamma noise Exponential noise Uniform noise 2πσ e x x 2 /2σ 2 Impulse (salt-and-pepper) noise - (Κρουστικός θόρυβος salt-and-pepper) 70
Εκτίμηση Θορύβου Όταν υπάρχουν διαθέσιμες μόνο εικόνες που έχουν ήδη παραχθεί από έναν αισθητήρα, συχνά είναι δυνατόν να υπολογιστούν οι παράμετροι της PDF του θορύβου από μικρές λωρίδες εικόνας, με όσο το δυνατό περισσότερο σταθερής τιμή έντασης φόντο. Η απλούστερη χρήση των δεδομένων από τις λωρίδες εικόνας είναι για τον υπολογισμό της μέσης τιμής και διακύμανση των επιπέδων έντασης θεωρώντας μια λωρίδα ως υποεικόνα από την οποία εκτιμούμε την μέση τιμή και την διακύμανση των pixels. Το σχήμα του ιστογράμματος μας δείχνει το πλησιέστερο ταίριασμα PDF για να χαρακτηρίσουμε το θόρυβο. Αν το σχήμα είναι περίπου Gaussian, τότε η μέση τιμή και η διακύμανση είναι ό, τι χρειαζόμαστε, διότι η Gaussian PDF καθορίζεται πλήρως από αυτές τις δύο παραμέτρους, οπότε και μπορούμε να εκτιμήσουμε τη συνάρτηση του θορύβου. 71
Αποκατάσταση αν έχουμε μόνο θόρυβο με χωρικό φιλτράρισμα. Αν έχουμε μόνο θόρυβο οι εξισώσεις αλλοίωσηςς γίνονται: g x, y = f x, y + h x, y και στο συχνοτικό πεδίο: G(u, v) = F(u, v) + N(u, v) 72
Αποκατάσταση εικόνας παρουσία μόνο θορύβου Χωρικό φιλτράρισμα Μιας και δεν γνωρίζουμε τον θόρυβο δεν είναι πάντα ρεαλιστικό να μπορούμε να αφαιρέσουμε τον όρο του θορύβου [ h x, y ή N(u, v) ] στο πεδίο συχνοτήτων) από την εξίσωση για την αποκατάσταση της εικόνας. Η καλύτερη μέθοδος όταν έχουμε άγνωστο, τυχαίο θόρυβο είναι το χωρικό φιλτράρισμα όπως περιεγράφηκε στις Διαλέξεις 3-4. 73
Αποκατάσταση εικόνας παρουσία μόνο θορύβου με χωρικό φιλτράρισμα Η καλύτερη μέθοδος όταν έχουμε άγνωστο, τυχαίο θόρυβο είναι το χωρικό φιλτράρισμα όπως περιεγράφηκε στις Διαλέξεις 3-4. Αν S xy είναι το σύνολο των συντεταγμένων της εικόνας σε ένα παράθυρο m γραμμές x n στήλες Mean filter: f x, y = 1 m n (i,j) S(x,y) g(i, j) 74
Αποκατάσταση εικόνας παρουσία μόνο θορύβου με χωρικό φιλτράρισμα Geometric filter: f x, y = (i,j) S(x,y) g(i, j) 1 m n Harmonic: f x, y = m n 1 (i,j) S(x,y) g(i,j) Επίσης όλα τα φίλτρα κατάταξης που παρουσιάσαμε αναλυτικά στις διαλέξεις (mean, median, max, min) 75
Αποκατάσταση εικόνας παρουσία μόνο θορύβου Χωρικό φιλτράρισμα Digital Image Processing, Rafael C.Gonzalez & Richard E. Woods, Addison-Wesley, 3rd edition 76
Περιοδικός Θόρυβος Ο περιοδικός θόρυβος σε μια εικόνα προκύπτει συνήθως από ηλεκτρικές ή ηλεκτρομηχανικές παρεμβολές κατά τη διάρκεια της απόκτησης εικόνας. Είναι ο μόνος τύπος χωρικά εξαρτώμενος τύπος θορύβου που θα εξετάσουμε. Ο περιοδικός θόρυβος μπορεί να μειωθεί σημαντικά μέσω φιλτραρίσματος στο πεδίο των συχνοτήτων. 77
Περιοδικός Θόρυβος Οι παράμετροι του περιοδικού θορύβου τυπικά υπολογίζεται από την επιθεώρηση του φάσματος Fourier της εικόνας. Όπως σημειώνεται στην προηγούμενη ενότητα, ο περιοδικός θόρυβος τείνει να παράγει αιχμές συχνότητας που συχνά μπορεί να ανιχνευθούν ακόμα και με οπτική ανάλυση. Μια άλλη προσέγγιση είναι να συμπεράνουμε την περιοδικότητα των συνιστωσών θορύβου απευθείας από την εικόνα, αλλά αυτό είναι δυνατό μόνο σε απλές περιπτώσεις. 78
Αφαιρώντας Περιοδικό Θόρυβο στο πεδίο συχνοτήτων Ο περιοδικός θόρυβος μπορεί να αναλυθεί και να φιλτράρεται αρκετά αποτελεσματικά χρησιμοποιώντας τεχνικές στο πεδίο των συχνοτήτων. Η βασική ιδέα είναι ότι ο περιοδικός θόρυβος εμφανίζεται σαν συμπυκνωμένες εκρήξεις ενέργειας στο μετασχηματισμό Fourier, σε θέσεις που αντιστοιχούν στις συχνότητες της περιοδικής παρεμβολής. Η προσέγγιση είναι να χρησιμοποιούμε ένα επιλεκτικό φίλτρο (π.χ. bandreject, ζωνοπερατό) για την απομόνωση του θορύβου {για βασική μείωση περιοδικού θορύβου}. 79
Αφαιρώντας Περιοδικό Θόρυβο στο πεδίο συχνοτήτων Στην επόμενη διαφάνεια βλέπουμε bandreject φίλτρα για την ιδανική περίπτωση (ideal), Butterworth, και Gaussian bandreject φίλτρα. D(u, v) είναι η απόσταση του σημείου (u,v) από το κέντρο του συχνοτικού ορθογωνίου (P γραμμές, Q στήλες), όπως δίνεται από την εξίσωση: In matlab: D u, v = u P 2 2 + v Q 2 2 [x,y]=meshgrid(-128:127,-128:127); z=sqrt(x.^2+y.^2); figure, surf(z), shading interp, colormap bone 1 2 80
Αφαιρώντας Περιοδικό Θόρυβο στο πεδίο συχνοτήτων D(u, v) είναι η απόσταση του σημείου (u,v) από το κέντρο του συχνοτικού ορθογωνίου όπως δίνεται από την εξίσωση: D u, v = u P 2 2 + v Q 2 2 1 2 In matlab: [x,y]=meshgrid(-128:127,-128:127); z=sqrt(x.^2+y.^2); figure, surf(z), shading interp, colormap bone 81
Αφαιρώντας Περιοδικό Θόρυβο στο πεδίο συχνοτήτων Φίλτρα Bandreject. W είναι η απόσταση της μπάντας, D είναι η απόσταση D(u, v) από το κέντρο του φίλτρου, D 0 η συχν/οτητα αποκοπής και n η ταξη του φίλτρου Butterworth filter. Δείχνουμε το D αντί για D(u, v) Digital Image Processing, Rafael C.Gonzalez & Richard E. Woods, Addison-Wesley, 3rd edition 82
Αφαιρώντας Περιοδικό Θόρυβο στο πεδίο συχνοτήτων A bandpass filter is obtained from a bandreject filter in the same manner that we obtained a highpass filter from a lowpass filter: HBP(u, v) = 1 HBR(u, v) 83
Αφαιρώντας Περιοδικό Θόρυβο στο πεδίο συχνοτήτων (a) Image corrupted by sinusoidal noise (b) Spectrum of (a). Χρησιμοποιώντας το αντίστοιχο ζωνοπερατό φίλτρο (bandpass) και με αντίστροφο ΔΜF παίρνουμε αντί για την φιλτραρισμένη εικόνα, μια εικόνα που προσεγγίζει το μοτίβο του θορύβου στην αρχική εικόνα (α): (c) Butterworth bandreject filter (white represents 1). (d) Result of filtering. Digital Image Processing, Rafael C.Gonzalez & Richard E. Woods, Addison-Wesley, 3rd edition 84
Αφαιρώντας Περιοδικό Θόρυβο στο πεδίο συχνοτήτων %Μπορούμε εύκολα να δημιουργήσουμε περιοδικό θόρυβο από την επικάλυψη %μιας εικόνας με μια τριγωνομετρική συνάρτηση: cm=imread('cameraman.tif'); %Η δεύτερη γραμμή απλά δημιουργεί ένα ημιτονοειδές σήμα και ρυθμίζει την τιμή %του να είναι στο εύρος 0-2 [x,y]=meshgrid(1:256,1:256); s=1+sin(x+y/1.5); figure, surf(s), shading interp, colormap bone %Με την επόμενη γραμμή προσθέτουμε στην εικόνα το ημιτονικό σήμα και %διαιρούμε με 4 ώστε να έχουμε πινακα double με εύρος 0.0-1.0 cp=(double(cm)/128+s)/4; cpf=fftshift(fft2(cp)); subplot(1,3,1), imshow(cm) subplot(1,3,2), imshow(cp) subplot(1,3,3), imshow(mat2gray(log(1+abs(cpf)))) An Introduction to Digital Image Processing with Matlab, Alasdair McAndrew 85
Αφαιρώντας Περιοδικό Θόρυβο στο πεδίο συχνοτήτων Η αρχική εικόνα (αριστερά), η εικόνα με περιοδικό θόρυβο και ο αντίστοιχος ΔΜF (δεξιά) Οι επιπλέον δύο αιχμές μακριά από το κέντρο αντιστοιχεί στο θόρυβο που μόλις προσθέσαμε. Μικρές περίοδοι ημιτόνων αντιστοιχούν υψηλής συχνότητας παρεμβολές (μεγάλη αλλαγή σε μια μικρή απόσταση), και είναι ως εκ τούτου πιο μακριά από το κέντρο του μετατοπίστηκε μετασχηματισμό. figure, imshow(mat2gray(log(1+abs(cpf)))) Θα αφαιρέσουμε τώρα αυτές τις επιπλέον αιχμές, και μετά θα αντιστρέψουμε στο χωρικό πεδίο. Αν βάλουμε pixval και να κινηθεί γύρω από την εικόνα, διαπιστώνουμε ότι οι αιχμές έχουν συντεταγμένες ~ (156.170) και (102,88) και οι δύο έχουν απόσταση ~ 49 από το κέντρο. Με βάση αυτό φτιάχνουμε (επόμενη διαφάνεια) το Band reject filter. An Introduction to Digital Image Processing with Matlab, Alasdair McAndrew 86
Αφαιρώντας Περιοδικό Θόρυβο στο πεδίο συχνοτήτων %Band reject filtering. Δημιουργούμε ένα φίλτρο που %αποτελείται από αυτά με ένα δαχτυλίδι από μηδενικά %που βρίσκονται σε μια ακτίνα 49 από το κέντρο: [x,y]=meshgrid(-128:127,-128:127); z=sqrt(x.^2+y.^2); br=(z < 47 z > 51); figure,imshow(br) %όπου το z είναι η μήτρα που αποτελείται από %αποστάσεις από το κέντρο. Αυτό το συγκεκριμένο %δαχτυλίδι θα έχει ένα πάχος αρκετά μεγάλο για να %καλύψει τις αιχμές. Στη συνέχεια, όπως και πριν, το %πολλαπλασιάζουμε με τον ΔΜF: cpfbr=cpf.*br; figure, imshow(mat2gray(log(1+abs(cpfbr)))) An Introduction to Digital Image Processing with Matlab, Alasdair McAndrew 87
Αφαιρώντας Περιοδικό Θόρυβο στο πεδίο συχνοτήτων %Οπτικοποίηση τελικών αποτελεσμάτων cpfbr=cpf.*br; IF=ifft2(cpfbr); subplot(1,4,1), imshow(cm), title('original') subplot(1,4,2), imshow(cp), title('original with periodic noise') subplot(1,4,3), imshow(mat2gray(log(1+abs(cpf)))), title('fourier Filter') subplot(1,4,4), imshow(mat2gray(abs(if))), title('filtered Image') 88
Thank you for your attention! 89
Inverse Filtering G u, v = H u, v F u, v + N u, v The simplest approach to restoration is direct inverse filtering, where we compute an estimate F u, v of the transform of the original image by dividing the transform of thedegraded image G(u, v) by the degradation function H(u, v) : G(u, v) F u, v = H(u, v) (1)to(2) F u, v even if we know the degradation = 1 + N(u, v) H(u, v) function we cannot recover the undegraded image [the inverse Fourier transform of F u, v ] exactly because N(u, v) is not known If the degradation function H(u, v) has zero or very small values, then the ratio N(u,v) H(u,v) frequently the case, could easily dominate the estimate F u, v.this, in fact, is 90
Motion deblurring We can consider the removal of blur caused by motion to be a special case of inverse ltering. Suppose we take an image and blur it by a small amount. bc=imread('board.tif'); bg=im2uint8(rgb2gray(bc)); b=bg(100:355,50:305); imshow(b) These commands simply take the colour image of a circuit board (the image board.tif), makes a greyscale version of data type uint8, and picks out a square subimage. 91
Motion deblurring To blur it, we can use the blur parameter of the fspecial function. m=fspecial('motion',7,0); bm=imfilter(b,m); imshow(bm) The result of the blur has efectivdly obliterated the text on the image To deblur the image, we need to divide its transform by the transform corresponding to the blur filter. This means that we firstmust create a matrix corresponding to the transform of the blur: m2=zeros(256,256); m2(1,1:7)=m; mf=fft2(m2); Now we can attempt to divide by this transform. bmi=ifft2(fft2(bm)./mf); fftshow(bmi,'abs') 92
Motion deblurring As with inverse filtering, the result is not particularly good, because the values close to zero in the matrix mf have tended to dominate the result. As above, we can constrain the division by only dividing by values which are above a certain threshold. d=0.02; mf=fft2(m2);mf(find(abs(mf)<d))=1; bmi=ifft2(fft2(bm)./mf); imshow(mat2gray(abs(bmi))*2) where the last multiplication by 2 just brightens the result, which is shown The writing, especially in the centre of the image, is now quite legible. 93
Αναφορές Peters, Richard Alan, II, "The Fourier Transform", Lectures on Image Processing, Vanderbilt University, Nashville, TN, April 2008, Available on the web at the Internet Archive, http://www.archive.org/details/lectures_on_image_processing. Christophoros Nikou, Ανοικτά Ακαδημαϊκά Μαθήματα, Intensity Transformations (Histogram Processing), University of Ioannina - Department of Computer Science, cnikou@cs.uoi.gr http://ecourse.uoi.gr/course/view.php?id=1126 Digital Image Processing, Rafael C.Gonzalez & Richard E. Woods, Addison-Wesley, 3rd edition Digital Image Processing, Rafael C. Gonzalez & Richard E. Woods, Addison-Wesley, 2002 94
Αναφορές An Introduction to Digital Image Processing with Matlab, Alasdair McAndrew Nicolas Tsapatsoulis, Βελτίωση Ποιότητας Εικόνας: Επεξεργασία στο πεδίο της Συχνότητας, Lecture notes in Digital Image Processing, Image Processing Lectures, 2005. Digital Image Processing, Rafael C.Gonzalez & Richard E. Woods, Addison-Wesley, 3rd edition Digital Image Processing, Rafael C. Gonzalez & Richard E. Woods, Addison-Wesley, 2002 95