24
BAB 4
PEMBAHASAN
4.1 Realisasi GUI Program
Berikut adalah realisasi tampilan antarmuka utama dari program
PERANCANGAN TAPIS BUTTERWORTH UNTUK MERESTORASI CITRA
DIGITAL yang dibuat pada tugas akhir ini.
Gambar 4.1 Tampilan antarmuka utama program
Pada tampilan utama program terdapat empat buah kontrol Axes yang digunakan
untuk menampilkan citra masukan yang dibaca, citra hasil pengaburan dan penambahan
derau, citra hasil penapisan Butterworth, error citra, dan grafik hasil evaluasi kinerja
tapis Butterworth. Terdapat juga sepuluh buah tombol yang mereferesentasikan tiap
proses yang terdapat pada program dalam melakukan proses restorasi citra
menggunakan tapis Butterworth. Tombol-tombol tersebut adalah tombol Buka Citra,
tombol Pengaburan, tombol Derau, tombol Rotasi, tombol Intensitas, tombol RESET,
tombol EVALUASI BUTTERWORTH LOWPASS, EVALUASI BUTTERWORTH
BANDPASS, EVALUASI BUTTERWORTH HIGHPASS, EVALUASI BUTTERWORTH
BANDSTOP. Selain itu terdapat juga empat buah kontrol Button Group yang
masing-masing memiliki tujuh buah kontrol Radio Button. Keempat kontrol Button Group
tersebut mereferesentasikan operasi-operasi penapisan pada empat bidang frekuensi.
Sedangkan kontrol-kontrol Radio Button yang terdapat di dalamnya mereferesentasikan
25
Selain antarmuka utama, program juga memiliki antarmuka tabel dan grafik
evaluasi kinerja tapis Butterworth. Berikut adalah tampilan antramuka tabel dan grafik
evaluasi yang dimaksud:
Gambar 4.2 Tampilan antarmuka tabel dan grafik evaluasi
Pada antramuka tabel dan grafik evaluasi kinerja terdapat sebuah kontrol Table
yang digunakan untuk menampilkan nilai dari parameter-parameter evaluasi yang
digunakan. Selain itu terdapat juga sebuah kontrol Axes yang digunakan untuk
menampilkan grafik dari parameter evaluasi RMSE, PSNR, PFE, dan MAE. Terdapat
juga empat buah kontrol Push Button yang digunakan untuk menampilkan grafik dari
parameter evaluasi RMSE, PSR, PFE, dan MAE.
Untuk lebih jelasnya, berikut adalah penjelasan detail terkait kontrol-kontrol
yang terdapat pada program.
4.1.1 Kontrol Tombol Buka Citra
Tombol ini digunakan untuk melakukan pembacaan citra masukan yang akan
diproses dengan memilih sendiri citra melalui jendela Open File yang ditamilkan. Hasil
pembacaan citra masukan akan ditampilkan pada sebuah kontrol Axes seperti yang
26
Gambar 4.3 Kontrol tombol Buka Citra
Berikut adalah perintah-perintah yang terdapat pada Callback kontrol tombol
Buka Citra:
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
set(handles.tombolDerau,'Enable','off'); set(handles.tombolKabur,'Enable','on'); set(handles.tombolRotasi,'Enable','off'); set(handles.tombolIntensitas,'Enable','off'); set(handles.tombolReset,'Enable','on');
set(handles.tombolEvaluasiLowPass,'Enable','off');
[namafile
namapath]=uigetfile('*.jpg;*.bmp;*.jpeg;*.png;*.tif;','Pilih Sebuah Citra');
namacitra=[namapath namafile];
if(size(namacitra,3) == 3)
namacitra = rgb2gray(namacitra); end
axes(handles.axes1)
imshow(namacitra); title('Citra Semula');
global I
I = getimage(handles.axes1);
Fungsi Callback tombol Buka Citra mengaktifkan kontrol tombol Pengaburan
27
Skala Intensitas dan tombol EVALUASI BUTTERWORTH LOWPASS menggunakan
perintah berikut ini.
set(handles.tombolDerau,'Enable','off'); set(handles.tombolKabur,'Enable','on'); set(handles.tombolRotasi,'Enable','off'); set(handles.tombolIntensitas,'Enable','off'); set(handles.tombolReset,'Enable','on');
set(handles.tombolEvaluasiLowPass,'Enable','off');
Fungsi MATLAB uigetfiledigunakan untuk menampilkan jendela Open File
guna memilih citra yang akan diproses. Fungsi uigetfilememiliki dua buah keluaran
yaitu namafile yang digunakan untuk menyimpan nama file dari citra yang dibaca, dan
lokasi absolut atau path dari citra tersebut. Setelah pemilihan citra, program melakukan
pengecekan apakah citra yang dibaca memiliki 3 kanal atau tidak dengan menggunakan
statement if.
if(size(namacitra,3) == 3)
namacitra = rgb2gray(namacitra); end
Apabila citra yang dibaca memiliki tiga kanal maka proses konversi ke
grayscale akan dilakukan dengan menggunakan fungsi MATLAB rgb2gray. Selanjutnya hasil pembacaan citra akan ditampilkan pada kontrol axes dengan
menggunakan perintah berikut ini.
axes(handles.axes1)
imshow(namacitra); title('Citra Semula');
Fungsi imshowdigunakan untuk menampilkan citra pada kontrol axes1. Fungsi ini melewatkan sebuah argument berupa citra yang dibaca. Hasil pembacaan citra
kemudian disimpan pada sebuah variabel global I dengan menggunakan perintah
berikut ini.
global I
I = getimage(handles.axes1);
28
4.1.2 Kontrol Tombol Pengaburan
Tombol ini digunakan untuk melakukan operasi pengaburan citra masukan yang
sudah dibaca dan ditampilkan pada axes1. Proses pengaburan dilakukan guna menguji kinerja tapis dalam melakukan restorasi.
Gambar 4.4 Kontrol tombol Pengaburan
Proses pengaburan melibatkan dua buah kontrol yaitu Push Button dan Pop-Up
Menu. Kontrol Pop-Up Menu menyediakan pilihan metode pengaburan yang bisa
digunakan. Adapun pilihan metode pengaburan yang bisa digunakan yaitu Tidak Ada,
Rerata, Motion, Disk, dan Gaussian.
Berikut adalah Callback tombol Pengaburan yang terdapat pada program.
function tombolKabur_Callback(hObject, eventdata, handles)
% hObject handle to tombolKabur (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
set(handles.tombolDerau,'Enable','on'); set(handles.tombolKabur,'Enable','off'); set(handles.tombolRotasi,'Enable','off'); set(handles.tombolIntensitas,'Enable','off'); set(handles.tombolReset,'Enable','on');
set(handles.tombolEvaluasiLowPass,'Enable','on'); set(handles.tombolEvaluasiBandPass,'Enable','on'); set(handles.tombolEvaluasiHighPass,'Enable','on'); set(handles.tombolEvaluasiBandStop,'Enable','on'); I = getimage(handles.axes1);
I=getimage(handles.axes1);
[baris, kolom, banyakKanal] = size(I);
29
switch get(handles.popupmenu7,'Value') case 1
imshow(uint8(kabur)); title('Citra Hasil Pengaburan')
Fungsi callback tombol Pengaburan melakukan pengaktifan terhadap beberapa
tombol yaitu tombol Derau, tombol RESET, tombol EVALUASI BUTTERWORTH
LOWPASS, tombol EVALUASI BUTTERWORTH BANDPASS, tombol EVALUASI
BUTTERWORTH HIGHPASS, dan tombol EVALUASI BUTTERWORTH
BANDSTOP. Selain itu dilakukan juga penonaktifan terhadap tombol Pengaburan,
tombol Rotasi, dan tombol Skala Intensitas. Berikut adalah perintah yang digunakan
untuk melakukan pengaktifan dan penonaktifan tombol-tombol tersebut.
set(handles.tombolDerau,'Enable','on'); set(handles.tombolKabur,'Enable','off'); set(handles.tombolRotasi,'Enable','off'); set(handles.tombolIntensitas,'Enable','off'); set(handles.tombolReset,'Enable','on');
30
Proses selanjutnya yaitu pembacaan citra masukan yang telah dibaca dan
ditampilkan pada axes1. Proses pembacaan citra dilakukan dengan menggunakan fungsi MATLAB getimage yang kemudian disimpan pada variabel I. Selanjutnya dilakukan pengecekan ukuran citra dengan menggunkan fungsi MATLAB size.
I=getimage(handles.axes1);
[baris, kolom, banyakKanal] = size(I);
Fungsi sizemelewatkan argument berupa citra yang akan dilihat ukurannya dan
mengembalikan tiga buah output yaitu variabel baris yang menyimpan jumlah baris, variabel kolom yang menyimpan jumlah kolom, dan variabel banyakKanal yang menyimpan banyak kanal dari citra yang dibaca. Apabila citra masukan yang dibaca
memiliki kanal 3 (citra RGB) maka akan dilakukan proses konversi citra dari RGB ke
grayscale dengan menggunakan fungsi MATLBA rgb2gray.
if banyakKanal ==1
Proses pengaburan dilakukan berdasarkan jenis pengaburan yang dipilih melalui
kontrol Pop-Up Menu. Proses pengaburan melibatkan statement switch-case untuk
menentukan jenis pengaburan yang dipilih. Statement switch memiliki kondisi yang
akan mengembalikan indeks dari pilihan yang terdapat pada kontrol Pop-Up Menu.
31
Apabila jenis pengaburan yang dipilih adalah Tidak Ada maka statement yang
akan dieksekusi adalah statement yang terdapat pada case 1. Pada Case 1 tidak terjadi
pengaburan, dimana citra yang tersimpan pada variabel kabur adalah citra asli yang
tersimpan pada variabel I. Apabila jenis pengaburan yan dipilih adalah Rerata maka
statemen yang akan dieksekusi adalah statemen pada case 2. Pada case dua dilakukan
pembangkitan tapis rerata berukuran 11x11 dengan menggunakan fungsi MATLAB
fspecial dan disimpan pada variabel H. Selanjutnya dilakukan penapisan dengan
menggunakan fungsi MATLAB imfilter untuk membuat citra menjadi kabur. Hasil
pengaburan selanjutnya disimpan pada variabel kabur. Adapun jika jenis pengaburan
yang dipilih adalah Motion maka statemen yang dieksekusi adalah statemen yang
terdapat pada case 3. Begitu juga jika jenis pengaburan yang dipilih adalah Disk maka
statement yang dieksekusi adalah statemen yang terdapat pada case 3. Dan pada saat
pengaburan yang dipilih adalah Gaussian maka statemen yang dieksekusi adalah
statement pada case 4.
Hasil pengaburan selanjutnya ditampilkan pada axes3 dengan menggunakan
perintah berikut ini.
axes(handles.axes3)
imshow(uint8(kabur)); title('Citra Hasil Pengaburan')
4.1.3 Kontrol tombol Derau
Kontrol ini digunakan untuk menambahkan derau terhadap citra asli yang sudah
dikaburkan. Penambahan derau hanya bisa dilakukan setelah tombol pengaburan
ditekan. Proses penambahan derau dilakukan guna menguji kinerja atau keandalan dari
32
Gambar 4.5 Kontrol tombol Derau
Proses penambahan derau melibatkan tiga kontrol utama yaitu Push Button,
Pop-Up Menu, dan Edit Text. Kontrol Pop-Up Menu menyediakan pilihan jenis derau
yang akan disisipkan pada citra yang telah dikaburkan. Adapun kontrol Edit Text
digunakan untuk menentukan/memasukkan nilai variansi dari derau yang ingin
ditambahkan. Adapun jenis-jenis derau yang tersedia pada kontrol Pop-Up Menu
tersebut adalah Gaussian, Poisson, Salt & Pepper, dan Speckle.
Berikut adalah fungsi callback yang terdapat pada tombol Derau pada program
ini.
function tombolDerau_Callback(hObject, eventdata, handles)
% hObject handle to tombolDerau (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
set(handles.tombolDerau,'Enable','off'); set(handles.tombolKabur,'Enable','off'); set(handles.tombolRotasi,'Enable','on'); set(handles.tombolIntensitas,'Enable','on'); set(handles.tombolReset,'Enable','on');
set(handles.tombolEvaluasiLowPass,'Enable','on'); set(handles.tombolEvaluasiBandPass,'Enable','on'); set(handles.tombolEvaluasiHighPass,'Enable','on'); set(handles.tombolEvaluasiBandStop,'Enable','on'); I_kabur = getimage(handles.axes3);
% Mendefinisikan variansi derau
variansi = str2double(get(handles.editVariansi,'String'));
switch get(handles.popupmenu8,'Value') case 1
derau = imnoise(I_kabur,'gaussian', 0,variansi); case 2
33
imshow(uint8(derau)); title('Citra Pengaburan dan Derau')
Seperti halnya pada callback kontrol tombol Pengaburan, pada callback tombol
ini dilakukan pengaktifan terhadap tombol Rotasi, tombol Skala Intensitas, tombol
RESET, tombol EVALUASI BUTTERWORTH LOWPASS, tombol EVALUASI
BUTTERWORD BANDPASS, tombol EVALUSASI BUTTERWORTH HIGHPASS,
dan tombol EVALUASI BUTTERWORTH BANDSTOP. Selain itu dilakukan juga
penonaktifpan terhadap tombol Pengaburan, dan tombol Derau. Berikut adalah
perintah-perintah yang digunakan melakukan hal tersebut.
set(handles.tombolDerau,'Enable','off'); set(handles.tombolKabur,'Enable','off'); set(handles.tombolRotasi,'Enable','on'); set(handles.tombolIntensitas,'Enable','on'); set(handles.tombolReset,'Enable','on');
set(handles.tombolEvaluasiLowPass,'Enable','on'); set(handles.tombolEvaluasiBandPass,'Enable','on'); set(handles.tombolEvaluasiHighPass,'Enable','on'); set(handles.tombolEvaluasiBandStop,'Enable','on');
Selanjutnya dilakukan pengambilan nilai variansi dari derau yang dimasukkan
melalui kontrol Edit Text dengan menggunakan perintah berikut ini.
variansi = str2double(get(handles.editVariansi,'String'));
Nilai variansi yang dimasukkan melalui kontrol Edit Text editVariansidengan
menggunakan fungsi get. Nilai yang dimasukkan pada Edit Text merupakan data string
sehingga dilakukan proses konversi tipe dari string ke double dengan menggunakan
fungsi MATLAB str2double. Nilai variansi yang dimasukkan disimpan pada variable
variansi.
Proses penambahan derau melibatkan statemen switch-caseuntuk menentukan
jenis derau yang digunakan berdasarkan yang dipilih melalui kontrol Pop-Up Menu.
switch get(handles.popupmenu8,'Value') case 1
34 derau = imnoise(I_kabur, 'poisson');
case 3
derau = imnoise(I_kabur,'salt & pepper',variansi); case 4
derau = imnoise(I_kabur,'speckle',variansi); end
Apabila jenis pengaburan yang dipilih adalah Gaussian, maka statemen yang
dieksekusi adalah statement yang terdapat pada case 1. Proses penyisipan derau dilakukan dengan menggunakan fungsi MATLAB imnoise. Begitu seterusnya untuk
statemen-statemen yang terdapat pada case 2, case 3 dan case 4 akan dieksekusi jika
jenis derau yang dipilih secara berturut-turut adalah Poisson, Salt & Pepper, dan
Speckle. Citra yang sudah ditambahkan derau disimpan pada variabel derau. Citra hasil
penambahan derau akan ditampilkan pada axes3 dengan menggunakan fungsi MATLAB imshow.
4.1.4 Kontrol tombol Rotasi
Tombol ini digunakan untuk melakukan rotasi terhadap citra hasil pengaburan
dan berderau. Proses rotasi dilakukan guna menguji kinerja dari tapis dalam melakukan
penekanan derau (proses restorasi).
Gambar 4.6 Kontrol tombol Rotasi
Proses rotasi melibatkan dua kontrol utama yaitu Push Button dan Edit Text
35
penambahan derau. Berikut adalah fungsi callback yang digunakan untuk melakukan
proses rotasi citra.
function tombolRotasi_Callback(hObject, eventdata, handles)
% hObject handle to tombolRotasi (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
I_derau = getimage(handles.axes3);
% Mendefinisikan sudut
sudut = str2double(get(handles.editSudut,'String'));
derau =imrotate(I_derau,sudut);
axes(handles.axes3)
imshow(derau); title('Citra Hasil Rotasi');
Proses rotasi dilakukan dengan mengambil citra hasil pengaburan dan berderau
yang ditampilkan pada axes3 dengan menggunakan fungsi MATLAB getimage.
I_derau = getimage(handles.axes3);
Citra yang telah dibaca menggunakan fungsi MATLAB getimage disimpan pada variabel I_derau. Setelah pembacaan citra, dilakukan pengambilan nilai variansi
yang dimasukkan melalui kontrol Edit Text dengan menggunakan perintah berikut ini.
% Mendefinisikan sudut
sudut = str2double(get(handles.editSudut,'String'));
Nilai sudut yang dimasukkan melalui editSudut diambil dengan menggunakan
fungsi get dan dikonversi menjadi tipe data double menggunakan fungsi MATLAB
str2double. Proses rotasi terhadap citra yang tersimpan pada variabel I_derau dilakukan dengan menggunakan fungsi MATLAB imrotate.
derau =imrotate(I_derau,sudut); axes(handles.axes3)
imshow(derau); title('Citra Hasil Rotasi');
Fungsi imrotate melewatkan dua buah parameter yaitu I_derau selaku citra yang akan dirotasi dan sudutyang merupakan besar sudut rotasi perputaran citra. Hasil
36
4.1.5 Kontrol tombol Skala Intensitas
Kontrol ini digunakan untuk melakukan penskalaan intensitas dari piksel-piksel
pada citra yang telah dikaburkan dan ditambahkan derau. Proses penskalaan intesitas ini
ditujukan guna menguji kinerja dari tapis dalam melakukan restorasi citra.
Gambar 4.7 Kontrol tombol Skala Intensitas
Proses penskalaan intensitas citra melibatkan dua buah kontrol utama yaitu Push Button
dan Edit Text yang digunakan untuk menentukan faktor penskalaan yang digunakan.
Berikut adalah fungsi callback tombol Skala Intensitas pada program.
function tombolIntensitas_Callback(hObject, eventdata, handles)
% hObject handle to tombolIntensitas (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
I_kabur1 = getimage(handles.axes3);
% Mendefinisikan faktor
faktor = str2double(get(handles.editFaktor,'String'));
derau2 =I_kabur1/faktor;
axes(handles.axes3)
imshow(derau2); title('Citra 2');
Proses penskalaan intensitas citra dilakukan dengan mengambil nilai faktor yang
ditentukan pada Edit Text dengan menggunakan perintah berikut ini.
% Mendefinisikan faktor
37
Nilai faktor yang dimasukkan pada Edit Text editFaktordiambil menggunakan
fungsi get dan dikonversi menjadi tipe data double menggunakan fungsi MATLAB
str2double. Hasil konversi nilai faktor penskalaan disimpan pada variabel faktor. Proses penskalaan dilakukan dengan membagi tiap intensitas piksel pada citra dengan
faktor yang telah dimasukkan.
derau2 =I_kabur1/faktor; axes(handles.axes3)
imshow(derau2); title('Citra 2');
Hasil penskalaan citra disimpan pada variabel derau2 dan ditampilan pada
axes3menggunakan fungsi MATLAB imshow.
4.1.6 Kontrol Penapisan Frekuensi Cut-Off Butterworth Lowpass
Kontrol ini digunakan untuk melakukan operasi penapisan Butterworth pada
bidang frekuensi lowpass. Proses ini melibatkan tujuh buah kontrol Radio Button yang
dikelompokkan menggunakan kontrol Button Group. Setiap kontrol Radio Button
mereferesentasikan besar frekuensi off yang digunakan. Pada kasus ini frekuensi
cut-off yang digunakan adalah 50 Hz, 100 Hz, 150 Hz, 200 Hz, 250 Hz, 500 Hz, 1000 Hz.
Gambar 4.8 Kontrol penafisan frekuansi cut-off Butterworth lowpass
Pada bidang pelewatan Butterworth Lowpass Filter disana menggunakan
frekuensi cut-off 50 Hz, 100 Hz, 150 Hz, 200 Hz, 250 Hz, 500 Hz dan 1000 Hz,
masing-masing frekuensi cut-off ditentukan secara manual dan memiliki rentang 50 Hz
38
Berikut adalah fungsi callback yang digunakan untuk melakukan penapisan
Butterworth pada bidang frekuensi lowpass.
function uipanel21_SelectionChangeFcn(hObject, eventdata, handles)
% hObject handle to the selected object in uipanel21
% eventdata structure with the following fields (see UIBUTTONGROUP) % EventName: string 'SelectionChanged' (read only)
% OldValue: handle of the previously selected object or empty if none was selected
% NewValue: handle of the currently selected object
% handles structure with handles and user data (see GUIDATA)
%Semula = getimage(handles.axes1);
set(handles.tombolEvaluasiHighPass,'Enable','off'); set(handles.tombolEvaluasiBandStop,'Enable','off'); set(handles.tombolEvaluasiBandPass,'Enable','off'); set(handles.tombolEvaluasiLowPass,'Enable','on');
I=getimage(handles.axes1);
[baris, kolom, banyakKanal] = size(I);
switch get(eventdata.NewValue, 'Tag') case 'rad50'
judul='Hasil Butterworth Lowpass Frek Cut-off 50 Hz';
[fftI, filterKeluaran, hasil] = butterworthlpf(oimg1,50,4); axes(handles.axes2)
imshow(hasil);title(judul) case 'rad100'
judul='Hasil Butterworth Lowpass Frek Cut-off 100 Hz';
[fftI, filterKeluaran, hasil] = butterworthlpf(oimg1,100,4); axes(handles.axes2)
imshow(hasil);title(judul) case 'rad150'
judul='Hasil Butterworth Lowpass Frek Cut-off 150 Hz';
[fftI, filterKeluaran, hasil] = butterworthlpf(oimg1,150,4); axes(handles.axes2)
imshow(hasil);title(judul) case 'rad200'
judul='Hasil Butterworth Lowpass Frek Cut-off 200 Hz'
[fftI, filterKeluaran, hasil] = butterworthlpf(oimg1,200,4); axes(handles.axes2)
imshow(hasil);title(judul)
case 'rad250'
judul='Hasil Butterworth Lowpass Frek Cut-off 250 Hz'
39
[fftI, filterKeluaran, hasil] = butterworthlpf(oimg1,500,4); axes(handles.axes2)
imshow(hasil);title(judul)
case 'rad1000'
judul='Hasil Butterworth Lowpass Frek Cut-off 1000 Hz'
[fftI, filterKeluaran, hasil] = butterworthlpf(oimg1,1000,4); axes(handles.axes2)
hasil = imresize(hasil,[m n]);
% Normalisasi dari double ke uint8 %hasil = 255*hasil;
imd = double(Semula)-double(hasil);
axes(handles.axes4); imshow(imd,[]); title('Citra Error');
figure,
subplot(2,2,1) imshow(I,[]);
title('Citra Masukan') subplot(2,2,2)
imshow(fftI,[])
title('Citra Pada Domain Frekuensi') subplot(2,2,3)
imshow(filterKeluaran,[])
title('Citra Tapis Butterworth') subplot(2,2,4)
imshow(hasil,[])
title('Citra Tertapis')
Proses penafisan Butterworth pada bidang frekuensi lowpass dimulai dengan
mengaktifkan tombol EVALUASI BUTTERWORTH LOWPASS dan menonaktifkan
tombol EVALUASI BUTTERWORTH BANDPASS, tombol EVALUASI
BUTTERWORTH HIGHPASS, dan tombol EVALUASI BUTTERWORTH
BANDSTOP.
40
Langkah selanjutnya adalah melakukan pembacaan citra asli dan citra hasil
pengaburan dan berderau yang terdapat pada axes1 dan axes3 dengan menggunakan
perintah berikut ini.
I=getimage(handles.axes1);
[baris, kolom, banyakKanal] = size(I);
Hasil pembacaa citra masukan asli dilakukan dengan menggunakan fungsi
MATLAB getimage dan disimpan pada variabel I. Apabila citra asli memiliki tiga
kanal maka akan dilakukan proses konvesi dari RGB menjadi citra grayscale
menggunakan fungsi MATLAB rgb2gray. Adapun citra hasil pengaburan dan berderau
disimpan pada variabel oimg1. Pengambilan citra asli dilakukan untuk menghitung
error citra hasil penapisan terhadap citra asli.
Proses penapisan pada bidang frekuensi lowpass melibatkan statement
switch-case untuk menentukan besar frekuensi cut-off berdasarkan pilihan yang ditentukan.
Setiap case mereferesentasikan nilai freuensi cut-off yang terdapat pada Button Group
switch get(eventdata.NewValue, 'Tag') case 'rad50'
judul='Hasil Butterworth Lowpass Frek Cut-off 50 Hz';
[fftI, filterKeluaran, hasil] = butterworthlpf(oimg1,50,4); axes(handles.axes2)
imshow(hasil);title(judul) case 'rad100'
judul='Hasil Butterworth Lowpass Frek Cut-off 100 Hz';
[fftI, filterKeluaran, hasil] = butterworthlpf(oimg1,100,4); axes(handles.axes2)
imshow(hasil);title(judul) case 'rad150'
judul='Hasil Butterworth Lowpass Frek Cut-off 150 Hz';
[fftI, filterKeluaran, hasil] = butterworthlpf(oimg1,150,4); axes(handles.axes2)
imshow(hasil);title(judul) case 'rad200'
judul='Hasil Butterworth Lowpass Frek Cut-off 200 Hz'
[fftI, filterKeluaran, hasil] = butterworthlpf(oimg1,200,4); axes(handles.axes2)
imshow(hasil);title(judul)
case 'rad250'
41 [fftI, filterKeluaran, hasil] = butterworthlpf(oimg1,250,4); axes(handles.axes2)
imshow(hasil);title(judul)
case 'rad500'
judul='Hasil Butterworth Lowpass Frek Cut-off 500 Hz'
[fftI, filterKeluaran, hasil] = butterworthlpf(oimg1,500,4); axes(handles.axes2)
imshow(hasil);title(judul)
case 'rad1000'
judul='Hasil Butterworth Lowpass Frek Cut-off 1000 Hz'
[fftI, filterKeluaran, hasil] = butterworthlpf(oimg1,1000,4); axes(handles.axes2)
imshow(hasil);title(judul) end
Apabila frekuensi cut-off yang dipilih adalah 50 Hz maka statemen yang
dieksekusi adalah statement yang terdapat pada case ‘rad50’. Dan Begitu seterusnya
untuk frekuensi-frekuensi cut-off lainnya yang diwakili oleh tiap case. Proses penfisan
Butterworth dilakukan menggunakan fungsi butterworthlpf.
42 %filter3(i,j)= 1.0 - filter2(i,j);
%filter3(i,j) = filter1(i,j).*filter3(i,j);
end end
% Memperbarui citra dengan frekuensi-frekuensi yang dilewatkan
citra_tertapis = filter2.*fftI;
citra_tertapis = ifftshift(citra_tertapis);
citra_tertapis = ifft2(citra_tertapis,2*nx-1,2*ny-1); citra_tertapis = real(citra_tertapis(1:nx,1:ny)); citra_tertapis = uint8(citra_tertapis);
fftI = 20*log(fftI);
filterKeluaran = 20*log(filter2);
Fungsi butterworthlpf melewatkan tiga buah parameter/argumen yaitu citra yang akan ditapis, frekuensi cut-off dan jumlah orde dari proses penafisan. Fungsi ini
memiliki tiga output yaitu nilai FFT dari citra, tapis keluaran dan citra hasil penapisan.
fftI, filterKeluaran, hasil] = butterworthlpf(oimg1,50,4); axes(handles.axes2)
imshow(hasil);title(judul)
Citra hasil penafisan disimpan pada variabel hasil dan ditampilkan pada axes2 dengan menggunakan fungsi MATLAB imshow.
4.1.7 Kontrol Penapisan Frekuensi Cut-Off Butterworth Bandpass
Kontrol ini digunakan untuk melakukan operasi penapisan Butterworth pada
bidang frekuensi bandpass. Proses ini melibatkan tujuh buah kontrol Radio Button yang
dikelompokkan menggunakan kontrol Button Group. Setiap kontrol Radio Button
mereferesentasikan besar frekuensi cut-off yang digunakan. Pada kasus ini frekuensi
cut-off yang digunakan adalah 5|100 Hz, 100|200 Hz, 150|250 Hz, 200|350 Hz, 250|400
Hz, 500|700 Hz, 1000|1500 Hz.
43
Gambar 4.9 Kontrol penafisan frekuansi cut-off Butterworth bandpass
Pada bidang pelewatan Butterworth Bandpass Filter disana menggunakan
frekuensi cut-off 5|100 Hz, 100|200 Hz, 150|250 Hz, 200|350 Hz, 250|400 Hz, 500|700
Hz dan 1000|1500 Hz, masing-masing frekuensi cut-off ditentukan secara manual
frekuensi cut-off bawah dan atasnya. Contoh, frekuensi cut-off 5|100 Hz merupakan
frekuensi cut-off dengan frekuensi cut-off bawah 5 Hz dan frekuensi cut-off atas 100
Hz.
Berikut adalah fungsi callback yang digunakan untuk melakukan penapisan
Butterworth pada bidang frekuensi bandpass.
function uipanel25_SelectionChangeFcn(hObject, eventdata, handles)
% hObject handle to the selected object in uipanel25
% eventdata structure with the following fields (see UIBUTTONGROUP) % EventName: string 'SelectionChanged' (read only)
% OldValue: handle of the previously selected object or empty if none was selected
% NewValue: handle of the currently selected object
% handles structure with handles and user data (see GUIDATA)
set(handles.tombolEvaluasiLowPass,'Enable','off'); set(handles.tombolEvaluasiHighPass,'Enable','off'); set(handles.tombolEvaluasiBandStop,'Enable','off'); set(handles.tombolEvaluasiBandPass,'Enable','on');
I=getimage(handles.axes1);
[baris, kolom, banyakKanal] = size(I);
if banyakKanal ==1 Semula=I; else
44
oimg1=getimage(handles.axes3);
switch get(eventdata.NewValue, 'Tag') case 'rb5'
judul='Hasil Butterworth Bandpass Frek Cut-off 5|100 Hz'; [fftI, filterKeluaran,hasil] = butterworthbpf(oimg1,5,100,4); axes(handles.axes2)
judul='Hasil Butterworth Bandpass Frek Cut-off 1000|1500 Hz' [fftI, filterKeluaran,hasil] =
hasil = imresize(hasil,[m n]);
% Normalisasi dari double ke uint8
imd = double(Semula)-double(hasil);
axes(handles.axes4); imshow(imd,[]); title('Citra Error');
45 subplot(2,2,1)
imshow(I,[]);
title('Citra Masukan') subplot(2,2,2)
imshow(fftI,[])
title('Citra Pada Domain Frekuensi') subplot(2,2,3)
imshow(filterKeluaran,[])
title('Citra Tapis Butterworth') subplot(2,2,4)
imshow(uint8(hasil),[]) title('Citra Tertapis')
Proses penapisan pada bidang frekuensi bandpass melibatkan statemen
switch-case untuk menentukan besar frekuensi cut-off berdasarkan pilihan yang ditentukan. Setiap case mereferesentasikan nilai freuensi cut-off yang terdapat pada Button Group
switch get(eventdata.NewValue, 'Tag') case 'rb5'
46 case 'rb1000'
judul='Hasil Butterworth Bandpass Frek Cut-off 1000|1500 Hz' [fftI, filterKeluaran,hasil] =
dieksekusi adalah statement yang terdapat pada case ‘rad50’. Dan Begitu seterusnya
untuk frekuensi-frekuensi cut-off lainnya yang diwakili oleh tiap case. Proses penfisan
Butterworth pada bidang frekuensi bandpass dilakukan menggunakan fungsi
butterworthbpf.
function [fftI, filterKeluaran,citra_tertapis] = butterworthbpf(I,d0,d1,n)
% Memperbarui citra dengan frekuensi-frekuensi yang dilewatkan
citra_tertapis = filter3.*fftI;
47 citra_tertapis = ifftshift(citra_tertapis);
citra_tertapis = ifft2(citra_tertapis,2*nx-1,2*ny-1); citra_tertapis = real(citra_tertapis(1:nx,1:ny)); citra_tertapis = uint8(citra_tertapis);
fftI = 20*log(fftI);
filterKeluaran = 20*log(filter3);
Fungsi butterworthbpfmelewatkan empat buah parameter/argumen yaitu citra
yang akan ditapis, frekuensi cut-off awal, frekuensi cut-off akhir dan jumlah orde dari
proses penafisan. Fungsi ini memiliki tiga output yaitu nilai FFT dari citra, tapis
keluaran dan citra hasil penapisan.
[fftI, filterKeluaran,hasil] = butterworthbpf(oimg1,5,100,4); axes(handles.axes2)
imshow(hasil);title(judul)
Citra hasil penafisan disimpan pada variabel hasil dan ditampilkan pada axes2 dengan menggunakan fungsi MATLAB imshow.
4.1.8 Kontrol Penapisan Frekuensi Cut-Off Butterworth Highpass
Kontrol ini digunakan untuk melakukan operasi penapisan Butterworth pada
bidang frekuensi highpass. Proses ini melibatkan tujuh buah kontrol Radio Button yang
dikelompokkan menggunakan kontrol Button Group. Setiap kontrol Radio Button
mereferesentasikan besar frekuensi cut-off yang digunakan. Pada kasus ini frekuensi
cut-off yang digunakan adalah 50 Hz, 100 Hz, 150 Hz, 200 Hz, 250 Hz, 500 Hz, 1000
Hz.
48
Pada bidang pelewatan Butterworth Highpass Filter disana menggunakan
frekuensi cut-off 50 Hz, 100 Hz, 150 Hz, 200 Hz, 250 Hz, 500 Hz dan 1000 Hz,
masing-masing frekuensi cut-off ditentukan secara manual dan memiliki rentang 50 Hz
dari setiap frekuensi cut-off. Kecuali, frekuensi cut-off 250 Hz, 500 Hz dan 1000 Hz.
Berikut adalah fungsi callback yang digunakan untuk melakukan penapisan
Butterworth pada bidang frekuensi highpass.
function uipanel31_SelectionChangeFcn(hObject, eventdata, handles)
% hObject handle to the selected object in uipanel31
% eventdata structure with the following fields (see UIBUTTONGROUP) % EventName: string 'SelectionChanged' (read only)
% OldValue: handle of the previously selected object or empty if none was selected
% NewValue: handle of the currently selected object
% handles structure with handles and user data (see GUIDATA)
%Semula = getimage(handles.axes1);
set(handles.tombolEvaluasiHighPass,'Enable','on'); set(handles.tombolEvaluasiBandStop,'Enable','off'); set(handles.tombolEvaluasiBandPass,'Enable','off'); set(handles.tombolEvaluasiLowPass,'Enable','off');
I=getimage(handles.axes1);
[baris, kolom, banyakKanal] = size(I);
switch get(eventdata.NewValue, 'Tag') case 'rm50'
judul='Hasil Butterworth HighPass Frek Cut-off 50 Hz'; [fftI, filterKeluaran, hasil] = butterworthhpf(oimg1,50,4); axes(handles.axes2)
imshow(hasil);title(judul) case 'rm100'
judul='Hasil Butterworth HighPass Frek Cut-off 100 Hz'; [fftI, filterKeluaran, hasil] = butterworthhpf(oimg1,100,4); axes(handles.axes2)
imshow(hasil);title(judul) case 'rm150'
judul='Hasil Butterworth HighPass Frek Cut-off 150 Hz'; [fftI, filterKeluaran, hasil] = butterworthhpf(oimg1,150,4); axes(handles.axes2)
imshow(hasil);title(judul) case 'rm200'
judul='Hasil Butterworth HighPass Frek Cut-off 200 Hz'
49
[fftI, filterKeluaran, hasil] = butterworthhpf(oimg1,250,4); axes(handles.axes2)
imshow(hasil);title(judul)
case 'rm500'
judul='Hasil Butterworth HighPass Frek Cut-off 500 Hz'
[fftI, filterKeluaran, hasil] = butterworthhpf(oimg1,500,4); axes(handles.axes2)
imshow(hasil);title(judul)
case 'rm1000'
judul='Hasil Butterworth HighPass Frek Cut-off 1000 Hz'
[fftI, filterKeluaran, hasil] = butterworthhpf(oimg1,1000,4); axes(handles.axes2)
hasil = imresize(hasil,[m n]);
% Normalisasi dari double ke uint8 %hasil = 255*hasil;
imd = double(Semula)-double(hasil);
axes(handles.axes4); imshow(imd,[]); title('Citra Error');
figure,
subplot(2,2,1) imshow(I,[]);
title('Citra Masukan') subplot(2,2,2)
imshow(fftI,[])
title('Citra Pada Domain Frekuensi') subplot(2,2,3)
imshow(filterKeluaran,[])
title('Citra Tapis Butterworth') subplot(2,2,4)
imshow(hasil,[])
title('Citra Tertapis')
Proses penapisan pada bidang frekuensi highpass melibatkan statement
switch-case untuk menentukan besar frekuensi cut-off berdasarkan pilihan yang ditentukan. Setiap case mereferesentasikan nilai freuensi cut-off yang terdapat pada Button Group
switch get(eventdata.NewValue, 'Tag') case 'rm50'
judul='Hasil Butterworth HighPass Frek Cut-off 50 Hz'; [fftI, filterKeluaran, hasil] = butterworthhpf(oimg1,50,4); axes(handles.axes2)
50 case 'rm100'
judul='Hasil Butterworth HighPass Frek Cut-off 100 Hz'; [fftI, filterKeluaran, hasil] = butterworthhpf(oimg1,100,4); axes(handles.axes2)
imshow(hasil);title(judul) case 'rm150'
judul='Hasil Butterworth HighPass Frek Cut-off 150 Hz'; [fftI, filterKeluaran, hasil] = butterworthhpf(oimg1,150,4); axes(handles.axes2)
imshow(hasil);title(judul) case 'rm200'
judul='Hasil Butterworth HighPass Frek Cut-off 200 Hz'
[fftI, filterKeluaran, hasil] = butterworthhpf(oimg1,200,4); axes(handles.axes2)
imshow(hasil);title(judul)
case 'rm250'
judul='Hasil Butterworth HighPass Frek Cut-off 250 Hz'
[fftI, filterKeluaran, hasil] = butterworthhpf(oimg1,250,4); axes(handles.axes2)
imshow(hasil);title(judul)
case 'rm500'
judul='Hasil Butterworth HighPass Frek Cut-off 500 Hz'
[fftI, filterKeluaran, hasil] = butterworthhpf(oimg1,500,4); axes(handles.axes2)
imshow(hasil);title(judul)
case 'rm1000'
judul='Hasil Butterworth HighPass Frek Cut-off 1000 Hz'
[fftI, filterKeluaran, hasil] = butterworthhpf(oimg1,1000,4); axes(handles.axes2)
imshow(hasil);title(judul) end
Apabila frekuensi cut-off yang dipilih adalah 50 Hz maka statemen yang
dieksekusi adalah statement yang terdapat pada case ‘rad50’. Dan Begitu seterusnya
untuk frekuensi-frekuensi cut-off lainnya yang diwakili oleh tiap case. Proses penfisan
Butterworth pada bidang frekuensi highpass dilakukan menggunakan fungsi
butterworthhpf.
51
% Memperbarui citra dengan frekuensi-frekuensi yang dilewatkan
citra_tertapis = filter3.*fftI;
Fungsi butterworthhpf melewatkan tiga buah parameter/argumen yaitu citra yang akan ditapis, frekuensi cut-off dan jumlah orde dari proses penafisan. Fungsi ini
memiliki tiga output yaitu nilai FFT dari citra, tapis keluaran dan citra hasil penapisan.
fftI, filterKeluaran, hasil] = butterworthhpf(oimg1,50,4); axes(handles.axes2)
imshow(hasil);title(judul)
Citra hasil penafisan disimpan pada variabel hasil dan ditampilkan pada axes2 dengan menggunakan fungsi MATLAB imshow.
4.1.9 Kontrol Penapisan Frekuensi Cut-Off Butterworth Bandstop
Kontrol ini digunakan untuk melakukan operasi penapisan Butterworth pada
bidang frekuensi bandstop. Proses ini melibatkan tujuh buah kontrol Radio Button yang
52
mereferesentasikan besar frekuensi off yang digunakan. Pada kasus ini frekuensi
cut-off yang digunakan adalah 5|100 Hz, 100|200 Hz, 150|250 Hz, 200|350 Hz, 250|400 Hz,
500|700 Hz, 1000|1500 Hz.
Gambar 4.11 Kontrol penafisan frekuansi cut-off Butterworth bandstop
Pada bidang pelewatan Butterworth Bandstop Filter disana menggunakan
frekuensi cut-off 5|100 Hz, 100|200 Hz, 150|250 Hz, 200|350 Hz, 250|400 Hz, 500|700
Hz dan 1000|1500 Hz, masing-masing frekuensi cut-off ditentukan secara manual
frekuensi cut-off bawah dan atasnya. Contoh, frekuensi cut-off 5|100 Hz merupakan
frekuensi cut-off dengan frekuensi cut-off bawah 5 Hz dan frekuensi cut-off atas 100
Hz.
Berikut adalah fungsi callback yang digunakan untuk melakukan penapisan
Butterworth pada bidang frekuensi bandstop.
function uipanel29_SelectionChangeFcn(hObject, eventdata, handles)
% hObject handle to the selected object in uipanel29
% eventdata structure with the following fields (see UIBUTTONGROUP) % EventName: string 'SelectionChanged' (read only)
% OldValue: handle of the previously selected object or empty if none was selected
% NewValue: handle of the currently selected object
% handles structure with handles and user data (see GUIDATA)
set(handles.tombolEvaluasiLowPass,'Enable','off'); set(handles.tombolEvaluasiHighPass,'Enable','off'); set(handles.tombolEvaluasiBandStop,'Enable','on'); set(handles.tombolEvaluasiBandPass,'Enable','off');
I=getimage(handles.axes1);
53
switch get(eventdata.NewValue, 'Tag') case 'rt5'
judul='Hasil Butterworth Bandstop Frek Cut-off 5|100 Hz'; [fftI, filterKeluaran,hasil] = butterworthbspf(oimg1,5,100,4); axes(handles.axes2)
54 hasil = imresize(hasil,[m n]);
% Normalisasi dari double ke uint8
imd = double(Semula)-double(hasil);
axes(handles.axes4); imshow(imd,[]); title('Citra Error');
figure,
subplot(2,2,1) imshow(I,[]);
title('Citra Masukan') subplot(2,2,2)
imshow(fftI,[])
title('Citra Pada Domain Frekuensi') subplot(2,2,3)
imshow(filterKeluaran,[])
title('Citra Tapis Butterworth') subplot(2,2,4)
imshow(uint8(hasil),[]) title('Citra Tertapis')
Proses penapisan pada bidang frekuensi bandstop melibatkan statemen
switch-case untuk menentukan besar frekuensi cut-off berdasarkan pilihan yang ditentukan. Setiap case mereferesentasikan nilai freuensi cut-off yang terdapat pada Button Group
switch get(eventdata.NewValue, 'Tag') case 'rt5'
55
judul='Hasil Butterworth Bandstop Frek Cut-off 1000|1500 Hz' [fftI, filterKeluaran,hasil] =
dieksekusi adalah statement yang terdapat pada case ‘rad50’. Dan Begitu seterusnya
untuk frekuensi-frekuensi cut-off lainnya yang diwakili oleh tiap case. Proses penfisan
Butterworth pada bidang frekuensi bandstop dilakukan menggunakan fungsi
butterworthbspf.
56 end
end
% Memperbarui citra dengan frekuensi-frekuensi yang dilewatkan
citra_tertapis = filter3.*fftI;
citra_tertapis = ifftshift(citra_tertapis);
citra_tertapis = ifft2(citra_tertapis,2*nx-1,2*ny-1); citra_tertapis = real(citra_tertapis(1:nx,1:ny)); citra_tertapis = uint8(citra_tertapis);
fftI = 20*log(fftI);
filterKeluaran = 20*log(filter3);
Fungsi butterworthbspf melewatkan empat buah parameter/argumen yaitu citra yang akan ditapis, frekuensi cut-off awal, frekuensi cut-off akhir dan jumlah orde
dari proses penafisan. Fungsi ini memiliki tiga output yaitu nilai FFT dari citra, tapis
keluaran dan citra hasil penapisan.
fftI, filterKeluaran, hasil] = butterworthhpf(oimg1,50,4); axes(handles.axes2)
imshow(hasil);title(judul)
Citra hasil penafisan disimpan pada variabel hasil dan ditampilkan pada axes2 dengan
menggunakan fungsi MATLAB imshow.
4.1.10 Kontrol Tombol EVALUASI BUTTERWORTH LOWPASS
Tombol ini digunakan untuk melihat kinerja tapis Butterworth lowpass terhadap
seluruh frekuensi cut-off yang ada. Parameter-parameter evaluasi yang digunakan
adalah RMSE, PFE, MAE, CORR, SNR, PSNR, MI, QI, dan SSIM.
57
Berikut adalah fungsi callback tombol EVALUASI BUTTERWORTH
LOWPASS.
function tombolEvaluasiLowPass_Callback(hObject, eventdata, handles)
% hObject handle to tombolEvaluasiLowPass (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
I=im2double(getimage(handles.axes1)); [baris, kolom, banyakKanal] = size(I);
[fftI1, filterKeluaran1, hasil1] = butterworthlpf(oimg1,50,4);
% Frek Cut-Off 100
[fftI2, filterKeluaran2, hasil2] = butterworthlpf(oimg1,100,4);
% Frek Cut-Off 150
[fftI3, filterKeluaran3, hasil3] = butterworthlpf(oimg1,150,4);
% Frek Cut-Off 200
[fftI4, filterKeluaran4, hasil4] = butterworthlpf(oimg1,200,4);
% Frek Cut-Off 250
[fftI5, filterKeluaran5, hasil5] = butterworthlpf(oimg1,250,4);
% Frek Cut-Off 500
[fftI6, filterKeluaran6, hasil6] = butterworthlpf(oimg1,500,4);
% Frek Cut-Off 1000
[fftI7, filterKeluaran7, hasil7] = butterworthlpf(oimg1,1000,4);
% metrik-metrik evaluasi kualitas citra
[m,n]=size(Semula);
hasil1 = imresize(hasil1,[m n]); hasil2 = imresize(hasil2,[m n]); hasil3 = imresize(hasil3,[m n]); hasil4 = imresize(hasil4,[m n]); hasil5 = imresize(hasil5,[m n]); hasil6 = imresize(hasil6,[m n]); hasil7 = imresize(hasil7,[m n]);
oimg1 = imresize(oimg1,[m n]);
58
set(t,'ColumnName',{'RMSE |(Root Mean Square Error)';'PFE |(Persentage Fit Error)';'MAE |(Mean Absolute Error)'; 'CORR| (Correlation)';... 'SNR |(Signal to Noise Ratio'; 'PSNR |(Peak Signal to Noise
plot(z',d1, z',d2, z',d3, z',d4, z',d5, z',d6, z',d7); title('Grafik Kinerja TAPIS BUTTERWORTH LOWPASS'); grid on;
59
4.1.11 Kontrol Tombol EVALUASI BUTTERWORTH BANDPASS
Tombol ini digunakan untuk melihat kinerja tapis Butterworth bandpass
terhadap seluruh frekuensi cut-off yang ada. Parameter-parameter evaluasi yang
digunakan adalah RMSE, PFE, MAE, CORR, SNR, PSNR, MI, QI, dan SSIM.
Gambar 4.13 Kontrol tombol EVALUASI BUTTERWORTH BANDPASS
Berikut adalah fungsi callback yang terdapat pada tombol EVALUASI
BUTTERWORTH BANDPASS.
function tombolEvaluasiBandPass_Callback(hObject, eventdata, handles)
% hObject handle to tombolEvaluasiBandPass (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) %set(handles.tombolEvaluasiLowPass,'Enable','on');
%set(handles.tombolEvaluasiBandPass,'Enable','off');
I=im2double(getimage(handles.axes1)); [baris, kolom, banyakKanal] = size(I);
if banyakKanal ==1 Semula=I; else
Semula=rgb2gray(I); end
% Frek Cut-Off 5|100
oimg1=getimage(handles.axes3);
[fftI1, filterKeluaran1, hasil1] = butterworthbpf(oimg1,5,100,4);
% Frek Cut-Off 100|200
[fftI2, filterKeluaran2, hasil2] = butterworthbpf(oimg1,100,200,4);
% Frek Cut-Off 150|250
60
% Frek Cut-Off 200|350
[fftI4, filterKeluaran4, hasil4] = butterworthbpf(oimg1,200,350,4);
% Frek Cut-Off 250|400
[fftI5, filterKeluaran5, hasil5] = butterworthbpf(oimg1,250,400,4);
% Frek Cut-Off 500|700
[fftI6, filterKeluaran6, hasil6] = butterworthbpf(oimg1,500,700,4);
% Frek Cut-Off 1000|1500
[fftI7, filterKeluaran7, hasil7] = butterworthbpf(oimg1,1000,1500,4);
% metrik-metrik evaluasi kualitas citra
[m,n]=size(Semula);
hasil1 = imresize(hasil1,[m n]); hasil2 = imresize(hasil2,[m n]); hasil3 = imresize(hasil3,[m n]); hasil4 = imresize(hasil4,[m n]); hasil5 = imresize(hasil5,[m n]); hasil6 = imresize(hasil6,[m n]); hasil7 = imresize(hasil7,[m n]);
61 set(t,'ColumnName',{'RMSE |(Root Mean Square Error)';'PFE |(Persentage Fit Error)';'MAE |(Mean Absolute Error)'; 'CORR| (Correlation)';... 'SNR |(Signal to Noise Ratio'; 'PSNR |(Peak Signal to Noise Ratio)';'MI | (Mutual Information)'; 'QI| (Quality Index)';...
'SSIM| (Measure of Structural Similarity)';})
set(t,'RowName',{'5|100 Hz'; '100|200 Hz'; '150|250 Hz'; '200|350 Hz'; '250|400 Hz'; '500|700 Hz'; '1000|1500 Hz'});
%Menampilkan grafik
z=1:9;
axes(handles.axes11);
plot(z',d1, z',d2, z',d3, z',d4, z',d5, z',d6, z',d7); title('Grafik Kinerja TAPIS BUTTERWORTH BANDPASS'); grid on;
legend('5|100 Hz', '100|200 Hz', '150|250 Hz', '200|350 Hz', '250|400 Hz', '500|700 Hz', '1000|1500 Hz')
set(gca,'XTick',1:9)
set(gca,'XTickLabel',{'RMSE','PFE','MAE','CORR','SNR','PSNR','MI','QI' ,'SSIM'});
save d1.mat d1; save d2.mat d2; save d3.mat d3; save d4.mat d4; save d5.mat d5; save d6.mat d6; save d7.mat d7;
4.1.12 Kontrol Tombol EVALUASI BUTTERWORTH HIGHPASS
Tombol ini digunakan untuk melihat kinerja tapis Butterworth highpass terhadap
seluruh frekuensi cut-off yang ada. Parameter-parameter evaluasi yang digunakan
adalah RMSE, PFE, MAE, CORR, SNR, PSNR, MI, QI, dan SSIM.
62
Berikut adalah fungsi callback dari tombol EVALUASI BUTTERWORTH
HIGHPASS.
function tombolEvaluasiHighPass_Callback(hObject, eventdata, handles)
% hObject handle to tombolEvaluasiHighPass (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
I=im2double(getimage(handles.axes1)); [baris, kolom, banyakKanal] = size(I);
[fftI1, filterKeluaran1, hasil1] = butterworthhpf(oimg1,50,4);
% Frek Cut-Off 100
[fftI2, filterKeluaran2, hasil2] = butterworthhpf(oimg1,100,4);
% Frek Cut-Off 150
[fftI3, filterKeluaran3, hasil3] = butterworthhpf(oimg1,150,4);
% Frek Cut-Off 200
[fftI4, filterKeluaran4, hasil4] = butterworthhpf(oimg1,200,4);
% Frek Cut-Off 250
[fftI5, filterKeluaran5, hasil5] = butterworthhpf(oimg1,250,4);
% Frek Cut-Off 500
[fftI6, filterKeluaran6, hasil6] = butterworthhpf(oimg1,500,4);
% Frek Cut-Off 1000
[fftI7, filterKeluaran7, hasil7] = butterworthhpf(oimg1,1000,4);
% metrik-metrik evaluasi kualitas citra
[m,n]=size(Semula);
hasil1 = imresize(hasil1,[m n]); hasil2 = imresize(hasil2,[m n]); hasil3 = imresize(hasil3,[m n]); hasil4 = imresize(hasil4,[m n]); hasil5 = imresize(hasil5,[m n]); hasil6 = imresize(hasil6,[m n]); hasil7 = imresize(hasil7,[m n]);
oimg1 = imresize(oimg1,[m n]);
size(oimg1) size(Semula) size(hasil1)
63
set(t,'ColumnName',{'RMSE |(Root Mean Square Error)';'PFE |(Persentage Fit Error)';'MAE |(Mean Absolute Error)'; 'CORR| (Correlation)';... 'SNR |(Signal to Noise Ratio'; 'PSNR |(Peak Signal to Noise
plot(z',d1, z',d2, z',d3, z',d4, z',d5, z',d6, z',d7); title('Grafik Kinerja TAPIS BUTTERWORTH HIGHPASS'); grid on;
64
4.1.13 Kontrol Tombol EVALUASI BUTTERWORTH BANDSTOP
Tombol ini digunakan untuk melihat kinerja tapis Butterworth bandstop
terhadap seluruh frekuensi cut-off yang ada. Parameter-parameter evaluasi yang
digunakan adalah RMSE, PFE, MAE, CORR, SNR, PSNR, MI, QI, dan SSIM.
Gambar 4.15 Kontrol tombol EVALUASI BUTTERWORTH BANDSTOP
Berikut adalah fungsi callback dari tombol EVALUASI BUTTERWORTH
BANDSTOP.
function tombolEvaluasiBandStop_Callback(hObject, eventdata, handles)
% hObject handle to tombolEvaluasiBandStop (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
I=im2double(getimage(handles.axes1)); [baris, kolom, banyakKanal] = size(I);
if banyakKanal ==1 Semula=I; else
Semula=rgb2gray(I); end
% Frek Cut-Off 5|100
oimg1=getimage(handles.axes3);
[fftI1, filterKeluaran1, hasil1] = butterworthbspf(oimg1,5,100,4);
% Frek Cut-Off 100|200
[fftI2, filterKeluaran2, hasil2] = butterworthbspf(oimg1,100,200,4);
% Frek Cut-Off 150|250
[fftI3, filterKeluaran3, hasil3] = butterworthbspf(oimg1,150,250,4);
% Frek Cut-Off 200|350
65
% Frek Cut-Off 250|400
[fftI5, filterKeluaran5, hasil5] = butterworthbspf(oimg1,250,400,4);
% Frek Cut-Off 500|700
[fftI6, filterKeluaran6, hasil6] = butterworthbspf(oimg1,500,700,4);
% Frek Cut-Off 1000|1500
[fftI7, filterKeluaran7, hasil7] = butterworthbspf(oimg1,1000,1500,4);
% metrik-metrik evaluasi kualitas citra
[m,n]=size(Semula);
hasil1 = imresize(hasil1,[m n]); hasil2 = imresize(hasil2,[m n]); hasil3 = imresize(hasil3,[m n]); hasil4 = imresize(hasil4,[m n]); hasil5 = imresize(hasil5,[m n]); hasil6 = imresize(hasil6,[m n]); hasil7 = imresize(hasil7,[m n]);
oimg1 = imresize(oimg1,[m n]);
66 'SNR |(Signal to Noise Ratio'; 'PSNR |(Peak Signal to Noise
Ratio)';'MI | (Mutual Information)'; 'QI| (Quality Index)';...
'SSIM| (Measure of Structural Similarity)';})
set(t,'RowName',{'5|100 Hz'; '100|200 Hz'; '150|250 Hz'; '200|350 Hz'; '250|400 Hz'; '500|700 Hz'; '1000|1500 Hz'});
%Menampilkan grafik
z=1:9;
axes(handles.axes11);
plot(z',d1, z',d2, z',d3, z',d4, z',d5, z',d6, z',d7); title('Grafik Kinerja TAPIS BUTTERWORTH BANDSTOP'); grid on;
legend('5|100 Hz', '100|200 Hz', '150|250 Hz', '200|350 Hz', '250|400 Hz', '500|700 Hz', '1000|1500 Hz')
set(gca,'XTick',1:9)
set(gca,'XTickLabel',{'RMSE','PFE','MAE','CORR','SNR','PSNR','MI','QI' ,'SSIM'});
save d1.mat d1; save d2.mat d2; save d3.mat d3; save d4.mat d4; save d5.mat d5; save d6.mat d6; save d7.mat d7;
4.2 Pengujian Program Restorasi Citra Tapis Butterworth
4.2.1 Penapisan Butterworth Bidang Frekuensi Lowpass
Berikut adalah proses penapisan Butterworth lowpass terhadap citra
mandrill.png dengan frekuensi cut-off 50 Hz. Pada ujicoba ini, citra diberikan derau
Gaussian dengan variansi 0.01.
67
Berdasarkan hasil pengujian yang dilakukan, terlihat bahwa tapis Butterworth
lowpass dengan frekuensi cut-off 50 Hz menghasilkan citra hasil penapisan dengan
derau tereduksi. Hal tersebut dapat dilihat dari citra hasil yang diperoleh, dimana derau
pada citra hasil penapisan memiliki variansi yang rendah dan citra hasil penapisan
mendekati citra aslinya. Citra hasil penapisan mengalami pengaburan akibat
terbuangnya semua koefisien frekuensi citra >50 Hz, yang berkontribusi pada citra
error.
Gambar 4.17 adalah gambar yang memperlihatkan citra uji berderau dalam
domain frekuensi dan citra tapis Butterworth lowpass 50 Hz, serta citra hasil penapisan.
Dapat dilihat bagaimana tampilan citra pada domain frekuensi dan citra dari tapis
Butterworth lowpass dengan frekuensi cutoff 50 Hz.
Citra berderau pada domain frekuensi, yang ada di sebelah kanan atas gambar,
memiliki koefisien-koefisien yang tersebar pada seluruh bidang frekuensi, dengan
sejumlah koefisien bernilai besar terkonsentrasi di titik tengah (atau di bidang frekuensi
rendah). Citra tapis, di sebelah kiri bawah gambar, menunjukkan sebuah lingkaran putih
dengan jari-jari dalam 50 Hz.
68
Gambar 4.18 Hasil penafisan Butterworth lowpass frekuensi cut-off (a) 100 Hz, (b)
150 Hz, (c) 200 Hz, (d) 250 Hz, (e) 500 Hz, (f) 1000 Hz
(a) (b)
(c) (d)
69
Seperti terlihat pada Gambar 4.18, citra hasil penapisan lowpass dengan
frekuensi 100 Hz, 150 Hz, dan 200 Hz memiliki efek pengaburan akibat dibuangnya
koefisien-koefisien frekuensi citra yang lebih besar dari frekuensi cutoffnya. Tetapi,
derau dapat direduksi secara signifikan pada ketiga hasil penapisan tersebut. Apa yang
terjadi pada penapisan lowpass dengan frekuensi cutoff 250 Hz, 500 Hz, dan 1000 Hz
berbeda dari lainnya. Pada hasil penapisan pada ketiga frekuensi cutoff ini, citra hasil
penapisan sedikit lebih tajam, meskipun derau tampak lebih jelas.
Berikut adalah tabel dan grafik evaluasi yang memperlihatkan kinerja tapis
Butterworth lowpass untuk tiap frekuensi cut-off.
Gambar 4.19 Tabel dan grafik evaluasi kinerja tapis Butterworth lowpass
Berdasarkan tabel dan grafik evaluasi kinerja tapis Butterworth pada Gambar
4.19 terlihat bahwa frekuensi cut-off 50 Hz memiliki nilai RMSE paling kecil dengan
nilai 131.6718, kemudian diikuti oleh frekuensi cut-off 100 Hz dengan RMSE 132.0758.
Nilai RMSE yang paling besar diperoleh pada frekuensi cut-off 100 Hz dengan nilai
134.7541. Semakin besar nilai frekuensi cut-off maka nilai RMSE yang diperoleh akan
70
4.2.2 Penapisan Butterworth Bidang Frekuensi Bandpass
Gambar 4.20 adalah proses penapisan Butterworth bandpass terhadap citra
mandrill.png dengan frekuensi cut-off 5|100 Hz. Pada ujicoba ini, citra diberikan derau
Gaussian dengan variansi 0.01.
Berdasarkan hasil pengujian yang dilakukan, terlihat bahwa tapis Butterworth
bandpass dengan frekuensi cutoff 5|100 Hz menghasilkan citra hasil penapisan dengan
nilai-nilai piksel yang didominasi dengan nilai rendah, yang mengakibatkan gelapnya
citra hasil penapisan. Citra hasil penapisan mengalami penggelapan akibat terbuangnya
semua koefisien frekuensi citra <5 Hz dan >100 Hz, yang berkontribusi pada citra error.
Citra error tampak memuat informasi citra akibat terbuangnya semua koefisien
frekuensi citra <5 Hz dan >100 Hz.
71
Gambar 4.21 Citra pada domain frekuensi dan citra tapis Butterworth bandpass dengan
frekuensi cutoff 5|100 Hz
Gambar 4.21 adalah gambar yang memperlihatkan citra uji berderau dalam
domain frekuensi dan citra tapis Butterworth bandpass dengan frekuensi cutoff 5|100
Hz, serta citra hasil penapisan. Dapat dilihat bagaimana tampilan citra pada domain
frekuensi dan citra dari tapis Butterworth bandpass dengan frekuensi cutoff 5|100 Hz.
Citra berderau pada domain frekuensi, yang ada di sebelah kanan atas gambar, memiliki
koefisien-koefisien yang tersebar pada seluruh bidang frekuensi, dengan sejumlah
koefisien bernilai besar terkonsentrasi di titik tengah (atau di bidang frekuensi rendah).
Citra tapis, di sebelah kiri bawah gambar, menunjukkan sebuah lingkaran putih dengan
jari-jari dalam 5 Hz dan jari-jari luar 100 Hz. Citra tertapis didominasi warna gelap,
72
Gambar 4.22 Hasil penafisan Butterworth bandpass frekuensi cutoff (a) 100|200 Hz,
(b) 150|250 Hz, (c) 200|350 Hz, (d) 250|400 Hz, (e) 500|700 Hz, (f) 1000|1500 Hz
(a) (b)
(c) (d)
73
Seperti terlihat pada Gambar 4.22, citra hasil penapisan bandpass dengan
frekuensi 100|200 Hz, 150|250 Hz, dan 200|350 Hz memiliki efek seperti deteksi tepi,
dimana piksel-piksel terang tampak pada tepi objek. Hal ini diakibatkan oleh
dibuangnya koefisien-koefisien frekuensi citra yang lebih kecil dari frekuensi cutoff
bawah dan yang lebih besar dari frekuensi cutoff atas. Apa yang terjadi pada penapisan
bandpass dengan frekuensi cutoff 250|400 Hz, 500|700 Hz, dan 1000|1500 Hz lebih
buruk dari sebelulmnya. Pada hasil penapisan pada ketiga frekuensi cutoff ini, citra hasil
penapisan tampak tidak memuat informasi apapun, kecuali hanya piksel-piksel terang
pada posisi yang acak.
Berdasarkan tabel dan grafik evaluasi kinerja tapis Butterworth pada Gambar
4.23 terlihat bahwa frekuensi cut-off 1000|1500 Hz justru memiliki nilai RMSE paling
kecil dengan nilai 0.5342, kemudian diikuti oleh frekuensi cutoff 500|700 Hz dengan
RMSE 6.3448. Nilai RMSE yang paling besar diperoleh pada frekuensi cutoff 5|100 Hz
dengan nilai 31.1234. Semakin besar nilai frekuensi cutoff maka nilai RMSE yang
diperoleh membentuk gelombang sinusoidal yang termodulasi dengan eksponensial
menyusut.
74
4.2.3 Penapisan Butterworth Bidang Frekuensi Highpass
Gambar 4.24 adalah penapisan Butterworth highpass terhadap citra mandrill.png
dengan frekuensi cut-off 50 Hz. Pada uji coba ini, citra diberikan derau Gaussian
dengan variansi 0.01.
Gambar 4.24 Hasil penapisan Butterworth frekuensi cutoff highpass 50 Hz
Berdasarkan hasil pengujian yang dilakukan, terlihat bahwa tapis Butterworth
highpass dengan frekuensi cutoff 50 Hz menghasilkan citra hasil penapisan yang
didominasi oleh piksel-piksel berwarna gelap, dengan piksel-piksel berwarna terang di
tepi-tepi objek. Hal ini diakibatkan oleh dibuangnya semua koefisien frekuensi yang
lebih kecil dari frekuensi cutoff (<50 Hz). Akibatnya, citra error justru memuat sebagian
besar informasi citra, semua koefisien frekuensi >=50 Hz berkontribusi pada citra error
tersebut. Kehadiran derau tampak nyata pada citra error, meskipun derau pada citra
75
Gambar 4.25 Citra pada domain frekuensi dan citra tapis Butterworth highpass dengan
frekuensi cutoff 50 Hz
Gambar 4.25 merupakan gambar yang memperlihatkan citra uji berderau dalam
domain frekuensi dan citra tapis Butterworth bandpass dengan frekuensi cutoff 50 Hz,
serta citra hasil penapisan. Dapat dilihat bagaimana tampilan citra pada domain
frekuensi dan citra dari tapis Butterworth highpass dengan frekuensi cutoff 50 Hz.
Citra berderau pada domain frekuensi, yang ada di sebelah kanan atas gambar,
memiliki koefisien-koefisien yang tersebar pada seluruh bidang frekuensi, dengan
sejumlah koefisien bernilai besar terkonsentrasi di titik tengah (atau di bidang frekuensi
rendah). Citra tapis, di sebelah kiri bawah gambar, menunjukkan sebuah lingkaran
hitam dengan jari-jari dalam 50 Hz. Citra tertapis didominasi warna gelap, akibat
terbuangnya semua koefisien frekuensi citra <50 Hz, yang menyebabkan tampilan
seperti mekanisme deteksi tepi. Piksel-piksel putih pada tepi-tepi objek tampak tidak
76
Gambar 4.26 Hasil penapisan Butterworth highpass frekuensi cutoff (a) 100 Hz, (b)
150 Hz, (c) 200 Hz, (d) 250 Hz, (e) 500 Hz, (f) 1000 Hz
Pada Gambar 4.26, semua citra tertapis didominasi warna gelap, akibat
terbuangnya semua koefisien frekuensi citra yang lebih kecil dari frekuensi cutoff-nya,
(a) (b)
(c) (d)
77
yang menyebabkan tampilan seperti mekanisme deteksi tepi. Piksel-piksel putih pada
tepi-tepi objek tampak tidak kontinyu. Dapat diperhatikan bahwa semakin besar
frekuensi cutoff yang diberikan, citra hasil penapisan memiliki piksel-piksel putih yang
semakin tidak kontinyu dan citra tersebut semakin didominasi oleh warna gelap. Dapat
diperhatikan pula bahwa citra tapis memiliki lingkaran hitam dengan radius yang lebih
besar seiring dengan bertambahnya frekuensi cutoff.
Gambar 4.27 Tabel dan grafik RMSE untuk penapisan Butterworth highpass untuk
sejumlah frekuensi cutoff.
Berdasarkan tabel dan grafik evaluasi kinerja tapis Butterworth pada Gambar
4.27 terlihat bahwa frekuensi cut-off 1000 Hz justru memiliki nilai RMSE paling kecil
dengan nilai 0.5342, kemudian diikuti oleh frekuensi cutoff 500 Hz dengan RMSE
7.5741. Nilai RMSE yang paling besar diperoleh pada frekuensi cutoff 50 Hz dengan
nilai 26.6142. Semakin besar nilai frekuensi cutoff maka nilai RMSE yang diperoleh
menyusut secara hampir linier.
4.2.4 Penapisan Butterworth Bidang Frekuensi Bandstop
Gambar 4.28 adalah penapisan Butterworth bandstop terhadap citra
mandrill.png dengan frekuensi cutoff 5|100 Hz. Pada uji coba ini, citra diberikan derau
78
Gambar 4.28 Hasil penapisan Butterworth bandstop dengan frekuensi cutoff 5|100 Hz
Berdasarkan hasil pengujian yang dilakukan, terlihat bahwa tapis Butterworth
bandpass dengan frekuensi cutoff 5|100 Hz menghasilkan citra hasil penapisan yang
didominasi oleh piksel-piksel berwarna gelap, dengan piksel-piksel berwarna terang
tersebar secara terpola mengikuti tekstur objek pada citra. Hasil ini diakibatkan oleh
dibuangnya semua koefisien frekuensi antara 5 Hz sampai 100 Hz. Akibatnya, citra
error justru memuat sebagian besar informasi citra, dimana semua koefisien frekuensi
citra <50 Hz dan >100 Hz berkontribusi pada citra error tersebut. Kehadiran derau
tampak sangat nyata pada citra error.
Gambar 4.29 merupakan gambar yang memperlihatkan citra uji berderau dalam
domain frekuensi dan citra tapis Butterworth bandstop dengan frekuensi cutoff 5|100
Hz, serta citra hasil penapisan. Dapat dilihat bagaimana tampilan citra pada domain
79
Gambar 4.29 Citra pada domain frekuensi dan citra tapis Butterworth bandstop dengan
frekuensi cutoff 5|100 Hz
Citra berderau pada domain frekuensi, yang ada di sebelah kanan atas gambar,
memiliki koefisien-koefisien yang tersebar pada seluruh bidang frekuensi, dengan
sejumlah koefisien bernilai besar terkonsentrasi di titik tengah (atau di bidang frekuensi
rendah). Citra tapis, di sebelah kiri bawah gambar, menunjukkan sebuah lingkaran
hitam dengan jari-jari dalam 5 Hz dan jari-jari luar 100 Hz. Citra tertapis didominasi
warna gelap, akibat terbuangnya semua koefisien frekuensi citra antara 5 Hz sampai 100
Hz, dengan piksel-piksel berwarna terang tersebar secara terpola mengikuti tekstur
objek pada citra. Piksel-piksel putih tersebut tampak tidak kontinyu.
Dari Gambar 4.30, dapat diperhatikan bahwa citra tapis memiliki lingkaran
hitam dengan radius dalam dan radius luar yang lebih besar seiring dengan
bertambahnya frekuensi cutoff. Hasil penapisan dengan frekuensi cutoff 200|350 Hz,
250|400 Hz, dan 500|700 Hz tampak memiliki derau yang lebih tereduksi dibandingkan
dengan hasil penapisan dengan frekuensi cutoff lainnya. Hasil penapisan dengan
80
Gambar 4.30 Hasil penafisan Butterworth bandstop frekuensi cutoff (a) 100|200 Hz,
(b) 150|250 Hz, (c) 200|350 Hz, (d) 250|400 Hz, (e) 500|700 Hz, (f) 1000|1500 Hz
(a) (b)
(c) (d)
81
Gambar 4.31 Tabel dan grafik RMSE untuk penapisan Butterworth bandstop untuk
sejumlah frekuensi cutoff.
Berdasarkan tabel dan grafik evaluasi kinerja tapis Butterworth bandstop pada
Gambar 4.31 terlihat bahwa frekuensi cutoff 5|100 Hz memiliki nilai RMSE paling kecil
dengan nilai 126.0731, kemudian diikuti oleh frekuensi cutoff 100|200 Hz dengan
RMSE 136.7436. Nilai RMSE yang paling besar diperoleh pada frekuensi cutoff
1000|1500 Hz dengan nilai 138.2939. Semakin besar nilai frekuensi cutoff maka nilai
82
4.3 Komparasi RMSE Tapis Butterworth Pada Sejumlah Citra Uji
4.3.1 Perbandingan RMSE Tiga Citra Uji Bidang Frekuensi Lowpass
Gambar 4.32 Tabel dan grafik RMSE untuk penapisan Butterworth lowpass untuk citra
uji boat
Gambar 4.33 Tabel dan grafik RMSE untuk penapisan Butterworth lowpass untuk citra
83
Gambar 4.34 Tabel dan grafik RMSE untuk penapisan Butterworth lowpass untuk citra
uji lena
Berdasarkan tabel dan grafik evaluasi kinerja tapis Butterworth lowpass dari
ketiga citra uji pada Gambar 4.32-4.34 terlihat bahwa hasil penapisan dengan frekuensi
cutoff 50 Hz selalu memiliki nilai RMSE paling kecil dan hasil penapisan dengan
frekuensi cutoff 1000 Hz selalu memiliki nilai RMSE paling besar. Semakin besar nilai
frekuensi cutoff maka nilai RMSE yang diperoleh meningkat hampir linier dengan
kemiringan yang cukup kecil.
Nilai RMSE paling kecil didapatkan dari hasil penapisan dengan frekuensi cutoff
50 Hz pada citra lena dengan nilai 97.2053, sedangkan nilai RMSE paling besar
didapatkan dari hasil penapisan dengan frekuensi cutoff 1000 Hz pada citra boat dengan
84
4.3.2 Perbandingan RMSE Tiga Citra Uji Bidang Frekuensi Bandpass
Gambar 4.35 Tabel dan grafik RMSE untuk penapisan Butterworth bandpass untuk
citra uji boat
Gambar 4.36 Tabel dan grafik RMSE untuk penapisan Butterworth bandpass untuk