Modul Praktikum DSP
Modul 2
MODUL 2 Konvolusi dan Korelasi
I. Tujuan 1. Peserta memahami mekanisme konvolusi dan korelasi. 2. Peserta dapat menggunakan konvolusi sebagai proses pemfilter sinyal. 3. Peserta dapat menggunakan konvolusi dua dimensi sebagai pemroses citra (image processing). 4. Peserta memahami penggunaan dari korelasi.
II. Dasar Teori 2.1. Konvolusi Konvolusi Sinyal dapat dioperasikan dengan operator yang berbeda, salah satunya adalah ‘konvolusi’. Perintah konvolusi dua sinyal pada Matlab adalah conv. Contoh : »a=[1 2 3]; »b=[1 0 0 0 0 1 0 0 0]; »c=conv(a,b) c = 1
2
3
0
0
1
2
3
0
0
0
»
Dapat dilihat bahwa vektor a dan b mempunyai panjang yang berbeda, dan vektor c menggabungkan informasi pada kedua sinyal. Pada contoh diatas, setiap vektor b mengandung unsur ‘1’ akan menghasilkan nilai vektor a. Konvolusi dapat dipakai untuk memodifikasi sinyal. Bayangkan kita mempunyai sebuah sinyal persegi dan kita akan menegaskan perubahannya. »a=[ 0 0 0 1 1 1 1 0 0 0]; »b=[1 -1]; »c=conv(a,b) c = 0
0
0
1
0
0
0
-1
0
0
0
»
sinyal b digunakan untuk mendeteksi posisi dimana sinyal a terdapat perubahan / tidak konstan. Dapat dikatakan bahwa kita telah melakukan proses filter pada sinyal a menggunakan filter high-pass. Bergantung pada nilai sinyal b, kita dapat menghasilkan efek yang berbeda pada sinyal a. Pada bidang medika, ‘smoothing’ (penghalusan) sinyal sering dilakukan untuk menghilangkan gangguan frekuensi tinggi. Sekarang akan kita coba untuk menghaluskan sinyal . Dengan menggunakannya, tiap titik akan menjadi rata-ratanya, nilai sesudahnya dengan nilai berikutnya.
[email protected]
1
Modul Praktikum DSP
Modul 2
»a=[ 0 0 0 1 1 1 1 0 0 0]; »b=[1/3, 1/3, 1/3]; »c=convol (a,b); »c’ ans = 0 0 0 0.3333 0.6667 1.0000 1.0000 0.6667 0.3333 0 0 0
Perintah c’ digunakan untuk melakukan transpose terhadap vektor c agar nilainya dapat dilihat dengan jelas. Pada contoh diatas kita dapat menghilangkan perubahan mendadak dari ‘1’ ke ‘0’, dan dari ‘0’ ke ‘1’. Dapat dikatakan kita telah memfilter sinyal dengan filter lowpass. Dengan memplot grafiknya akan terlihat seperti pada gambar 1. »a = [ 0 0 0 1 1 1 1 0 0 0]; »b1 = [1 -1]; »b2 = [1/3, 1/3, 1/3]; »c1 = conv(a,b1); »c2 = conv(a,b2); »subplot(3,1,1),stem(a); »subplot(3,1,2),stem(c1); »subplot(3,1,3),stem(c2);
Gambar 1. Sinyal persegi (atas), hasil konvolusi dengan [1 -1] (tengah), hasil konvolusi dengan [1/3, 1/3, 1/3] (bawah).
Ingat bahwa konvolusi pertama bertindak seperti filter high-pass dan kedua bertindak seperti filter low-pass.
[email protected]
2
Modul Praktikum DSP
Modul 2
2.1.1. Mekanisme konvolusi Konvolusi dua sinyal diskrit (a[n] * b[n] ) dirumuskan sebagai: ∞
c[n ] =
∑ a[k ]b[n − k ] k = −∞
berikut contoh perhitungan untuk mengkonvolusi dua sinyal diatas kertas. Sinyal pertama Sinyal kedua
1 2 3 2 1 3
Tahap pertama, membalik salah satu sinyal Sinyal pertama (dibalik) Sinyal kedua
3 2 1 2 1 3
Tahap kedua, menggerakkan salah satu sinyal dan menjumlahkan hasil perkalian dua sinyal pada titik-titik yang seletak sinyal pertama sinyal kedua
3 2 1 2 1 3
hasil kali jumlah
0 0 2 0 0 0 0 2 <---------------
sinyal pertama sinyal kedua
3 2 1 2 1 3
hasil kali jumlah
0 0 4 1 0 0 0 5 <---------------
sinyal pertama sinyal kedua
3 2 1 2 1 3
hasil kali jumlah
0 0 6 2 3 0 0 11 <---------------
sinyal pertama sinyal kedua
3 2 1 2 1 3
hasil kali jumlah
0 0 0 3 6 1 0 9 <---------------
sinyal pertama sinyal kedua
3 2 1 2 1 3
hasil kali jumlah
0 0 0 0 9 0 0 9 <---------------
Bila di-cek dengan Matlab, »conv([1 2 3], [2 1 3]) ans = 2
[email protected]
5
11
9
9
3
Modul Praktikum DSP
Modul 2
2.1.2. Konvolusi dan hasil kali persamaan polinomial Terdapat hubungan yang erat antara konvolusi dan perkalian polinomial. Contoh: 2 Persamaan 1: 1 + 2x + 3x 2 Persamaan 2: 2 + x + 3x Perkalian kedua persamaan tersebut dapat dengan mudah dihasilkan menggunakan konvolusi. »a = [1 2 3]; %koefesien persamaan 1 »b = [2 1 3]; %koefesien persamaan 2 »c = conv(a,b) c = 2
5
11
9
9
»
artinya bahwa hasil kali dua persamaan polinomial diatas adalah: 2
2
2
3
( 1+ 2x + 3x )*( 2 + x + 3x ) = 2 + 5x + 11x + 9x + 9x
4
2.1.3. Memfilter sinyal dengan konvolusi Berikut adalah contoh penggunaan konvolusi pada bidang medika, yaitu memproses rekaman sinyal jantung (EKG – Elektro KardioGrap). Sangat menarik untuk menghilangkan komponen frekuensi rendah yang dapat mengganggu proses pendeteksian sinyal komplek QRS. »ekg=[29 30 23 22 23 23 25 22 24 24 36 33 30 39 38 39 38 13 33 20 25 56 30 21 18 30 34 34 21 20 19 15 14 17 41 34 24 43 44 38 36 37 35
31 47 31 24 20 41 35 52 39 25 19 18 16 28 30
35 58 34 23 15 42 36 18 60 18 20 19 17 19 21
35 33 28 22 19 20 21 22 23 24 24 24 23 23 24 24 28 33 33 5 25 29 31 31 33 35 36 33 28 23 19 20 21 22 22 22 22 22 22 32 28 19 25 52 39 18 28 31 32 33 34 35 34 30 26 19 17 19 23 22 23 23 29 34 33 29 19 22 43 44 12 24 29 31 31 34 36 17 19 21 22 22 22 22 21 25 32 33 31 23 19 33 46 -14 28 35 42 38 28 16 17 17 20 21 22 22 23 22 30 33 33 29 19 23 44 36 39 42 43 40 31 21 18 20 22 24 25 25 26 27 33 35 35 30 29 33 34 35 37 39 38 33 25 18 19 21 21 22 23 23 27 30 33 11 23 28 29 30 32 35 36 34 28 20 16 19 20 21 21 23 23 25 20 56 60 11 25 28 30 31 33 35 35 32 26 17 16 18 19 19 20 26 32 31 23 16 21 48 41 11 32 35 35 35 37 40 39 36 31 21 19 20 21 28 31 33 29 19 18 38 46 -11 31 37 39 38 39 42 43 19 21 22 23 26 30 33 31 21 17 31 50 26 24 36 38 39 39 42 19 22 25 27 27 33 34 35 30 21 19 42 60 10 24 28 30 30 32 17 19 20 22 22 22 22 23 23 27 31 33 30 22];
»ekgconv=conv(ekg, [1 -1]); »subplot(2,1,1),plot(ekg(1:200)); »subplot(2,1,2),plot(ekgconv(1:200));
[email protected]
4
Modul Praktikum DSP
Modul 2
Gambar 2. Memfilter dengan konvolusi. Sinyal EKG (atas), dan sinyal hasil konvolusi dengan [1 -1] (bawah)
Pada gambar 2 tampak bahwa sinyal asli mempunyai banyak frekuensi rendah (gelombang P dan T) dan telah dihilangkan melalui proses pemfilteran.
2.1.4. Mensintesa pengulangan sinyal dengan konvolusi Contoh berikutnya menggambarkan konvolusi dua sinyal, sinyal pertama mewakili bentuk yang mirip dengan sebuah potensial gerak otot dan sinyal kedua mewakili kecepatan munculnya potensial gerak otot. Tujuannya adalah menghasilkan bentuk yang mirip dengan sinyal elektromiograp secara sederhana. %sampling-rate 20KHz = 0.00005s = 0.05ms fs=20000; %selama 0.5s %t=0:0.00005*1000:0.5*1000; t=0:0.05:500; %sebuah sinyal mirip dengan potensial gerak otot mup= -(sin(pi*[0:127]/128).^4) .* (sin(2*pi*[0:127]/128)); %kecepatan munculnya sinyal tiap 500ms discharges=500 : 1000 : 9500; rate=zeros(1,length(t)); rate(discharges)=1; %konvolusikan emg=conv(rate,mup); %tampilkan subplot(2,2,1),plot(t(1:length(mup)),mup); axis([0 7 -1 1]);title('Motor unit potential ');xlabel('t(ms)'); subplot(2,2,2),plot(t(1:length(rate)),rate); axis([0 500 0 2]);title('Discharge rate');xlabel('t(ms)'); subplot(2,2,[3 4]),plot(t(1:10000),emg(1:10000)); title('Sinyal EMG');xlabel('t(ms)');
[email protected]
5
Modul Praktikum DSP
Modul 2
Gambar 3. Penghasil sinyal EMG menggunakan konvolusi.
Setiap nilai discharge-rate bernilai ‘1’ menjadi unit potensial gerak pada sinyal EMG. Bila ditambahkan beberapa unit dengan pola berbeda akan didapat sinyal EMG yang lebih mendekati kenyataan. Kebalikan (inverse) dari proses konvolusi adalah proses ‘dekonvolusi’ yang secara tidak langsung memisahkan bentuk-bentuk unit sinyal potensial gerak otot yang terdapat didalam sinyal EMG. Unit potensial gerak otot mengandung informasi struktur gerakan otot sedangkan pola discharge berisi informasi organisasi aktifitas otot. Kedua aspek ini digunakan pada diagnosa lebih neuromuscular lanjut.
2.2. Korelasi Operasi sinyal yang penting lainnya adalah korelasi. Korelasi sangat mirip dengan konvolusi. Pada Matlab digunakan perintah xcorr untuk satu sinyal (disebut auto-korelasi) atau dua sinyal (disebut cross-korelasi). Korelasi menentukan tingkat kesamaan dari dua buah sinyal. Bila kedua sinyal identik maka nilai korelasi adalah 1, bila kedua sinyal sangat berbeda maka korelasinya bernilai 0, dan bila kedua sinyal identik tetapi berlawanan (sudut fasa 180º) maka nilai korelasinya adalah -1.
2.2.1. Mekanisme korelasi Korelasi dua sinyal diskrit dirumuskan sebagai ∞
c[n ] =
∑ a[k ]b[n + k ] k = −∞
[email protected]
6
Modul Praktikum DSP
Modul 2
berikut contoh perhitungan untuk meng-korelasi dua sinyal diatas kertas. sinyal pertama sinyal kedua
1 2
2 1
3 3
Tahap pertama, tanpa membalik sinyal seperti pada mekanisme konvolusi, salah satu sinyal digerakkan dan menjumlahkan hasil perkalian dua sinyal pada titik-titik yang seletak sinyal pertama sinyal kedua
1
2
hasil kali jumlah
6 0 0 6 <---------------
sinyal pertama sinyal kedua
1
hasil kali jumlah
3 2
1
2 2
3 1
3
3
4 3 0 7 <---------------
sinyal pertama sinyal kedua
1 2
hasil kali jumlah
2 1
3 3
2 2 9 13 <---------------
sinyal pertama sinyal kedua
1 1
2
hasil kali jumlah
2 3
3
0 1 6 7 <---------------
sinyal pertama sinyal kedua
2
hasil kali jumlah
1
1 3
2
3
0 0 3 3 <---------------
Hasil yang didapat dinormalisasi dengan cara membagi hasil yang didapat dengan nilai maksimumnya. Hasil Nilai maksimum Normalisasi
6
7
0.46
0.54
13 7 13 1.00 0.54
3 0.23
Bila di-cek dengan Matlab, »a = [1 2 3]; »b = [2 1 3]; »xcorr(a,b)/13 ans = 0.4615
0.5385
1.0000
0.5385
0.2308
»xcorr(a,b,’coeff’) %dengan normalisasi otomatis
[email protected]
7
Modul Praktikum DSP
ans = 0.4286
Modul 2
0.5000
0.9286
0.5000
0.2143
»
2.2.2. Menyelidiki periodisasi sinyal dengan korelasi Berikut contoh autokorelasi pada sinyal sinus 1Hz, %sinyal 1Hz fs=100; t=0:1/fs:1; sinyal_asli = sin(2*pi*1*t); auto = xcorr (sinyal_asli,'coeff'); subplot(2,1,1),plot(t,sinyal_asli); %skala sumbu-x autokorelasi maxx=length(auto)-1; hmaxx=length(t)-1; t2=0:1/(hmaxx):maxx/hmaxx; subplot(2,1,2),plot(t2,auto)
Gambar 4. Autokorelasi sinyal untuk menegaskan bahwa sinyal berulang dengan periode 1Hz
Pada sinyal sinus 2Hz, %sinyal 2Hz fs=100; t=0:1/fs:1; sinyal_asli = sin(2*pi*2*t); auto = xcorr (sinyal_asli,'coeff'); subplot(2,1,1),plot(t,sinyal_asli); %skala sumbu-x autokorelasi maxx=length(auto)-1; hmaxx=length(t)-1; t2=0:1/(hmaxx):maxx/hmaxx; subplot(2,1,2),plot(t2,auto)
[email protected]
8
Modul Praktikum DSP
Modul 2
Gambar 5. Autokorelasi sinyal dan contoh informasi yang kita dapat
2.2.3. Menyelidiki pergeseran / letak sinyal Korelasi juga dapat digunakan untuk menyelidiki pergeseran pada kedua sinyal. x1=zeros(1,100); %membuat array x1 sebanyak 100 x2=x1; %array x2 sebanyak 100 titik x1(40)=1; %posisi pulsa1 pada titik ke-40 x2(40)=1; %posisi pulsa2 pada titik ke-40 subplot(3,1,1),plot(x1),ylabel(‘x1’); subplot(3,1,2),plot(x2),ylabel(‘x2’); x3=xcorr(x1,x2,'coeff'); %kros-korelasi dengan normalisasi subplot(3,1,3),plot(x3),ylabel(‘x1*x2’);
Gambar 6. Cross-korelasi pada dua sinyal yang identik dan seletak
Perhatikan apabila letak sinyal kedua digeser kekiri atau kekanan dari posisi sinyal pertama. Pada program Matlab diatas dilakukan dengan mengubah baris perintah x2(posisi)=1.
[email protected]
9
Modul Praktikum DSP
Modul 2
Gambar 7. Ilustrasi bila posisi sinyal kedua bergeser dari sinyal pertama
2.2.4. Korelasi sebagai alat bantu untuk meluruskan (align) sinyal Berdasar bagian 2.4. sebelumnya, sekarang korelasi dapat digunakan untuk meluruskan (align) sinyal. Kita ambil contoh dua buah rekaman sinyal EKG. %vektor rekaman sinyal EKG ekg1=[6 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 8 8 9 10 11 11 11 12 12 12 13 13 13 13 14 15 15 16 16 15 15 15 15 14 14 14 14 13 13 13 13 12 13 13 13 13 12 11 10 9 8 7 7 6 5 5 4 4 3 3 2 2 2 1 2 2 2 2 3 3 4 4 4 4 4 4 4 4 4 5 5 6 8 9 11 15 19 23 27 30 32 35 37 40 39 34 29 24 19 10 1 -9 -18 - 26 -30 -34 -37 -39 -36 -32 -29 -25 -21 -17 13 -9 -6 -4 -2 0 2 3 4 5 6 7 7 8 8 9 9 10 10 11 11 11 11 11 11 11 11 11 11 11 12 12 12 12 13 13 13 13 13 13 13 13 13 13 13 13 13 14 14 14 14 14 14 14 14 14 14 14 15 15 15 15 16 16 16 16 16 17 17 17 17 17 17 17 18 18 18 18 18 18 18 18 17 17 17 17 16 16 16 15 15 15 14 14 14 13 13 12 12 11 11 11 10 10 10 9 9 9 8 8 8 7 7 6 6 5 4 4 3 3 3 2 2 2 2 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 ]; ekg2=[4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 7 7 8 9 9 10 10 10 11 11 12 12 13 14 14 15 15 15 16 16 15 15 15 14 14 14 14 14 14 14 13 13 13 13 12 12 12 11 10 9 8 6 6 5 5 4 4 3 2 2 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 3 3 4 6 7 8 11 15 20 24 27 29 30 32 34 34 29 23 17 11 4 -6 -16 -26 -36 -40 -43 -45 -47 -43 -38 -34 -29 -25 -21 -17 -13 -9 -7 -5 -2 0 2 3 4 6 7 8 8 9 9 10 10 10 11 11 11 11 11 11 12 12 12 12 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 14 14 14 14 15 15 15 15 15 15 15 15 16 16 16 16 16 16 16 17 17 17 17 17 17 17 17 17 17 16 16 16 16 16 16 16 16 15 15 14 14 13 13 12 12 11 11 11 10 10 10 10 9 9 9 8 8 7 6 6 5 5 4 4 3 3 2 2 2 1 1 0 0 -1 -1 -1 -2 -2 -2 -2 -2 -2 -1 -1 -1 ]; %untuk membedakan, sinyal kedua dibuat lebih kecil ekg2=ekg2.*0.75; subplot(3,1,1),plot(ekg1); axis([0 300 -50 50]),ylabel('Frame 1'); subplot(3,1,2),plot(ekg2); axis([0 300 -50 50]),ylabel('Frame 2'); e=xcorr(ekg1,ekg2,'coeff'); subplot(3,1,3),plot(e); axis([0 600 -0.1 1]),ylabel('Cross-korelasi');
[email protected]
10
Modul Praktikum DSP
Modul 2
Gambar 8. Cross-korelasi (bawah) digunakan untuk menggeser sinyal kedua
Pada gambar 8 bagian bawah dapat dilihat bahwa korelasi maksimum menunjukkan bahwa pada titik tersebut kedua sinyal mempunyai korelasi (persamaan bentuk) yang paling besar. Dengan menambahkan baris perintah pada perintah sebelumnya didapatkan proses pelurusan sinyal seperti ditunjukkan oleh gambar 9. [value,pos]=max(e); m=pos-300; figure; t=0:200; plot(t,ekg1(50:250),'r',t,ekg2(50+m:250+m),'b');
perintah [value,pos]=max(e) yang disediakan Matlab digunakan untuk mencari titik tertinggi sekaligus posisinya. Posisi ini digunakan untuk menggeser sinyal kedua.
Gambar 9. Hasil proses pelurusan sinyal memanfaatkan korelasi
[email protected]
11
Modul Praktikum DSP
Modul 2
2.2.5. Auto-korelasi sinyal sinus dan noise Auto-korelasi atau korelasi dengan dirinya sendiri dapat digunakan untuk memisahkan sinyal dari noisenya. Perhatikan hasil auto-korelasi sinyal sinus dan noise berikut. fs=100; t=0:1/fs:1; x=2*sin(2*pi*5*t); x2=xcorr(x,'coeff'); %auto-korelasi dengan normalisasi x3=2*rand(1,length(t)-1)-1; x4=xcorr(x3,'coeff'); %auto-korelasi dengan normalisasi subplot(2,2,1),plot(x) axis([0 100 -2 2]),title('Sinusoida'); subplot(2,2,3),plot(x2) axis([0 200 -2 2]),title('Auto-korelasi Sinusoida'); subplot(2,2,2),plot(x3) axis([0 100 -2 2]),title('White-noise'); subplot(2,2,4),plot(x4) axis([0 200 -2 2]),title('Auto-korelasi White-noise');
Gambar10. Auto-korelasi sinyal sinus dan sinyal noise.
Perhatikan gambar 10, auto-korelasi sinyal sinus menghasilkan gelombang de ngan fasa makin naik kemudian menurun karena proses mekanisme pergeseran korelasi, dan auto-korelasi noise menghasilkan sebuah pulsa (spike) yang menunjukkan informasi variasi sinyal noise. 2.2.6. Auto-korelasi untuk memisahkan sinyal dari noise Berdasarkan point 2.5. sebelumnya, apabila sinyal sinus ditambahkan dengan noise maka hasilnya adalah seperti ditunjukkan oleh gambar 11.
[email protected]
12
Modul Praktikum DSP
Modul 2
fs=500; t=0:1/fs:1; x1=2*sin(2*pi*5*t); x2=4*rand(1,length(t))-2; x3=x1+x2; x4=xcorr(x3,'coeff'); %auto-korelasi dengan normalisasi subplot(2,1,1),plot(x3) axis([0 500 -5 5]),title('Sinus dengan noise'); subplot(2,1,2),plot(x4) axis([0 1000 -2 2]),title('Hasil pemisahan sinyal');
Gambar 11. Pemisahan sinyal bernoise dengan auto-korelasi
2.2.7. Korelasi untuk identifikasi sinyal Salah satu aplikasi korelasi adalah untuk mengenali sinyal dengan cara membandingkan dengan sinyal referensi yang ada. Misalnya pada aplikasi radar.
Gambar 12. Aplikasi pada radar.
Ingat bahwa korelasi mendeteksi dengan baik posisi dari sinyal chirp yang dipantulkan kembali dalam lingkungan yang penuh noise. Anda paham inti dari persoalan ini? Jika kita mempunyai template atau bentuk referensi maka kita dapat menemukan bentuk tersebut walaupun dalam lingkungan yang penuh gangguan.
[email protected]
13
Modul Praktikum DSP
Modul 2
Gambar 13. Radar memancarkan sinyal chirp (atas). Gelombang pantulnya berbaur dengan noise (tengah). Korelasi keduanya menunjukkan kapan sinyal pancarnya kembali (bawah).
2.3. Kesimpulan Sebagai kesimpulan, kita telah melihat konvolusi sebagai: • cara untuk menggabungkan dua array menjadi satu • cara untuk memodifikasi sinyal dengan menghilangkan atau menguatkan beberapa sifatnya. • hasil kali dua persamaan polinomial Jadi, dengan konvolusi kita dapat: • memodifikasi sinyal (filtering) • menciptakan pulsa berulang Dan dengan korelasi kita dapat: • mendeteksi periode sinyal • menentukan letak sinyal • memisahkan sinyal dari noisenya • mengidentifikasi sinyal Referensi: - http://www.neurotraces.com/scilab/scilab2/node34.html
III. Peralatan •
1 set PC yang dilengkapi dengan software Matlab.
[email protected]
14
Modul Praktikum DSP
Modul 2
IV. Prosedur Praktikum 4.1. Konvolusi 1. Jalankan software Matlab 2. Pilih File : New : M-file 3. Membangkitkan sinyal dengan yang terkontaminasi noise. Noise ini akan dihilangkan dengan melakukan konvolusi. Ketikkan perintah berikut. Perhatikan hasilnya. fs=1000; %sampling-rate 1KHz t=0:1/fs:0.5; %selama 0.5 detik x=sin(2*pi*5*t)+sin(2*pi*300*t); %sinyal 5Hz + noise 300Hz h=[2 12 23 23 12 2]; %koefesien filter low-pass y=conv(x,h); %konvolusikan subplot(2,1,1),plot(t,x); subplot(2,1,2),plot(t,y(1:length(t)));
4. Sekarang akan dicoba penggunaan konvolusi dua dimensi untuk mengolah citra yang banyak digunakan pada aplikasi robotik / kontrol. x=imread('pus.bmp'); % jika tidak ada, ambil gambar sembarang y=rgb2gray(x); filter1=fspecial('laplacian'); %z=edge(y,'sobel'); z=conv2(y,filter1,'same'); figure(1); subplot(1,3,1),imshow(x),title('RGB image'); subplot(1,3,2),imshow(y),title('Gray image'); subplot(1,3,3),imshow(z),title('Processed image');
Gambar 14. Proses konvolusi 2-dimensi pada citra
5. Cobalah untuk mengganti koefesien filter1 pada point 4 diatas dengan nilai [1 -1] kemudian dengan [-1 1]. Perhatikan proses yang terjadi. 6. Cobalah kembali perintah baru berikut untuk deteksi tepi. x=imread('pus.bmp'); y=rgb2gray(x); z=edge(y,'sobel'); figure(1); subplot(3,1,1),imshow(x),title('RGB image'); subplot(3,1,2),imshow(y),title('Gray image'); subplot(3,1,3),imshow(z),title('Edge detection');
[email protected]
15
Modul Praktikum DSP
Modul 2
4.2. Korelasi 1. Jalankan software Matlab 2. Pilih File : New : M-file 3. Korelasikan dua buah sinyal sinus dengan sudut fase yang berbeda-beda. Ketikkan perintah berikut dan amati hasilnya sebagai laporan. fs=100; t=0:1/fs:1; %sinus 1Hz x1 = sin(2*pi*1*t); %skala sumbu-x autokorelasi maxx=length(auto)-1; hmaxx=length(t)-1; t2=0:1/(hmaxx):maxx/hmaxx; %plot subplot(3,1,1),plot(t,x1); subplot(3,1,3),text(0.2,0.5,'tekan ENTER'); %animasi for phase=0:pi/8:pi*2, pause %tunggu enter x2=sin(2*pi*t + phase); y=xcorr(x1,x2,'coeff'); subplot(3,1,2),plot(t,x2) subplot(3,1,3),plot(t2,y) subplot(3,1,3), text(0.2,0,strcat('beda fase= ',num2str(phase*180/pi),' derajat')); end
4. Korelasikan sinyal persegi dengan dirinya sendiri. Ketikkan perintah berikut dan amati hasilnya. fs=100; t=0:1/fs:1; x=zeros(1,length(t)); %amplitudo=10 x(40:60)=10; y=xcorr(x,'coeff'); subplot(2,1,1),plot(x), axis([0 100 -20 20]); subplot(2,1,2),plot(y);
5. Korelasikan noise yang mempunyai amplitudo -1 sampai 1 dengan dirinya sendiri. Ketikkan perintah berikut dan amati hasilnya. fs=100; t=0:1/fs:1; x=zeros(1,length(t)); %generate noise disekitar -1 sampai 1 x(40:60)=2*rand(1,21)-1; y=xcorr(x,'coeff'); subplot(2,1,1),plot(x), axis([0 100 -5 5]); subplot(2,1,2),plot(y);
[email protected]
16
Modul Praktikum DSP
Modul 2
6. Korelasikan noise yang mempunyai amplitudo 8 sampai 10 dengan dirinya sendiri. Ketikkan perintah berikut dan amati hasilnya. fs=100; t=0:1/fs:1; x=zeros(1,length(t)); %generate noise disekitar 8 sampai 10 x(40:60)=2*rand(1,21)+8; y=xcorr(x,'coeff'); subplot(2,1,1),plot(x), axis([0 100 -5 15]); subplot(2,1,2),plot(y);
Bandingkan hasil yang didapat dengan hasil sebelumnya (langkah 5). 7. Korelasikan sinyal bernoise dengan dirinya sendiri. Ketikkan perintah berikut dan amati hasilnya. fs=500; t=0:1/fs:1; x1=2*sin(2*pi*5*t); x2=4*rand(1,length(t))-2; x3=x1+x2; x4=xcorr(x3,'coeff'); %auto-korelasi dengan normalisasi subplot(2,1,1),plot(x3) axis([0 500 -5 15]),title('Sinus dengan noise'); subplot(2,1,2),plot(x4) axis([0 1000 -2 2]),title('Hasil auto-korelasi');
8. Korelasikan sinyal bernoise berikut yang ditambahkan dengan komponen DC dengan dirinya sendiri. Ketikkan perintah berikut dan amati hasilnya. fs=500; t=0:1/fs:1; x1=2*sin(2*pi*5*t); x2=4*rand(1,length(t))-2; %tambahkan komponen DC sebesar 10 x3=x1+x2+10; x4=xcorr(x3,'coeff'); %auto-korelasi dengan normalisasi subplot(2,1,1),plot(x3) axis([0 500 -5 15]),title('Sinus bernoise dengan DC offset'); subplot(2,1,2),plot(x4) axis([0 1000 -2 2]),title('Hasil auto-korelasi');
Bandingkan hasil yang didapat dengan hasil sebelumnya (langkah 7). 9. Berikut akan disimulasikan penggunaan korelasi untuk identifikasi sinyal. Akan dibuat 3 sinyal referensi untuk dikorelasikan dengan sebuah sinyal yang ditangkap radar pada lingkungan penuh noise. %inisialisasi fs=500;
[email protected]
17
Modul Praktikum DSP
Modul 2
t=0:1/fs:1; p=length(t);a=100;b=200; pola1=zeros(1,p);pola2=pola1;pola3=pola1;sinyal=pola1; %pola sinyal referensi pola1(a:b)=2*sin(2*pi*10*t(a:b)); pola2(a:b)=2*sin(2*pi*20*t(a:b)); pola3(a:b)=2*sin(2*pi*30*t(a:b)); %simulasi sinyal pantul bernoise sinyal(a+100:b+100)=2*sin(2*pi*20*t(a:b)); sinyal=sinyal+(4*rand(1,p)-2); %plot pola dan sinyal pantul subplot(3,3,1),plot(pola1),axis([0 p -3 3]); subplot(3,3,2),plot(pola2),axis([0 p -3 3]); subplot(3,3,3),plot(pola3),axis([0 p -3 3]); subplot(3,3,[4 5 6]),plot(sinyal),axis([0 p -6 6]); %kros-korelasi kp1=xcorr(pola1,sinyal,'coeff'); kp2=xcorr(pola2,sinyal,'coeff'); kp3=xcorr(pola3,sinyal,'coeff'); %plot hasil kros-korelasi subplot(3,3,7),plot(kp1),axis([0 2*p -1 1]); subplot(3,3,8),plot(kp2),axis([0 2*p -1 1]); subplot(3,3,9),plot(kp3),axis([0 2*p -1 1]);
Perhatikan hasil yang didapat. Hasil korelasi tertinggi menunjukkan bahwa sinyal yang ditangkap mirip dengan referensi yang bersangkutan.
Gambar 15. Kros-korelasi sinyal dengan referensinya.
[email protected]
18
Modul Praktikum DSP
Modul 2
V. Analisa Berdasarkan percobaan yang telah dilakukan, buatlah kesimpulan penggunaan konvolusi dan korelasi !
VI. Tugas Salah satu kegunaan konvolusi adalah penyelesaian hasil kali persamaan polinomial. Dengan 2 2 menggunakan konvolusi pada Matlab, berapakah hasil kali antara (2 + x + 3x ) dengan (x –x 3 – 2x ) ? Tulis program dan hasilnya kemudian bandingkan juga dengan menggunakan perhitungan diatas kertas (secara matematis dengan tangan).
[email protected]
19