Categories
DSP

Pemisahan Derau dan Suara – Speech Noise Reduction

Dalam suatu sistem perekaman suara, dilakukan perekaman suara secara digital dalam suatu area yang berisik dengan frekuensi cuplik 8 kHz. Dianggap bahwa rekaman suara yang dihasilkan mengandung informasi mulai dari hingga 1800 Hz, sehingga kita bisa merancang sebuah tapis lolos-rendah (low-pass) yang akan menahan derau antara 1800 Hz hingga batasan Nyquist, 4000 Hz (separo dari frekuensi cuplik 8000 Hz).

Berikut spesifikasi Tapis kita:

  • Tipe Tapis = FIR lolos-rendah (lowpass FIR filter)
  • Jangkauan Frekuensi Passband = 0 – 1800 Hz
  • Riak (ripple) pada Passband = 0,02 dB
  • Jangkauan Frekuensi Stopband = 2000 – 4000 Hz
  • Pelemahan (attenuation) pada Stopband = 50 dB
  • Tipe Jendela = Hamming
  • Jumlah koefisien = 133
  • Frekuensi cutoff = 1900 Hz

Fungsi jendela menggunakan persamaan-persamaan berikut:

Selanjutnya dibuat skrip fungsi firwd(N,Ftype,WnL,WnH,Wtype) yang digunakan untuk membuat tapis menggunakan jendela dengan listing sebagai berikut…

function B=firwd(N,Ftype,WnL,WnH,Wtype)
 %  B = firwd(N,Ftype,WnL,WnH,Wtype)
 %  Rancang Tapis FIR menggunakan metode Fungsi Jendela
 %  Parameter2 masukan:
 %  N: jumlah koefisien (tap) tapis FIR
 %     Catatan: Harus bilangan ganjil.
 %  Ftype: Tipe tapis
 %	1.  Tapis Low-pass ;
 %   2.  Tapis High-pass;
 %	3.  Tapis Bandpass;
 %   4.  Tapis Bandstop.
 %  WnL: Frekuensi cutoff bawah (radian), WnL=0 untuk Tapis Highpass
 %  WnH: Frekuensi cutoff atas (radian), WnH=0 untuk Tapis Lowpass.
 %  Wtype: tipe fungsi jendela
 %	1.  Jendela Rectangular;
 %   2.  Jendela Triangular;
 %	3.  Jendela Hanning;
 %   4.  Jendela Hamming;
 %	5.  Jendela Blackman;
 % Keluaran:
 % B: Koefisien2 Tapis FIR.
 %
 M=(N-1)/2;
 hH=sin(WnH*[-M:1:-1])./([-M:1:-1]*pi);
 hH(M+1)=WnH/pi;
 hH(M+2:1:N)=hH(M:-1:1);
 hL=sin(WnL*[-M:1:-1])./([-M:1:-1]*pi);
 hL(M+1)=WnL/pi;
 hL(M+2:1:N)=hL(M:-1:1);
 if Ftype == 1
    h(1:N)=hL(1:N);
 end
 if Ftype == 2
    h(1:N)=-hH(1:N);
    h(M+1)=1+h(M+1);
 end
 if Ftype ==3
    h(1:N)=hH(1:N)-hL(1:N);
 end
 if Ftype == 4
    h(1:N)=hL(1:N)-hH(1:N);
    h(M+1)=1+h(M+1);
 end
 % Fungsi-fungsi jendela;
 if Wtype ==1
    w(1:N)=ones(1,N);
 end
 if Wtype ==2
    w=1-abs([-M:1:M])/M;
 end
 if Wtype ==3
    w= 0.5+0.5*cos([-M:1:M]*pi/M);
 end
 if Wtype ==4
    w=0.54+0.46*cos([-M:1:M]*pi/M);
 end
 if Wtype ==5
    w=0.42+0.5*cos([-M:1:M]*pi/M)+0.08*cos(2*[-M:1:M]*pi/M);
 end
 B=h .* w

Fungsi firwd() ini akan kita gunakan dalam ekperimen Noise Removal kita ini. Baik, mari kita lakukan proses tapis derau langkah demi langkah sebagai berikut, kita awali dengan menutup jendela-jendela, sekalian membersihkan memori Matlab…

close all; clear all

Kita siapkan frekuensi cuplik (8000 Hz) dan periodenya (1/Fs), sekaligus membaca data yang digunakan untuk eksperimen ini (menggunakan instruksi load pada Matlab, data beserta listing program lengkap bisa diunduh disini):

fs=8000;T=1/fs;
load we.dat

Kemudian kita siapkan variabel waktunya (t). Mulai dari 0 (detik) hingga [Panjang(we)-1] dikali T (detik)…

t=[0:length(we)-1]*T;

Baik, sekarang kita siapkan deraunya. Derau berkaitan dengan data-data, tingkatnya tinggi (high level) dan bersifat broadband (nanti akan Anda lihat spektrumnya), diawali dengan 1/4 dari rerata kuadrat data…

th=mean(we.*we)/4;
v=sqrt(th)*randn([1,length(we)]);

Gabungkan derau (v) dengan sinyal aslinya (we) dan gambarkan hasilnya (dalam ranah waktu)….

x=we+v;
subplot(2,1,1);plot(t,x,’k’);
xlabel(‘Waktu (detik)’);ylabel(‘Amplitudo’);grid;

