• Tidak ada hasil yang ditemukan

1. Form Utama - Implementasi dan Perbandingan Metode Midpoint Filter dan Yp Mean Filter untuk Mereduksi Noise pada Citra Digital

N/A
N/A
Protected

Academic year: 2019

Membagikan "1. Form Utama - Implementasi dan Perbandingan Metode Midpoint Filter dan Yp Mean Filter untuk Mereduksi Noise pada Citra Digital"

Copied!
13
0
0

Teks penuh

(1)

LISTING PROGRAM

1. Form Utama

function varargout = ProgramFilter(varargin) % Begin initialization code - DO NOT EDIT gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @ProgramFilter_OpeningFcn, ... 'gui_OutputFcn', @ProgramFilter_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

function ProgramFilter_OpeningFcn(hObject, eventdata, handles, varargin)

handles.output = hObject; logo = imread ('logo.bmp'); axes(handles.axeslogo); imshow(logo);

% Update handles structure guidata(hObject, handles);

function varargout = ProgramFilter_OutputFcn(hObject, eventdata, handles)

varargout{1} = handles.output;

function menuFilter_Callback(hObject, eventdata, handles) function submenuAdd_Callback(hObject, eventdata, handles) Form_Add_Noise;

delete(handles.figure1);

function submenuNonoise_Callback(hObject, eventdata, handles) formNoNoise;

delete(handles.figure1);

function menuHelp_Callback(hObject, eventdata, handles) FormHelp;

delete(handles.figure1);

function menuabout_Callback(hObject, eventdata, handles) FormAbout;

delete(handles.figure1);

(2)

selection = questdlg(['Keluar dari Aplikasi ini ?'],['Keluar dari Aplikasi ini ...'],'Ya','Tidak','Ya');

if strcmp(selection,'Tidak') return;

end;

delete(handles.figure1);

2. Form Proses filter dengan citra yang dibangkitkan noise

function varargout = Form_Add_Noise(varargin) % FORM_ADD_NOISE M-file for Form_Add_Noise.fig % Begin initialization code - DO NOT EDIT gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @Form_Add_Noise_OpeningFcn, ... 'gui_OutputFcn', @Form_Add_Noise_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

function Form_Add_Noise_OpeningFcn(hObject, eventdata, handles, varargin)

% Choose default command line output for Form_Add_Noise handles.output = hObject;

% Update handles structure guidata(hObject, handles);

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

% Get default command line output from handles structure varargout{1} = handles.output;

% Tombol Open File

function btnOpenFile_Callback(hObject, eventdata, handles)

[nama_file,nama_path] = uigetfile({'*.bmp','File bmp (*.bmp)'},'Buka File Citra');

if ~isequal(nama_file,0)

handles.citra=imread(fullfile(nama_path,nama_file)); guidata(hObject,handles);

axes(handles.citraAsli); imshow(handles.citra);

[Baris Kolom Warna]=size(handles.citra) set(handles.editpanjang,'String',Baris); set(handles.editlebar,'String',Kolom);

msgbox('Citra berhasil diinputkan, Silahkan Tambah Noise ','Sukses');

(3)

return; end;

% Tombol Clear

function btnClear_Callback(hObject, eventdata, handles) cla(handles.citraAsli);

cla(handles.citraNoise); cla(handles.citraHasilMid); cla(handles.citraHasilYp);

set(handles.editpanjang,'string',''); set(handles.editlebar,'string',''); set(handles.editmsemidR,'string',''); set(handles.editmsemidG,'string',''); set(handles.editmsemidB,'string',''); set(handles.editpsnrmidR,'string',''); set(handles.editpsnrmidG,'string',''); set(handles.editpsnrmidB,'string',''); set(handles.editmseypR,'string',''); set(handles.editmseypG,'string',''); set(handles.editmseypB,'string',''); set(handles.editpsnrypR,'string',''); set(handles.editpsnrypG,'string',''); set(handles.editpsnrypB,'string',''); set(handles.editmid,'string',''); set(handles.edityp,'string',''); % Tombol Speckle Noise

function btnspeckle_Callback(hObject, eventdata, handles) Citra_Asli = getimage(handles.citraAsli);

citra =Citra_Asli(:,:,:); C=Citra_Asli;

