Kalatzis DSP Lecture - 3 2018 - 19

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 29

Τμήμα Μηχανικών Βιοϊατρικής

Πανεπιστήμιο Δυτικής Αττικής

Επεξεργασία Ιατρικού Σήματος

-3-
Φίλτρα συνέλιξης
στο πεδίο του χρόνου

Γιάννης Καλατζής
2019
Φίλτρα συνέλιξης στο πεδίο του χρόνου - Ι . Καλατζής 2019
1. ΠΕΡΙΕΧΟΜΕΝΟ ΕΝΟΣ ΣΗΜΑΤΟΣ
 Σε μια πρώτη θεώρηση, ένα σήμα αποτελείται από:
- μια γενική μορφή (αργές μεταβολές, χαμηλές συχνότητες),
- τις λεπτομέρειες (γρήγορες μεταβολές, υψηλές συχνότητες).

% Signal
N=100; n=[0:N-1];
A=1; f=2;
x1=A*sin(2*pi*f*n/N); % Sine
x2=(rand(1,N)-0.5)/4; % Noise
x3=x1+x2; % Signal
% Plots
hold on;
plot(n,x1,'r:');
plot(n,x2,'b');
plot(n,x3,'k');
axis([0 N -1.2 1.2]);
‹#›
Φιλτράρισμα συχνοτήτων
 Τα φίλτρα διέλευσης χαμηλών συχνοτήτων (βαθυπερατά, low-pass)
Φίλτρα συνέλιξης στο πεδίο του χρόνου - Ι . Καλατζής 2019

διατηρούν τη γενική μορφή του σήματος, αποκόπτοντας τις γρήγορες


αυξομειώσεις και τις λεπτομέρειες.
 Τα φίλτρα διέλευσης υψηλών συχνοτήτων (υψιπερατά, high-pass)
εξάγουν μόνο τις λεπτομέρειες του σήματος και καταστρέφουν τη
γενική μορφή του, ενώ μηδενίζουν και τη συνεχή συνιστώσα του (DC) .

Χαμηλές
Σήμα συχνότητες

Low-pass

High-pass
Υψηλές
συχνότητες

‹#›
Φίλτρα συνέλιξης στο πεδίο του χρόνου - Ι . Καλατζής 2019
2. ΕΞΟΜΑΛΥΝΣΗ
 Ένας τρόπος εξομάλυνσης των γρήγορων αυξομειώσεων σε ένα σήμα
είναι η αντικατάσταση κάθε τιμής του σήματος με το μέσο όρο αυτής
με τις γειτονικές της. Η μέθοδος αυτή λέγεται εξομάλυνση (smoothing).
𝑥 𝑛 − 1 + 𝑥 𝑛 + 𝑥[𝑛 + 1]
𝑦𝑛 =
3
ή
1 1 1
𝑦 𝑛 = 𝑥 𝑛 − 1 + 𝑥 𝑛 + 𝑥[𝑛 + 1]
3 3 3

% Signal
x = [0 3 6 3 6 9 6 9 3 6];
n = [0:length(x)-1];
% Smoothing by averaging
y(1) = (0+x(1)+x(2))/3;
for i=2:length(x)-1
y(i)=(x(i-1)+x(i)+x(i+1))/3;
end
y(10) = (x(9)+x(10)+0)/3;
% Plots
hold on;
plot(n,x,'bo-');
plot(n,y,'r*-');
grid on;
‹#›
Εξομάλυνση με χρήση συνέλιξης
 Παρατηρώντας την προηγούμενη σχέση παρατηρούμε ότι ο
1 1 1
Φίλτρα συνέλιξης στο πεδίο του χρόνου - Ι . Καλατζής 2019

μετασχηματισμός 𝑥 𝑛 → 𝑦 𝑛 = 3 𝑥 𝑛 − 1 + 3 𝑥 𝑛 + 3 𝑥 𝑛 + 1
μπορεί να πραγματοποιηθεί με τη βοήθεια συνέλιξης του x με ένα
σήμα με την παρακάτω κρουστική απόκριση (φίλτρο εξομάλυνσης):
1 1 1
ℎ𝑆𝑚𝑜𝑜𝑡ℎ = , , = 1,1,1 /3
3 3 3

% Signal
x = [0 3 6 3 6 9 6 9 3 6];
nx = [0:length(x)-1];
% Smoothing filter
h = [1 1 1]/3;
% Smoothing by convolution
y = conv(x,h,'same');
ny = [0:length(y)-1];
% Plots
hold on;
plot(nx,x,'bo-');
plot(nx,y,'r*-');
grid on;``

 Παρατηρούμε ότι το φιλτραρισμένο σήμα διατηρεί τη γενική μορφή του