Kemudian gambarkan juga spektrumnya…

N=length(x);
f=[0:N/2]*fs/N;
Axk=2*abs(fft(x))/N;Axk(1)=Axk(1)/2;
subplot(2,1,2); plot(f,Axk(1:N/2+1),’k’);
xlabel(‘Frekuensi (Hz)’); ylabel(‘Besaran |X(f)| ‘);grid;

hasilnya…

Bagaimana? Sekarang Anda bisa melihat dengan jelas sinyal + derau dan spektrumnya. Perhatikan bentuk-bentuk ‘rumput’ pada spektrumnya (ini karena adanya derau). Selanjutnya dilakukan proses penapisan untuk mengambil (atau lebih tepatnya menahan) komponen derau. Kita siapkan frekuensi cutoff dalam radian yang dinormalisasi terhadap frekuensi cuplik (Fc/Fs) dikali dengan 2*pi…

wc=2*pi*1900/8000;

Kemudian kita siapkan tapisnya…

B=firwd(133,1,wc,0,4);

Dan akhirnya kita lakukan proses penapisan (filtering)…

y=filter(B,1,x);

Selanjutnya kita gambarkan hasilnya, sekalian spektrumnya…

Ayk=2*abs(fft(y))/N;Ayk(1)=Ayk(1)/2;
subplot(2,1,1); plot(t,y,’k’);
xlabel(‘Waktu (detik)’);ylabel(‘Amplitudo’);grid;
subplot(2,1,2);plot(f,Ayk(1:N/2+1),’k’);
xlabel(‘Frekuensi (Hz)’); ylabel(‘Besaran |Y(f)| ‘);grid;

Hasilnya…

Okey! Bandingkan kedua gambar tersebut, adakah perbedaan? Dalam ranah waktu? Dalam ranah frekuensi? Mo Jawab? Komentar? Pertanyaan? Silahkan gunakan form komentar di bawah ini…

Terima kasih, semoga bermanfaat.. Oya mo listingnya lengkap (termasuk data we.dat)? Unduh aja disini (RAR)!

Catatan:

  • Beberapa instruksi yang tidak dijelaskan dalam artikel mohon merujuk HELP-nya Matlab.

sumber:

  • Tan, Li, 2008, Digital Signal Processing: Fundamentals and Applications, Academic Press, Elsevier, USA
Categories
DSP

Tapis FIR: Efek Order Tapis vs. Penempatan Pole/Zero

Eksperimen sederhana berikut ini menggukanan Matlab 7.0 yang dilengkapi dengan Signal Processing Toolbox dan menggunakan ‘fdatool‘, sebuah alat untuk analisis dan merancang tapis (the Filter Design and Analysis Tool), gunakan program ini untuk:

  • Merancang Tapis
  • Kuantisasi Tapis
  • Analisis Tapis
  • Memodifikasi rancangan tapis
  • Merealisasikan model Simulink untuk Tapis FIR, bentuk langsung, terkuantisasi (quantized, direct form, FIR filters), atau
  • Melakukan transformasi frekuensi digital pada suatu tapis

Jika Anda memberikan perintah ‘fdatool‘ pada Matlab, maka akan ditampilkan jendela dialog sebagai berikut…

Okey, mari kita belajar menggunakan ‘fdatool‘ sekaligus melakukan eksperimen sederhana untuk melihat efek perubahan orde tapis tanpa dan dengan menggunakan jendela versus penempatan pole-zero.

Kita lakukan pengaturan rancangan pada ‘fdatool‘ sebagai berikut:

  • Response Type: Lowpass
  • Design Method: FIR – window
  • Filter Order: 1
  • Options: Window – Rectangular
  • Fs : 10000Hz, Fc : 4000Hz

Hasil pertama sebagai berikut:

&

Kemudian parameter Filter Order kita ubah menjadi 2, 4, 6 dan 10, hasilnya berturut-turut…

&

&

&

&

Bagaimana kesimpulan Anda? silahkan tuangkan pada bagian komentar di artikel ini, silahkan…

Next, kita akan coba eksperimen menggunakan jendela yang dipakai pada Tapis dan efeknya terhadap response dan pole-zero dengan merubah orde tapis seperti sebelumnya. Kita awali dengan orde tapis sebesar 1, hasilnya:

&

Selanjutnya untuk orde tapis: 2, 4, 6 dan 10, hasilnya sebagai berikut (berturut-turut)…

&

&

&

&

Bagaimana kesimpulan Anda dengan efek penggunaan jendela ini? silahkan tuangkan pada bagian komentar di artikel ini, silahkan…

Categories
DSP

Implementasi Metode Penapis Highpass dan Penapis Highboost dalam Penajaman Citra menggunakan Kernel Konvolusi

Telah dibuat sebuah sistem penajaman citra menggunakan kernel konvolusi penapis High-pass dan High-boost. Sistem terdiri dari dua kategori, yaitu mengimplementasikan metode kernel konvolusi penapis High-pass dan penapis High-boost untuk mempertajam citra dan menghitung nilai MSE (Mean Square Error) antara citra asli dengan citra yang telah dimodifikasi.

