Perbandingan Weighted Mean Filtering Dan Harmonic Mean Filtering Dalam Mereduksi Rayleigh Noise Dan Gamma Noise Pada Citra Digital

A-1

LISTING PROGRAM
// Source Code form utama.m
function varargout = utama(varargin)
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',
mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @utama_OpeningFcn, ...
'gui_OutputFcn', @utama_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback',
[]);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else

gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT

% --- Executes just before utama is made visible.
function utama_OpeningFcn(hObject, eventdata, handles, varargin)
citra=imread('fasilkom-TI.jpg');
axes(handles.logo_fklts);
imshow(citra);
% Choose default command line output for utama
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);

% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
desc
close utama;
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)

pengujian
close utama;

A-2

// Source Code form pengujian.m
function varargout = pengujian(varargin)
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
mfilename, ...
gui_State = struct('gui_Name',
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @pengujian_OpeningFcn, ...
'gui_OutputFcn', @pengujian_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback',
[]);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT

% --- Executes on button press in tombolbuka1.
%function tombolbuka1_Callback(hObject, eventdata, handles)
function varargout = tombolbuka1_Callback(hObject, eventdata,
handles) %variabel_keluaran
[nama_file, namaPath]=uigetfile({'*.bmp'},'Buka File');
if ~isequal (nama_file,0)
handles.citra=imread(fullfile(namaPath,nama_file));
guidata(hObject,handles);
axes(handles.axes_asli);
imshow(handles.citra);
else
return;
end


% --- Executes on button press in tombol_gsc.
function tombol_gsc_Callback(hObject, eventdata, handles)
I = handles.citra ;
%I_noise = rgb2gray(I);
citra_double = double(I);
[b k c]= size(citra_double);
for x=1:b
for y=1:k
semua =
citra_double(x,y,1)+citra_double(x,y,2)+citra_double(x,y,3);
gr(x,y)=semua / 3;
end
end
gr = uint8(gr);
axes(handles.axes_gsc);
imshow(gr);

A-3


% --- Executes on button press in tombol_noise1. Gamma Noise
function tombol_noise1_Callback(hObject, eventdata, handles)
I = getimage(handles.axes_gsc);
[m, n] = size(I);
a = 2;
b = str2double(get(handles.txt_gam,'string'))*7;
alpha = b;
varians = b / (a * a);
p = sqrt(varians * a ) / 2.0;
I = double(I);
for i=1 : m
for j=1 : n
k = -1 / a;
derau = 0;
for p=1 : b
derau = derau + k * log(1 - rand);
end
G(i,j) = round(I(i,j)+derau);
if G(i,j) > 255
G(i,j) = 255;

end
end
end
G = uint8(G);
axes(handles.axes_gamma);
imshow(G);

% --- Executes on button press in tombol_noise2.Rayleigh Noise
function tombol_noise2_Callback(hObject, eventdata, handles)
I = getimage(handles.axes_gsc);
a = 1;
b = str2double(get(handles.txt_ray,'string'))*7;
[m, n] = size(I);
I = double(I);
G = zeros(m, n);
for i=1 : m
for j=1 : n
derau = a + sqrt(-b * log(1 - rand));
G(i,j) = round(I(i,j) + derau);
if G(i,j) > 255

G(i,j) = 255;
end
end
end
G = uint8(G);
axes(handles.axes_ray);
imshow(G);

% --- Executes on button press in button_save1.
function button_save1_Callback(hObject, eventdata, handles)
S = getimage(handles.axes_gamma);
[nama_save_file, path_save]=uiputfile('*.jpg','Simpan Citra');
nama_file_simpan=fullfile(path_save,nama_save_file);
imwrite(S,nama_file_simpan,'jpg');

A-4

% --- Executes on button press in button_save2.
function button_save2_Callback(hObject, eventdata, handles)
S = getimage(handles.axes_ray);

