• 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

% 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

function LatihBAM_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject;. % Update handles structure

function varargout = segmen_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure. % eventdata

function about_button_Callback(hObject, eventdata, handles) programmer % membuka figure profil programmer (programmer.fig) delete(handles.figure1);.. function

4.9 Perbandingan MSE, PSNR dan runtime proses metode Midpoint dan Yp Mean filter dalam mereduksi Uniform noise pada citra Fuji.bmp dengan ukuran dimensi 1024 x

function total_CreateFcn(hObject, eventdata, handles) if ispc &amp;&amp; isequal(get(hObject,'BackgroundColor'),

function listbox2_Callback(hObject, eventdata, handles) function listbox2_CreateFcn(hObject, eventdata, handles) if ispc &amp;&amp; isequal(get(hObject,'BackgroundColor'),

function edit_MSE1_CreateFcn(hObject, eventdata, handles) if ispc &amp;&amp; isequal(get(hObject,'BackgroundColor'),. get(0,'defaultUicontrolBackgroundColor'))