Implementasi Metode Kombinasi Mean Filter Dan Median Filter Untuk Mereduksi Gaussian Noise, Salt And Pepper Noise, Speckle Noise, Dan Exponential Noise Pada Citra Digital
LISTING PROGRAM
1. Form Home function varargout = HOME(varargin)
gui_Singleton = 1; gui_State = struct( 'gui_Name' , mfilename, ...
'gui_Singleton' , gui_Singleton, ... 'gui_OpeningFcn' , @HOME_OpeningFcn, ... 'gui_OutputFcn' , @HOME_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 HOME_OpeningFcn(hObject, eventdata, handles, varargin)
citra=imread( 'logoilkom.jpg' ); axes(handles.logo_fakultas); imshow(citra); handles.output = hObject; guidata(hObject, handles);
function varargout = HOME_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
function btn_perbandingan_Callback(hObject, eventdata, handles)
selection = questdlg( 'Apakah Anda ingin menggunakan inputan citra bernoise?' , ...
'Input Citra Bernoise?' , ... 'Ya' , 'Tidak' , 'Ya' ); switch selection, case 'Ya' ,
PROSES2; close(gcbf);
case 'Tidak'
PROSES1; close(gcbf);
end function btn_help_Callback(hObject, eventdata, handles)
HELP; close(gcbf);
function varargout = btn_exit_Callback(hObject, eventdata, handles)
selection = questdlg( 'Apakah Anda yakin untuk menutup aplikasi ini?' , ...
'Exit' , ...
'Ya' , 'Tidak' , 'Ya' ); switch selection, case 'Ya' ,
close
case 'Tidak' return end function btn_implementasi_Callback(hObject, eventdata, handles)
PROSES; close(gcbf);
function btn_about_Callback(hObject, eventdata, handles)
ABOUT; close(gcbf);
2. Form Implementasi function varargout = PROSES(varargin)
gui_Singleton = 1; gui_State = struct( 'gui_Name' , mfilename, ...
'gui_Singleton' , gui_Singleton, ... 'gui_OpeningFcn' , @PROSES_OpeningFcn, ... 'gui_OutputFcn' , @PROSES_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 PROSES_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject; guidata(hObject, handles);
function varargout = PROSES_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
function varargout = btn_open_Callback(hObject, eventdata, handles)
[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); set(handles.file_name, 'String' ,nama_file); set(handles.panjang, 'String' ,size(handles.citra,1)); set(handles.lebar, 'String' ,size(handles.citra,2));
else return ; end
set(handles.btn_clear, 'Enable' , 'On' ) set(handles.gaus, 'Enable' , 'On' ) set(handles.btn_salt_and_pepper, 'Enable' , 'On' ) set(handles.btn_speckle, 'Enable' , 'On' ) set(handles.btn_expo, 'Enable' , 'On' ) set(handles.btn_open, 'Enable' , 'Off' )
function gaus_Callback(hObject, eventdata, handles) global runtime;
runtime=cputime; P=str2double(get(handles.txt_probabilitas_gauss, 'string' )); P=P/100; I = handles.citra; noise = fungsigaussian(I, P); handles.citra= noise; axes(handles.axes_gaussian); imshow(handles.citra); runtime=cputime-runtime; set(handles.txt_runtime_gaussian, 'String' ,runtime); set(handles.reset, 'Enable' , 'On' ) set(handles.save_gauss, 'Enable' , 'On' ) set(handles.btn_mse_gaussian, 'Enable' , 'On' ) set(handles.btn_psnr_gaussian, 'Enable' , 'On' ) set(handles.btn_gauss_reduction, 'Enable' , 'On' ) set(handles.btn_clear, 'Enable' , 'Off' ) set(handles.gaus, 'Enable' , 'Off' )
function btn_mse_gaussian_Callback(hObject, eventdata, handles)
citra = getimage(handles.axes_asli); citra_hasil=getimage(handles.axes_gaussian); [psnrval mseval] = MSE_PSNR(citra,citra_hasil); set(handles.txt_mse_gaussian, 'String' ,mseval);
function btn_psnr_gaussian_Callback(hObject, eventdata, handles)
citra = getimage(handles.axes_asli); citra_hasil=getimage(handles.axes_gaussian); [psnrval mseval] = MSE_PSNR(citra,citra_hasil); set(handles.txt_psnr_gaussian, 'String' ,psnrval);
function btn_runtime_gaussian_Callback(hObject, eventdata, handles) global runtime;
set(handles.txt_runtime_gaussian, 'String' ,runtime);
function btn_mse_saltandpepper_Callback(hObject, eventdata, handles)
citra = getimage(handles.axes_asli); citra_hasil=getimage(handles.axes_saltandpepper); [psnrval mseval] = MSE_PSNR(citra,citra_hasil); set(handles.txt_mse_saltandpepper, 'String' ,mseval);
function btn_psnr_saltandpepper_Callback(hObject, eventdata, handles)
citra = getimage(handles.axes_asli); citra_hasil=getimage(handles.axes_saltandpepper); [psnrval mseval] = MSE_PSNR(citra,citra_hasil); set(handles.txt_psnr_saltandpepper, 'String' ,psnrval);
function txt_mse_gaussian_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end function txt_psnr_gaussian_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end
function txt_runtime_gaussian_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject, 'BackgroundColor' ),get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end
function txt_mse_saltandpepper_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject, 'BackgroundColor' ),get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end function txt_psnr_saltandpepper_CreateFcn(hObject, eventdata,
handles)
if ispc && isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end function txt_runtime_saltandpepper_CreateFcn(hObject, eventdata,
handles)
if ispc && isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end function btn_salt_and_pepper_Callback(hObject, eventdata, handles) global runtime;
runtime=cputime; P=str2double(get(handles.txt_probabilitas_saltandpepper, 'string' )); P=P/100; I = handles.citra; noise = fungsisaltandpepper(I, P); handles.citra= noise; axes(handles.axes_saltandpepper); imshow(handles.citra); runtime=cputime-runtime; set(handles.txt_runtime_saltandpepper, 'String' ,runtime); set(handles.reset, 'Enable' , 'On' ) set(handles.btn_salt_and_pepper, 'Enable' , 'Off' ) set(handles.btn_mse_saltandpepper, 'Enable' , 'On' ) set(handles.save_sap, 'Enable' , 'On' ) set(handles.btn_sap_reduction, 'Enable' , 'On' ) set(handles.btn_clear, 'Enable' , 'Off' )
function btn_mse_gauss_reduction_Callback(hObject, eventdata,
handles) citra = getimage(handles.axes_gaussian); citra_hasil=getimage(handles.axes_gauss_reduction); [psnrval mseval] = MSE_PSNR(citra,citra_hasil); set(handles.txt_mse_gauss_reduction, 'String' ,mseval);
function btn_psnr_gauss_reduction_Callback(hObject, eventdata,
handles) citra = getimage(handles.axes_gaussian); citra_hasil=getimage(handles.axes_gauss_reduction); [psnrval mseval] = MSE_PSNR(citra,citra_hasil); set(handles.txt_psnr_gauss_reduction, 'String' ,psnrval);
function txt_mse_gauss_reduction_CreateFcn(hObject, eventdata,
handles)
if ispc && isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end function txt_psnr_gauss_reduction_CreateFcn(hObject, eventdata,
handles)
if ispc && isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end function txt_runtime_gauss_reduction_CreateFcn(hObject, eventdata,
handles)
if ispc && isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end function btn_gauss_reduction_Callback(hObject, eventdata, handles) global runtime;
runtime=cputime; citra_asli = getimage(handles.axes_gaussian); pixel=citra_asli; [r, g, b]=size(pixel);
for x=1:1:r for y=1:1:g for z=1:1:b try
nilaipixel(1,1)=pixel(x-1,y-1,z);
catch
nilaipixel(1,1)=0;
end try
nilaipixel(1,2)=pixel(x-1,y,z); catch
nilaipixel(1,2)=0;
nilaipixel(3,1)=pixel(x+1,y-1,z);
combinationfilter=uint8(combinationfilter); handles.citra=combinationfilter; axes(handles.axes_gauss_reduction); imshow(handles.citra); runtime=cputime-runtime; set(handles.txt_runtime_gauss_reduction, 'String' ,runtime); set(handles.btn_gauss_reduction, 'Enable' , 'Off' ) set(handles.btn_mse_gauss_reduction, 'Enable' , 'On' ) set(handles.btn_psnr_gauss_reduction, 'Enable' , 'On' ) set(handles.save_gauss_reduction, 'Enable' , 'On' )
end end end
combinationfilter(x,y,z)=(mean(mean(nilaipixel))+ median(median(nilaipixel)))/2;
end
nilaipixel(3,3)=0;
catch
nilaipixel(3,3)=pixel(x+1,y+1,z);
end try
nilaipixel(3,2)=0;
catch
nilaipixel(3,2)=pixel(x+1,y,z);
end try
nilaipixel(3,1)=0;
catch
end try
end try
nilaipixel(2,1)=0;
nilaipixel(1,3)=pixel(x-1,y+1,z);
catch
nilaipixel(1,3)=0;
end try
nilaipixel(2,1)=pixel(x,y-1,z);
catch
end try
nilaipixel(2,3)=0;
nilaipixel(2,2)=pixel(x,y,z);
catch
nilaipixel(2,2)=0;
end try
nilaipixel(2,3)=pixel(x,y+1,z);
catch
function kernel_gauss_res_Callback(hObject, eventdata, handles) function kernel_gauss_res_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end
function btn_mse_sap_reduction_Callback(hObject, eventdata, handles)
citra = getimage(handles.axes_saltandpepper); citra_hasil=getimage(handles.axes_sap_reduction); [psnrval mseval] = MSE_PSNR(citra,citra_hasil); set(handles.txt_mse_sap_reduction, 'String' ,mseval);
function btn_psnr_sap_reduction_Callback(hObject, eventdata, handles)
citra = getimage(handles.axes_saltandpepper); citra_hasil=getimage(handles.axes_sap_reduction); [psnrval mseval] = MSE_PSNR(citra,citra_hasil); set(handles.txt_psnr_sap_reduction, 'String' ,psnrval);
function btn_runtime_sap_reduction_Callback(hObject, eventdata,
handles)
global runtime;
set(handles.txt_runtime_sap_reduction, 'String' ,runtime);
function txt_mse_sap_reduction_Callback(hObject, eventdata, handles)
function txt_mse_sap_reduction_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject, 'BackgroundColor' ),get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end
function txt_psnr_sap_reduction_Callback(hObject, eventdata, handles)
function txt_psnr_sap_reduction_CreateFcn(hObject, eventdata,handles)
if ispc && isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end function txt_runtime_sap_reduction_Callback(hObject, eventdata,
handles)
function txt_runtime_sap_reduction_CreateFcn(hObject, eventdata,
handles)
if ispc && isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end function btn_sap_reduction_Callback(hObject, eventdata, handles) global runtime;
end try
matriks(2,3)=temp(x,y+1,z);
catch
matriks(2,3)=0;
end try
matriks(3,1)=temp(x+1,y-1,z);
catch
matriks(3,1)=0;
matriks(3,2)=temp(x+1,y,z);
matriks(2,2)=0;
catch
matriks(3,2)=0;
end try
matriks(3,3)=temp(x+1,y+1,z);
catch
matriks(3,3)=0;
end
end try
catch
runtime=cputime; citra_asli = getimage(handles.axes_saltandpepper); temp=citra_asli; [b k c]=size(temp);
matriks(1,2)=0;
for x=1:1:b for y=1:1:k for z=1:1:c try
matriks(1,1)=temp(x-1,y-1,z);
catch
matriks(1,1)=0;
end try
matriks(1,2)=temp(x-1,y,z);
catch
end try
matriks(2,2)=temp(x,y,z);
matriks(1,3)=temp(x-1,y+1,z);
catch
matriks(1,3)=0;
end try
matriks(2,1)=temp(x,y-1,z);
catch
matriks(2,1)=0;
end try
filtered(x,y,z)=(mean(mean(matriks))+median(median(matriks)))/2; end end
filtered=uint8(filtered); handles.citra=filtered; axes(handles.axes_sap_reduction); imshow(handles.citra); runtime=cputime-runtime; set(handles.txt_runtime_sap_reduction, 'String' ,runtime); set(handles.btn_sap_reduction, 'Enable' , 'Off' ) set(handles.btn_mse_sap_reduction, 'Enable' , 'On' ) set(handles.btn_psnr_sap_reduction, 'Enable' , 'On' ) set(handles.save_sap_reduction, 'Enable' , 'On' )
function btn_mse_expo_Callback(hObject, eventdata, handles)
citra = getimage(handles.axes_asli); citra_hasil=getimage(handles.axes_exponential); [psnrval mseval] = MSE_PSNR(citra,citra_hasil); set(handles.txt_mse_expo, 'String' ,mseval);
function btn_psnr_expo_Callback(hObject, eventdata, handles)
citra = getimage(handles.axes_asli); citra_hasil=getimage(handles.axes_exponential); [psnrval mseval] = MSE_PSNR(citra,citra_hasil); set(handles.txt_psnr_expo, 'String' ,psnrval);
function btn_runtime_expo_Callback(hObject, eventdata, handles) global runtime;
set(handles.txt_runtime_expo, 'String' ,runtime);
function txt_mse_expo_Callback(hObject, eventdata, handles) function txt_mse_expo_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end function txt_psnr_expo_Callback(hObject, eventdata, handles) function txt_psnr_expo_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end function txt_runtime_expo_Callback(hObject, eventdata, handles) function txt_runtime_expo_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end function btn_expo_Callback(hObject, eventdata, handles) global runtime;
runtime=cputime; P=str2double(get(handles.txt_probabilitas_exponential, 'string' )); P=P/100; I = handles.citra; I_noise = fungsiexponential(I,P); handles.citra=I_noise; axes(handles.axes_exponential); imshow(handles.citra); runtime=cputime-runtime; set(handles.txt_runtime_expo, 'String' ,runtime); set(handles.reset, 'Enable' , 'On' ) set(handles.btn_expo, 'Enable' , 'Off' ) set(handles.btn_expo_reduction, 'Enable' , 'On' ) set(handles.btn_mse_expo, 'Enable' , 'On' ) set(handles.btn_psnr_expo, 'Enable' , 'On' ) set(handles.save_expo, 'Enable' , 'On' ) set(handles.btn_clear, 'Enable' , 'Off' )
function btn_mse_speckle_Callback(hObject, eventdata, handles)
citra = getimage(handles.axes_asli); citra_hasil=getimage(handles.axes_speckle); [psnrval mseval] = MSE_PSNR(citra,citra_hasil); set(handles.txt_mse_speckle, 'String' ,mseval);
function btn_psnr_speckle_Callback(hObject, eventdata, handles)
citra = getimage(handles.axes_asli); citra_hasil=getimage(handles.axes_speckle); [psnrval mseval] = MSE_PSNR(citra,citra_hasil); set(handles.txt_psnr_speckle, 'String' ,psnrval);
function btn_runtime_speckle_Callback(hObject, eventdata, handles) global runtime;
set(handles.txt_runtime_speckle, 'String' ,runtime);
function txt_mse_speckle_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end function txt_psnr_speckle_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end function txt_runtime_speckle_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end function btn_speckle_Callback(hObject, eventdata, handles) global runtime;
runtime=cputime; P=str2double(get(handles.txt_probabilitas_speckle, 'string' )); P=P/100; I = handles.citra; I_noise = fungsispeckle(I, P); handles.citra=I_noise; axes(handles.axes_speckle); imshow(handles.citra); runtime=cputime-runtime; set(handles.txt_runtime_speckle, 'String' ,runtime); set(handles.reset, 'Enable' , 'On' ) set(handles.btn_speckle, 'Enable' , 'Off' ) set(handles.btn_speckle_reduction, 'Enable' , 'On' ) set(handles.btn_mse_speckle, 'Enable' , 'On' ) set(handles.btn_psnr_speckle, 'Enable' , 'On' ) set(handles.save_speckle, 'Enable' , 'On' ) set(handles.btn_clear, 'Enable' , 'Off' )
function btn_mse_expo_reduction_Callback(hObject, eventdata, handles)
citra = getimage(handles.axes_exponential); citra_hasil=getimage(handles.axes_exponential_reduction); [psnrval mseval] = MSE_PSNR(citra,citra_hasil); set(handles.txt_mse_expo_reduction, 'String' ,mseval);
function btn_psnr_expo_reduction_Callback(hObject, eventdata,
handles) citra = getimage(handles.axes_exponential); citra_hasil=getimage(handles.axes_exponential_reduction); [psnrval mseval] = MSE_PSNR(citra,citra_hasil); set(handles.txt_psnr_expo_reduction, 'String' ,psnrval);
function btn_runtime_expo_reduction_Callback(hObject, eventdata,
handles)
global runtime;
set(handles.txt_runtime_expo_reduction, 'String' ,runtime);
function txt_mse_expo_reduction_CreateFcn(hObject, eventdata,
handles)
if ispc && isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end function txt_psnr_expo_reduction_CreateFcn(hObject, eventdata,
handles)
if ispc && isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end function txt_runtime_expo_reduction_CreateFcn(hObject, eventdata,
handles)
matriks(3,1)=temp(x+1,y-1,z);
catch
matriks(2,2)=0;
end try
matriks(2,3)=temp(x,y+1,z);
catch
matriks(2,3)=0;
end try
catch
end try
matriks(3,1)=0;
end try
matriks(3,2)=temp(x+1,y,z);
catch
matriks(3,2)=0;
end try
matriks(3,3)=temp(x+1,y+1,z);
matriks(2,2)=temp(x,y,z);
matriks(2,1)=0;
if ispc && isequal(get(hObject, 'BackgroundColor' ),
end try
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end function btn_expo_reduction_Callback(hObject, eventdata, handles) global runtime;
runtime=cputime; citra_asli = getimage(handles.axes_exponential); temp=citra_asli; [b k c]=size(temp);
for x=1:1:b for y=1:1:k for z=1:1:c try
matriks(1,1)=temp(x-1,y-1,z);
catch
matriks(1,1)=0;
matriks(1,2)=temp(x-1,y,z);
catch
catch
matriks(1,2)=0;
end try
matriks(1,3)=temp(x-1,y+1,z);
catch
matriks(1,3)=0;
end try
matriks(2,1)=temp(x,y-1,z);
catch end
filtered(x,y,z)=(mean(mean(matriks))+median(median(matriks)))/2;
end end end
filtered=uint8(filtered); handles.citra=filtered; axes(handles.axes_exponential_reduction); imshow(handles.citra); runtime=cputime-runtime; set(handles.txt_runtime_expo_reduction, 'String' ,runtime); set(handles.btn_expo_reduction, 'Enable' , 'Off' ) set(handles.btn_mse_expo_reduction, 'Enable' , 'On' ) set(handles.btn_psnr_expo_reduction, 'Enable' , 'On' ) set(handles.save_expo_reduction, 'Enable' , 'On' )
function btn_mse_speckle_reduction_Callback(hObject, eventdata,
handles) citra = getimage(handles.axes_speckle); citra_hasil=getimage(handles.axes_speckle_reduction); [psnrval mseval] = MSE_PSNR(citra,citra_hasil); set(handles.txt_mse_speckle_reduction, 'String' ,mseval);
function btn_psnr_speckle_reduction_Callback(hObject, eventdata,
handles) citra = getimage(handles.axes_speckle); citra_hasil=getimage(handles.axes_speckle_reduction); [psnrval mseval] = MSE_PSNR(citra,citra_hasil); set(handles.txt_psnr_speckle_reduction, 'String' ,psnrval);
function btn_runtime_speckle_reduction_Callback(hObject, eventdata,
handles)
global runtime;
set(handles.txt_runtime_speckle_reduction, 'String' ,runtime);
function txt_mse_speckle_reduction_Callback(hObject, eventdata,
handles)
function txt_mse_speckle_reduction_CreateFcn(hObject, eventdata,
handles)
if ispc && isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end function txt_psnr_speckle_reduction_Callback(hObject, eventdata,
handles)
function txt_psnr_speckle_reduction_CreateFcn(hObject, eventdata,
handles)
if ispc && isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end
function txt_runtime_speckle_reduction_CreateFcn(hObject, eventdata,
end try
nilaipixel(2,2)=pixel(x,y,z);
catch
nilaipixel(2,2)=0;
end try
nilaipixel(2,3)=pixel(x,y+1,z);
catch
nilaipixel(2,3)=0;
nilaipixel(3,1)=pixel(x+1,y-1,z);
nilaipixel(2,1)=0;
catch
nilaipixel(3,1)=0;
end try
nilaipixel(3,2)=pixel(x+1,y,z);
catch
nilaipixel(3,2)=0;
end try
nilaipixel(3,3)=pixel(x+1,y+1,z);
end try
catch
handles)
nilaipixel(1,1)=0;
if ispc && isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end
function btn_speckle_reduction_Callback(hObject, eventdata, handles)
global runtime;runtime=cputime; citra_asli = getimage(handles.axes_speckle); pixel=citra_asli; [r, g, b]=size(pixel);
for x=1:1:r for y=1:1:g for z=1:1:b try
nilaipixel(1,1)=pixel(x-1,y-1,z);
catch
end try
nilaipixel(2,1)=pixel(x,y-1,z);
nilaipixel(1,2)=pixel(x-1,y,z);
catch
nilaipixel(1,2)=0;
end try
nilaipixel(1,3)=pixel(x-1,y+1,z);
catch
nilaipixel(1,3)=0;
end try
catch end
combinationfilter(x,y,z)=(mean(mean(nilaipixel))+median(median(nilaip ixel)))/2;
end end end
combinationfilter=uint8(combinationfilter); handles.citra=combinationfilter; axes(handles.axes_speckle_reduction); imshow(handles.citra); runtime=cputime-runtime; set(handles.txt_runtime_speckle_reduction, 'String' ,runtime); set(handles.btn_speckle_reduction, 'Enable' , 'Off' ) set(handles.btn_mse_speckle_reduction, 'Enable' , 'On' ) set(handles.btn_psnr_speckle_reduction, 'Enable' , 'On' ) set(handles.save_speckle_reduction, 'Enable' , 'On' )
function btn_clear_Callback(hObject, eventdata, handles)
handles.citra=handles.citra([]); axes(handles.axes_asli); imshow(handles.citra); set(handles.btn_clear, 'Enable' , 'Off' ) set(handles.btn_open, 'Enable' , 'On' ) set(handles.file_name, 'string' , ' ' ); set(handles.panjang, 'string' , ' ' ); set(handles.lebar, 'string' , ' ' );
function panjang_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end function lebar_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end function file_name_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end function btn_mainmenu_Callback(hObject, eventdata, handles)
HOME; close(gcbf);
function txt_probabilitas_gauss_CreateFcn(hObject, eventdata,
handles)
if ispc && isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end function varargout = probabilitas_gauss_Callback(h, eventdata,
handles) nilai_probabilitas = get(handles.probabilitas_gauss, 'value' ); handles.nilai_probabilitas = round(nilai_probabilitas); guidata(h,handles); set(handles.txt_probabilitas_gauss, 'string' ,handles.nilai_probabilita s);
function probabilitas_gauss_CreateFcn(hObject, eventdata, handles) if isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' ,[.9 .9 .9]);
end
function txt_probabilitas_saltandpepper_CreateFcn(hObject, eventdata,
handles)
if ispc && isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end function varargout = probabilitas_saltandpepper_Callback(h,
eventdata, handles) nilai_probabilitas = get(handles.probabilitas_saltandpepper, 'value' ); handles.nilai_probabilitas = round(nilai_probabilitas); guidata(h,handles); set(handles.txt_probabilitas_saltandpepper, 'string' ,handles.nilai_pro babilitas);
function probabilitas_saltandpepper_CreateFcn(hObject, eventdata,
handles)
if isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' ,[.9 .9 .9]);
end function txt_probabilitas_exponential_CreateFcn(hObject, eventdata,
handles)
if ispc && isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end
function varargout = probabilitas_exponential_Callback(h, eventdata,
handles) nilai_probabilitas = get(handles.probabilitas_exponential, 'value' ); handles.nilai_probabilitas = round(nilai_probabilitas); guidata(h,handles); set(handles.txt_probabilitas_exponential, 'string' ,handles.nilai_proba bilitas);
function probabilitas_exponential_CreateFcn(hObject, eventdata,
handles) if isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' ,[.9 .9 .9]);
end function txt_probabilitas_speckle_CreateFcn(hObject, eventdata,
handles)
if ispc && isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end function varargout = probabilitas_speckle_Callback(h, eventdata,
handles) nilai_probabilitas = get(handles.probabilitas_speckle, 'value' ); handles.nilai_probabilitas = round(nilai_probabilitas); guidata(h,handles); set(handles.txt_probabilitas_speckle, 'string' ,handles.nilai_probabili tas);
function probabilitas_speckle_CreateFcn(hObject, eventdata, handles)
if isequal(get(hObject, 'BackgroundColor' ),get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' ,[.9 .9 .9]);
end function save_sap_Callback(hObject, eventdata, handles)
[nama_file,nama_path] = uiputfile( '*.bmp' , 'save file' ); nama_file_simpan=fullfile(nama_path,nama_file); citra=getframe(handles.axes_saltandpepper); [x,map]=frame2im(citra);
if isempty(map)
rgb = x;
else
rgb = ind2rgb(x,map);
end
imwrite(x,nama_file_simpan, 'bmp' );
function save_expo_reduction_Callback(hObject, eventdata, handles)
[nama_file,nama_path] = uiputfile( '*.bmp' , 'save file' ); nama_file_simpan=fullfile(nama_path,nama_file); citra=getframe(handles.axes_exponential_reduction); [x,map]=frame2im(citra);
if isempty(map)
rgb = x;
else
rgb = ind2rgb(x,map);
end
imwrite(x,nama_file_simpan, 'bmp' );
function save_speckle_reduction_Callback(hObject, eventdata, handles)
[nama_file,nama_path] = uiputfile( '*.bmp' , 'save file' ); nama_file_simpan=fullfile(nama_path,nama_file); citra=getframe(handles.axes_speckle_reduction); [x,map]=frame2im(citra);
if isempty(map)
rgb = x; rgb = ind2rgb(x,map);
end
imwrite(x,nama_file_simpan, 'bmp' );
function save_expo_Callback(hObject, eventdata, handles)
[nama_file,nama_path] = uiputfile( '*.bmp' , 'save file' ); nama_file_simpan=fullfile(nama_path,nama_file); citra=getframe(handles.axes_exponential); [x,map]=frame2im(citra);
if isempty(map)
rgb = x;
else
rgb = ind2rgb(x,map);
end
imwrite(x,nama_file_simpan, 'bmp' );
function save_speckle_Callback(hObject, eventdata, handles)
[nama_file,nama_path] = uiputfile( '*.bmp' , 'save file' ); nama_file_simpan=fullfile(nama_path,nama_file); citra=getframe(handles.axes_speckle); [x,map]=frame2im(citra);
if isempty(map)
rgb = x;
else
rgb = ind2rgb(x,map);
end
imwrite(x,nama_file_simpan, 'bmp' );
function save_sap_reduction_Callback(hObject, eventdata, handles)
[nama_file,nama_path] = uiputfile( '*.bmp' , 'save file' ); nama_file_simpan=fullfile(nama_path,nama_file); citra=getframe(handles.axes_sap_reduction); [x,map]=frame2im(citra);
if isempty(map)
rgb = x;
else
rgb = ind2rgb(x,map);
end
imwrite(x,nama_file_simpan, 'bmp' );
function save_gauss_reduction_Callback(hObject, eventdata, handles)
[nama_file,nama_path] = uiputfile( '*.bmp' , 'save file' ); nama_file_simpan=fullfile(nama_path,nama_file); citra=getframe(handles.axes_gauss_reduction); [x,map]=frame2im(citra);
if isempty(map)
rgb = x;
else
rgb = ind2rgb(x,map);
end
imwrite(x,nama_file_simpan, 'bmp' );
function varargout = save_gauss_Callback(h, eventdata, handles)
[nama_file,nama_path] = uiputfile( '*.bmp' , 'save file' ); nama_file_simpan=fullfile(nama_path,nama_file); citra=getframe(handles.axes_gaussian); [x,map]=frame2im(citra);
if isempty(map)
rgb = x;
else rgb = ind2rgb(x,map);
end
imwrite(x,nama_file_simpan, 'bmp' );
function reset_Callback(hObject, eventdata, handles)
expo_reduction=handles.citra([]); axes(handles.axes_exponential_reduction); imshow(expo_reduction); set(handles.save_expo_reduction, 'Enable' , 'Off' ) set(handles.btn_expo_reduction, 'Enable' , 'Off' ) set(handles.btn_mse_expo_reduction, 'Enable' , 'Off' ) set(handles.btn_psnr_expo_reduction, 'Enable' , 'Off' ) set(handles.txt_mse_expo_reduction, 'String' ,0); set(handles.txt_psnr_expo_reduction, 'String' ,0); set(handles.txt_runtime_expo_reduction, 'String' ,0); speckle_reduction=handles.citra([]); axes(handles.axes_speckle_reduction); imshow(speckle_reduction); set(handles.save_speckle_reduction, 'Enable' , 'Off' ) set(handles.btn_speckle_reduction, 'Enable' , 'Off' ) set(handles.btn_mse_speckle_reduction, 'Enable' , 'Off' ) set(handles.btn_psnr_speckle_reduction, 'Enable' , 'Off' ) set(handles.txt_mse_speckle_reduction, 'String' ,0); set(handles.txt_psnr_speckle_reduction, 'String' ,0); set(handles.txt_runtime_speckle_reduction, 'String' ,0); sap_reduction=handles.citra([]); axes(handles.axes_sap_reduction); imshow(sap_reduction); set(handles.save_sap_reduction, 'Enable' , 'Off' ) set(handles.btn_sap_reduction, 'Enable' , 'Off' ) set(handles.btn_mse_sap_reduction, 'Enable' , 'Off' ) set(handles.btn_psnr_sap_reduction, 'Enable' , 'Off' ) set(handles.txt_mse_sap_reduction, 'String' ,0); set(handles.txt_psnr_sap_reduction, 'String' ,0); set(handles.txt_runtime_sap_reduction, 'String' ,0); gaussian_reduction=handles.citra([]); axes(handles.axes_gauss_reduction); imshow(gaussian_reduction); set(handles.save_gauss_reduction, 'Enable' , 'Off' ) set(handles.btn_gauss_reduction, 'Enable' , 'Off' ) set(handles.btn_mse_gauss_reduction, 'Enable' , 'Off' ) set(handles.btn_psnr_gauss_reduction, 'Enable' , 'Off' ) set(handles.txt_mse_gauss_reduction, 'String' ,0); set(handles.txt_psnr_gauss_reduction, 'String' ,0); set(handles.txt_runtime_gauss_reduction, 'String' ,0); expo_noise=handles.citra([]); axes(handles.axes_exponential); imshow(expo_noise); set(handles.save_expo, 'Enable' , 'Off' ) set(handles.btn_mse_expo, 'Enable' , 'Off' ) set(handles.btn_psnr_expo, 'Enable' , 'Off' ) set(handles.btn_expo, 'Enable' , 'On' ) set(handles.txt_mse_expo, 'String' ,0); set(handles.txt_psnr_expo, 'String' ,0); set(handles.txt_runtime_expo, 'String' ,0);
speckle_noise=handles.citra([]); axes(handles.axes_speckle); imshow(speckle_noise); set(handles.save_speckle, 'Enable' , 'Off' ) set(handles.btn_mse_speckle, 'Enable' , 'Off' ) set(handles.btn_psnr_speckle, 'Enable' , 'Off' ) set(handles.btn_speckle, 'Enable' , 'On' ) set(handles.txt_mse_speckle, 'String' ,0); set(handles.txt_psnr_speckle, 'String' ,0); set(handles.txt_runtime_speckle, 'String' ,0); sap_noise=handles.citra([]); axes(handles.axes_saltandpepper); imshow(sap_noise); set(handles.save_sap, 'Enable' , 'Off' ) set(handles.btn_mse_saltandpepper, 'Enable' , 'Off' ) set(handles.btn_psnr_saltandpepper, 'Enable' , 'Off' ) set(handles.btn_salt_and_pepper, 'Enable' , 'On' ) set(handles.txt_mse_saltandpepper, 'String' ,0); set(handles.txt_psnr_saltandpepper, 'String' ,0); set(handles.txt_runtime_saltandpepper, 'String' ,0); gaussian_noise=handles.citra([]); axes(handles.axes_gaussian); imshow(gaussian_noise); set(handles.save_gauss, 'Enable' , 'Off' ) set(handles.btn_mse_gaussian, 'Enable' , 'Off' ) set(handles.btn_psnr_gaussian, 'Enable' , 'Off' ) set(handles.gaus, 'Enable' , 'On' ) set(handles.txt_mse_gaussian, 'String' ,0); set(handles.txt_psnr_gaussian, 'String' ,0); set(handles.txt_runtime_gaussian, 'String' ,0); set(handles.reset, 'Enable' , 'Off' ) set(handles.btn_clear, 'Enable' , 'On' )
1. Form Perbandingan (Inputan Citra Tanpa Noise) function varargout = PROSES1(varargin)
gui_Singleton = 1; gui_State = struct( 'gui_Name' , mfilename, ...
'gui_Singleton' , gui_Singleton, ... 'gui_OpeningFcn' , @PROSES1_OpeningFcn, ... 'gui_OutputFcn' , @PROSES1_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 PROSES1_OpeningFcn(hObject, eventdata, handles, varargin)
guidata(hObject, handles);
function varargout = PROSES1_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
function btn_open_Callback(hObject, eventdata, handles)
[nama_file, namaPath]=uigetfile({ '*.bmp' }, 'Buka File' );
if ~isequal (nama_file,0)
handles.citra=imread(fullfile(namaPath,nama_file)); guidata(hObject,handles); axes(handles.citra_asli); imshow(handles.citra); set(handles.filename, 'String' ,nama_file); set(handles.panjang, 'String' ,size(handles.citra,1)); set(handles.lebar, 'String' ,size(handles.citra,2));
else return ; end
set(handles.btn_open, 'Enable' , 'Off' ) set(handles.btn_clear, 'Enable' , 'On' ) set(handles.pilih_noise, 'Enable' , 'On' )
function filename_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end function panjang_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end function lebar_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end function btn_mainmenu_Callback(hObject, eventdata, handles)
HOME; close(gcbf);
function btn_noise_Callback(hObject, eventdata, handles) global runtime;
runtime=cputime; P=str2double(get(handles.txt_probabilitas, 'string' )); P=P/100; popup_sel_index = get(handles.pilih_noise, 'Value' );
switch popup_sel_index case
1 I = handles.citra; case
2 I = handles.citra; noise = fungsigaussian(I, P); handles.citra= noise; axes(handles.axes_noise); imshow(handles.citra); runtime=cputime-runtime; set(handles.txt_runtime_noise, 'String' ,runtime);
case
3 I = handles.citra; noise = fungsisaltandpepper(I, P); handles.citra= noise; axes(handles.axes_noise); imshow(handles.citra); runtime=cputime-runtime; set(handles.txt_runtime_noise, 'String' ,runtime);
case
4 I = handles.citra; noise = fungsispeckle(I, P); handles.citra=noise; axes(handles.axes_noise); imshow(handles.citra); runtime=cputime-runtime; set(handles.txt_runtime_noise, 'String' ,runtime);
case
5 I = handles.citra; noise =fungsiexponential(I, P); handles.citra=noise; axes(handles.axes_noise); imshow(handles.citra); runtime=cputime-runtime; set(handles.txt_runtime_noise, 'String' ,runtime);
end
set(handles.btn_noise, 'Enable' , 'Off' ) set(handles.reset, 'Enable' , 'On' ) set(handles.save_noise, 'Enable' , 'On' ) set(handles.btn_mse_noise, 'Enable' , 'On' ) set(handles.btn_psnr_noise, 'Enable' , 'On' ) set(handles.btn_clear, 'Enable' , 'Off' ) set(handles.btn_mean, 'Enable' , 'On' ) set(handles.btn_median, 'Enable' , 'On' ) set(handles.btn_combined, 'Enable' , 'On' )
function btn_mse_noise_Callback(hObject, eventdata, handles)
citra = getimage(handles.citra_asli); citra_hasil=getimage(handles.axes_noise); [psnrval mseval] = MSE_PSNR(citra,citra_hasil); set(handles.txt_mse_noise, 'String' ,mseval);
function btn_psnr_noise_Callback(hObject, eventdata, handles)
citra = getimage(handles.citra_asli); citra_hasil=getimage(handles.axes_noise); [psnrval mseval] = MSE_PSNR(citra,citra_hasil); set(handles.txt_psnr_noise, 'String' ,psnrval);
function btn_runtime_noise_Callback(hObject, eventdata, handles) global runtime;
set(handles.txt_runtime_noise, 'String' ,runtime);
function txt_mse_noise_Callback(hObject, eventdata, handles) function txt_mse_noise_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end function txt_psnr_noise_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end function txt_runtime_noise_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end function varargout = probabilitas_Callback(h, eventdata, handles)
nilai_probabilitas = get(handles.probabilitas, 'value' ); handles.nilai_probabilitas = round(nilai_probabilitas); guidata(h,handles); set(handles.txt_probabilitas, 'string' ,handles.nilai_probabilitas);
function probabilitas_CreateFcn(hObject, eventdata, handles) if isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' ,[.9 .9 .9]);
end function txt_probabilitas_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end function btn_combined_Callback(hObject, eventdata, handles) global runtime;
runtime=cputime; citra_asli = getimage(handles.axes_noise); temp=citra_asli; [b k c]=size(temp);
for x=1:1:b for y=1:1:k for z=1:1:c try
matriks(1,1)=temp(x-1,y-1,z);
catch
matriks(1,1)=0;
end try
matriks(1,2)=temp(x-1,y,z); matriks(1,2)=0;
end try
catch
function btn_mean_Callback(hObject, eventdata, handles) global runtime;
filtered=uint8(filtered); handles.citra=filtered; axes(handles.axes_meanmedian); imshow(handles.citra); runtime=cputime-runtime; set(handles.txt_runtime_combined, 'String' ,runtime); set(handles.btn_combined, 'Enable' , 'Off' ) set(handles.save_combine, 'Enable' , 'On' ) set(handles.btn_mse_combined, 'Enable' , 'On' ) set(handles.btn_psnr_combined, 'Enable' , 'On' )
end end end
filtered(x,y,z)=(mean(mean(matriks))+median(median(matriks)))/2;
end
matriks(3,3)=0;
catch
matriks(3,3)=temp(x+1,y+1,z);
end try
matriks(3,2)=0;
catch
matriks(3,2)=temp(x+1,y,z);
end try
matriks(3,1)=0;
matriks(3,1)=temp(x+1,y-1,z);
matriks(1,3)=temp(x-1,y+1,z);
end try
catch
matriks(1,3)=0;
end try
matriks(2,1)=temp(x,y-1,z);
catch
matriks(2,1)=0;
matriks(2,2)=temp(x,y,z);
end try
catch