[nama_save_file, path_save]=uiputfile('*.jpg','Simpan Citra');
nama_file_simpan=fullfile(path_save,nama_save_file);
imwrite(S,nama_file_simpan,'jpg');
% --- Executes on button press in btnWeight.
function btnWeight_Callback(hObject, eventdata, handles)
global runtime;
runtime=cputime;
disp('ongoing');
if strcmp(handles.noise, 'radio_gamma');
noise_image = getimage(handles.axes_gamma);
else
noise_image = getimage(handles.axes_ray);
end
G = wmfilter(noise_image,handles);
disp('end');
axes(handles.axes_weighted);
imshow(G);
runtime=cputime-runtime;
set(handles.txt_runtime_weighted,'String',runtime);
% --- Executes on button press in btnHarmonic.

function btnHarmonic_Callback(hObject, eventdata, handles)
global runtime;
runtime=cputime;
disp('ongoing');
if strcmp(handles.noise, 'radio_gamma');
noise_image = getimage(handles.axes_gamma);
else
noise_image = getimage(handles.axes_ray);
end
G = hrmfilter(noise_image,handles);
disp('end');
axes(handles.axes_harmonic);
imshow(G);
runtime=cputime-runtime;
set(handles.txt_runtime_harmonic,'String',runtime);
function G = wmfilter(myimage,handles)
array_bobot = [1 2 1; 2 3 2; 1 2 1];
jumlah_bobot = sum(sum(array_bobot));
myimage = uint8(myimage);
[m, n] = size(myimage);

ukuran = 3;
setengah = floor(ukuran / 2);
I = double(myimage);
G = zeros(m,n);
for i=1+setengah : m-setengah
for j=1+setengah: n-setengah
jum_meanL = 0;
% penjumlahan total submatriks * bobot
for p = -setengah : setengah %citrahasil
for q = -setengah : setengah
jum_meanL = jum_meanL + (I(i+p, j+q) *
array_bobot(2+p, 2+q));
end

A-5

end
pixel_hasil = jum_meanL / jumlah_bobot;
G(i, j) = pixel_hasil;
end

end
G = uint8(G);

function G = hrmfilter(myimage,handles)
myimage = uint8(myimage);
[m, n] = size(myimage);
ukuran = 3;
pembilang = ukuran * ukuran;
setengah = floor(ukuran / 2);
I = double(myimage);
G = zeros(m,n);
for i=1+setengah : m-setengah
for j=1+setengah: n-setengah
jum_mean = 0;
% penjumlahan total submatriks * bobot
for p = -setengah : setengah %citrahasil
for q = -setengah : setengah
jum_mean = jum_mean + (1 / I(i+p, j+q));
end
end
pixel_hasil = pembilang / jum_mean;
G(i, j) = pixel_hasil;
end
end
G = uint8(G);
disp(G);

% --- Executes on button press in pushbutton11.
function pushbutton11_Callback(hObject, eventdata, handles)
utama
close pengujian;

% --- Executes when selected object is changed in uipanel10.
function uipanel10_SelectionChangeFcn(hObject, eventdata, handles)
handles.noise = get(eventdata.NewValue, 'Tag');
guidata(hObject, handles);
% --- Executes during object creation, after setting all properties.
function uipanel10_CreateFcn(hObject, eventdata, handles)
handles.noise = 'radio_gamma';
guidata(hObject, handles);
%
See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

A-6

% --- Executes on button press in button_mse2.
function button_mse2_Callback(hObject, eventdata, handles)
citra = getimage(handles.axes_gsc);
citra_hasil=getimage(handles.axes_ray);
mse = (double(citra)- double(citra_hasil)) .^ 2;
[m n] = size(citra_hasil);
nilai = sum(mse(:)) / (m * n);
set(handles.txt_mse2,'String',nilai);
% --- Executes on button press in button_psnr2.
function button_psnr2_Callback(hObject, eventdata, handles)
citra = getimage(handles.axes_gsc);
citra_hasil=getimage(handles.axes_ray);
mse = (double(citra)- double(citra_hasil)) .^ 2;
[m n] = size(citra_hasil);
nilai_mse = sum(mse(:)) / (m * n);
nilai_psnr = 10 * log10( 255^2 / nilai_mse);
set(handles.txt_psnr2,'String',nilai_psnr);
% --- Executes on button press in button_mse.
function button_mse_Callback(hObject, eventdata, handles)
citra = getimage(handles.axes_gsc);
citra_hasil=getimage(handles.axes_gamma);
mse = (double(citra)- double(citra_hasil)) .^ 2;
[m n] = size(citra_hasil);
nilai = sum(mse(:)) / (m * n);
set(handles.txt_mse,'String',nilai);
% --- Executes on button press in button_psnr.
function button_psnr_Callback(hObject, eventdata, handles)
citra = getimage(handles.axes_gsc);
citra_hasil=getimage(handles.axes_gamma);
mse = (double(citra)- double(citra_hasil)) .^ 2;
[m n] = size(citra_hasil);
nilai_mse = sum(mse(:)) / (m * n);
nilai_psnr = 10 * log10( 255^2 / nilai_mse);
set(handles.txt_psnr,'String',nilai_psnr);
% --- Executes on slider movement.
function prob_gamma_Callback(h, eventdata, handles)
nilai_prob = get(handles.prob_gamma,'value');
handles.nilai_prob = round(nilai_prob);
guidata(h,handles);
set(handles.txt_gam, 'string',handles.nilai_prob);

