A-2 'gui_openingfcn', @AiSoftware_OpeningFcn,... 'gui_outputfcn', @AiSoftware_OutputFcn,... 'gui_layoutfcn', [],... 'gui_callback', []); if nargin && ischar(varargin{1}) gui_state.gui_callback = str2func(varargin{1}); if nargout [varargout{1:nargout}] = gui_mainfcn(gui_state, varargin{:}); gui_mainfcn(gui_state, varargin{:}); % 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')
A-3 return; 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}); if nargout [varargout{1:nargout}] = gui_mainfcn(gui_state, varargin{:}); gui_mainfcn(gui_state, varargin{:}); % 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;
A-4 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}); if nargout [varargout{1:nargout}] = gui_mainfcn(gui_state, varargin{:}); gui_mainfcn(gui_state, varargin{:}); % 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) function edit_meang_createfcn(hobject, eventdata, handles)
A-5 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 function edit_varianceg_createfcn(hobject, eventdata, handles) 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 function edit_variances_createfcn(hobject, eventdata, handles) % --- 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!'); 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); % --- 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!'); citra_asli=handles.citra2;
A-6 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) % --- 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)); 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)); 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 function edit_mse1_createfcn(hobject, eventdata, handles) 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 function edit_psnr1_createfcn(hobject, eventdata, handles) % --- Executes on button press in btn_mse2. function btn_mse2_callback(hobject, eventdata, handles) citraasli=double(edge(citraasli,'log'));
A-7 CitraHasil = double(getimage(handles.axes_log1)); set(handles.edit_mse2,'string',mseval); % --- Executes on button press in btn_psnr2. function btn_psnr2_callback(hobject, eventdata, handles) CitraHasil = double(getimage(handles.axes_log1)); 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 function edit_mse2_createfcn(hobject, eventdata, handles) 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 function edit_psnr2_createfcn(hobject, eventdata, handles) % --- Executes on button press in btn_mse3. function btn_mse3_callback(hobject, eventdata, handles) citraasli=double(edge(citraasli,'prewitt')); CitraHasil = double(getimage(handles.axes_p1)); set(handles.edit_mse3,'string',mseval); % --- Executes on button press in btn_psnr3. function btn_psnr3_callback(hobject, eventdata, handles) CitraHasil = double(getimage(handles.axes_p1));
A-8 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 function edit_mse3_createfcn(hobject, eventdata, handles) 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 function edit_psnr3_createfcn(hobject, eventdata, handles) % --- 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); return % --- 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); return
A-9 % --- 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); return % --- 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)); return; ; % --- 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];
A-10 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); avg=4*count/(x*y); for i=1:1:x for j=1:1:y if output(i,j)<avg output(i,j)=0; output(i,j)=255; 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 SpeckleGaussianNoise.m function varargout = SpeckleGaussianNoise(varargin) gui_singleton = 1; gui_state = struct('gui_name', mfilename,... 'gui_singleton', gui_singleton,...
A-11 'gui_openingfcn', @SpeckleGaussianNoise_OpeningFcn,... 'gui_outputfcn', @SpeckleGaussianNoise_OutputFcn,... 'gui_layoutfcn', [],... 'gui_callback', []); if nargin && ischar(varargin{1}) gui_state.gui_callback = str2func(varargin{1}); if nargout [varargout{1:nargout}] = gui_mainfcn(gui_state, varargin{:}); gui_mainfcn(gui_state, varargin{:}); % --- 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)); 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)); set(handles.edit_psnr1,'string',psnrval); function edit_mse1_callback(hobject, eventdata, handles) function edit_mse1_createfcn(hobject, eventdata, handles)
A-12 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 function edit_psnr1_createfcn(hobject, eventdata, handles) % --- Executes on button press in btn_mse2. function btn_mse2_callback(hobject, eventdata, handles) citraasli=double(edge(citraasli,'log')); CitraHasil = double(getimage(handles.axes_log2)); set(handles.edit_mse2,'string',mseval); % --- Executes on button press in btn_psnr2. function btn_psnr2_callback(hobject, eventdata, handles) CitraHasil = double(getimage(handles.axes_log2)); 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 function edit_mse2_createfcn(hobject, eventdata, handles) 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 function edit_psnr2_createfcn(hobject, eventdata, handles)
A-13 % --- Executes on button press in btn_mse3. function btn_mse3_callback(hobject, eventdata, handles) citraasli=double(edge(citraasli,'prewitt')); CitraHasil = double(getimage(handles.axes_p2)); set(handles.edit_mse3,'string',mseval); % --- Executes on button press in btn_psnr3. function btn_psnr3_callback(hobject, eventdata, handles) CitraHasil = double(getimage(handles.axes_p2)); 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 function edit_mse3_createfcn(hobject, eventdata, handles) 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 function edit_psnr3_createfcn(hobject, eventdata, handles) % --- 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);
A-14 return % --- 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); return % --- 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); return % --- 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)); return; ; function edit_meang_callback(hobject, eventdata, handles) function edit_meang_createfcn(hobject, eventdata, handles)
A-15 function edit_varianceg_callback(hobject, eventdata, handles) function edit_varianceg_createfcn(hobject, eventdata, handles) function edit_variances_callback(hobject, eventdata, handles) function edit_variances_createfcn(hobject, eventdata, handles) % --- 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!'); 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); % --- 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!'); 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); % ------------------------------------------------------------------- - function backmenu_callback(hobject, eventdata, handles) AiSoftware close SpeckleGaussianNoise; % --- Executes on button press in btn_ed_mh.
A-16 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); avg=4*count/(x*y); for i=1:1:x for j=1:1:y if output(i,j)<avg output(i,j)=0; output(i,j)=255; prewitt_output=edge(citrap,'prewitt'); axes(handles.axes_p2); imshow(prewitt_output);
A-17 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}); if nargout [varargout{1:nargout}] = gui_mainfcn(gui_state, varargin{:}); gui_mainfcn(gui_state, varargin{:}); % 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)); 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));
A-18 set(handles.edit_psnr1,'string',psnrval); function edit_mse1_callback(hobject, eventdata, handles) function edit_mse1_createfcn(hobject, eventdata, handles) function edit_psnr1_callback(hobject, eventdata, handles) function edit_psnr1_createfcn(hobject, eventdata, handles) % --- Executes on button press in btn_mse2. function btn_mse2_callback(hobject, eventdata, handles) citraasli=double(edge(citraasli,'log')); CitraHasil = double(getimage(handles.axes_log3)); set(handles.edit_mse2,'string',mseval); % --- Executes on button press in btn_psnr2. function btn_psnr2_callback(hobject, eventdata, handles) CitraHasil = double(getimage(handles.axes_log3)); set(handles.edit_psnr2,'string',psnrval); function edit_mse2_callback(hobject, eventdata, handles) function edit_mse2_createfcn(hobject, eventdata, handles) function edit_psnr2_callback(hobject, eventdata, handles) function edit_psnr2_createfcn(hobject, eventdata, handles)
A-19 % --- Executes on button press in btn_mse3. function btn_mse3_callback(hobject, eventdata, handles) citraasli=double(edge(citraasli,'prewitt')); CitraHasil = double(getimage(handles.axes_p3)); set(handles.edit_mse3,'string',mseval); % --- Executes on button press in btn_psnr3. function btn_psnr3_callback(hobject, eventdata, handles) CitraHasil = double(getimage(handles.axes_p3)); set(handles.edit_psnr3,'string',psnrval); function edit_mse3_callback(hobject, eventdata, handles) function edit_mse3_createfcn(hobject, eventdata, handles) function edit_psnr3_callback(hobject, eventdata, handles) function edit_psnr3_createfcn(hobject, eventdata, handles) % --- 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); return % --- 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)
A-20 axes(handles.axes_log3); Citra = getimage(handles.axes_log3); imwrite(citra,filename); return % --- 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); return % --- 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)); return; ; function edit_meang_callback(hobject, eventdata, handles) function edit_meang_createfcn(hobject, eventdata, handles) function edit_varianceg_callback(hobject, eventdata, handles) function edit_varianceg_createfcn(hobject, eventdata, handles)
A-21 % --- 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!'); 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); 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));
A-22 %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); avg=4*count/(x*y); for i=1:1:x for j=1:1:y if output(i,j)<avg output(i,j)=0; output(i,j)=255; 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}); if nargout [varargout{1:nargout}] = gui_mainfcn(gui_state, varargin{:}); gui_mainfcn(gui_state, varargin{:}); % 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);
A-23 % --- 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)); 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)); set(handles.edit_psnr1,'string',psnrval); function edit_mse1_callback(hobject, eventdata, handles) function edit_mse1_createfcn(hobject, eventdata, handles) function edit_psnr1_callback(hobject, eventdata, handles) function edit_psnr1_createfcn(hobject, eventdata, handles) % --- Executes on button press in btn_mse2. function btn_mse2_callback(hobject, eventdata, handles) citraasli=double(edge(citraasli,'log')); CitraHasil = double(getimage(handles.axes_log4)); set(handles.edit_mse2,'string',mseval); % --- Executes on button press in btn_psnr2. function btn_psnr2_callback(hobject, eventdata, handles)
A-24 CitraHasil = double(getimage(handles.axes_log4)); set(handles.edit_psnr2,'string',psnrval); function edit_mse2_callback(hobject, eventdata, handles) function edit_mse2_createfcn(hobject, eventdata, handles) function edit_psnr2_callback(hobject, eventdata, handles) function edit_psnr2_createfcn(hobject, eventdata, handles) % --- Executes on button press in btn_mse3. function btn_mse3_callback(hobject, eventdata, handles) citraasli=double(edge(citraasli,'prewitt')); CitraHasil = double(getimage(handles.axes_p4)); set(handles.edit_mse3,'string',mseval); % --- Executes on button press in btn_psnr3. function btn_psnr3_callback(hobject, eventdata, handles) CitraHasil = double(getimage(handles.axes_p4)); set(handles.edit_psnr3,'string',psnrval); function edit_mse3_callback(hobject, eventdata, handles) function edit_mse3_createfcn(hobject, eventdata, handles) function edit_psnr3_callback(hobject, eventdata, handles) function edit_psnr3_createfcn(hobject, eventdata, handles)
A-25 % --- 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_mh4); Citra = getimage(handles.axes_mh4); imwrite(citra,filename); return % --- 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_log4); Citra = getimage(handles.axes_log4); imwrite(citra,filename); return % --- 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_p4); Citra = getimage(handles.axes_p4); imwrite(citra,filename); return % --- 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);
A-26 imshow(handles.citra); axes(handles.axes_histoasli); imhist(handles.citra(:,:,1)); imhist(handles.citra(:,:,2)); imhist(handles.citra(:,:,3)); return; ; function edit_variances_callback(hobject, eventdata, handles) function edit_variances_createfcn(hobject, eventdata, handles) % --- 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!'); citra_asli=handles.citra; variance=str2num(get(handles.edit_variances,'string')); citra_speckle = imnoise(citra_asli,'speckle',variance); axes(handles.axes_sn); imshow(citra_speckle); handles.citra2=citra_speckle; guidata(hobject,handles); % ------------------------------------------------------------------- - function backmenu_callback(hobject, eventdata, handles) AiSoftware close SpeckleNoise; % --- 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_mh4); 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_log4); imshow(ed_log); citragray = rgb2gray(handles.citra2); citrahistolog = edge(citragray,'log'); axes(handles.axes_histolog); imhist(citrahistolog);
A-27 % --- 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); avg=4*count/(x*y); for i=1:1:x for j=1:1:y if output(i,j)<avg output(i,j)=0; output(i,j)=255; prewitt_output=edge(citrap,'prewitt'); axes(handles.axes_p4); imshow(prewitt_output); citragray = rgb2gray(handles.citra2); citrahistop = edge(citragray,'prewitt'); axes(handles.axes_histop); imhist(citrahistop); deteksimarrhil.m function hasil=deteksimarrhil(citra_asli); citramh=rgb2gray(citra_asli); [x y]=size(citramh); mh_output=zeros(x,y); %MarrHildreth sigma=2; m=ceil(sigma*3)*2+1; h=fspecial('log',m,sigma); h=h-sum(h(:))/(m^2); diff2=zeros(x,y); dt=ceil((m-1)/2); for i=1:x
A-28 for j=1:y for k=1:m for l=1:m xp=i-k+1+dt; yp=j-l+1+dt; if((xp>=1)&&(xp<=x)&&(yp>=1)&&(yp<=y)) diff2(i,j)=diff2(i,j)+h(k,l)*double(citramh(xp,yp)); th=0.75*mean2(abs(diff2(2:x-1,2:y-1))); for i=2:x-1 for j=2:y-1 if(diff2(i,j)<0) if((diff2(i,j-1)>0)&&(diff2(i,j-1)- diff2(i,j)>th)) mh_output(i,j)=1; if((diff2(i,j+1)>0)&&(diff2(i,j+1)- diff2(i,j)>th)) mh_output(i,j)=1; if((diff2(i-1,j)>0)&&(diff2(i-1,j)- diff2(i,j)>th)) mh_output(i,j)=1; if((diff2(i+1,j)>0)&&(diff2(i+1,j)- diff2(i,j)>th)) mh_output(i,j)=1; if(diff2(i,j)==0) if((diff2(i,j- 1)<0)&&(diff2(i,j+1)>0)&&(diff2(i,j+1)-diff2(i,j-1)>2*th)) mh_output(i,j)=1; if((diff2(i,j- 1)>0)&&(diff2(i,j+1)<0)&&(diff2(i,j-1)-diff2(i,j+1)>2*th)) mh_output(i,j)=1; if((diff2(i- 1,j)<0)&&(diff2(i+1,j)>0)&&(diff2(i+1,j)-diff2(i-1,j)>2*th)) mh_output(i,j)=1; if((diff2(i-1,j)>0)&&(diff2(i+1,j)<0)&&(diff2(i- 1,j)-diff2(i+1,j)>2*th)) mh_output(i,j)=1; hasil=mh_output; CURRICULUM VITAE Nama : Nur Ainun Alamat : Jl. Pusaka No.921, Pasar XI Tembung, Medan, 20371. Telp/Hp : 085760933254 Email : ainunkhan@gmail.com Riwayat Pidikan
B-2 2009-2013 : S1 Ilmu Komputer, Medan 2006-2009 : MAN 1 Medan 2003-2006 : MTsN 2 Medan 1997-2003 : SD Pahlawan Nasional, Medan Riwayat Organisasi Periode Nama Organisasi Lingkup Jabatan 2005-2006 OSIS Mtsn 2 Medan Sekolah Anggota Dept. Agama 2007-2009 Tarung Derajat Satlat MAN 1 Medan Sekolah Sekretaris 2007-2008 OSIS MAN 1 Medan Sekolah Sekretaris Ketua II 2008-2009 OSIS MAN 1 Medan Sekolah Ketua II 2009-2011 BKM Al-Khuwarizmi Program Studi Anggota Biro Administrasi. Sekretaris Bidang Syiar 2010-2011 PEMA F-MIPA USU Fakultas Anggota Dept. Agama Islam 2010-2011 IMILKOM USU Program Studi Sekretaris Bidang Kemahasiswaan 2011-2012 IMILKOM USU Program Studi Sekretaris Umum 2012-2013 IMILKOM USU Program Studi Ketua Dept. Dana dan Usaha 2012-2013 PEMA Fasilkom-TI Fakultas Anggota Dept. Kemahasiswaan 2013-2014 IMILKOM USU Program Studi Dewan Penasehat