αρχικού σήματος, ενώ έχουν ελαττωθεί οι έντονες διακυμάνσεις.
‹#›  Εφαρμογή: Ελάττωση θορύβου.
Παράδειγμα εξομάλυνσης
 Παράδειγμα εξομάλυνσης σήματος με το φίλτρο ℎ = 1,1,1 /3
Φίλτρα συνέλιξης στο πεδίο του χρόνου - Ι . Καλατζής 2019

% Signal
Nx=100; nx=[0:Nx-1];
A=1; f=2;
x1=A*sin(2*pi*f*nx/Nx); % Sine wave
x2=(rand(1,Nx)-0.5)/4; % Noise
x=x1+x2; % Signal
plot(nx,x1,'r:'); hold on;
plot(nx,x2,'b'); plot(nx,x,'k');
% Filter
h = [1 1 1]; h = h/sum(h); % Low-pass filter
Nh =length(h); nh = [0:Nh-1];
subplot(2,2,1); hold on;
plot(nx,x1,'k'); plot(nx,x2,'k');
plot(nx,x,'b');
subplot(2,2,2); stem(nh,h,'ro-');
% Filtering by convolution
y = conv(x,h,'same');
Ny = length(y); ny = [0:Ny-1];
subplot(2,2,[3 4]);
plot(nx,x,'b'); hold on;
‹#› stem([-Nh+nh+1:nh],fliplr(h),'r.-');
plot(ny,y,'r');
H εξομάλυνση ως βαθυπερατό φίλτρο
 Η εξομάλυνση ελαττώνει τις ταχείες αυξομειώσεις του σήματος, χωρίς
Φίλτρα συνέλιξης στο πεδίο του χρόνου - Ι . Καλατζής 2019

να επηρεάζει τις αργές μεταβολές της γενικής μορφής του. Αυτό


σημαίνει ότι η εξομάλυνση λειτουργεί ως βαθυπερατό φίλτρο, κάτι
που αποδεικνύεται από το φάσμα συχνοτήτων του σήματος μετά την
εξομάλυνση.
 Άλλες μορφές του φίλτρου εξομάλυνσης (βλ. επόμενη διαφάνεια):
- Περισσότερα σημεία: Οδηγούν σε μεγαλύτερη εξομάλυνση (αλλά
μπορεί να χαθεί χρήσιμη πληροφορία). Π.χ. h = {1,1,1,1,1}/5
- Μεγαλύτερη τιμή του κεντρικού συντελεστή: Οδηγεί σε μικρότερη
εξομάλυνση (αλλά μπορεί να μην είναι αρκετή). Π.χ. h={1,2,1}/4
- Περισσότερα σημεία, με μεγαλύτερους κεντρικούς συντελεστές,
οδηγούν συχνά σε καλύτερη εξομάλυνση. Π.χ. h = {1,2,4,2,1}/10
 Η επιλογή του φίλτρου εξαρτάται από την κάθε ξεχωριστή περίπτωση,
διότι μπορεί η εξομάλυνση να καταστείλει το θόρυβο αποκαλύπτοντας
χρήσιμη πληροφορία, μπορεί όμως να οδηγήσει και σε αλλοίωση
‹#› πληροφορίας αν είναι υπερβολική.
Βαθυπερατά φίλτρα εξομάλυνσης
Φίλτρα συνέλιξης στο πεδίο του χρόνου - Ι . Καλατζής 2019

 Χρήσιμα φίλτρα εξομάλυνσης:

1, 1, 1 /3 κυλιόμενου μέσου 3 σημείων

1, 2, 1 /4 τριγωνικό 3 σημείων

hLow = 1, 2, 3, 2, 1 /9 τριγωνικό 5 σημείων

1, 4, 6, 4, 1 /16 ψευδογκαουσσιανό 5 σημείων

1, 4, 8, 10, 8, 4, 1 /36 ψευδογκαουσσιανό 7 σημείων

1, 4, 9, 14, 17, 14, 9, 4, 1 /73 γκαουσσιανό 9 σημείων

Οι συντελεστές των φίλτρων εξομάλυνσης:


- Είναι όλοι θετικοί
- Έχουν άθροισμα ίσο με τη μονάδα (διαφορετικά θα έχουμε ενίσχυση ή
υποβάθμιση του σήματος), που σημαίνει επίσης ότι διατηρούν τη γενική
μορφή του σήματος.

‹#›
Φίλτρα συνέλιξης στο πεδίο του χρόνου - Ι . Καλατζής 2019
3. ΥΨΙΠΕΡΑΤΟ ΦΙΛΤΡΑΡΙΣΜΑ
 Υψιπερατό φιλτράρισμα σε ένα σήμα μπορεί να πραγματοποιηθεί με αφαίρεση
