Analisis Pengaruh Kombinasi Gaussian Noise dan Speckle Noise pada Citra Terhadap Kinerja Metode Deteksi Tepi

  'gui_OpeningFcn' , @AiSoftware_OpeningFcn, ... 'gui_OutputFcn' , @AiSoftware_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 AiSoftware is made visible.

function AiSoftware_OpeningFcn(hObject, eventdata, handles, varargin)

% Choose default command line output for AiSoftware

  handles.output = hObject;

  % Update handles structure

  guidata(hObject, handles);

  % UIWAIT makes AiSoftware wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line. function varargout = AiSoftware_OutputFcn(hObject, eventdata,

  handles) citra_asli=imread( 'logoFak.png' ); citra_hasil=double(citra_asli); citra_hasil=uint8(citra_hasil); axes(handles.axes_logo); imshow(citra_hasil);

  % Get default command line output from handles structure

  varargout{1} = handles.output; % --- Executes on button press in btn_GSN.

  function btn_GSN_Callback(hObject, eventdata, handles)

  GaussianSpeckleNoise close AiSoftware ;

  % --- Executes on button press in btn_SGN. function btn_SGN_Callback(hObject, eventdata, handles)

  SpeckleGaussianNoise close AiSoftware ;

  % --- Executes on button press in btn_GN. function btn_GN_Callback(hObject, eventdata, handles)

  GaussianNoise close AiSoftware ;

  % --- Executes on button press in btn_SN. function btn_SN_Callback(hObject, eventdata, handles)

  SpeckleNoise close AiSoftware ;

  % --- Executes on button press in btn_exit. function btn_exit_Callback(hObject, eventdata, handles) selection=questdlg([ 'Are You Sure?' ], ...

  [ 'Exit Application' ], ...

  'Yes' , 'No' , 'Yes' ); if strcmp(selection, 'No' )

  return ; end

  delete(handles.figure1)

  

% -------------------------------------------------------------------

  • function howtousemenu_Callback(hObject, eventdata, handles)

  HowToUse

  

% -------------------------------------------------------------------

  • function helpmenu_Callback(hObject, eventdata, handles)

  

% -------------------------------------------------------------------

  • function menu_Deskripsi_Callback(hObject, eventdata, handles)

  Description

  description.m function varargout = Description(varargin) % Begin initialization code - DO NOT EDIT

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

  'gui_Singleton' , gui_Singleton, ... 'gui_OpeningFcn' , @Description_OpeningFcn, ... 'gui_OutputFcn' , @Description_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 Description is made visible. function Description_OpeningFcn(hObject, eventdata, handles,

  varargin)

  % Choose default command line output for Description

  handles.output = hObject;

  % Update handles structure

  guidata(hObject, handles);

  % UIWAIT makes Description wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line. function varargout = Description_OutputFcn(hObject, eventdata,

  handles)

  % Get default command line output from handles structure

  varargout{1} = handles.output;

  

% -------------------------------------------------------------------

  • function menu_Home_Des_Callback(hObject, eventdata, handles)

  AiSoftware close Description ;

GaussianSpeckleNoise.m

  function varargout = GaussianSpeckleNoise(varargin) % Begin initialization code - DO NOT EDIT

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

  'gui_Singleton' , gui_Singleton, ... 'gui_OpeningFcn' , @GaussianSpeckleNoise_OpeningFcn, ...

  'gui_OutputFcn' , @GaussianSpeckleNoise_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 GaussianSpeckleNoise is made visible.

function GaussianSpeckleNoise_OpeningFcn(hObject, eventdata, handles,

  varargin)

  % Choose default command line output for GaussianSpeckleNoise

  handles.output = hObject;

  % Update handles structure

  guidata(hObject, handles);

  % UIWAIT makes GaussianSpeckleNoise wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line. function varargout = GaussianSpeckleNoise_OutputFcn(hObject,

  eventdata, handles)

  % Get default command line output from handles structure

  varargout{1} = handles.output; % --- Executes on button press in btn_ED_MH.

  function btn_ED_MH_Callback(hObject, eventdata, handles)

  citra_asli=handles.citra3; mh_output=deteksiMarrHil(citra_asli); axes(handles.axes_MH1); imshow(mh_output); citraGray = rgb2gray(handles.citra3); citrahistoMH = edge(citraGray, 'marr' ); axes(handles.axes_histoMH); imhist(citrahistoMH);

  

% -------------------------------------------------------------------

  • function backmenu_Callback(hObject, eventdata, handles)

  AiSoftware close GaussianSpeckleNoise ;

  function edit_meanG_Callback(hObject, eventdata, handles) % --- Executes during object creation, after setting all properties. function edit_meanG_CreateFcn(hObject, eventdata, handles) % Hint: edit controls usually have a white background on Windows.

  % See ISPC and COMPUTER. if ispc && isequal(get(hObject, 'BackgroundColor' ),

  get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );

  end function edit_varianceG_Callback(hObject, eventdata, handles)

% Hints: get(hObject,'String') returns contents of edit_varianceG as

text % str2double(get(hObject,'String')) returns contents of edit_varianceG as a double % --- Executes during object creation, after setting all properties. function edit_varianceG_CreateFcn(hObject, eventdata, handles) % Hint: edit controls usually have a white background on Windows.

  % See ISPC and COMPUTER. if ispc && isequal(get(hObject, 'BackgroundColor' ),

  get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );

  end function edit_varianceS_Callback(hObject, eventdata, handles)

