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 AiSoftwarehandles.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);