C=im2double(C);

nilai = get(handles.popSpeckle,'Value') if nilai == 1

probabilitas = 0.01 elseif nilai == 2

probabilitas =0.05 elseif nilai == 3 probabilitas =0.1 elseif nilai == 4 probabilitas =0.15 end

Noise_Speckle = C + sqrt(12*probabilitas)*C.*(rand(size(C))-0.5); Citra_Speckle = Noise_Speckle(:,:,:);

axes(handles.citraNoise); imshow(Noise_Speckle);

set(handles.textnoise,'String','Speckle');

msgbox('Noise Speckle berhasil ditambahkan, Silahkan diFilter ','Sukses');

% Tombol Uniform Noise

function btnuniform_Callback(hObject, eventdata, handles) Citra_Asli = getimage(handles.citraAsli);

citra =Citra_Asli(:,:,:); C=Citra_Asli;

(4)

var_a = get(handles.popa,'Value') if var_a == 1

a = 0.01 elseif var_a == 2 a =0.1

else a =1 end

var_b = get(handles.popa,'Value') if var_b == 1

b = 0.1 else

b =0.5 end

Citra_Uniform = C + (a+(b-a) * rand(size(C))); if Citra_Uniform > 255

Citra_Uniform = 255; elseif Citra_Uniform < 0 Citra_Uniform = 0; end

axes(handles.citraNoise); imshow(Citra_Uniform);

set(handles.textnoise,'String','Uniform');

msgbox('Noise Uniform berhasil ditambahkan, Silahkan diFilter ','Sukses');

% Tombol Filter

function btnFilter_Callback(hObject, eventdata, handles) %ProgressBar

itr = 100000; %number of iteration process

h=waitbar(0,'Please wait..'); %initialization progressbar vblock = 100; %update progressbar every vblock

k = 1;

for i=1:itr %loop data

if(k*vblock==i) %update progressbar

waitbar(i/itr); %setting progressbar k = k+1;

end% PROCESS FUNCTION end

close(h); %close progressbar %MIDPOINT FILTER

global runtimeMid; runtimeMid= cputime;

temp = getimage(handles.citraNoise); [m,n,c] = size(temp);

ukuran = 3;

setengah = floor(ukuran / 2); Citra_Midpoint = temp;

for i = 1+setengah : m-setengah for j = 1+setengah: n-setengah

for co = 1:c %co menerangkan color maskP = zeros(3,3);

for k = -setengah : setengah for l = -setengah : setengah

(5)

end end

midP=maskP(:);

midP=(min(midP)+max(midP))/2; Citra_Midpoint(i,j,co) = midP; end

end end

axes(handles.citraHasilMid); imshow(Citra_Midpoint);

runtimeMid = cputime -runtimeMid; global runtimeMid;

%Yp MEAN FILTER global runtimeYp; runtimeYp = cputime;

temp = getimage(handles.citraNoise); [m,n,c] = size(temp);

ukuran = 3; orde = 2;

setengah = floor(ukuran / 2); citra_Yp = double(temp); for i=1+setengah : m-setengah for j=1+setengah: n-setengah for co = 1:c

jum = 0;

for p = -setengah : setengah for q = -setengah : setengah

jum = jum + temp(i+p, j+q,co)^orde / (ukuran * ukuran);

end end

citra_Yp(i,j,co) = jum ^ (1/orde); end

end end

axes(handles.citraHasilYp); imshow(citra_Yp);

msgbox('Proses Filter Berhasil!','Sukses'); %Runtime proses YP

runtimeYp = cputime -runtimeYp; global runtimeYp;

%Hitung MSE & PSNR

CA = getimage(handles.citraAsli); CM = getimage(handles.citraHasilMid); CY = getimage(handles.citraHasilYp);

NilaiMSE_1 =sum(( double(CA)-double(CM).^2)/(m*n)); NilaiMSEMid = sum(NilaiMSE_1)

NilaiMSE_2 =sum(( double(CA)-double(CY).^2)/(m*n)); NilaiMSEYp = sum(NilaiMSE_2)

(6)