Sistem ini dapat mempertajam suatu citra yang terdegradasi oleh penapis Gaussian blur ataupun penapis jenis lain. Dalam hal ini, kualitas citra akan ditingkatkan dengan mempertajam detail yang penting dalam citra tersebut dan mempertajam detil objek yang telah blur. Citra yang telah ditajamkan dapat dibandingkan dengan citra asli untuk mengetahui seberapa dekat kesamaan kedua citra tersebut dengan menggunakan parameter MSE. Semakin kecil nilai MSE antara kedua citra maka kedua citra tersebut semakin mirip.

Hasil penelitian menunjukan penajaman terbaik diperoleh pada penajaman citra buram Gaussian Blur radius 1 piksel, yang ditandai dengan nilai MSE paling kecil yaitu pada kernel 1 dan faktor penguat 1. Hasil penajaman terburuk/terparah diperoleh pada penajaman citra buram Gaussian Blur radius 50 piksel, yang ditandai pada kernel 3 dan faktor penguat 5. Penajaman citra sangat tergantung pada kernel konvolusi High-pass filter dan High-boost filter dan nilai faktor penguat yang digunakan. Semakin besar nilai faktor penguat kernel, citra yang dihasilkan akan semakin terang.

Kata kunci: kernel konvolusi, citra tajam, penapis high-pass, penapis high-boost

(Informasi selengkapnya klik disini)

Categories
DSP

Tapis IIR: Metode penempatan Pole dan Zero

Tapis IIR (Infinite Impulse Response), sebuah tapis yang bergantung pada masukan dan keluaran (tidak hanya masukan saja, sebagaimana dijumpai pada FIR, Finite Impulse Response), bisa dirancang menggunakan metode penempatan pole-zero pada bidang-Z. Walaupun metode ini lebih bersifat intuitif dan pendekatan, ada beberapa kasus dimana kita bisa melakukan secara non-intuitif dan lebih akurat, ya walau hanya untuk yang sederhana saja, antara lain:

  1. Second-order Bandpass Filter;
  2. Second-order Bandstop Filter;
  3. First-order Lowpass Filter, dan
  4. First-order Highpass Filter.

Okey, langsung to the point aja yach, saya jelaskan satu-satu secara singkat. Sebelumnya, secara garis besar penempatan ZERO menentukan bentuk persamaan untuk pembilang (yang akar-akarnya menyebabkan Fungsi Alih bernilai NOL), sedangkan POLE menentukan bentuk persamaan untuk penyebut (persamaan yang akar-akarnya menghasilkan Fungsi Alih bernilai TAK-HINGGA). Fungsi alih? Apaan tuch? Fungsi alih adalah fungsi perbandingan keluaran dan masukan, misalnya Y(Z)/X(Z), dalam ranah-Z, yang kemudian biasa disingkat sebagai fungsi H(Z).

Okey lihat aja gambar berikut:

Gambar 1. Efek penempatan Pole/Zero terhadap Besaran atau Magnitude

Dari Gambar 1 jelas terlihat bahwa ZERO harus selalu ditempatkan pada lingkaran satuan (unit circle), sedangkan POLE harus didalam lingkaran satuan, agar selalu stabil.

Second-order Bandpass Filter

Perhatikan gambar berikut ini…

Gambar 2. Penempatan POLE/ZERO pada 2nd order Bandpass Filter

Nach tu… liat saja, ZERO harus ditempatkan pada posisi (-1,0) dan (1,0), jumlahnya 2 (dua) karena 2nd order! Kemudian POLE-nya harus ditempatkan DIDALAM lingkaran satuan, r menentukan lebar pita sedangkan θ menentukan frekuensi tengahnya. Persamaan-nya sebagai berikut…

Menghitung r, θ dan H(z), serta…

menghitung K

Second-order Bandstop (Notch) Filter

Perhatikan gambar berikut ini…

Gambar 3. Penempatan POLE/ZERO pada 2nd order Bandstop Filter

Terlihat bahwa sekarang penempatan POLE dan ZERO memiliki sudut θ yang sama, berbeda dengan yang Bandpass, dimana ZERO tidak bergantung pada posisi POLE. Persamaanya…

Menghitung r, θ dan H(z), serta…

menghitung K

First-order Lowpass Filter

Dalam hal ini ada 2 kasus, semua berkaitan dengan nilai dari frekuensi cutoff, pertama jika frekuensi cutoff kurang dari 1/4 frekuensi cuplik (fc < 1/4 fs), dan frekuensi cutoff yang lebih dari 1/4 frekuensi cuplik (fc > 1/4 fs), perhatikan ilustrasi berikut untuk kasus yang pertama

Gambar 4. Penempatan POLE/ZERO untuk 1st order Lowpass Filter dengan fc < 1/4 fs

Gambar 5. Penempatan POLE/ZERO untuk 1st order Lowpass Filter dengan fc > 1/4 fs

Terus persamaannya? Ya ini dia…

First-order Highpass Filter

Masih sama, tetap ada dua kasus, perhatikan ilustrasi berikut…

Gambar 6. Penempatan POLE/ZERO untuk 1st order HigpassFilter dengan fc < 1/4 fs

Gambar 7. Penempatan POLE/ZERO untuk 1st order HigpassFilter dengan fc > 1/4 fs

Terus ini rumus atau persamaanya..

Nah sekarang pertanyaannya?

Bagaimana untuk frekuensi cutoff yang sama dengan 1/4 frekuensi cuplik?

Mmmm iya ya gimana ya? Okey ikuti terus penjelasan saya, kunjungi website saya, siapa tahu sudah saya tulis artikelnya he he he….