του εξομαλυμένου σήματος από το αρχικό. Με τον τρόπο αυτό, αφαιρούνται οι
χαμηλές συχνότητες από το αρχικό σήμα και απομένουν οι υψηλές:

High pass = Σήμα – Low pass

 Αντίστοιχα, η κατασκευή ενός υψιπερατού φίλτρου γίνεται με την αφαίρεση


ενός βαθυπερατού φίλτρου από την κρουστική συνάρτηση δέλτα. Πράγματι, αν
από τη συνάρτηση δέλτα (η οποία επιτρέπει τη διέλευση όλου του σήματος
χωρίς αλλοίωση) αφαιρεθεί ένα βαθυπερατό φίλτρο, το αποτέλεσμα θα είναι
ένα φίλτρο που θα επιτρέπει τη διέλευση μόνο των υψηλών συχνοτήτων:

ℎ𝐻𝑖𝑔ℎ = 𝛿 − ℎ𝐿𝑜𝑤
Η συνάρτηση δ στην περίπτωση αυτή σχηματίζεται με τη μονάδα στο κέντρο και
μηδέν στις υπόλοιπες τιμές.

 Παράδειγμα: Έστω βαθυπερατό φίλτρο hLow = {1,2,1}/4.


Τότε, το αντίστοιχο υψιπερατό φίλτρο κατασκευάζεται ως εξής:
‹#› hHigh = δ – hLow = {0,1,0} – {1,2,1}/4 = {0,4,0}/4 – {1,2,1}/4 = {-1,2,-1}/4
Κατασκευή υψιπερατού φίλτρου
 Υπολογιστικά είναι εύκολη η δημιουργία ενός υψιπερατού φίλτρου με χρήση
της προηγούμενης διαδικασίας. Στο παρακάτω παράδειγμα φαίνεται και το
Φίλτρα συνέλιξης στο πεδίο του χρόνου - Ι . Καλατζής 2019

αντίστοιχο βαθυπερατό φίλτρο που χρησιμοποιήθηκε (βλ. και διαφάνεια 6),


καθώς και το αποτέλεσμα και των δύο φίλτρων για λόγους σύγκρισης:
hLow={1,1,1}/3
hHigh = δ – hLow = {0,1,0} – {1,1,1}/3 = {-1,2,-1}/3

% Signal
x = [0 3 6 3 6 9 6 9 3 6];
n = [0:length(x)-1];
% Filters
hL = [1 1 1]/3; % Low
hH = [0 1 0] - hL; % High
% Filtering
yL = conv(x,hL,'same'); % Low
yH = conv(x,hH,'same'); % High
% Plots
hold on;
plot(n,x,'bo-');
plot(n,yL,'g*-');
plot(n,yH,'r*-');
grid on;

 Παρατηρούμε ότι έχει εξαφανιστεί η γενική μορφή του σήματος και το


αποτέλεσμα του υψιπερατού φιλτραρίσματος κυμαίνεται γύρω από το μηδέν.
‹#›  Εφαρμογή: Καταστολή συνεχούς συνιστώσας (DC) ενός σήματος.
Παράδειγμα υψιπερατού φιλτραρίσματος
 Παράδειγμα υψιπερατού φιλτραρίσματος με το φίλτρο h = {-1,2,-1}/3
Φίλτρα συνέλιξης στο πεδίο του χρόνου - Ι . Καλατζής 2019