set(handles.editpsnrmidR,'String',NilaiPSNRMid(:,:,1)); set(handles.editmsemidG,'String',NilaiMSEMid(:,:,2)); set(handles.editpsnrmidG,'String',NilaiPSNRMid(:,:,2)); set(handles.editmsemidB,'String',NilaiMSEMid(:,:,3)); set(handles.editpsnrmidB,'String',NilaiPSNRMid(:,:,3)); set(handles.editmid,'String',runtimeMid);

set(handles.editmseypR,'String',NilaiMSEYp(:,:,1)); set(handles.editpsnrypR,'String',NilaiPSNRYp(:,:,1)); set(handles.editmseypG,'String',NilaiMSEYp(:,:,2)); set(handles.editpsnrypG,'String',NilaiPSNRYp(:,:,2)); set(handles.editmseypB,'String',NilaiMSEYp(:,:,3)); set(handles.editpsnrypB,'String',NilaiPSNRYp(:,:,3)); set(handles.edityp,'String',runtimeYp);

%Tombol Save Citra Noise

function saveNoise_Callback(hObject, eventdata, handles) [name,path] = uiputfile({'*.bmp'},'Save Image');

if isequal([name,path],[0,0]) return

else

Hasil = getimage(handles.citraNoise); imwrite(Hasil, strcat(path,name)); end

% Tombol Save Citra Midpoint

function btnSaveMid_Callback(hObject, eventdata, handles) [name,path] = uiputfile({'*.bmp'},'Save Image');

if isequal([name,path],[0,0]) return

else

Hasil = getimage(handles.citraHasilMid); imwrite(Hasil, strcat(path,name));

end

% Tombol Save Citra Yp Mean

function btnSaveYp_Callback(hObject, eventdata, handles) [name,path] = uiputfile({'*.bmp'},'Save Image');

if isequal([name,path],[0,0]) return

else

Hasil = getimage(handles.citraHasilYp); imwrite(Hasil, strcat(path,name)); end

%

-function home_Callback(hObject, eventdata, handles) ProgramFilter;

delete(handles.figure1);

%

-function filter_Callback(hObject, eventdata, handles)

%

-function help_Callback(hObject, eventdata, handles) FormHelp;

(7)

%

-function about_Callback(hObject, eventdata, handles) FormAbout;

delete(handles.figure1);

%

-function exit_Callback(hObject, eventdata, handles)

selection = questdlg(['Keluar dari Aplikasi ini ?'],['Keluar dari Aplikasi ini ...'],'Ya','Tidak','Ya');

if strcmp(selection,'Tidak') return;

end;

delete(handles.figure1);

%

-function submenuNonoise_Callback(hObject, eventdata, handles) formNoNoise;

delete(handles.figure1);

3. Form Proses filter dengan citra yang sudah memiliki noise

function varargout = formNoNoise(varargin) % FORMNONOISE M-file for formNoNoise.fig % Begin initialization code - DO NOT EDIT gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @formNoNoise_OpeningFcn, ... 'gui_OutputFcn', @formNoNoise_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 formNoNoise is made visible.

function formNoNoise_OpeningFcn(hObject, eventdata, handles, varargin)

handles.output = hObject; guidata(hObject, handles);

function varargout = formNoNoise_OutputFcn(hObject, eventdata, handles)

% Tombol Open file

function btnOpen1_Callback(hObject, eventdata, handles)

[nama_file,nama_path] = uigetfile({'*.bmp','File bmp (*.bmp)'},'Buka File Citra');%'File bmp (*.bmp)'

if ~isequal(nama_file,0)

(8)

guidata(hObject,handles); axes(handles.citraAsli); imshow(handles.citra); [m n]=size(handles.citra);

set(handles.panjang,'String',n); set(handles.lebar,'String',m);

msgbox('Citra berhasil diinputkan','Sukses'); else

return; end;

% Tombol Filter Midpoint

function btnFilterMid_Callback(hObject, eventdata, handles) global runtime1;

runtime1 = cputime; %Progress Bar

itr = 100000; %number of iteration process

h=waitbar(0,'Please wait..'); %initialization progressbar vblock = 100; %update progressbar every vblock

k = 1;

for i=1:itr %loop data

if(k*vblock==i) %update progressbar

waitbar(i/itr); %setting progressbar k = k+1;

end

% PROCESS FUNCTION end

close(h) %close progressbar