Sumber:

  • Tan, Li, 2008, Digital Signal Processing: Fundamentals and Applications, Academic Press, Elsevier, USA
Categories
DSP

Transformasi Fourier – Kapan muncul frekuensi-nya?

Kalau Anda belum tahu cerita saya tentang Transformasi Fourier silahkan klik disini. Jika sudah saya punya pertanyaan…

Baiklah pakai contoh saja dengan Matlab…

Kita buat sebuah sinyal sebagai berikut, masih sama seperti sebelumnya, namun kali ini kedua frekuensi, yaitu 100 Hz dan 200Hz tidak muncul bersamaan tetapi bergantian, apakah Transformasi Fourier mampu melihat kedua frekuensi ini?

fs = 1000;
t = 0:1/fs:0.5;
tx = [t t+t(length(t))];
y1 = sin(2*pi*100*t);
y2 = sin(2*pi*200*t);
y = [y1 y2];
plot(tx,y);
title(‘Sinyal dengan kandungan 2 frekuensi’)
xlabel(‘waktu (detik)’);

Hasilnya, gambaran dari sinyal yang saya tanyakan adalah sebagai berikut…

Kemudian kita lakukan FFT…

Y = fft(y);

Kita gambarkan hasilnya dengan perintah-perintah berikut…

f = fs*(0:(length(Y)-1)/2)/length(Y);
figure;
plot(f,abs(Y(1:(length(Y)+1)/2)));
title(‘Kandungan frekuensi sinyal y (gambar 1 sisi)’);
xlabel(‘frekuensi (Hz)’);

hasilnya sebagai berikut…

Mmmm bisa khan? Sama saja hasilnya… bisa diperoleh 2 frekuensi sesuai dengan dugaan kita, bagaimana jika ditambahkan derau kemudian di-FFT…

ya= y + 2*randn(size(tx));
figure;
plot(tx,ya);
title(‘Sinyal apakah ini….??’);
xlabel(‘waktu (detik)’)
;

YA = fft(ya);
f = fs*(0:(length(YA)-1)/2)/length(YA);
figure;
plot(f,abs(YA(1:(length(YA)+1)/2)));
title(‘Kandungan frekuensi sinyal apa ini….??’);
xlabel(‘frekuensi (Hz)’);

Nah hasilnya…

Sama seperti artikel saya yang lalu khan? Luar biasa Transformasi Fourier ini…

Sekarang pertanyaan saya, lantas bisakah kita tahu bahwasanya ke-2 frekuensi tidak bersamaan munculnya? Ya tidak bisa-lah… hanya kandungan frekuensi saja, sedangkan kapan dan lama waktu muncul masing-masing freuensi itu kita tidak tahu… lantas kalo mo tahu? Ya pake lainnya donk… apaan tuch? Pake STFT (Short Time Fourier Trasnform)…

Wah apa lagi nich…

Ceritanya begini, jika TF bekerja untuk seluruh sinyal, tapi STFT hanya bekerja pada sebuah jendela yang kecil yang kemudian digeser-geser mulai dari awal hingga akhir untuk mendapatkan interpretasi data keseluruhan secara waktu dan frekuensi atau istilahnya time-frequency domain… di Matlab pake perintah specgram()

figure;
specgram(y,256,1000);

Keterangan:
256 sebagai panjang jendela, sedangkan 1000 merupakan fs-nya

Hasilnya…

Nah tuch… kelihatan bahwa kedua frekuensi muncul secara tidak bersamaan, lebih tepat berturutan, hanya saja tidak terlalu jelas dimana tepatnya frekuensi mulai bergantian… Baik sekarang Anda perhatikan masing-masing perintah dan hasil gambarnya sebagai berikut:

figure;
specgram(y,64,1000);
figure;
specgram(y,128,1000);
figure;
specgram(y,256,1000);

Hasilnya secara berturutan…

Mm menarik hasilnya, dengan semakin besar ukuran jendela, semakin akurat resolusi frekuensinya, tapi semakin gak jelas resolusi waktunya. Demikian juga sebaliknya, semakin kecil ukuran jendelanya, semakin bagus resolusi waktunya, tapi resolusi frekuensi-nya makin jelek…

Ini-lah yang dimaksudkan dengan Ketidak-pastian Heisenberg… ada semacam trade-off antara resolusi waktu dan frekuensi, tapi minimal sudah kita peroleh ranah waktu-frekuensi, alhamdulillah…

Ada komentar saudara-saudari sekalian?

Categories
DSP

Transformasi Fourier, apaan tuch?

Transformasi Fourier merupakan keluarga dari Transformasi Integral, gampangnya, ini adalah ‘alat’ yang bisa kita gunakan untuk melihat sinyal dengan kacamata yang lain. Jika selama ini kita hanya melihat sinyal melalui osiloskop atau alat sejenis lainnya, itu adalah visualisasi sinyal dalam ranah waktu (time domain), sumbu horisontal-nya waktu (t) dan sumbu vertikal-nya adalah amplitudo (A)…

Mmmm lantas ngapain? Ya kita tidak bisa tahu secara langsung informasi penting di ranah waktu kecuali amplitudo dan kapan terjadinya, bisakah menghitung frekuensinya? Mmmm gampang, itu mungkin jawaban Anda, karena bisa jadi Anda hanya membayangkan sebuah gelombang sinusoidal, Anda tinggal hitung berapa gelombang dalam satu detiknya, thing! Langsung ketemu sekian gelombang/detik atau pake satuan cycle/sec atau Hz…