% --- Executes during object creation, after setting all properties.
function prob_gamma_CreateFcn(hObject, eventdata, handles)
% hObject
handle to prob_gamma (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
% Hint: slider controls usually have a light gray background.
if isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor',[.9 .9 .9]);
end

A-7

% --- Executes on slider movement.
function prob_ray_Callback(h, eventdata, handles)
nilai_prob = get(handles.prob_ray,'value');
handles.nilai_prob = round(nilai_prob);
guidata(h,handles);
set(handles.txt_ray, 'string',handles.nilai_prob);

% --- Executes during object creation, after setting all properties.
function prob_ray_CreateFcn(hObject, eventdata, handles)
if isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor',[.9 .9 .9]);
end

% --- Executes during object creation, after setting all properties.
function txt_ray_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

% --- Executes during object creation, after setting all properties.
function txt_mse2_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

function txt_psnr2_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

% --- Executes on button press in button_msehasil.
function button_msehasil_Callback(hObject, eventdata, handles)
if strcmp(handles.noise, 'radio_gamma');
citra = getimage(handles.axes_gamma);
else
citra = getimage(handles.axes_ray);

A-8

end
citra_hasil=getimage(handles.axes_weighted);
mse = (double(citra)- double(citra_hasil)) .^ 2;
[m n] = size(citra_hasil);
nilai = sum(mse(:)) / (m * n);
set(handles.txt_msehasil,'String',nilai);

function txt_msehasil_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

% --- Executes on button press in button_psnrhasil.
function button_psnrhasil_Callback(hObject, eventdata, handles)
if strcmp(handles.noise, 'radio_gamma');
citra = getimage(handles.axes_gamma);
else
citra = getimage(handles.axes_ray);
end
citra_hasil=getimage(handles.axes_weighted);
mse = (double(citra)- double(citra_hasil)) .^ 2;
[m n] = size(citra_hasil);
nilai_mse = sum(mse(:)) / (m * n);
nilai_psnr = 10 * log10( 255^2 / nilai_mse);
set(handles.txt_psnrhasil,'String',nilai_psnr);

% --- Executes during object creation, after setting all properties.
function txt_psnrhasil_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

% --- Executes on button press in button_msehasil2.
function button_msehasil2_Callback(hObject, eventdata, handles)
if strcmp(handles.noise, 'radio_gamma');
citra = getimage(handles.axes_gamma);
else
citra = getimage(handles.axes_ray);
end
citra_hasil=getimage(handles.axes_harmonic);
mse = (double(citra)- double(citra_hasil)) .^ 2;
[m n] = size(citra_hasil);
nilai = sum(mse(:)) / (m * n);
set(handles.txt_msehasil2,'String',nilai);

% --- Executes on button press in button_psnrhasil2.
function button_psnrhasil2_Callback(hObject, eventdata, handles)
if strcmp(handles.noise, 'radio_gamma');
citra = getimage(handles.axes_gamma);
else

A-9

citra = getimage(handles.axes_ray);
end
citra_hasil=getimage(handles.axes_harmonic);
mse = (double(citra)- double(citra_hasil)) .^ 2;
[m n] = size(citra_hasil);
nilai_mse = sum(mse(:)) / (m * n);
nilai_psnr = 10 * log10( 255^2 / nilai_mse);
set(handles.txt_psnrhasil2,'String',nilai_psnr);

function txt_msehasil2_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function txt_psnrhasil2_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

% --- Executes on button press in pushbutton20.
function pushbutton20_Callback(hObject, eventdata, handles)
S = getimage(handles.axes_weighted);
[nama_save_file, path_save]=uiputfile('*.jpg','Simpan Citra');
nama_file_simpan=fullfile(path_save,nama_save_file);
imwrite(S,nama_file_simpan,'jpg');
% --- Executes on button press in pushbutton21.
function pushbutton21_Callback(hObject, eventdata, handles)
S = getimage(handles.axes_harmonic);
[nama_save_file, path_save]=uiputfile('*.jpg','Simpan Citra');
nama_file_simpan=fullfile(path_save,nama_save_file);
imwrite(S,nama_file_simpan,'jpg');

% --- Executes during object creation, after setting all properties.
function txt_runtime_weighted_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

% --- Executes during object creation, after setting all properties.
function txt_runtime_harmonic_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end

A-10

// Source Code form desc.m
function varargout = desc(varargin)
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',
mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @desc_OpeningFcn, ...
'gui_OutputFcn', @desc_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback',
[]);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT

% --- Executes just before desc is made visible.
function desc_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);

% --- Outputs from this function are returned to the command line.
function varargout = desc_OutputFcn(hObject, eventdata, handles)

% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
utama
close desc;

B-1

CURRICULUM VITAE
Wahyu Eko Putra
wahyudefa19

-------------------------------------------------------------------------------------------------------Data Pribadi

Nama

: Wahyu Eko Putra

Tempat/Tanggal Lahir : Padang / 19 April 1992
Tinggi/Berat Badan

: 168 cm / 88 kg

Agama

: Islam

Kewarganegaraan

: Indonesia

Alamat Sekarang

: Jl. Pembanguna USU gang Pribadi no 1. Medan Selayang

Alamat Orang Tua

: Komplek Perumahan Taruko Permai IV blok G no 7. Bungo Pasang.
Koto Baru. Kota Padang

Telp/ Hp

: 085373875815

Email

: wahyuekoputra19@gmail.com

-------------------------------------------------------------------------------------------------------Riwayat Pendidikan
[2010 – 2015]

: S1 Ilmu Komputer Universitas Sumatera Utara, Medan

[2007 – 2010]

: SMA Negeri Agam Cendekia Maninjau, Sumatera Barat

[2004 – 2007]

: SMP PMT Prof. Dr. Hamka, Padang Pariaman, Sumatera Barat

[1998 – 2004]

: SD Negeri no. 28 Gurun Laweh. Padang, Sumatera Barat

-------------------------------------------------------------------------------------------------------Keahlian/Kursus
Keahlian Komputer
Pemrograman

: Java, C++, MATLAB

Database

: MysQL

Perkantoran

: Microsoft Office

-------------------------------------------------------------------------------------------------------Pengalaman Organisasi
[2008 – 2009] OSIS SMA Negeri Agam Cendekia
[2011 – 2012] Anggota bidang Syi’ar (humas) BKM Al- Khuwarizmi Ilmu Komputer 2011/2012
[2012 – 2013] Ketua bidang Syi’ar (humas) UKMI Al- Khuwarizmi Ilmu Komputer 2012/2013
[2011 – 2012] Anggota IMILKOM 2011/2012
[2012 – 2013] Anggota IMILKOM 2012 – 2013
[2011 – 2012] Anggota bidang Kerohanian Islam IMIB USU
[2012 – 2013] Ketua bidang Kerohanian Islam IMIB USU
-------------------------------------------------------------------------------------------------------Pengalaman Kepanitiaan
[2010]

Anggota Seksi Perlengkapan Seminar I-Pear ILKOM

[2011]

Koordinator Dana PMB IMIB USU

[2012]

Ketua Panitia TRICK 6 UKMI Al-Khuwarizmi

-------------------------------------------------------------------------------------------------------Seminar
[2014]

Seminar Nasional Literasi Informasi “SENARAI”