% Signal
Nx=100; nx=[0:Nx-1];
A=1; f=2;
x1=A*sin(2*pi*f*nx/Nx); % Sine wave
x2=(rand(1,Nx)-0.5)/4; % Noise
x=x1+x2; % Signal`
plot(nx,x1,'r:'); hold on;
plot(nx,x2,'b'); plot(nx,x,'k');
% Filter
hL = [1 1 1]; hL = hL/sum(hL); % Low
h = [0 1 0] - hL; % High
Nh =length(h); nh = [0:Nh-1];
subplot(2,2,1); hold on;
plot(nx,x1,'k'); plot(nx,x2,'k');
plot(nx,x,'b');
subplot(2,2,2); stem(nh,h,'ro-');
% High-pass filtering
y = conv(x,h,'same');
Ny = length(y); ny = [0:Ny-1];
subplot(2,2,[3 4]);
plot(nx,x,'b'); hold on;
‹#› stem([-Nh+nh+1:nh],fliplr(h),'r.-');
plot(ny,y,'r');
Υψιπερατά φίλτρα
Αν εφαρμοστεί η προηγούμενη διαδικασία (hHigh = δ – hLow) στα βαθυπερατά
Φίλτρα συνέλιξης στο πεδίο του χρόνου - Ι . Καλατζής 2019


φίλτρα που προαναφέρθηκαν, προκύπτουν τα εξής υψιπερατά φίλτρα:
{-1, 2, -1}/3
{-1, 2, -1}/4
hHigh = {-1, -2, 6, -2, -1}/9
{-1, -4, 10, -4, -1}/16
{-1, -4, -8, 26, -8, -4, -1}/36
{-1, -4, -9, -14, 56, -14, -9, -4, -1}/73
Οι συντελεστές των υψιπερατών φίλτρων:
- Έχουν θετική τιμή στο κέντρο & αρνητικές τιμές εκατέρωθεν.
- Οι τιμές τους έχουν άθροισμα ίσο με το μηδέν.
Αυτό έχει ως αποτέλεσμα τα υψιπερατά φίλτρα να μηδενίζουν τη συνεχή συνιστώσα (DC)
ενός σήματος (αναμενόμενο, καθώς το DC έχει τη χαμηλότερη δυνατή συχνότητα, μηδέν).
Απόδειξη: Έστω x = {k, k, k, k, k} ένα σταθερό σήμα (DC) (ή η σταθερή συνιστώσα ενός
σήματος) και h = {a, b, c} ένα υψιπερατό φίλτρο. Το φιλτράρισμα του x με το h είναι:
y[n] = x[n-1]·h[0] + x[n]·h[1] + x[n+1]·h[2] = k·a + k·b + k·c = k·(a+b+c).
‹#› Όμως, a+b+c=0 (άθροισμα τιμών υψιπερατού φίλτρου), άρα k·(a+b+c) = 0, άρα y[n] = 0.
4. ΟΞΥΝΣΗ
 Όξυνση (sharpening) ενός σήματος είναι η ενίσχυση των λεπτομερειών
Φίλτρα συνέλιξης στο πεδίο του χρόνου - Ι . Καλατζής 2019

του σήματος, δηλαδή του υψηλού συχνοτικού περιεχομένου του.

 Η ενίσχυση των λεπτομερειών γίνεται με την άθροιση των υψηλών


συχνοτήτων στο αρχικό σήμα:

Sharpening = Σήμα + High pass

 Αντίστοιχα, η εύρεση ενός φίλτρου όξυνσης γίνεται με την άθροιση


ενός υψιπερατού φίλτρου και της συνάρτησης δ (η οποία επιτρέπει τη
διέλευση του αρχικού σήματος χωρίς αλλοίωση):

hSharp = δ + hHigh
 Παράδειγμα: Έστω το υψιπερατό φίλτρο hHigh = {-1, 2, -1}/4.
Τότε, το αντίστοιχο φίλτρο όξυνσης κατασκευάζεται ως εξής:

hSharp = δ + hHigh = {0,1,0} + {-1,2,-1}/4 =


= {0,4,0}/4 + {-1,2,-1}/4 = {-1,6,-1}/4 = {-1,6,-1}/4
‹#›
Κατασκευή φίλτρου όξυνσης
 Υπολογιστικά είναι εύκολη η δημιουργία ενός φίλτρου όξυνσης με χρήση της
προηγούμενης διαδικασίας. Στο παρακάτω παράδειγμα φαίνεται και το
Φίλτρα συνέλιξης στο πεδίο του χρόνου - Ι . Καλατζής 2019

αντίστοιχο υψιπερατό φίλτρο που χρησιμοποιήθηκε (βλ. και διαφάνεια 11),


καθώς και το φιλτράρισμα και με τα δύο φίλτρα για λόγους σύγκρισης:
hHigh={-1,2,-1}/3
hSharp = δ + hHigh = {0,1,0} + {-1,2,-1}/3 = {-1,5,-1}/3

% Signal
x = [0 3 6 3 6 9 6 9 3 6];
n = [0:length(x)-1];
% Filters
hH = [-1 2 -1]/3; % High
hS = [0 1 0] + hH; % Sharpen
% Filtering
yH = conv(x,hH,'same'); % Hi
yS = conv(x,hS,'same'); % Sh
% Plots
hold on;
plot(n,x,'bo-');
plot(n,yH,'g*-');
plot(n,yS,'r*-');
grid on;

 Παρατηρούμε ότι η γενική μορφή του σήματος έχει οξυνθεί, με αύξηση της
αντίθεσης (οι μεγαλύτερες τιμές αυξήθηκαν, ενώ οι μικρότερες ελαττώθηκαν).
‹#›  Εφαρμογή: Ανάδειξη λεπτομερειών σε θολές εικόνες.
Παράδειγμα όξυνσης σε περιβάλλον
ύπαρξης θορύβου
 Παράδειγμα υψιπερατού φιλτραρίσματος με το φίλτρο h = {-1,5,-1}/3
Φίλτρα συνέλιξης στο πεδίο του χρόνου - Ι . Καλατζής 2019

% Signal
Nx=100; nx=[0:Nx-1];
A=1; f=2;
x1=A*sin(2*pi*f*nx/Nx); % Sine wave
x2=(rand(1,Nx)-0.5)/4; % Noise
x=x1+x2; % Signal
plot(nx,x1,'r:'); hold on;
plot(nx,x2,'b'); plot(nx,x,'k');
% Filters
hL = [1 1 1]; hL = hL/sum(hL); % Low
hH = [0 1 0] - hL; % High
h = [0 1 0] + hH; % Sharpen
Nh =length(h); nh = [0:Nh-1];
subplot(2,2,1); hold on;
plot(nx,x1,'k'); plot(nx,x2,'k');
plot(nx,x,'b');
subplot(2,2,2); stem(nh,h,'ro-');
% Filtering
y = conv(x,h,'same');
Ny = length(y); ny = [0:Ny-1];
subplot(2,2,[3 4]); plot(nx,x,'b'); hold on;
‹#› stem([-Nh+nh+1:nh],fliplr(h),'r.-');
plot(ny,y,'r');
Παράδειγμα όξυνσης για ανάδειξη
λεπτομερειών σε ομοιογενές περιβάλλον
Φίλτρα συνέλιξης στο πεδίο του χρόνου - Ι . Καλατζής 2019

 Συνήθως όξυνση εφαρμόζεται σε σήματα σχετικώς ομοιογενή, όταν


απαιτείται η ενίσχυση ορισμένων λεπτομερειών. Για το λόγο αυτό,
συνήθως δεν έχει νόημα η όξυνση σημάτων όπως του προηγουμένου
παραδείγματος, όπου απλώς ενισχύεται ο προϋπάρχων θόρυβος.
 Στο παρακείμενο
παράδειγμα ενισχύονται
μέσω όξυνσης οι
λεπτομέρειες της αλλαγής
της κλίσης του σήματος σε
ορισμένα σημεία του.
x=[zeros(1,12) ones(1,12) 2*ones(1,12)...
3*ones(1,12) 5*ones(1,3) 4*ones(1,12)...
5*ones(1,3) 4*ones(1,12) 5*ones(1,3)...
4*ones(1,12)];
Nx = length(x); nx = [0:Nx-1];
hL = [1 1 1]/3; % Low
hH = [0 1 0] - hL; % High = delta - Low
h = [0 1 0] + hH; % Sharp = delta + High
Nh = length(h); nh = [0:Nh-1];
y = conv(x,h,'same');
Ny = length(x); ny = [0:Ny-1];
plot(nx,x,'b'); hold on;
‹#› stem(nx,y,'k.-','MarkerSize',10);
stem(nh,h,'ro-','LineWidth',2);
Φίλτρα όξυνσης
Φίλτρα συνέλιξης στο πεδίο του χρόνου - Ι . Καλατζής 2019

 Αν εφαρμοστεί η προηγούμενη διαδικασία (hSharp = δ + hHigh) στα υψιπερατά


φίλτρα που προαναφέρθηκαν, προκύπτουν τα εξής φίλτρα όξυνσης:
{-1, 5, -1}/3
{-1, 6, -1}/4
hSharp = {-1, -2, 15, -2, -1}/9
{-1, -4, 26, -4, -1}/16
{-1, -4, -8, 62, -8, -4, -1}/36
{-1, -4, -9, -14, 129, -14, -9, -4, -1}/73

Οι συντελεστές των φίλτρων όξυνσης:


- Έχουν θετική τιμή στο κέντρο & αρνητικές τιμές εκατέρωθεν, όπως και τα
υψιπερατά φίλτρα (αφού σκοπός είναι η ενίσχυση των λεπτομερειών, δηλ.
των υψηλών συχνοτήτων)
- Οι τιμές τους έχουν άθροισμα ίσο με τη μονάδα (διαφορετικά θα έχουμε
ενίσχυση ή υποβάθμιση του σήματος) , που σημαίνει επίσης ότι διατηρούν τη
‹#› γενική μορφή του σήματος.
Φίλτρα συνέλιξης στο πεδίο του χρόνου - Ι . Καλατζής 2019
5. ΔΙΑΦΟΡΙΣΗ ΣΗΜΑΤΟΣ
 Η διαφόριση (1η παράγωγος) ενός σήματος είναι ένα νέο σήμα που
αποτελείται από τις διαφορές των γειτονικών τιμών του αρχικού
σήματος:
y[n] = x[n] – x[n-1]
 Αυτό σημαίνει ότι για την εύρεση της 1ης παραγώγου το σήμα πρέπει να
υποστεί συνέλιξη με το ακόλουθο φίλτρο (φίλτρο διαφόρισης):

hDiff = {1, -1}


 Παράδειγμα διαφόρισης ημιτονικού σήματος:
Αν το σήμα είναι x(n) =Αxsin(2πfn/N), τότε η παράγωγός
του ως προς n είναι (θυμίζουμε ότι η παράγωγος του
ημιτόνου είναι το συνημίτονο):
y(n) = dx(n)/dn = d(Αxsin(2πfn/N)/dn =
= Αxcos(2πfn/N)·d(2πfn/N)/dn =
= 2πf/N·Αxcos(2πfn/N) = Ay·cos(2πfn/N), όπου Ay = Αx2πf/N
Στο συγκεκριμένο παράδειγμα το σήμα x έχει πλάτος A=10,
συχνότητα f=1 και Ν=50 τιμές, άρα το πλάτος του σήματος
‹#› y είναι Ay= Αx2πf/N = 10·2·π·1/50 = 1.257.
6. ΑΝΙΧΝΕΥΣΗ ΑΚΜΩΝ
 Η ανίχνευση των ακμών (έντονων αλλαγών εντός ομοιογενούς περιοχής)
(edge detection) σε ένα σήμα γίνεται με ένα φίλτρο διαφόρισης, π.χ.:
Φίλτρα συνέλιξης στο πεδίο του χρόνου - Ι . Καλατζής 2019

hDiff = {1, -1}


 Εξήγηση: Στα σημεία έντονων αλλαγών των τιμών ενός σήματος, οι
διαφορές των γειτονικών τιμών μεγιστοποιούνται. Ως αποτέλεσμα, η 1η
παράγωγος θα έχει μεγάλες τιμές όπου εμφανίζονται ακμές σε σχέση με τα
υπόλοιπα σημεία του σήματος.
 Παρατηρήσεις:
- Αύξηση σήματος:
Θετική τιμή παραγώγου
- Μεγαλύτερη αύξηση σήματος:
Μεγαλύτερη τιμή παραγώγου
- Ελάττωση σήματος:
Αρνητική τιμή παραγώγου
x=[zeros(1,12) ones(1,12) 2*ones(1,12)...
3*ones(1,12) 5*ones(1,3) 4*ones(1,12)...
5*ones(1,3) 4*ones(1,12) 5*ones(1,3)...
4*ones(1,12)];
Nx = length(x); nx = [0:Nx-1];
h = [1,-1]; Nh = length(h); nh = [0:Nh-1];
y = conv(x,h,'same');
Ny = length(x); ny = [0:Ny-1];
plot(nx,x,'b'); hold on;
‹#› stem(nx,y,'k.-','MarkerSize',10);
stem(nh,h,'ro-','LineWidth',2);
Φίλτρα διαφόρισης για ανίχνευση ακμών
Φίλτρα συνέλιξης στο πεδίο του χρόνου - Ι . Καλατζής 2019

 Ακολουθούν χρήσιμα φίλτρα διαφόρισης για ανίχνευση ακμών.


Συχνά, χρησιμοποιούνται σε συνδυασμό με φίλτρα εξομάλυνσης για να είναι
ευκολότερη η ανίχνευση των ακμών (όταν ενδιαφέρει η πληροφορία που
βρίσκεται μόνο στις θέσεις ακμής και όχι στο υπόλοιπο σήμα):

{1,-1} 1η παράγωγος (ευαίσθητη στο θόρυβο)


{1,0,-1}/2 1η παράγωγος με εξομάλυνση, με το {1,1}/2
hDiff = {1,0,0,-1}/3 1η παράγωγος με εξομάλυνση, με το {1,1,1}/3
{1,1,-1,-1}/4 1η παράγωγος με εξομάλυνση, με το {1,2,1}/4
{1,3,2,-2,-3,-1}/16 1η παράγωγος με εξομάλυνση, με το {1,4,6,4,1}/16

Όπως βλέπουμε, οι συντελεστές των φίλτρων ανίχνευσης ακμών:


- Έχουν τα πρώτα μισά σημεία θετικά ή μηδέν και τα άλλα αρνητικά ή
μηδέν
- Έχουν άθροισμα ίσο με το μηδέν (καταστρέφουν τη γενική μορφή του
‹#› σήματος)
Εφαρμογή ανίχνευσης ακμών σε ECG
 Παράδειγμα ανίχνευσης ακμών σε ECG (αυτόματη ανίχνευση QRS)
Φίλτρα διαφόρισης που
Φίλτρα συνέλιξης στο πεδίο του χρόνου - Ι . Καλατζής 2019

χρησιμοποιούνται σε
αλγορίθμους εύρεσης του
καρδιακού ρυθμού. Βασικό
στοιχείο των αλγορίθμων
αυτών είναι η αυτόματη
ανίχνευση του συμπλόκου
QRS, η οποία υποβοηθείται
με τη διέλευση του
ηλεκτροκαρδιογραφικού
σήματος από φίλτρο
ανίχνευσης ακμών.

%
ecg = load('ecg.txt');
n = [401:1400]; x = ecg(n);

hD = [1 -1]; % Differential filter


hS = [1 2 1]/4; % Smoothing filter
hDS = conv(hD,hS); % Diff*Smooth filter
y1 = conv(x,hD,'same');
y2 = conv(x,hDS,'same');
subplot(3,1,1); plot(n,x,'b');
subplot(3,1,2); plot(n,y1,'r-');
subplot(3,1,3); plot(n,y2,'r-');

‹#›  Άλλη εφαρμογή: Τμηματοποίηση εικόνων.


Διαφόριση σήματος – μια κοντινότερη ματιά
 Προσοχή: Το σήμα που προκύπτει από τη διαφόριση του ECG (ή οποιουδήποτε
άλλου σήματος) είναι γενικά τελείως διαφορετικής μορφής από το αρχικό
Φίλτρα συνέλιξης στο πεδίο του χρόνου - Ι . Καλατζής 2019

σήμα. Θυμίζουμε ότι το σήμα διαφόρισης είναι η 1η παράγωγος του αρχικού


σήματος.

Αλλαγή προσήμου του


ρυθμού κλίσης του ECG
(σημείο καμπής):
Τοπικό ακρότατο
σήματος διαφόρισης
(2η παράγωγος = 0)

Περιοχή Περιοχή Περιοχή


ελάττωσης ECG: αύξησης ECG: ελάττωσης ECG:
Αρνητικό σήμα Θετικό σήμα Αρνητικό σήμα
διαφόρισης διαφόρισης διαφόρισης

‹#› Τοπικά ακρότατα ECG (μέγιστα ή ελάχιστα):


Σήμα διαφόρισης (1η παράγωγος) = 0
7. ΕΝΙΣΧΥΣΗ ΑΚΜΩΝ
 Ενίσχυση ακμών (edge enhancement) ενός σήματος είναι η ενίσχυση
Φίλτρα συνέλιξης στο πεδίο του χρόνου - Ι . Καλατζής 2019

των ακμών (έντονων αλλαγών) του σήματος.

 Η ενίσχυση των ακμών γίνεται με την άθροιση των ακμών, όπως αυτές
ανιχνεύθηκαν με τη διαδικασία ανίχνευσης ακμών, στο αρχικό σήμα:

Edge Enhancement = Σήμα + Edge Detection

 Αντίστοιχα, η εύρεση ενός φίλτρου ενίσχυσης ακμών γίνεται με την


άθροιση ενός φίλτρου ανίχνευσης ακμών (φίλτρο διαφόρισης) με τη
συνάρτηση δ (η οποία επιτρέπει τη διέλευση του αρχικού σήματος
χωρίς αλλοίωση):

hEnh = δ + hDiff
 Παράδειγμα: Έστω το φίλτρο ανίχνευσης ακμών hDiff = {1, -1}.
Τότε, το αντίστοιχο φίλτρο ενίσχυσης ακμών κατασκευάζεται ως εξής:

hEnh = δ + hDiff = {1,0} + {1,-1} = {2,-1}


‹#›
Παράδειγμα ενίσχυσης ακμών
 Δημιουργία φίλτρου ενίσχυσης ακμών με ελαφρά εξομάλυνση, ξεκινώντας
από το αντίστοιχο φίλτρο ανίχνευσης ακμών hDiff = {1, 0, -1}/2:
Φίλτρα συνέλιξης στο πεδίο του χρόνου - Ι . Καλατζής 2019

hEnh = δ + hDiff = {1,0,0} + {1,0,-1}/2 = {2,0,0}/2 + {1,0,-1}/2 = {3,0,-1}/2

 Με εφαρμογή του παραπάνω


φίλτρου ενίσχυσης ακμών
hEnh = {3,0,-1}/2 στην
παρακείμενη συνάρτηση,
λαμβάνουμε το ακόλουθο
αποτέλεσμα:
x=[zeros(1,12) ones(1,12) 2*ones(1,12)...
3*ones(1,12) 5*ones(1,3) 4*ones(1,12)...
5*ones(1,3) 4*ones(1,12) 5*ones(1,3)...
4*ones(1,12)];
Nx = length(x); nx = [0:Nx-1];
hD = [1 0 -1]/2; % Diff
h = [1 0 0] + hD; % Enhance = delta + Diff
Nh = length(h); nh = [0:Nh-1];
y = conv(x,h,'same');
Ny = length(x); ny = [0:Ny-1];
plot(nx,x,'b'); hold on;
stem(nx,y,'k.-','MarkerSize',10);
stem(nh,h,'ro-','LineWidth',2);

‹#›  Εφαρμογή: Ανάδειξη ορίων δομών (π.χ. οργάνων του σώματος) σε εικόνες.
Φίλτρα ενίσχυσης ακμών
Φίλτρα συνέλιξης στο πεδίο του χρόνου - Ι . Καλατζής 2019

 Αν εφαρμοστεί η προηγούμενη διαδικασία (hEnh = δ + hDiff) στα φίλτρα


ανίχνευσης ακμών που προαναφέρθηκαν, προκύπτουν τα εξής φίλτρα
ενίσχυσης ακμών:
{2,-1} Ενίσχυση ακμών (ευαίσθητη στο θόρυβο)

{3,0,-1}/2 Ενίσχ. ακμών με εξομάλυνση, με το {1,1}/2


hEnh = {4,0,0,-1}/3 Ενίσχ. ακμών με εξομάλυνση, με το {1,1,1}/3
{5,1,-1,-1}/4 Ενίσχ. ακμών με εξομάλυνση, με το {1,2,1}/4
{17,3,2,-2,-3,-1}/16 Ενίσχ. ακμών με εξομάλυνση, με το {1,4,6,4,1}/16

Όπως βλέπουμε, οι συντελεστές των φίλτρων ανίχνευσης ακμών έχουν


άθροισμα ίσο με τη μονάδα (διαφορετικά θα έχουμε ενίσχυση ή υποβάθμιση
του σήματος), δηλαδή διατηρούν τη γενική μορφή του σήματος.

‹#›
‹#›
Φίλτρα συνέλιξης στο πεδίο του χρόνου - Ι . Καλατζής 2019

ΠΙΝΑΚΕΣ
8. ΣΥΓΚΕΝΤΡΩΤΙΚΟΙ
ΦΙΛΤΡΑ ΣΥΝΕΛΙΞΗΣ
ΣΤΟ ΠΕΔΙΟ ΤΟΥ ΧΡΟΝΟΥ
Φίλτρα συνέλιξης στο πεδίο του χρόνου - Ι . Καλατζής 2019

Εξάγουν λεπτομέρειες Διατηρούν τη γενική μορφή


από το σήμα του σήματος
(άθροισμα = 0) (άθροισμα = 1)

Εξομάλυνσης
hLo = {1 1 1}/3
(Βαθυπερατό)

hHi = δ – hLo hSharp = δ + hHi


Υψιπερατό Όξυνσης
= {0,1,0} – {1,1,1}/3 = {0,1,0} + {-1,2,1}/3
= δ - Βαθυπερατό = {-1,2,-1}/3 = δ + Υψιπερατό
= {-1,5,-1}/3

Ανίχνευσης ακμών Ενίσχυσης ακμών hEnh = δ + hDiff


hDiff = {1,-1} = {1,0} + {1,-1}
(Διαφόρισης) = δ + Διαφόρισης = {2,-1}

‹#›
‹#›
Φίλτρα συνέλιξης στο πεδίο του χρόνου - Ι . Καλατζής 2019
ΣΤΟ ΠΕΔΙΟ ΤΟΥ ΧΡΟΝΟΥ
ΦΙΛΤΡΑΡΙΣΜΑ ΜΕΣΩ ΣΥΝΕΛΙΞΗΣ
ΕΦΑΡΜΟΓΕΣ ΦΙΛΤΡΩΝ ΣΥΝΕΛΙΞΗΣ
ΣΤΟ ΠΕΔΙΟ ΤΟΥ ΧΡΟΝΟΥ
Φίλτρα συνέλιξης στο πεδίο του χρόνου - Ι . Καλατζής 2019

ΦΙΛΤΡΟ ΕΦΑΡΜΟΓΗ ΠΡΙΝ ΜΕΤΑ

Εξομάλυνσης
Ελάττωση
(Βαθυπερατό)
θορύβου
π.χ. hLow = [1,1,1]/3

Υψιπερατό Καταστολή
= δ - hLow συνεχούς (DC)
π.χ. hHigh = [-1,2,-1]/3 συνιστώσας

Όξυνσης Ανάδειξη
= δ + hHigh λεπτομερειών
π.χ. hSharp = [-1,5,-1]/3 θολής εικόνας

Ανίχνευσης ακμών
Τμηματοποίηση
(Διαφόρισης)
εικόνων
π.χ. hDiff = [1,-1]

Ενίσχυσης ακμών Ανάδειξη ορίων


= δ + hDiff ανατομικών
‹#› π.χ. hEnh = [2,-1] δομών

You might also like