Nah kalo sinyalnya kayak gini gimana dong…

Okey… okey, Anda bisa bilang ‘Ya iyalah mosok ya iya donk… Gimana ngitungnya kalo bentuk gak karuan kayak gitu, terkesan acak dech, jangan-jangan emang gak periodik… piye to iki mas…??’

Baik sebelum cari informasi frekuensi dari gelombang tersebut, akan saya jelaskan langkah demi langkah… Are You ready?? Are You ready?? Are You ready?? wis gak usah kebanyakan omong/tanya…

Masih pake bantuan Matlab, kita awali dengan mendefinisikan sinyal yang akan digunakan sebagai percobaan. Frekuensi cuplikan 1000 Hz (=fs), kita gambar hanya 0,5 detik pertama (=t) untuk sebuah sinyal dengan 2 kandungan frekuensi 100 Hz dan 200 Hz (=y):

fs = 1000;
t = 0:1/fs:0.5;
y = sin(2*pi*100*t)+sin(2*pi*200*t);

kemudian kita gambar yuuk…

plot(t,y);
title(‘Sinyal dengan kandungan 2 frekuensi’)
xlabel(‘waktu (detik)’);

hasilnya…

Kemudian kita lakukan FFT (Fast Fourier Transform), pake perintah fft-nya Matlab:

Y = fft(y);

Kemudian kita gambar hasilnya apa adanya, ingat bahwa hasil dari FFT selalu ada 2 (karena efek simetris):

f = fs*(0:length(Y)-1)/length(Y);
figure;
plot(f,abs(Y));
title(‘Kandungan frekuensi sinyal y (gambar 2 sisi)’)
xlabel(‘frekuensi (Hz)’);

hasilnya…

Baik sekarang kita gambar 1 sisi saja yach…

f = fs*(0:(length(Y)-1)/2)/length(Y);
figure
plot(f,abs(Y(1:(length(Y)+1)/2)));
title(‘Kandungan frekuensi sinyal y (gambar 1 sisi)’)
xlabel(‘frekuensi (Hz)’);

hasilnya…

Gimana mudeng, paham? Enak khan langsung ketahuan frekuensinya… 100Hz dan 200Hz…! Ups terus gimana dengan gambar pertama tadi? Ini dia hasil FFT-nya…

We.. e.. e… jebulannya (ternyata) bagaimana? kandungan-nya sama seperti sinyal awal, 100 Hz dan 200Hz, tapi kok ada tambahan gambar ‘rumput’-nya ya? Ya iyalah donk… lha wong sinyal asli saya kasih derau atau sinyal acak kok… he he he…

Silahken kasih komentar atau pertanyaan, atau barangkali Anda penasaran dengan skrip/program untuk membuat sinyal asli plus acak dan menampilkan FFT-nya? Silahken berkomentar…

NB:
Kenapa saya pake perintah figure untuk memplot gambar-gambar berikutnya? ya supaya gambar awal tidak hilang donk dan ada gambar baru yang muncul… he he he gitu aja kok repot…

Categories
DSP

Analisis Sinyal Menggunakan Wavelet – Pendahuluan

Kebutuhan akan resolusi tinggi dalam analisis sinyal non-stasioner telah mengakibatkan perkembangan berbagai sarana (tools) yang ampuh untuk menganalisis data-data sinyal non-stasioner.

Metode Transformasi berbasis Wavelet merupakan salah satu sarana yang dapat digunakan untuk menganalisis (meneliti) sinyal-sinyal non-stasioner. Dalam beberapa tahun terakhir ini, metode ini telah dibuktikan kegunaannya dan sangat populer di berbagai bidang ilmu. Analisis Wavelet dapat digunakan untuk menunjukkan kelakukan sementara (temporal) pada suatu sinyal, misalya dalam bidang geofisika (sinyal seismik), fluida, medik dan lain sebagainya. Metode Transformasi Wavelet ini dapat digunakan untuk menapis data atau meningkatkan mutu kualitas data; dapat juga digunakan untuk mendeteksi kejadian-kejadian tertentu serta dapat digunakan untuk pemampatan data (Foster dkk., 1994).

Selain itu Transformasi Wavelet juga dapat digunakan untuk analisis sinyal-sinyal non-stasioner (yaitu sinyal yang kandungan frekuensinya bervariasi terhadap waktu), karena berkaitan dengan kemampuannya untuk memisah-misahkan berbagai macam karakteristik pada berbagai skala (Anant dan Dowla, 1997).

Konsep Transformasi Wavelet telah dirumuskan sejak awal 1980-an oleh beberapa ilmuwan seperti Morlet, Grosmann, Daubechies dan lain-lain. Sejak itu Wavelet kemudian dikembangkan dalam beberapa area disiplin ilmu atau aplikasi seperti matematika, fisika, pemrosesan citra, analisis numerik, pengolahan data citra dan data geofisika. Transformasi Wavelet merupakan transformasi yang terpadu menggunakan kernel terintegrasi yang dinamakan wavelet. Wavelet ini digunakan dalam dua cara:

  1. Sebagai kernel terintegrasi untuk analisis serta mengekstraksi informasi suatu data, dan
  2. Sebagai suatu basis penyajian atau karakterisasi suatu data. Hal ini akan membawa kita kepada 2 (dua) pertanyaan berikut:
    1. informasi apakah yang dapat diekstraksi menggunakan wavelet ? dan
    2. bagaimana cara kita memperoleh suatu penyajian atau deskripsi suatu data menggunakan wavelet ?