citraAsli = getimage(handles.citraAsli); citraAsli = im2double(citraAsli);

pro = 0.00001;

temp= citraAsli +sqrt(12*pro)*citraAsli.*(rand(size(citraAsli))-.5); [m,n,c] = size(temp);

ukuran = 3;

setengah = floor(ukuran / 2); Citra_Midpoint = temp;

for i = 1+setengah : m-setengah for j = 1+setengah: n-setengah

for co = 1:c %co menerangkan color maskP = zeros(3,3);

for k = -setengah : setengah for l = -setengah : setengah

maskP(setengah+1-k,setengah+1-l)= temp(i-k,j-l,co); end

end

midP=maskP(:);

midP=(min(midP)+max(midP))/2; Citra_Midpoint(i,j,co) = midP; end

end end

(9)

runtime1 = cputime -runtime1; global runtime1;

set(handles.editmid,'String',runtime1); % Tombol Filter Yp Mean

function btnFilterYp_Callback(hObject, eventdata, handles) global runtime;

runtime = cputime; % Speckle 0.001%

citraAsli = getimage(handles.citraAsli); citraAsli = im2double(citraAsli);

pro = 0.00001; %probabilitas noise Speckle 0.001%

temp = citraAsli +sqrt(12*pro)*citraAsli.*(rand(size(citraAsli))-.5);%proses pembangkitan noise Speckle

%Prgress Bar

itr = 100000; %number of iteration process

h=waitbar(0,'Please wait..'); %initialization progressbar vblock = 100; %update progressbar every vblock

k = 1;

for i=1:itr %loop data

if(k*vblock==i) %update progressbar

waitbar(i/itr); %setting progressbar k = k+1;

end end

close(h) %close progressbar [m,n,c] = size(temp);

ukuran = 3; orde = 2;

setengah = floor(ukuran / 2); citra_Yp = double(temp); for i=1+setengah : m-setengah for j=1+setengah: n-setengah

for co = 1:c %co menyatakan color jum = 0;

for p = -setengah : setengah for q = -setengah : setengah

jum = jum + temp(i+p, j+q,co)^orde / (ukuran * ukuran);

end end

citra_Yp(i,j,co) = jum ^ (1/orde); end

end end

axes(handles.citraHasilYp); imshow(citra_Yp);

runtime = cputime -runtime; global runtime;

set(handles.edityp,'String',runtime); % Tombol Save Citra Midpoint

(10)

if isequal([name,path],[0,0]) return

else

Hasil = getimage(handles.citraHasilMid); imwrite(Hasil, strcat(path,name));

end

% Tombol Save Citra Yp Mean

function btnSaveYp_Callback(hObject, eventdata, handles) [name,path] = uiputfile({'*.bmp'},'Save Image');

if isequal([name,path],[0,0]) return

else

Hasil = getimage(handles.citraHasilYp); imwrite(Hasil, strcat(path,name)); end

%

-function home_Callback(hObject, eventdata, handles) ProgramFilter;

delete(handles.figure1);

%

-function filter_Callback(hObject, eventdata, handles)

%

-function help_Callback(hObject, eventdata, handles) FormHelp;

delete(handles.figure1);

%

-function about_Callback(hObject, eventdata, handles) FormAbout;

delete(handles.figure1);

%

-function exit_Callback(hObject, eventdata, handles)

selection = questdlg(['Keluar dari Aplikasi ini ?'],['Keluar dari Aplikasi ini ...'],'Ya','Tidak','Ya');

if strcmp(selection,'Tidak') return;

end;

delete(handles.figure1);

%

-function addnoise_Callback(hObject, eventdata, handles) Form_Add_Noise;

delete(handles.figure1); % Tombol Clear

function btnClear_Callback(hObject, eventdata, handles) cla(handles.citraAsli);

cla(handles.citraHasilMid); cla(handles.citraHasilYp);

(11)

set(handles.edityp,'string','');

4. Form Help

function varargout = FormHelp(varargin) gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @FormHelp_OpeningFcn, ... 'gui_OutputFcn', @FormHelp_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

function FormHelp_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject;

guidata(hObject, handles);

function varargout = FormHelp_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output;

%

-function home_Callback(hObject, eventdata, handles) ProgramFilter;

delete(handles.figure1);