% Hints: get(hObject,'String') returns contents of edit_varianceS as

text % str2double(get(hObject,'String')) returns contents of edit_varianceS as a double % --- Executes during object creation, after setting all properties. function edit_varianceS_CreateFcn(hObject, eventdata, handles) % Hint: edit controls usually have a white background on Windows.

  % See ISPC and COMPUTER. if ispc && isequal(get(hObject, 'BackgroundColor' ),

  get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );

  end % --- Executes on button press in btn_noisingG. function btn_noisingG_Callback(hObject, eventdata, handles)

  mg = length(get(handles.edit_meanG, 'String' )); vg = length(get(handles.edit_varianceG, 'String' ));

  if (mg <= 0|| vg == 0)

  h = msgbox( 'Mean dan Variance harus diinput!' );

  else

  citra_asli=handles.citra; mean=str2num(get(handles.edit_meanG, 'String' )); variance=str2num(get(handles.edit_varianceG, 'String' )); citra_gaussian = imnoise(citra_asli, 'gaussian' ,mean,variance); axes(handles.axes_GSN); imshow(citra_gaussian); handles.citra2=citra_gaussian; guidata(hObject,handles);

  end % --- Executes on button press in btn_noisingS. function btn_noisingS_Callback(hObject, eventdata, handles)

  vg = length(get(handles.edit_varianceS, 'String' ));

  if (vg == 0)

  h = msgbox( 'Variance harus diinput!' );

  else

  citra_asli=handles.citra2;

  variance=str2num(get(handles.edit_varianceS, 'String' )); citra_speckle = imnoise(citra_asli, 'speckle' ,variance); axes(handles.axes_GSN); imshow(citra_speckle); handles.citra3=citra_speckle; guidata(hObject,handles); size(citra_speckle)

  end % --- Executes on button press in btn_MSE1. function btn_MSE1_Callback(hObject, eventdata, handles)

  citraAsli=getimage(handles.axes_browse); citraAsli=deteksiMarrHil(citraAsli); CitraHasil = double(getimage(handles.axes_MH1)); [a b ]=size(citraAsli) [c d]=size(CitraHasil) [psnrval mseval] = MSE_PSNR(citraAsli,CitraHasil); set(handles.edit_MSE1, 'String' ,mseval);

  % --- Executes on button press in btn_PSNR1. function btn_PSNR1_Callback(hObject, eventdata, handles)

  citraAsli=getimage(handles.axes_browse); citraAsli=deteksiMarrHil(citraAsli); CitraHasil = double(getimage(handles.axes_MH1)); [psnrval mseval] = MSE_PSNR(citraAsli,CitraHasil); set(handles.edit_PSNR1, 'String' ,psnrval);

  function edit_MSE1_Callback(hObject, eventdata, handles) % Hints: get(hObject,'String') returns contents of edit_MSE1 as text % str2double(get(hObject,'String')) returns contents of edit_MSE1 as a double % --- Executes during object creation, after setting all properties. function edit_MSE1_CreateFcn(hObject, eventdata, handles) % Hint: edit controls usually have a white background on Windows.

  % See ISPC and COMPUTER. if ispc && isequal(get(hObject, 'BackgroundColor' ),

  get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );

  end function edit_PSNR1_Callback(hObject, eventdata, handles)

% Hints: get(hObject,'String') returns contents of edit_PSNR1 as text

% str2double(get(hObject,'String')) returns contents of edit_PSNR1 as a double % --- Executes during object creation, after setting all properties. function edit_PSNR1_CreateFcn(hObject, eventdata, handles) % Hint: edit controls usually have a white background on Windows.

  % See ISPC and COMPUTER. if ispc && isequal(get(hObject, 'BackgroundColor' ),

  get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );

  end % --- Executes on button press in btn_MSE2. function btn_MSE2_Callback(hObject, eventdata, handles)

  citraAsli=rgb2gray(getimage(handles.axes_browse)); citraAsli=double(edge(citraAsli, 'log' ));

  CitraHasil = double(getimage(handles.axes_LOG1)); [a b ]=size(citraAsli) [c d]=size(CitraHasil) [psnrval mseval] = MSE_PSNR(citraAsli,CitraHasil); set(handles.edit_MSE2, 'String' ,mseval);

  % --- Executes on button press in btn_PSNR2. function btn_PSNR2_Callback(hObject, eventdata, handles)

  citraAsli=rgb2gray(getimage(handles.axes_browse)); CitraHasil = double(getimage(handles.axes_LOG1)); [a b ]=size(citraAsli) [c d]=size(CitraHasil) [psnrval mseval] = MSE_PSNR(citraAsli,CitraHasil); set(handles.edit_PSNR2, 'String' ,psnrval);

  function edit_MSE2_Callback(hObject, eventdata, handles) % Hints: get(hObject,'String') returns contents of edit_MSE2 as text % str2double(get(hObject,'String')) returns contents of edit_MSE2 as a double % --- Executes during object creation, after setting all properties. function edit_MSE2_CreateFcn(hObject, eventdata, handles) % Hint: edit controls usually have a white background on Windows.

  % See ISPC and COMPUTER. if ispc && isequal(get(hObject, 'BackgroundColor' ),

  get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );

  end function edit_PSNR2_Callback(hObject, eventdata, handles)