Jawaban untuk pertanyaan yang pertama terletak pada sifat terpenting dari wavelet yaitu lokalisasi waktu-frekuensi (time-frequency localization). Kelebihan dari analisis sinyal menggunakan wavelet adalah bahwa dapat dipelajarinya karakteristik sinyal secara lokal dan detil, sesuai dengan skala-nya. Sifat ini sangat berguna untuk sinyal-sinyal non-stasioner atau memiliki komponen transien dengan waktu-hidup (lifetime) yang pendek atau memiliki karakteristik yang berbeda pada skala-skala yang berbeda atau memiliki singularitas. Sedangkan jawaban untuk pertanyaan yang kedua didasarkan pada cara memandang wavelet sebagai blok pembangun dalam proses penguraian (decomposition) atau ekspansi deret. Jadi, suatu penyajian data menggunakan wavelet dilakukan dengan cara ekspansi tak-berhingga dari wavelet yang diulur atau dilated dan digeser atau translated (Kumar dan Foufoula-Georgiou, 1994).

Wavelet merupakan fungsi matematik yang membagi-bagi data menjadi beberapa komponen frekuensi yang berbeda-beda, kemudian dilakukan analisis untuk masing-masing komponen menggunakan resolusi yang sesuai dengan skalanya (Graps, 1995). Kepentingan penggunaan Transformasi Wavelet ini berdasarkan fakta bahwa dengan Transformasi Wavelet akan diperoleh resolusi waktu dan frekuensi yang jauh lebih baik daripada metode-metode lainnya seperti Transformasi Fourier maupun Transformasi Fourier Waktu Pendek (STFT=Short Time Fourier Transform), selain itu analisis data pada kawasan waktu dan frekuensi penting dan harus dilakukan untuk mempelajari perilaku sinyal-sinyal non-stasioner, selain itu juga dapat dilakukan analisis data pada kawasan waktu dan amplitudo serta kawasan frekuensi dan daya (spektrum).

Daftar Pustaka:

  • Anant, K.S. dan Dowla, F.U., 1997, Wavelet Transform Methods for Phase Identification in Three-Component Seismograms, Bulletin of Seismological Society of America, Vol. 87, No. 6, halaman 1598 – 1612.
  • Foster, D.J., Mosher, C.C. dan Hassanzadeh, S., 1994, Wavelet Transform Methods for Geophysical Applications, 64th Annual International Meeting, Soc. Expl. Geophys., Expanded Abstract, halaman 1465 – 1468.
  • Graps, A., 1995, An Introduction to Wavelets, IEEE Computational Science and Engineering, vol.2, num.2, IEEE Computer Society, Loas Alamitos – CA, USA.
  • Kumar, P. dan Foufoula-Georgiou, E., 1994, Wavelet Analysis in Geophysics: An Introduction, Wavelet in Geophysics, Academic Press Inc., USA, halaman 1-43.

semoga bermanfaat… (klik disini untuk mengunduh ebook-nya)

Categories
DSP

Perkembangan (Aplikasi) Transformasi Wavelet

Wavelet theory” is the result of a multidisciplinary effort that brought together mathematicians, physicists and engineers… this connection has created a flow of ideas that goes well beyond the construction of new bases or transforms. – Stephane Mallat

Dalam beberapa tahun belakangan ini telah terjadi ledakan besar pada aktivitas yang melibatkan wavelet. Ribuankarya ilmiah (paper) tentang teori dan aplikasi wavelet telah diterbitkan. Wavelet merupakan metode yang ampuh dan fleksibel untuk menangani berbagai masalah dasar dalam dunia sains dan teknik.

Berikut ini beberapa bidang aplikasi yang dapat ditangani menggunakan wavelet:

  • Audio denoising, Pesan yang disampaikan melalui telepon internasional mengandung banyak derau. Bagaimana menghilangkan derau ini sedemikian hingga pesan menjadi jelas?
  • Signal compression, isu penyimpanan dan distribusi data-data multimedia melalui jaringan merupakan dasar dari berbagai macam penelitian pemampatan data. Adakah cara memampatkan data sedemikian rupa sehingga rasio pemampatan sebesar-besarnya tanpa banyak kehilangan informasi akibat proses pemampatan tersebut?
  • Object detection, Bagaimana kita bisa mendeteksi adanya sebuah objek dalam sebuah gambar yang begitu kompleks?
  • Fingerprint compression, FBI memiliki lebih dari 25juta sidik jari, andaikata data sidik jari disimpan tanpa proses pemampatan, maka diperlukan lebih dari 250 terabyte. Adakah cara pemampatan data sidik jari tersebut dengan rasio yang besar tanpa banyak kehilangan data aslinya? (atau kalau perlu 100% reversible, artinya data asli dan hasil pemampatan bisa dikembalika seperti semula 100% sama…)
  • Image denoising, Citra yang diperoleh dari mikroskop elektron dan sinar laser banyak mengandung derau, apakah derau ini bisa dihilangkan? Sehingga gambar menjadi lebih jelas?
  • Image enhancement, Kalau sebuah foto menjadi buram, bagaimana cara untuk memfokuskan kembali?
  • Image recognition, Bagaimana manusia bisa mengenal wajah? Apakah ini bisa dilakukan melalui komputer? Robot?
  • Diagnosing heart or brain trouble, Apakah ada cara untuk mendeteksi detak jantung atau detak otak yang abnormal?
  • Speech recognition, Faktor-faktor apa saja yang membedakan antara bunyi konsonan dan vokal? Bagaimana manusia bisa mengenali ucapan? Dengan berbagai macam manusia?

