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