% Hints: get(hObject,'String') returns contents of edit_PSNR2 as text

% str2double(get(hObject,'String')) returns contents of edit_PSNR2 as a double % --- Executes during object creation, after setting all properties. function edit_PSNR2_CreateFcn(hObject, eventdata, handles) % Hint: edit controls usually have a white background on Windows.

  % See ISPC and COMPUTER. if ispc && isequal(get(hObject, 'BackgroundColor' ),

  get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );

  end % --- Executes on button press in btn_MSE3. function btn_MSE3_Callback(hObject, eventdata, handles)

  citraAsli=rgb2gray(getimage(handles.axes_browse)); citraAsli=double(edge(citraAsli, 'prewitt' )); CitraHasil = double(getimage(handles.axes_P1)); [a b ]=size(citraAsli) [c d]=size(CitraHasil) [psnrval mseval] = MSE_PSNR(citraAsli,CitraHasil); set(handles.edit_MSE3, 'String' ,mseval);

  % --- Executes on button press in btn_PSNR3. function btn_PSNR3_Callback(hObject, eventdata, handles)

  citraAsli=rgb2gray(getimage(handles.axes_browse)); CitraHasil = double(getimage(handles.axes_P1)); [a b ]=size(citraAsli)

  [c d]=size(CitraHasil) [psnrval mseval] = MSE_PSNR(citraAsli,CitraHasil); set(handles.edit_PSNR3, 'String' ,psnrval);

  function edit_MSE3_Callback(hObject, eventdata, handles) % Hints: get(hObject,'String') returns contents of edit_MSE3 as text % str2double(get(hObject,'String')) returns contents of edit_MSE3 as a double % --- Executes during object creation, after setting all properties. function edit_MSE3_CreateFcn(hObject, eventdata, handles) % Hint: edit controls usually have a white background on Windows.

  % See ISPC and COMPUTER. if ispc && isequal(get(hObject, 'BackgroundColor' ),

  get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );

  end function edit_PSNR3_Callback(hObject, eventdata, handles)

% Hints: get(hObject,'String') returns contents of edit_PSNR3 as text