dan masih banyak lagi lainnya…

Yang jelas, Transformasi Wavelet sangat sesuai untuk bidang aplikasi yang melibatkan sinyal-sinyal atau data-data yang a-periodik, penuh derau (noisy), terputus-putus (intermittent), transien dan seterusnya. Mengapa? Karena Transformasi Wevelet menawarkan analisis waktu-frekuensi yang berbeda dari STFT (Short-Time Fourier Transform), yang kemudian melahirkan berbagai macam metode berbasis wavelet untuk analisis data yang canggih.

Banyak ide awal analisis menggunakan Transformasi Wavelet diawali puluhan tahun yang lalu, awalnya di pertengahan tahun 1980-an untuk analisis sinyal-sinyal seismik. Pada waktu itu diawali dari sekelompok kecil ilmuwan (small community) yang kemudian menghasilkan beberapa paper-paper. Hingga tahun 1990-an mulailah berbagai macam aplikasi Wavelet dalam bidang sains dan teknologi mulai berkembang dengan cepat, perkembangan tersebut ditunjukkan dengan jumlah paper yang dipublikasikan semakin banyak dari tahun ke tahun, perhatikan gambar berikut…

Sumber:

  • Addison, Paul.S., 2002, “The Illustrated Wavelet Transform Handbook“, Institute of Physics Publishing, Bristol
  • Walker, James.S., 1999, “A Primer on Wavelets and Their Scientific Applications 1stED“, Chapman & Hall/CRC, USA

Semoga bermanfaat…

Categories
DSP

Nyquist – Efek Aliasing

Jika Anda belum tahu tentang Teorem Nyquist, coba baca artikel saya disini. Okey, sekarang saya akan coba menunjukkan kepada Anda mengenai Efek Aliasing (yang nanti akan lihat bahwa frekuensi alias = frekuensi pencuplikan – frekuensi sinyal), yaitu suatu efek yang akan terjadi jika kita melakukan pencuplikan dengan frekuensi pencuplikan dibawah dari ketentuan Nyquist. Okey let’s get started…

Pertama kita gunakan frekuensi pencuplikan sebesar 20 Hz dan rentang waktu selama 1 detik…

fs=20;
t=0:1/fs:1;

Kita awali dengan frekuensi 1Hz, kemudian dilanjutkan dengan frekuensi 2Hz, 5Hz, 10Hz (pas setengah frekuensi pencuplikan), 15Hz, 18Hz dan 19Hz…

f1=1;
x1=sin(2*pi*f1*t);
f2=2;
x2=sin(2*pi*f2*t);
f3=5;
x3=sin(2*pi*f3*t);
f4=10;
x4=sin(2*pi*f4*t);
f5=15;
x5=sin(2*pi*f5*t);
f6=18;
x6=sin(2*pi*f6*t);
f7=19;
x7=sin(2*pi*f7*t);

Kemudian kita gambarkan semua hasil dalam satu plot agar kita bisa membandingkan 7 frekuensi tersebut (dengan frekuensi pencuplikan yang sama, 20Hz)…

plot(t,x1,’-o’,t,x2,’-o’,t,x3,’-o’,t,x4,’-o’,t,x5,’-o’,t,x6,’-o’,t,x7,’-o’);
legend(‘1hz’,’2hz’,’5hz’,’10hz’,’15hz’,’18hz’,’19hz’);
title(‘Teorema Nyquist – Efek Aliasing (Fs=20Hz)’);

Hasilnya ditunjukkan pada gambar berikut…

Nach menarik sekali hasilnya, Anda perhatikan bahwa untuk frekuensi 10Hz hasilnya berupa garis lurus (masih ingat dengan artikel saya Teorema Nyquist – Pengenalan?), jelas karena frekuensi pencuplikan = 2 kali frekuensi 10Hz. Bagaimana dengan frekuensi 1Hz, 2Hz dan 5Hz? Nothing’s wrong khan, baik2 aja khan?

Mmmm… bagaimana dengan frekuensi 15Hz, 18Hz dan 19Hz? Nah gambarnya memang terbalik dari frekuensi, masing-masing, 5Hz, 2Hz dan 1Hz tetapi frekuensi-nya khan sama, iya khan? Ini dia yang dinamakan Efek Aliasing. Misalnya untuk 15Hz menghasilkan…

frekuensi aliasing = frekuensi pencuplikan – frekuensi 15Hz = 20Hz – 15Hz =5Hz

Jadi frekuensi 15Hz, dengan Fs=20Hz, merupakan kembaran (alias) dari 5Hz. Demikian seterusnya untuk contoh-contoh frekuensi aliasing lainnya (18Hz dan 19Hz yang masing-masing menghasilkan 2Hz dan 1Hz).

Jika ada pertanyaan atau komentar silahkan saja… Have a nice day…! Terima kasih, semoga bermanfaat…