function filter_Callback(hObject, eventdata, handles) function menuAbout_Callback(hObject, eventdata, handles) FormAbout;

delete(handles.figure1);

function exit_Callback(hObject, eventdata, handles)

selection = questdlg(['Keluar dari Aplikasi ini ?'],['Keluar dari Aplikasi ini ...'],'Ya','Tidak','Ya');

if strcmp(selection,'Tidak') return;

end;

delete(handles.figure1);

function subMenuAdd_Callback(hObject, eventdata, handles) Form_Add_Noise;

delete(handles.figure1);

function subMenuNoNoise_Callback(hObject, eventdata, handles) formNoNoise;

delete(handles.figure1);

(12)

function varargout = FormAbout(varargin) gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @FormAbout_OpeningFcn, ... 'gui_OutputFcn', @FormAbout_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

function FormAbout_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject;

% Update handles structure guidata(hObject, handles);

function varargout = FormAbout_OutputFcn(hObject, eventdata, handles) foto = imread('Fanny.jpg');

axes(handles.citraAsli); imshow(foto);

varargout{1} = handles.output;

%

-function home_Callback(hObject, eventdata, handles) ProgramFilter;

delete(handles.figure1);

function filter_Callback(hObject, eventdata, handles) function subMenuAdd_Callback(hObject, eventdata, handles) Form_Add_Noise;

delete(handles.figure1);

function subMenuNoNoise_Callback(hObject, eventdata, handles) formNoNoise;

delete(handles.figure1);

function help_Callback(hObject, eventdata, handles) FormHelp;

delete(handles.figure1);

function exit_Callback(hObject, eventdata, handles)

selection = questdlg(['Keluar dari Aplikasi ini ?'],['Keluar dari Aplikasi ini ...'],'Ya','Tidak','Ya');

if strcmp(selection,'Tidak') return;

end;

(13)

CURRICULUM VITAE

Nama

: Fanny Fairina N

Alamat Sekarang

: Jln. Kiwi 8 No.177 Perumnas Mandala Medan

Alamat Orang Tua

: Jln. Kiwi 8 No.177 Perumnas Mandala Medan

Telp/Hp

: 089623796686

Email

Riwayat Pendidikan

SD Muhammadiyah 30 Medan dari Tahun 1998 s/d Tahun 2004

SMP Negeri 13 Medan dari Tahun 2004 s/d Tahun 2007

SMU Negeri 8 Medan dari Tahun 2007 s/d Tahun 2010

Universitas Sumatera Utara dari Tahun 2010 s/d Tahun 2014

Keahlian

Bahasa : Bahasa Indonesia, Bahasa Ingrris

Bahasa PEmrograman : MATLAB, C++, C#

Referensi

Dokumen terkait

Melalui analisis SWOT diperoleh hasil pada tahap input, skor kekuatan dikurangi skor kelemahan adalah 2,71 sedangkan skor peluang dikurangi skor ancaman adalah 1,06..

William dalam Utami Munandar (1985) menjelaskan bahwa pada kemampuan berpikir kreatif meliputi: 1) kemampuan berpikir lancar (influency), adalah kemampuan

Penegakan hukum terhadap Nenek Minah harus dilepaskan dari unsur-unsur sosial serta moralitas, karena menurut kacamata Paradigma Positivisme, tujuan hukum adalah kepastian

Derajat bebas distribusi t-student dan keempat parameter GLD yang telah diperoleh akan dipergunakan untuk membentuk kurva fungsi densitas untuk mengetahui kedekatan dari

Di lahan belukar muda berumur 10 tahun telah dijumpai jenis suksesi lanjut (Rinorea anguifera) yang mendominasi tapak, sedangkan di tapak belukar dan agroforest berumur lebih dari

Memberikan perhatian khusus/dukungan secara psikologis kepada wanita dan keluarga yang mengalami kehilangan, berduka yang disebabkan karena keguguran, neonatus meninggal dalam

Livelihoods Framework” (Ellis , 2000) to help define and organize indicators. Five to six indicators were developed in each category of livelihood assets. Indicators must

Karakter budi pekerti luhur seperti inilah yang seharusnya menjadi modal dasar bagi anak bangsa dalam pembangunan Nation &amp; Character Building yang akan