% str2double(get(hObject,'String')) returns contents of edit_PSNR3 as a double % --- Executes during object creation, after setting all properties. function edit_PSNR3_CreateFcn(hObject, eventdata, handles) % Hint: edit controls usually have a white background on Windows.

  % See ISPC and COMPUTER. if ispc && isequal(get(hObject, 'BackgroundColor' ),

  get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );

  end % --- Executes on button press in btn_save1. function btn_save1_Callback(hObject, eventdata, handles) [filename,pathname] = uiputfile( ...

  { '*.bmp;*' , 'File Image (*.bmp)' ; '*.*' , 'All File (*.*)' }, 'Save

  Image' );

  NamaFile = strcat(pathname, '\' ,filename) [a a]=size(NamaFile)

  if (a~=1)

  axes(handles.axes_MH1); Citra = getimage(handles.axes_MH1); imwrite(Citra,filename);

  else return end % --- Executes on button press in btn_save2. function btn_save2_Callback(hObject, eventdata, handles) [filename,pathname] = uiputfile( ...

  { '*.bmp;*' , 'File Image (*.bmp)' ; '*.*' , 'All File (*.*)' }, 'Save

  Image' );

  NamaFile = strcat(pathname, '\' ,filename) [a a]=size(NamaFile)

  if (a~=1)

  axes(handles.axes_LOG1); Citra = getimage(handles.axes_LOG1); imwrite(Citra,filename);

  else return end

  % --- Executes on button press in btn_save3. function btn_save3_Callback(hObject, eventdata, handles) [filename,pathname] = uiputfile( ...

  { '*.bmp;*' , 'File Image (*.bmp)' ; '*.*' , 'All File (*.*)' }, 'Save

  Image' );

  NamaFile = strcat(pathname, '\' ,filename) [a a]=size(NamaFile)

  if (a~=1)

  axes(handles.axes_P1); Citra = getimage(handles.axes_P1); imwrite(Citra,filename);

  else return end % --- Executes on button press in btn_browse. function btn_browse_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.axes_browse); imshow(handles.citra); axes(handles.axes_browse); imshow(handles.citra); guidata(hObject,handles); axes(handles.axes_histoAsli); imhist(handles.citra(:,:,1)); imhist(handles.citra(:,:,2)); imhist(handles.citra(:,:,3));

  else return ; end ; % --- Executes on button press in btn_ED_LOG. function btn_ED_LOG_Callback(hObject, eventdata, handles)

  citra_asli=handles.citra3; gray=rgb2gray(citra_asli); ED_LOG=edge(gray, 'log' ); axes(handles.axes_LOG1); imshow(ED_LOG); citraGray = rgb2gray(handles.citra3); citrahistoLOG = edge(citraGray, 'log' ); axes(handles.axes_histoLOG); imhist(citrahistoLOG); % --- Executes on button press in btn_ED_P.

  function btn_ED_P_Callback(hObject, eventdata, handles)

  citra_asli=handles.citra3; citraP=rgb2gray(citra_asli); [x y]=size(citraP);

  %Prewitt

  H1 = [-1 0 1; -1 0 1; -1 0 1]; H2 = [-1 -1 -1; 0 0 0; 1 1 1];

  fx = conv2(citraP,double(H1)); fy = conv2(citraP,double(H2));

  %Arah Tepian

  [x,y]=size(fx); count=0; avg=0;

  for i=1:1:x for j=1:1:y

  output(i,j)=sqrt(fx(i,j)*fx(i,j)+fy(i,j)*fy(i,j)); count=count+output(i,j);

  end end

  avg=4*count/(x*y);

  for i=1:1:x for j=1:1:y if output(i,j)<avg

  output(i,j)=0;

  else output(i,j)=255; end end end

  prewitt_output=edge(citraP, 'prewitt' ); axes(handles.axes_P1); imshow(prewitt_output); citraGray = rgb2gray(handles.citra3); citrahistoP = edge(citraGray, 'prewitt' ); axes(handles.axes_histoP); imhist(citrahistoP); % --- Executes on button press in btn_histogram1.

  function btn_histogram1_Callback(hObject, eventdata, handles)

  histogram1 citra_MH = imread(handles.axes_MH1); citra_histo1 =double(citra_MH); imhist(citra_histo1); imshow(citra_histo1); axes(handles.axes1); [counts, binCenters] = hist(sort(averSpectrum),500); axes(handles.whateverAxesYouWant); bar(binCenters, counts, 'BarWidth' , 1); grid on

  if ispc && isequal(get(hObject, 'BackgroundColor' ),

  get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );

  end

SpeckleGaussianNoise.m

  function varargout = SpeckleGaussianNoise(varargin)

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

  'gui_Singleton' , gui_Singleton, ...

  'gui_OpeningFcn' , @SpeckleGaussianNoise_OpeningFcn, ... 'gui_OutputFcn' , @SpeckleGaussianNoise_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 % --- Executes just before SpeckleGaussianNoise is made visible.

function SpeckleGaussianNoise_OpeningFcn(hObject, eventdata, handles,

  varargin)

  % Choose default command line output for SpeckleGaussianNoise

  handles.output = hObject;

  % Update handles structure

  guidata(hObject, handles);

  % UIWAIT makes SpeckleGaussianNoise wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line. function varargout = SpeckleGaussianNoise_OutputFcn(hObject,

  eventdata, handles)

  % Get default command line output from handles structure

  varargout{1} = handles.output; % --- Executes on button press in btn_gotoED.

  function btn_gotoED_Callback(hObject, eventdata, handles) % --- Executes on button press in btn_MSE1. function btn_MSE1_Callback(hObject, eventdata, handles)

  citraAsli=getimage(handles.axes_browse); citraAsli=deteksiMarrHil(citraAsli); CitraHasil = double(getimage(handles.axes_MH2)); [a b ]=size(citraAsli) [c d]=size(CitraHasil) [psnrval mseval] = MSE_PSNR(citraAsli,CitraHasil); set(handles.edit_MSE1, 'String' ,mseval);

  % --- Executes on button press in btn_PSNR1. function btn_PSNR1_Callback(hObject, eventdata, handles)

  citraAsli=getimage(handles.axes_browse); citraAsli=deteksiMarrHil(citraAsli); CitraHasil = double(getimage(handles.axes_MH2)); [psnrval mseval] = MSE_PSNR(citraAsli,CitraHasil); set(handles.edit_PSNR1, 'String' ,psnrval);

  function edit_MSE1_Callback(hObject, eventdata, handles) % --- Executes during object creation, after setting all properties. function edit_MSE1_CreateFcn(hObject, eventdata, handles) % Hint: edit controls usually have a white background on Windows.

  % See ISPC and COMPUTER. if ispc && isequal(get(hObject, 'BackgroundColor' ),

  get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );

  end

  function edit_PSNR1_Callback(hObject, eventdata, handles)

% Hints: get(hObject,'String') returns contents of edit_PSNR1 as text

% str2double(get(hObject,'String')) returns contents of edit_PSNR1 as a double % --- Executes during object creation, after setting all properties. function edit_PSNR1_CreateFcn(hObject, eventdata, handles) % Hint: edit controls usually have a white background on Windows.

  % See ISPC and COMPUTER. if ispc && isequal(get(hObject, 'BackgroundColor' ),

  get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );

  end % --- Executes on button press in btn_MSE2. function btn_MSE2_Callback(hObject, eventdata, handles)

  citraAsli=rgb2gray(getimage(handles.axes_browse)); citraAsli=double(edge(citraAsli, 'log' )); CitraHasil = double(getimage(handles.axes_LOG2)); [a b ]=size(citraAsli) [c d]=size(CitraHasil) [psnrval mseval] = MSE_PSNR(citraAsli,CitraHasil); set(handles.edit_MSE2, 'String' ,mseval);

  % --- Executes on button press in btn_PSNR2. function btn_PSNR2_Callback(hObject, eventdata, handles)

  citraAsli=rgb2gray(getimage(handles.axes_browse)); CitraHasil = double(getimage(handles.axes_LOG2)); [a b ]=size(citraAsli) [c d]=size(CitraHasil) [psnrval mseval] = MSE_PSNR(citraAsli,CitraHasil); set(handles.edit_PSNR2, 'String' ,psnrval);

  function edit_MSE2_Callback(hObject, eventdata, handles) % Hints: get(hObject,'String') returns contents of edit_MSE2 as text % str2double(get(hObject,'String')) returns contents of edit_MSE2 as a double

% --- Executes during object creation, after setting all properties.

function edit_MSE2_CreateFcn(hObject, eventdata, handles) % Hint: edit controls usually have a white background on Windows.

  % See ISPC and COMPUTER. if ispc && isequal(get(hObject, 'BackgroundColor' ),

  get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );

  end function edit_PSNR2_Callback(hObject, eventdata, handles)

% Hints: get(hObject,'String') returns contents of edit_PSNR2 as text

% str2double(get(hObject,'String')) returns contents of edit_PSNR2 as a double % --- Executes during object creation, after setting all properties. function edit_PSNR2_CreateFcn(hObject, eventdata, handles) % Hint: edit controls usually have a white background on Windows.

  % See ISPC and COMPUTER. if ispc && isequal(get(hObject, 'BackgroundColor' ),

  get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );

  end

  % --- Executes on button press in btn_MSE3. function btn_MSE3_Callback(hObject, eventdata, handles)

  citraAsli=rgb2gray(getimage(handles.axes_browse)); citraAsli=double(edge(citraAsli, 'prewitt' )); CitraHasil = double(getimage(handles.axes_P2)); [a b ]=size(citraAsli) [c d]=size(CitraHasil) [psnrval mseval] = MSE_PSNR(citraAsli,CitraHasil); set(handles.edit_MSE3, 'String' ,mseval);

  % --- Executes on button press in btn_PSNR3. function btn_PSNR3_Callback(hObject, eventdata, handles)

  citraAsli=rgb2gray(getimage(handles.axes_browse)); CitraHasil = double(getimage(handles.axes_P2)); [a b ]=size(citraAsli) [c d]=size(CitraHasil) [psnrval mseval] = MSE_PSNR(citraAsli,CitraHasil); set(handles.edit_PSNR3, 'String' ,psnrval);

  function edit_MSE3_Callback(hObject, eventdata, handles) % Hints: get(hObject,'String') returns contents of edit_MSE3 as text % str2double(get(hObject,'String')) returns contents of edit_MSE3 as a double % --- Executes during object creation, after setting all properties. function edit_MSE3_CreateFcn(hObject, eventdata, handles) % Hint: edit controls usually have a white background on Windows.

  % See ISPC and COMPUTER. if ispc && isequal(get(hObject, 'BackgroundColor' ),

  get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );

  end function edit_PSNR3_Callback(hObject, eventdata, handles)

% Hints: get(hObject,'String') returns contents of edit_PSNR3 as text

% str2double(get(hObject,'String')) returns contents of edit_PSNR3 as a double % --- Executes during object creation, after setting all properties. function edit_PSNR3_CreateFcn(hObject, eventdata, handles) % Hint: edit controls usually have a white background on Windows.

  % See ISPC and COMPUTER. if ispc && isequal(get(hObject, 'BackgroundColor' ),

  get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );

  end % --- Executes on button press in btn_save1. function btn_save1_Callback(hObject, eventdata, handles) [filename,pathname] = uiputfile( ...

  { '*.bmp;*' , 'File Image (*.bmp)' ; '*.*' , 'All File (*.*)' }, 'Save

  Image' );

  NamaFile = strcat(pathname, '\' ,filename) [a a]=size(NamaFile)

  if (a~=1)

  axes(handles.axes_MH2); Citra = getimage(handles.axes_MH2); imwrite(Citra,filename);

  else return end % --- Executes on button press in btn_save2. function btn_save2_Callback(hObject, eventdata, handles) [filename,pathname] = uiputfile( ...

  { '*.bmp;*' , 'File Image (*.bmp)' ; '*.*' , 'All File (*.*)' }, 'Save

  Image' );

  NamaFile = strcat(pathname, '\' ,filename) [a a]=size(NamaFile)

  if (a~=1)

  axes(handles.axes_LOG2); Citra = getimage(handles.axes_LOG2); imwrite(Citra,filename);

  else return end % --- Executes on button press in btn_save3. function btn_save3_Callback(hObject, eventdata, handles) [filename,pathname] = uiputfile( ...

  { '*.bmp;*' , 'File Image (*.bmp)' ; '*.*' , 'All File (*.*)' }, 'Save

  Image' );

  NamaFile = strcat(pathname, '\' ,filename) [a a]=size(NamaFile)

  if (a~=1)

  axes(handles.axes_P2); Citra = getimage(handles.axes_P2); imwrite(Citra,filename);

  else return end % --- Executes on button press in btn_browse. function btn_browse_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.axes_browse); imshow(handles.citra); axes(handles.axes_browse); imshow(handles.citra); axes(handles.axes_histoAsli); imhist(handles.citra(:,:,1)); imhist(handles.citra(:,:,2)); imhist(handles.citra(:,:,3));

  else return ; end ; function edit_meanG_Callback(hObject, eventdata, handles) % --- Executes during object creation, after setting all properties. function edit_meanG_CreateFcn(hObject, eventdata, handles)

  if ispc && isequal(get(hObject, 'BackgroundColor' ),

  get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );

  end function edit_varianceG_Callback(hObject, eventdata, handles) % --- Executes during object creation, after setting all properties. function edit_varianceG_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject, 'BackgroundColor' ),

  get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );

  end function edit_varianceS_Callback(hObject, eventdata, handles) % --- Executes during object creation, after setting all properties. function edit_varianceS_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject, 'BackgroundColor' ),

  get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );

  end % --- Executes on button press in btn_noisingS. function btn_noisingS_Callback(hObject, eventdata, handles)

  vg = length(get(handles.edit_varianceS, 'String' ));

  if (vg == 0)

  h = msgbox( 'Variance harus diinput!' );

  else

  citra_asli=handles.citra; variance=str2num(get(handles.edit_varianceS, 'String' )); citra_speckle = imnoise(citra_asli, 'speckle' ,variance); axes(handles.axes_SGN); imshow(citra_speckle); handles.citra2=citra_speckle; guidata(hObject,handles);

  end % --- Executes on button press in btn_noisingG. function btn_noisingG_Callback(hObject, eventdata, handles)

  mg = length(get(handles.edit_meanG, 'String' )); vg = length(get(handles.edit_varianceG, 'String' ));

  if (mg <= 0|| vg == 0)

  h = msgbox( 'Mean dan Variance harus diinput!' );

  else

  citra_asli=handles.citra2; mean=str2num(get(handles.edit_meanG, 'String' )); variance=str2num(get(handles.edit_varianceG, 'String' )); citra_gaussian = imnoise(citra_asli, 'gaussian' ,mean,variance); axes(handles.axes_SGN); imshow(citra_gaussian); handles.citra3=citra_gaussian; guidata(hObject,handles);

  end

% -------------------------------------------------------------------

  • function backmenu_Callback(hObject, eventdata, handles)

  AiSoftware close SpeckleGaussianNoise ;

  % --- Executes on button press in btn_ED_MH.

  function btn_ED_MH_Callback(hObject, eventdata, handles)

  citra_asli=handles.citra3; mh_output=deteksiMarrHil(citra_asli); axes(handles.axes_MH2); imshow(mh_output); citraGray = rgb2gray(handles.citra3); citrahistoMH = edge(citraGray, 'marr' ); axes(handles.axes_histoMH); imhist(citrahistoMH);

  % --- Executes on button press in btn_ED_LOG. function btn_ED_LOG_Callback(hObject, eventdata, handles)

  citra_asli=handles.citra3; gray=rgb2gray(citra_asli); ED_LOG=edge(gray, 'log' ); axes(handles.axes_LOG2); imshow(ED_LOG); citraGray = rgb2gray(handles.citra3); citrahistoLOG = edge(citraGray, 'log' ); axes(handles.axes_histoLOG); imhist(citrahistoLOG); % --- Executes on button press in btn_ED_P.

  function btn_ED_P_Callback(hObject, eventdata, handles)

  citra_asli=handles.citra3; citraP=rgb2gray(citra_asli); [x y]=size(citraP);

  %Prewitt

  H1 = [-1 0 1; -1 0 1; -1 0 1]; H2 = [-1 -1 -1; 0 0 0; 1 1 1]; fx = conv2(citraP,double(H1)); fy = conv2(citraP,double(H2));

  %Arah Tepian

  [x,y]=size(fx); count=0; avg=0;

  for i=1:1:x for j=1:1:y

  output(i,j)=sqrt(fx(i,j)*fx(i,j)+fy(i,j)*fy(i,j)); count=count+output(i,j);

  end end

  avg=4*count/(x*y);

  for i=1:1:x for j=1:1:y if output(i,j)<avg

  output(i,j)=0;

  else output(i,j)=255; end end end

  prewitt_output=edge(citraP, 'prewitt' ); axes(handles.axes_P2); imshow(prewitt_output);

  citraGray = rgb2gray(handles.citra3); citrahistoP = edge(citraGray, 'prewitt' ); axes(handles.axes_histoP); imhist(citrahistoP);

GaussianNoise.m

  function varargout = GaussianNoise(varargin)

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

  'gui_Singleton' , gui_Singleton, ... 'gui_OpeningFcn' , @GaussianNoise_OpeningFcn, ... 'gui_OutputFcn' , @GaussianNoise_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 GaussianNoise is made visible. function GaussianNoise_OpeningFcn(hObject, eventdata, handles,

  varargin)

  % Choose default command line output for GaussianNoise

  handles.output = hObject;

  % Update handles structure

  guidata(hObject, handles);

  % UIWAIT makes GaussianNoise wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line. function varargout = GaussianNoise_OutputFcn(hObject, eventdata,

  handles)

  % Get default command line output from handles structure

  varargout{1} = handles.output; % --- Executes on button press in bnt_gotoED.

  function bnt_gotoED_Callback(hObject, eventdata, handles) % --- Executes on button press in btn_MSE1. function btn_MSE1_Callback(hObject, eventdata, handles)

  citraAsli=getimage(handles.axes_browse); citraAsli=deteksiMarrHil(citraAsli); CitraHasil = double(getimage(handles.axes_MH3)); [a b ]=size(citraAsli) [c d]=size(CitraHasil) [psnrval mseval] = MSE_PSNR(citraAsli,CitraHasil); set(handles.edit_MSE1, 'String' ,mseval);

  % --- Executes on button press in btn_PSNR1. function btn_PSNR1_Callback(hObject, eventdata, handles)

  citraAsli=getimage(handles.axes_browse); citraAsli=deteksiMarrHil(citraAsli); CitraHasil = double(getimage(handles.axes_MH3));

  [psnrval mseval] = MSE_PSNR(citraAsli,CitraHasil); set(handles.edit_PSNR1, 'String' ,psnrval);

  function edit_MSE1_Callback(hObject, eventdata, handles) % --- Executes during object creation, after setting all properties. function edit_MSE1_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject, 'BackgroundColor' ),

  get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );

  end function edit_PSNR1_Callback(hObject, eventdata, handles) % --- Executes during object creation, after setting all properties. function edit_PSNR1_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject, 'BackgroundColor' ),

  get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );

  end % --- Executes on button press in btn_MSE2. function btn_MSE2_Callback(hObject, eventdata, handles)

  citraAsli=rgb2gray(getimage(handles.axes_browse)); citraAsli=double(edge(citraAsli, 'log' )); CitraHasil = double(getimage(handles.axes_LOG3)); [a b ]=size(citraAsli) [c d]=size(CitraHasil) [psnrval mseval] = MSE_PSNR(citraAsli,CitraHasil); set(handles.edit_MSE2, 'String' ,mseval);

  % --- Executes on button press in btn_PSNR2. function btn_PSNR2_Callback(hObject, eventdata, handles)

  citraAsli=rgb2gray(getimage(handles.axes_browse)); CitraHasil = double(getimage(handles.axes_LOG3)); [a b ]=size(citraAsli) [c d]=size(CitraHasil) [psnrval mseval] = MSE_PSNR(citraAsli,CitraHasil); set(handles.edit_PSNR2, 'String' ,psnrval);

  function edit_MSE2_Callback(hObject, eventdata, handles) % --- Executes during object creation, after setting all properties. function edit_MSE2_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject, 'BackgroundColor' ),

  get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );

  end function edit_PSNR2_Callback(hObject, eventdata, handles) % --- Executes during object creation, after setting all properties. function edit_PSNR2_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject, 'BackgroundColor' ),

  get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );

  end

  % --- Executes on button press in btn_MSE3. function btn_MSE3_Callback(hObject, eventdata, handles)

  citraAsli=rgb2gray(getimage(handles.axes_browse)); citraAsli=double(edge(citraAsli, 'prewitt' )); CitraHasil = double(getimage(handles.axes_P3)); [a b ]=size(citraAsli) [c d]=size(CitraHasil) [psnrval mseval] = MSE_PSNR(citraAsli,CitraHasil); set(handles.edit_MSE3, 'String' ,mseval);

  % --- Executes on button press in btn_PSNR3. function btn_PSNR3_Callback(hObject, eventdata, handles)

  citraAsli=rgb2gray(getimage(handles.axes_browse)); CitraHasil = double(getimage(handles.axes_P3)); [a b ]=size(citraAsli) [c d]=size(CitraHasil) [psnrval mseval] = MSE_PSNR(citraAsli,CitraHasil); set(handles.edit_PSNR3, 'String' ,psnrval);

  function edit_MSE3_Callback(hObject, eventdata, handles) % --- Executes during object creation, after setting all properties. function edit_MSE3_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject, 'BackgroundColor' ),

  get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );

  end function edit_PSNR3_Callback(hObject, eventdata, handles) % --- Executes during object creation, after setting all properties. function edit_PSNR3_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject, 'BackgroundColor' ),

  get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );

  end % --- Executes on button press in btn_save1. function btn_save1_Callback(hObject, eventdata, handles) [filename,pathname] = uiputfile( ...

  { '*.bmp;*' , 'File Image (*.bmp)' ; '*.*' , 'All File (*.*)' }, 'Save

  Image' );

  NamaFile = strcat(pathname, '\' ,filename) [a a]=size(NamaFile)

  if (a~=1)

  axes(handles.axes_MH3); Citra = getimage(handles.axes_MH3); imwrite(Citra,filename);

  else return end % --- Executes on button press in btn_save2. function btn_save2_Callback(hObject, eventdata, handles) [filename,pathname] = uiputfile( ...

  { '*.bmp;*' , 'File Image (*.bmp)' ; '*.*' , 'All File (*.*)' }, 'Save

  Image' );

  NamaFile = strcat(pathname, '\' ,filename) [a a]=size(NamaFile)

  if (a~=1)

  axes(handles.axes_LOG3); Citra = getimage(handles.axes_LOG3); imwrite(Citra,filename);

  else return end % --- Executes on button press in btn_save3. function btn_save3_Callback(hObject, eventdata, handles) [filename,pathname] = uiputfile( ...

  { '*.bmp;*' , 'File Image (*.bmp)' ; '*.*' , 'All File (*.*)' }, 'Save

  Image' );

  NamaFile = strcat(pathname, '\' ,filename) [a a]=size(NamaFile)

  if (a~=1)

  axes(handles.axes_P3); Citra = getimage(handles.axes_P3); imwrite(Citra,filename);

  else return end % --- Executes on button press in btn_browse. function btn_browse_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.axes_browse); imshow(handles.citra); axes(handles.axes_browse); imshow(handles.citra); axes(handles.axes_histoAsli); imhist(handles.citra(:,:,1)); imhist(handles.citra(:,:,2)); imhist(handles.citra(:,:,3));

  else return ; end ; function edit_meanG_Callback(hObject, eventdata, handles) % --- Executes during object creation, after setting all properties. function edit_meanG_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject, 'BackgroundColor' ),

  get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );

  end function edit_varianceG_Callback(hObject, eventdata, handles) % --- Executes during object creation, after setting all properties. function edit_varianceG_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject, 'BackgroundColor' ),

  get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );

  end

  % --- Executes on button press in btn_noisingG. function btn_noisingG_Callback(hObject, eventdata, handles)

  mg = length(get(handles.edit_meanG, 'String' )); vg = length(get(handles.edit_varianceG, 'String' ));

  if (mg <= 0|| vg == 0)

  h = msgbox( 'Mean dan Variance harus diinput!' );

  else

  citra_asli=handles.citra; mean=str2num(get(handles.edit_meanG, 'String' )); variance=str2num(get(handles.edit_varianceG, 'String' )); citra_gaussian = imnoise(citra_asli, 'gaussian' ,mean,variance); axes(handles.axes_GN); imshow(citra_gaussian); handles.citra2=citra_gaussian; guidata(hObject,handles);

  end function backmenu_Callback(hObject, eventdata, handles)

  AiSoftware close GaussianNoise ;

  % --- Executes on button press in btn_ED_MH. function btn_ED_MH_Callback(hObject, eventdata, handles)

  citra_asli=handles.citra2; mh_output=deteksiMarrHil(citra_asli); axes(handles.axes_MH3); imshow(mh_output); citraGray = rgb2gray(handles.citra2); citrahistoMH = edge(citraGray, 'marr' ); axes(handles.axes_histoMH); imhist(citrahistoMH);

  % --- Executes on button press in btn_ED_LOG. function btn_ED_LOG_Callback(hObject, eventdata, handles)

  citra_asli=handles.citra2; gray=rgb2gray(citra_asli); ED_LOG=edge(gray, 'log' ); axes(handles.axes_LOG3); imshow(ED_LOG); citraGray = rgb2gray(handles.citra2); citrahistoLOG = edge(citraGray, 'log' ); axes(handles.axes_histoLOG); imhist(citrahistoLOG); % --- Executes on button press in btn_ED_P.

  function btn_ED_P_Callback(hObject, eventdata, handles)

  citra_asli=handles.citra2; citraP=rgb2gray(citra_asli); [x y]=size(citraP);

  %Prewitt

  H1 = [-1 0 1; -1 0 1; -1 0 1]; H2 = [-1 -1 -1; 0 0 0; 1 1 1]; fx = conv2(citraP,double(H1)); fy = conv2(citraP,double(H2));

  %Arah Tepian

  [x,y]=size(fx); count=0; avg=0;

  for i=1:1:x for j=1:1:y

  output(i,j)=sqrt(fx(i,j)*fx(i,j)+fy(i,j)*fy(i,j)); count=count+output(i,j);

  end end

  avg=4*count/(x*y);

  for i=1:1:x for j=1:1:y if output(i,j)<avg

  output(i,j)=0;

  else output(i,j)=255; end end end

  prewitt_output=edge(citraP, 'prewitt' ); axes(handles.axes_P3); imshow(prewitt_output); citraGray = rgb2gray(handles.citra2); citrahistoP = edge(citraGray, 'prewitt' ); axes(handles.axes_histoP); imhist(citrahistoP);

SpeckleNoise.m

  function varargout = SpeckleNoise(varargin)

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

  'gui_Singleton' , gui_Singleton, ... 'gui_OpeningFcn' , @SpeckleNoise_OpeningFcn, ... 'gui_OutputFcn' , @SpeckleNoise_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 SpeckleNoise is made visible. function SpeckleNoise_OpeningFcn(hObject, eventdata, handles,

  varargin) handles.output = hObject;

  % Update handles structure

  guidata(hObject, handles);

  % UIWAIT makes SpeckleNoise wait for user response (see UIRESUME) % uiwait(handles.figure1);

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

  handles) varargout{1} = handles.output;

  % --- Executes on button press in btn_gotoED. function btn_gotoED_Callback(hObject, eventdata, handles) % --- Executes on button press in btn_MSE1. function btn_MSE1_Callback(hObject, eventdata, handles)

  citraAsli=getimage(handles.axes_browse); citraAsli=deteksiMarrHil(citraAsli); CitraHasil = double(getimage(handles.axes_MH4)); [a b ]=size(citraAsli) [c d]=size(CitraHasil) [psnrval mseval] = MSE_PSNR(citraAsli,CitraHasil); set(handles.edit_MSE1, 'String' ,mseval);

  % --- Executes on button press in btn_PSNR1. function btn_PSNR1_Callback(hObject, eventdata, handles)

  citraAsli=getimage(handles.axes_browse); citraAsli=deteksiMarrHil(citraAsli); CitraHasil = double(getimage(handles.axes_MH4)); [psnrval mseval] = MSE_PSNR(citraAsli,CitraHasil); set(handles.edit_PSNR1, 'String' ,psnrval);