Categories
DSP

Nyquist – Apaan tuch?

Dalam dunia Pemrosesan Sinyal Digital, ada suatu proses untuk mendapatkan data digital melalui proses pencuplikan, artinya sinyal analog dicuplik (diambil) secara diskrit dengan periode Ts atau frekuensi cuplik Fs. Nah agar tidak terjadi kesalahan (yang kemudian diberi nama aliasing), pak Nyquist memberikan aturan bahwa frekuensi cuplik minimal harus 2 (dua) kali lipat frekuensi maksimum yang dikandung sinyal yang bersangkutan.

Untuk memahami hal tersebut, mari kita persiapkan dulu sinyal sinusoidal dengan frekuensi 2 Hz. Kita gunakan frekuensi cuplik 1000 Hz atau periode 0.001 detik (supaya gambarnya jauh lebih ‘mulus’ dibandingkan dengan eksperimen-eksperimen yang akan kita lakukan)…

>>t=0:0.001:1;
>>f=2;
>>y=sin(2*pi*f*t);

Okey, Anda siap? Konsenterasi… kita awali dengan menyiapkan gambar (perintah figure), kemudian diteruskan dengan menyiapkan variabel waktu t1 dengan frekuensi sampling = frekuensi sinyal (atau periodenya 1/f detik), kita hitung y1-nya kemudian kita gambarkan sinyal asli y dan sinyal hasil pencuplikan y1, menggunakan perintah-perintah berikut…

>>figure;
>>t1=0:1/f:1;
>>y1=sin(2*pi*f*t1);
>>plot(t,y,t1,y1,’-o’);
>>title(sprintf(‘frekuensi sampling = frekuensi sinyal, jumlah data %d’,length(y1)));

Hasilnya (yang asli warna biru, yang cuplikan warna hijau)…

Hmmm… apaan tuch (perhatikan garis hijau), kok cuman garis lurus, berarti salah nich… Ya jelas lha wong frekuensi pencuplikan = frekuensi sinyal, harusnya khan 2 kali lipat, coba kita ubah lagi… (gunakan 1/(2*f))

>>figure;
>>t1=0:1/(2*f):1;
>>y1=sin(2*pi*f*t2);
>>plot(t,y,t1,y1,’-o’);
>>title(sprintf(‘frekuensi sampling = 2 x frekuensi sinyal, jumlah data %d’,length(y1)));

Hasilnya…

Oalah…. sami mawon, podho wae, sama saja… ya garis lurus lagi (walaupn jumlah datanya bertambah, perhatikan lingkaran-lingkaran hijau, bandingkan dengan gambar sebelumnya)! Loch khan pak Nyquist sudah bilang kalo itu 2 kali lipat adalah minimal, ya mestinya pake yang lebih tinggi lagi, coba sekarang pake 2,5 kali lipat…

>>figure;
>>t1=0:1/(2.5*f):1;
>>y1=sin(2*pi*f*t1);
>>plot(t,y,t1,y1,’-o’);
>>title(sprintf(‘frekuensi sampling = 2,5 x frekuensi sinyal, jumlah data %d’,length(y1)));

Hasilnya…

Wah ini agak lumayan (maksudnya dibandingkan hasil-hasil sebelumnya), bukan garis lurus, tapi… belum berbentuk sinusoidal ya…?? Okey kita coba jadi 3 kali lipat…

>>figure;
>>t1=0:1/(3*f):1;
>>y1=sin(2*pi*f*t1);
>>plot(t,y,t1,y1,’-o’);
>>title(sprintf(‘frekuensi sampling = 3 x frekuensi sinyal, jumlah data %d’,length(y1)));

Hasilnya…

Kemudian 4 kali lipat…

>>figure;
>>t1=0:1/(4*f):1;
>>y1=sin(2*pi*f*t1);
>>plot(t,y,t1,y1,’-o’);
>>title(sprintf(‘frekuensi sampling = 4 x frekuensi sinyal, jumlah data %d’,length(y1)));

Hasilnya…

Kemudian 10 kali lipat…

>>figure;
>>t1=0:1/(10*f):1;
>>y1=sin(2*pi*f*t1);
>>plot(t,y,t1,y1,’-o’);
>>title(sprintf(‘frekuensi sampling = 10 x frekuensi sinyal, jumlah data %d’,length(y1)));

Hasilnya…

Kemudian (terakhir, jangan kebanyaken) 20 kali lipat…

>>figure;
>>t1=0:1/(20*f):1;
>>y1=sin(2*pi*f*t1);
>>plot(t,y,t1,y1,’-o’);
>>title(sprintf(‘frekuensi sampling = 20 x frekuensi sinyal, jumlah data %d’,length(y1)));

Hasilnya…

Bagaimana? Semakin mendekati sinusoidal aslinya too…?? Cuman jumlah data-nya juga semakin banyak, iya khan? Terus silahkan disimpulkan sendiri, okey? Atau kalo masih penasaran silahkan Anda coba 30, 40, 70 atau bahkan 100 kali lipat… silahkan jika mau…

Silahkan berikan komentar atau pertanyaan Anda…

NB: Sinyal asli sebenarnya menggunakan frekuensi cuplik sebesar 500 kali dari frekuensi 2 Hz (=1000 Hz), jadi wajar saja jika gambarnya halus (banget).