SEMUA EVENT CALLBACK GUI MATLAB:
function varargout = deteksi_vessel_retina_gabor_glm(varargin)
% DETEKSI_VESSEL_RETINA_GABOR_GLM MATLAB code for deteksi_vessel_retina_gabor_glm.fig
% DETEKSI_VESSEL_RETINA_GABOR_GLM, by itself, creates a new DETEKSI_VESSEL_RETINA_GABOR_GLM or raises the existing
% singleton*.
%
% H = DETEKSI_VESSEL_RETINA_GABOR_GLM returns the handle to a new DETEKSI_VESSEL_RETINA_GABOR_GLM or the handle to
% the existing singleton*.
%
% DETEKSI_VESSEL_RETINA_GABOR_GLM('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in DETEKSI_VESSEL_RETINA_GABOR_GLM.M with the given input arguments.
%
% DETEKSI_VESSEL_RETINA_GABOR_GLM('Property','Value',...) creates a new DETEKSI_VESSEL_RETINA_GABOR_GLM or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before deteksi_vessel_retina_gabor_glm_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to deteksi_vessel_retina_gabor_glm_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help deteksi_vessel_retina_gabor_glm
% Last Modified by GUIDE v2.5 18-Mar-2017 10:44:01
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @deteksi_vessel_retina_gabor_glm_OpeningFcn, ...
'gui_OutputFcn', @deteksi_vessel_retina_gabor_glm_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 deteksi_vessel_retina_gabor_glm is made visible.
function deteksi_vessel_retina_gabor_glm_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to deteksi_vessel_retina_gabor_glm (see VARARGIN)
% Choose default command line output for deteksi_vessel_retina_gabor_glm
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes deteksi_vessel_retina_gabor_glm wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = deteksi_vessel_retina_gabor_glm_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
[namafile namapath]=uigetfile('*.jpg;*.bmp;*.jpeg;*.png;*.tif;','Pilih Sebuah Citra');
namacitra=[namapath namafile];
if(size(namacitra,3) == 3)
namacitra = rgb2gray(namacitra);
end
axes(handles.axes1)
imshow(namacitra); title('Citra 1');
global I
I = getimage(handles.axes1);
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global I
size(I)
switch get(handles.popupmenu1,'Value')
case 1
kabur = I;
case 2
H = fspecial('average',11);
kabur = imfilter(I,H,'replicate');
case 3
H = fspecial('motion',20,45);
kabur = imfilter(I,H,'replicate');
case 4
H = fspecial('disk',10);
kabur = imfilter(I,H,'replicate');
case 5
H = fspecial('gaussian',[11 11], 10);
kabur = imfilter(I,H,'replicate');
end
axes(handles.axes3)
imshow(uint8(kabur));
%axes(handles.axes3)
%imhist(uint8(kabur),128);
global I_kabur
I_kabur = getimage(handles.axes3);
% --- Executes on button press in pushbutton3.
function pushbutton3_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global I_kabur
size(I_kabur)
% Mendefinisikan variansi derau
variansi = str2double(get(handles.editVariansi,'String'));
switch get(handles.popupmenu2,'Value')
case 1
derau = imnoise(I_kabur,'gaussian', 0,variansi);
case 2
derau = imnoise(I_kabur, 'poisson');
case 3
derau = imnoise(I_kabur,'salt & pepper',variansi);
case 4
derau = imnoise(I_kabur,'speckle',variansi);
end
axes(handles.axes3)
imshow(uint8(derau));
%axes(handles.axes3)
%imhist(uint8(derau),128);
global I_derau
I_derau = derau;
% --- Executes on button press in tapis inverse.
function pushbutton4_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%global I_derau
%global I_kabur
global I
%kasus 1
% Mendefinisikan variansi derau
variansi = str2double(get(handles.editVariansi,'String'));
mu=20;
lambda=1;
[M,N]=size(I);
H1 = fspecial('average',11);
kabur1 = imfilter(I,H1,'replicate');
derau1 = imnoise(kabur1,'gaussian', 0,variansi);
g_denoise_atv = SB_ATV(double(derau1),mu,0.1,lambda);
error = double(I) - reshape(g_denoise_atv,M,M);
MSE1 = sum(sum(error .* error)) / (M * M);
set(handles.edit1, 'String', num2str(MSE1));
%kasus 2
H2 = fspecial('gaussian',[11 11], 10);
kabur2 = imfilter(I,H2,'replicate');
derau2 = imnoise(kabur2, 'poisson');
g_denoise_atv = SB_ATV(double(derau2),mu,0.1,lambda);
error = double(I) - reshape(g_denoise_atv,M,M);
MSE2 = sum(sum(error .* error)) / (M * M);
set(handles.edit5, 'String', num2str(MSE2));
%kasus 3
H3 = fspecial('disk',10);
kabur3 = imfilter(I,H3,'replicate');
derau3 = imnoise(kabur3,'salt & pepper',variansi);
g_denoise_atv = SB_ATV(double(derau3),mu,0.1,lambda);
error = double(I) - reshape(g_denoise_atv,M,M);
MSE3 = sum(sum(error .* error)) / (M * M);
set(handles.edit9, 'String', num2str(MSE3));
%kasus 4
H4 = fspecial('motion',20,45);
kabur4 = imfilter(I,H4,'replicate');
derau4 = imnoise(kabur4,'speckle',variansi);
g_denoise_atv = SB_ATV(double(derau4),mu,0.1,lambda);
error = double(I) - reshape(g_denoise_atv,M,M);
MSE4 = sum(sum(error .* error)) / (M * M);
set(handles.edit13, 'String', num2str(MSE4));
MSE_1 = [MSE1 MSE2 MSE3 MSE4];
global MSE_1
% --- Executes on selection change in popupmenu1.
function popupmenu1_Callback(hObject, eventdata, handles)
% hObject handle to popupmenu1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: contents = cellstr(get(hObject,'String')) returns popupmenu1 contents as cell array
% contents{get(hObject,'Value')} returns selected item from popupmenu1
% --- Executes during object creation, after setting all properties.
function popupmenu1_CreateFcn(hObject, eventdata, handles)
% hObject handle to popupmenu1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: popupmenu 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 selection change in popupmenu2.
function popupmenu2_Callback(hObject, eventdata, handles)
% hObject handle to popupmenu2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: contents = cellstr(get(hObject,'String')) returns popupmenu2 contents as cell array
% contents{get(hObject,'Value')} returns selected item from popupmenu2
% --- Executes during object creation, after setting all properties.
function popupmenu2_CreateFcn(hObject, eventdata, handles)
% hObject handle to popupmenu2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: popupmenu 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 pushbutton5.
function pushbutton5_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton5 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global I
%kasus 1
% Mendefinisikan variansi derau
variansi = str2double(get(handles.editVariansi,'String'));
mu=20;
lambda=1;
tol=0.05;
[M,N]=size(I);
H1 = fspecial('average',11);
kabur1 = imfilter(I,H1,'replicate');
derau1 = imnoise(kabur1,'gaussian', 0,variansi);
g_denoise_atv = SB_ATV(double(derau1),mu,tol,lambda);
error = double(I) - reshape(g_denoise_atv,M,M);
MSE1 = sum(sum(error .* error)) / (M * M);
set(handles.edit2, 'String', num2str(MSE1));
%kasus 2
H2 = fspecial('gaussian',[11 11], 10);
kabur2 = imfilter(I,H2,'replicate');
derau2 = imnoise(kabur2, 'poisson');
g_denoise_atv = SB_ATV(double(derau2),mu,tol,lambda);
error = double(I) - reshape(g_denoise_atv,M,M);
MSE2 = sum(sum(error .* error)) / (M * M);
set(handles.edit6, 'String', num2str(MSE2));
%kasus 3
H3 = fspecial('disk',10);
kabur3 = imfilter(I,H3,'replicate');
derau3 = imnoise(kabur3,'salt & pepper',variansi);
g_denoise_atv = SB_ATV(double(derau3),mu,tol,lambda);
error = double(I) - reshape(g_denoise_atv,M,M);
MSE3 = sum(sum(error .* error)) / (M * M);
set(handles.edit10, 'String', num2str(MSE3));
%kasus 4
H4 = fspecial('motion',20,45);
kabur4 = imfilter(I,H4,'replicate');
derau4 = imnoise(kabur4,'speckle',variansi);
g_denoise_atv = SB_ATV(double(derau4),mu,tol,lambda);
error = double(I) - reshape(g_denoise_atv,M,M);
MSE4 = sum(sum(error .* error)) / (M * M);
set(handles.edit14, 'String', num2str(MSE4));
MSE_2 = [MSE1 MSE2 MSE3 MSE4];
global MSE_2
% --- Executes on button press in pushbutton6.
function pushbutton6_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton6 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global I
%kasus 1
% Mendefinisikan variansi derau
variansi = str2double(get(handles.editVariansi,'String'));
mu=20;
lambda=1;
tol=0.01
[M,N]=size(I);
H1 = fspecial('average',11);
kabur1 = imfilter(I,H1,'replicate');
derau1 = imnoise(kabur1,'gaussian', 0,variansi);
g_denoise_atv = SB_ATV(double(derau1),mu,tol,lambda);
error = double(I) - reshape(g_denoise_atv,M,M);
MSE1 = sum(sum(error .* error)) / (M * M);
set(handles.edit3, 'String', num2str(MSE1));
%kasus 2
H2 = fspecial('gaussian',[11 11], 10);
kabur2 = imfilter(I,H2,'replicate');
derau2 = imnoise(kabur2, 'poisson');
g_denoise_atv = SB_ATV(double(derau2),mu,tol,lambda);
error = double(I) - reshape(g_denoise_atv,M,M);
MSE2 = sum(sum(error .* error)) / (M * M);
set(handles.edit7, 'String', num2str(MSE2));
%kasus 3
H3 = fspecial('disk',10);
kabur3 = imfilter(I,H3,'replicate');
derau3 = imnoise(kabur3,'salt & pepper',variansi);
g_denoise_atv = SB_ATV(double(derau3),mu,tol,lambda);
error = double(I) - reshape(g_denoise_atv,M,M);
MSE3 = sum(sum(error .* error)) / (M * M);
set(handles.edit11, 'String', num2str(MSE3));
%kasus 4
H4 = fspecial('motion',20,45);
kabur4 = imfilter(I,H4,'replicate');
derau4 = imnoise(kabur4,'speckle',variansi);
g_denoise_atv = SB_ATV(double(derau4),mu,tol,lambda);
error = double(I) - reshape(g_denoise_atv,M,M);
MSE4 = sum(sum(error .* error)) / (M * M);
set(handles.edit15, 'String', num2str(MSE4));
MSE_3 = [MSE1 MSE2 MSE3 MSE4];
global MSE_3
% --- Executes on button press in pushbutton7.
function pushbutton7_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton7 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global I
%kasus 1
% Mendefinisikan variansi derau
variansi = str2double(get(handles.editVariansi,'String'));
mu=20;
lambda=1;
tol=0.005
[M,N]=size(I);
H1 = fspecial('average',11);
kabur1 = imfilter(I,H1,'replicate');
derau1 = imnoise(kabur1,'gaussian', 0,variansi);
g_denoise_atv = SB_ATV(double(derau1),mu,tol,lambda);
error = double(I) - reshape(g_denoise_atv,M,M);
MSE1 = sum(sum(error .* error)) / (M * M);
set(handles.edit4, 'String', num2str(MSE1));
%kasus 2
H2 = fspecial('gaussian',[11 11], 10);
kabur2 = imfilter(I,H2,'replicate');
derau2 = imnoise(kabur2, 'poisson');
g_denoise_atv = SB_ATV(double(derau2),mu,tol,lambda);
error = double(I) - reshape(g_denoise_atv,M,M);
MSE2 = sum(sum(error .* error)) / (M * M);
set(handles.edit8, 'String', num2str(MSE2));
%kasus 3
H3 = fspecial('disk',10);
kabur3 = imfilter(I,H3,'replicate');
derau3 = imnoise(kabur3,'salt & pepper',variansi);
g_denoise_atv = SB_ATV(double(derau3),mu,tol,lambda);
error = double(I) - reshape(g_denoise_atv,M,M);
MSE3 = sum(sum(error .* error)) / (M * M);
set(handles.edit12, 'String', num2str(MSE3));
%kasus 4
H4 = fspecial('motion',20,45);
kabur4 = imfilter(I,H4,'replicate');
derau4 = imnoise(kabur4,'speckle',variansi);
g_denoise_atv = SB_ATV(double(derau4),mu,tol,lambda);
error = double(I) - reshape(g_denoise_atv,M,M);
MSE4 = sum(sum(error .* error)) / (M * M);
set(handles.edit16, 'String', num2str(MSE4));
MSE_4 = [MSE1 MSE2 MSE3 MSE4];
global MSE_4
% --- Executes on button press in pushbutton8.
function pushbutton8_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton8 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
function edit1_Callback(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit1 as text
% str2double(get(hObject,'String')) returns contents of edit1 as a double
% --- Executes during object creation, after setting all properties.
function edit1_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 edit2_Callback(hObject, eventdata, handles)
% hObject handle to edit2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit2 as text
% str2double(get(hObject,'String')) returns contents of edit2 as a double
% --- Executes during object creation, after setting all properties.
function edit2_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 edit3_Callback(hObject, eventdata, handles)
% hObject handle to edit3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit3 as text
% str2double(get(hObject,'String')) returns contents of edit3 as a double
% --- Executes during object creation, after setting all properties.
function edit3_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 edit4_Callback(hObject, eventdata, handles)
% hObject handle to edit4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit4 as text
% str2double(get(hObject,'String')) returns contents of edit4 as a double
% --- Executes during object creation, after setting all properties.
function edit4_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 selection change in popupmenu4.
function popupmenu4_Callback(hObject, eventdata, handles)
% hObject handle to popupmenu4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: contents = cellstr(get(hObject,'String')) returns popupmenu4 contents as cell array
% contents{get(hObject,'Value')} returns selected item from popupmenu4
% --- Executes during object creation, after setting all properties.
function popupmenu4_CreateFcn(hObject, eventdata, handles)
% hObject handle to popupmenu4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: popupmenu 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 selection change in popupmenu3.
function popupmenu3_Callback(hObject, eventdata, handles)
% hObject handle to popupmenu3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: contents = cellstr(get(hObject,'String')) returns popupmenu3 contents as cell array
% contents{get(hObject,'Value')} returns selected item from popupmenu3
% --- Executes during object creation, after setting all properties.
function popupmenu3_CreateFcn(hObject, eventdata, handles)
% hObject handle to popupmenu3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: popupmenu 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 pushbutton14.
function pushbutton14_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton14 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% --- Executes on button press in pushbutton13.
function pushbutton13_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton13 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% --- Executes on button press in pushbutton12.
function pushbutton12_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton12 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% --- Executes on button press in pushbutton9.
function pushbutton9_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton9 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
function edit5_Callback(hObject, eventdata, handles)
% hObject handle to edit5 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit5 as text
% str2double(get(hObject,'String')) returns contents of edit5 as a double
% --- Executes during object creation, after setting all properties.
function edit5_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit5 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 edit6_Callback(hObject, eventdata, handles)
% hObject handle to edit6 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit6 as text
% str2double(get(hObject,'String')) returns contents of edit6 as a double
% --- Executes during object creation, after setting all properties.
function edit6_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit6 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 edit7_Callback(hObject, eventdata, handles)
% hObject handle to edit7 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit7 as text
% str2double(get(hObject,'String')) returns contents of edit7 as a double
% --- Executes during object creation, after setting all properties.
function edit7_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit7 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 edit8_Callback(hObject, eventdata, handles)
% hObject handle to edit8 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit8 as text
% str2double(get(hObject,'String')) returns contents of edit8 as a double
% --- Executes during object creation, after setting all properties.
function edit8_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit8 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 pushbutton10.
function pushbutton10_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton10 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
function edit9_Callback(hObject, eventdata, handles)
% hObject handle to edit9 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit9 as text
% str2double(get(hObject,'String')) returns contents of edit9 as a double
% --- Executes during object creation, after setting all properties.
function edit9_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit9 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 edit10_Callback(hObject, eventdata, handles)
% hObject handle to edit10 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit10 as text
% str2double(get(hObject,'String')) returns contents of edit10 as a double
% --- Executes during object creation, after setting all properties.
function edit10_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit10 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 edit11_Callback(hObject, eventdata, handles)
% hObject handle to edit11 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit11 as text
% str2double(get(hObject,'String')) returns contents of edit11 as a double
% --- Executes during object creation, after setting all properties.
function edit11_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit11 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 edit12_Callback(hObject, eventdata, handles)
% hObject handle to edit12 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit12 as text
% str2double(get(hObject,'String')) returns contents of edit12 as a double
% --- Executes during object creation, after setting all properties.
function edit12_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit12 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 pushbutton11.
function pushbutton11_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton11 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
function edit13_Callback(hObject, eventdata, handles)
% hObject handle to edit13 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit13 as text
% str2double(get(hObject,'String')) returns contents of edit13 as a double
% --- Executes during object creation, after setting all properties.
function edit13_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit13 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 edit14_Callback(hObject, eventdata, handles)
% hObject handle to edit14 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit14 as text
% str2double(get(hObject,'String')) returns contents of edit14 as a double
% --- Executes during object creation, after setting all properties.
function edit14_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit14 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 edit15_Callback(hObject, eventdata, handles)
% hObject handle to edit15 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit15 as text
% str2double(get(hObject,'String')) returns contents of edit15 as a double
% --- Executes during object creation, after setting all properties.
function edit15_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit15 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 edit16_Callback(hObject, eventdata, handles)
% hObject handle to edit16 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit16 as text
% str2double(get(hObject,'String')) returns contents of edit16 as a double
% --- Executes during object creation, after setting all properties.
function edit16_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit16 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 pushbutton15.
function pushbutton15_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton15 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
cla(handles.axes1,'reset');
cla(handles.axes2,'reset');
cla(handles.axes3,'reset');
cla(handles.axes4,'reset');
cla(handles.axes5,'reset');
set(handles.edit1, 'String', num2str(0));
set(handles.edit2, 'String', num2str(0));
set(handles.edit3, 'String', num2str(0));
set(handles.edit4, 'String', num2str(0));
set(handles.edit5, 'String', num2str(0));
set(handles.edit6, 'String', num2str(0));
set(handles.edit7, 'String', num2str(0));
set(handles.edit8, 'String', num2str(0));
set(handles.edit9, 'String', num2str(0));
set(handles.edit10, 'String', num2str(0));
set(handles.edit11, 'String', num2str(0));
set(handles.edit12, 'String', num2str(0));
set(handles.edit13, 'String', num2str(0));
set(handles.edit14, 'String', num2str(0));
set(handles.edit15, 'String', num2str(0));
set(handles.edit16, 'String', num2str(0));
set(handles.edit18, 'String', num2str(0));
% --- Executes on button press in pushbutton16.
function pushbutton16_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton16 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
close(denoising_adaptif_wavelet);
% --- Executes when selected object is changed in uipanel4.
function uipanel4_SelectionChangeFcn(hObject, eventdata, handles)
% hObject handle to the selected object in uipanel4
% eventdata structure with the following fields (see UIBUTTONGROUP)
% EventName: string 'SelectionChanged' (read only)
% OldValue: handle of the previously selected object or empty if none was selected
% NewValue: handle of the currently selected object
% handles structure with handles and user data (see GUIDATA)
global I_derau
global I
g = I_derau;
[N,M]=size(g);
switch get(eventdata.NewValue,'Tag') % Mendapatkan tag dari objek terseleksi
case 'radiobutton1'
% Mendefinisikan level dekomposisi
level = str2double(get(handles.editLevel,'String'));
% Mendefinisikan variansi derau
variansi = str2double(get(handles.editVariansi,'String'));
% Mendefinisikan wavelet
switch get(handles.popupmenu5,'Value')
case 1
wavelet = 'db4';
case 2
wavelet = 'db8';
case 3
wavelet = 'coif4';
case 4
wavelet = 'sym3';
case 5
wavelet = 'bior3.7';
end
%Melakukan dekomposisi wavelet
[C,S]=wavedec2(g,level,wavelet);
%Universal Shrink (US)
M=size(g,1)^2;
US=variansi*sqrt(2*log(M))
%Ambang-batas halus
%Hanya pada koefisien-koefisien aproksimasi
softC=[wthresh(C(1:S(1,1)^2),'s',US), C(S(1,1)^2+1:length(C))];
%Pada koefisien-koefisien detil
%softC=[C(1:S(1,1)^2), wthresh(C(S(1,1)^2+1:length(C)),'s',US)];
%Merekonstruksi citra dari koefisien-koefisien hasil ambang-batas
citraBaru=waverec2(softC,S,wavelet);
%Menampilkan hasil citra ambang-batas
axes(handles.axes4)
imagesc(citraBaru); axis off;
error = double(I) - citraBaru;
MSE1 = sum(sum(error .* error)) / (M * N);
set(handles.edit18, 'String', num2str(MSE1));
case 'radiobutton2'
% Mendefinisikan level dekomposisi
level = str2double(get(handles.editLevel,'String'));
% Mendefinisikan variansi derau
variansi = str2double(get(handles.editVariansi,'String'));
% Mendefinisikan wavelet
switch get(handles.popupmenu5,'Value')
case 1
wavelet = 'db4';
case 2
wavelet = 'db8';
case 3
wavelet = 'coif4';
case 4
wavelet = 'sym3';
case 5
wavelet = 'bior3.7';
end
%Melakukan dekomposisi wavelet
[C,S]=wavedec2(g,level,wavelet);
%Visu Shrink (VS)
N=size(g,1)^2;
VS=variansi*sqrt(2*log(N*N)) + 0.25*max(C);
%Ambang-batas halus
%Hanya pada koefisien-koefisien aproksimasi
softC=[wthresh(C(1:S(1,1)^2),'h',VS), C(S(1,1)^2+1:length(C))];
%Pada koefisien-koefisien detil
%softC=[C(1:S(1,1)^2), wthresh(C(S(1,1)^2+1:length(C)),'s',US)];
%Merekonstruksi citra dari koefisien-koefisien hasil ambang-batas
citraBaru=waverec2(softC,S,wavelet);
%Menampilkan hasil citra ambang-batas
axes(handles.axes4)
imagesc(citraBaru); axis off;
error = double(I) - citraBaru;
MSE1 = sum(sum(error .* error)) / (M * N);
set(handles.edit18, 'String', num2str(MSE1));
case 'radiobutton3'
% Mendefinisikan level dekomposisi
level = str2double(get(handles.editLevel,'String'));
% Mendefinisikan variansi derau
variansi = str2double(get(handles.editVariansi,'String'));
% Mendefinisikan wavelet
switch get(handles.popupmenu5,'Value')
case 1
wavelet = 'db4';
case 2
wavelet = 'db8';
case 3
wavelet = 'coif4';
case 4
wavelet = 'sym3';
case 5
wavelet = 'bior3.7';
end
%Melakukan dekomposisi wavelet
[C,S]=wavedec2(g,level,wavelet);
%Minimax Shrink (MS)
N=size(g,1)^2;
MS=0.394+0.264*log(N)+ 0.5*max(C);
%Ambang-batas halus
%Hanya pada koefisien-koefisien aproksimasi
softC=[wthresh(C(1:S(1,1)^2),'h',MS), C(S(1,1)^2+1:length(C))];
%Pada koefisien-koefisien detil
%softC=[C(1:S(1,1)^2), wthresh(C(S(1,1)^2+1:length(C)),'s',US)];
%Merekonstruksi citra dari koefisien-koefisien hasil ambang-batas
citraBaru=waverec2(softC,S,wavelet);
%Menampilkan hasil citra ambang-batas
axes(handles.axes4)
imagesc(citraBaru); axis off;
error = double(I) - citraBaru;
MSE1 = sum(sum(error .* error)) / (M * N);
set(handles.edit18, 'String', num2str(MSE1));
case 'radiobutton4'
% Mendefinisikan level dekomposisi
level = str2double(get(handles.editLevel,'String'));
% Mendefinisikan variansi derau
variansi = str2double(get(handles.editVariansi,'String'));
% Mendefinisikan wavelet
switch get(handles.popupmenu5,'Value')
case 1
wavelet = 'db4';
case 2
wavelet = 'db8';
case 3
wavelet = 'coif4';
case 4
wavelet = 'sym3';
case 5
wavelet = 'bior3.7';
end
%Melakukan dekomposisi wavelet
%[C,S]=wavedec2(g,level,wavelet);
% Ambang-batas SURE Shrink (SS)
citraBaru = NeighShrinkSUREdenoise(g, variansi, wavelet, level);
%Menampilkan hasil citra ambang-batas
axes(handles.axes4)
imagesc(citraBaru); axis off;
error = double(I) - citraBaru;
MSE1 = sum(sum(error .* error)) / ((M * N)*N);
set(handles.edit18, 'String', num2str(MSE1));
case 'radiobutton9'
% Mendefinisikan level dekomposisi
level = str2double(get(handles.editLevel,'String'));
% Mendefinisikan variansi derau
variansi = str2double(get(handles.editVariansi,'String'));
% Mendefinisikan wavelet
switch get(handles.popupmenu5,'Value')
case 1
wavelet = 'db4';
case 2
wavelet = 'db8';
case 3
wavelet = 'coif4';
case 4
wavelet = 'sym3';
case 5
wavelet = 'bior3.7';
end
%Melakukan dekomposisi wavelet
[C,S]=wavedec2(g,level,wavelet);
% Ambang-batas Bayes Shrink (SS)
SS = bayesthf(g,variansi) + 0.25*max(C);
%Ambang-batas halus
%Hanya pada koefisien-koefisien aproksimasi
softC=[wthresh(C(1:S(1,1)^2),'h',SS), C(S(1,1)^2+1:length(C))];
%Pada koefisien-koefisien detil
%softC=[C(1:S(1,1)^2), wthresh(C(S(1,1)^2+1:length(C)),'s',US)];
%Merekonstruksi citra dari koefisien-koefisien hasil ambang-batas
citraBaru=waverec2(softC,S,wavelet);
%Menampilkan hasil citra ambang-batas
axes(handles.axes4)
imagesc(citraBaru); axis off;
error = double(I) - citraBaru;
MSE1 = sum(sum(error .* error)) / ((M * N)*N);
set(handles.edit18, 'String', num2str(MSE1));
end
function edit17_Callback(hObject, eventdata, handles)
% hObject handle to edit17 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit17 as text
% str2double(get(hObject,'String')) returns contents of edit17 as a double
% --- Executes during object creation, after setting all properties.
function edit17_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit17 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 slider movement.
function slider2_Callback(hObject, eventdata, handles)
% hObject handle to slider2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'Value') returns position of slider
% get(hObject,'Min') and get(hObject,'Max') to determine range of slider
% --- Executes during object creation, after setting all properties.
function slider2_CreateFcn(hObject, eventdata, handles)
% hObject handle to slider2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: slider controls usually have a light gray background.
if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor',[.9 .9 .9]);
end
function edit18_Callback(hObject, eventdata, handles)
% hObject handle to edit18 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit18 as text
% str2double(get(hObject,'String')) returns contents of edit18 as a double
% --- Executes during object creation, after setting all properties.
function edit18_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit18 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 edit19_Callback(hObject, eventdata, handles)
% hObject handle to edit19 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit19 as text
% str2double(get(hObject,'String')) returns contents of edit19 as a double
% --- Executes during object creation, after setting all properties.
function edit19_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit19 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 edit20_Callback(hObject, eventdata, handles)
% hObject handle to edit20 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit20 as text
% str2double(get(hObject,'String')) returns contents of edit20 as a double
% --- Executes during object creation, after setting all properties.
function edit20_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit20 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 edit21_Callback(hObject, eventdata, handles)
% hObject handle to edit21 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit21 as text
% str2double(get(hObject,'String')) returns contents of edit21 as a double
% --- Executes during object creation, after setting all properties.
function edit21_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit21 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 edit22_Callback(hObject, eventdata, handles)
% hObject handle to edit22 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit22 as text
% str2double(get(hObject,'String')) returns contents of edit22 as a double
% --- Executes during object creation, after setting all properties.
function edit22_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit22 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 pushbutton17.
function pushbutton17_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton17 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global MSE_1
global MSE_2
global MSE_3
global MSE_4
global MSE_5
axes(handles.axes5)
plot(MSE_1,'-.r*')
hold on
plot(MSE_2,'--mo')
plot(MSE_3,':bs')
plot(MSE_4,'-kd')
plot(MSE_5,'--kd')
hold off
legend('0.1','0.05', '0.01', '0.005', '0.001');
title('Perbandingan MSE dari lima teknik ambang-batas adaptif');
axis([1 4 -1 500])
% --- Executes on button press in pushbutton18.
function pushbutton18_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton18 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
tol = str2double(get(handles.editKunci,'String'));
lambda = str2double(get(handles.editLambda,'String'));
mu = str2double(get(handles.editMu,'String'));
% Memuat citra
X=im2double(getimage(handles.axes3));
[N,M] = size(X);
H = fspecial('gaussian', [9 9], 2);
g_denoise_itv = SB_ITV(X,mu,tol,lambda);
% Menampilkan hasil
axes(handles.axes4); imagesc(reshape(g_denoise_itv,N,N)); axis image;
title('Denoising Tv Isotropis');
function editLevel_Callback(hObject, eventdata, handles)
% hObject handle to editLevel (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of editLevel as text
% str2double(get(hObject,'String')) returns contents of editLevel as a double
% --- Executes during object creation, after setting all properties.
function editLevel_CreateFcn(hObject, eventdata, handles)
% hObject handle to editLevel (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 during object creation, after setting all properties.
function uipanel4_CreateFcn(hObject, eventdata, handles)
% hObject handle to uipanel4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
function edit32_Callback(hObject, eventdata, handles)
% hObject handle to edit32 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit32 as text
% str2double(get(hObject,'String')) returns contents of edit32 as a double
% --- Executes during object creation, after setting all properties.
function edit32_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit32 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 selection change in popupmenu5.
function popupmenu5_Callback(hObject, eventdata, handles)
% hObject handle to popupmenu5 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: contents = cellstr(get(hObject,'String')) returns popupmenu5 contents as cell array
% contents{get(hObject,'Value')} returns selected item from popupmenu5
% --- Executes during object creation, after setting all properties.
function popupmenu5_CreateFcn(hObject, eventdata, handles)
% hObject handle to popupmenu5 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: popupmenu 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 editVariansi_Callback(hObject, eventdata, handles)
% hObject handle to editVariansi (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of editVariansi as text
% str2double(get(hObject,'String')) returns contents of editVariansi as a double
% --- Executes during object creation, after setting all properties.
function editVariansi_CreateFcn(hObject, eventdata, handles)
% hObject handle to editVariansi (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 when selected object is changed in uipanel10.
function uipanel10_SelectionChangeFcn(hObject, eventdata, handles)
% hObject handle to the selected object in uipanel10
% eventdata structure with the following fields (see UIBUTTONGROUP)
% EventName: string 'SelectionChanged' (read only)
% OldValue: handle of the previously selected object or empty if none was selected
% NewValue: handle of the currently selected object
% handles structure with handles and user data (see GUIDATA)
global I_derau
global I
g = I_derau;
[N,M]=size(g);
% Mendefinisikan level dekomposisi
level = str2double(get(handles.editLevel,'String'));
% Mendefinisikan variansi derau
variansi = str2double(get(handles.editVariansi,'String'));
% Mendefinisikan wavelet
switch get(handles.popupmenu5,'Value')
case 1
wavelet = 'db4';
case 2
wavelet = 'db8';
case 3
wavelet = 'coif4';
case 4
wavelet = 'sym3';
case 5
wavelet = 'bior3.7';
end
switch get(eventdata.NewValue,'Tag') % Mendapatkan tag dari objek terseleksi
case 'radiobutton20'
%Melakukan dekomposisi wavelet
[C,S]=wavedec2(g,level,wavelet);
%Universal Shrink (US)
M=size(g,1)^2;
US=variansi*sqrt(2*log(M))+ 0.01*max(C);
%Ambang-batas halus
%Hanya pada koefisien-koefisien aproksimasi
%softC=[wthresh(C(1:S(1,1)^2),'s',US), C(S(1,1)^2+1:length(C))];
%Pada koefisien-koefisien detil
softC=[C(1:S(1,1)^2), wthresh(C(S(1,1)^2+1:length(C)),'s',US)];
%Merekonstruksi citra dari koefisien-koefisien hasil ambang-batas
citraBaru=waverec2(softC,S,wavelet);
%Menampilkan hasil citra ambang-batas
axes(handles.axes4)
imagesc(citraBaru); axis off;
error = double(I) - citraBaru;
MSE1 = sum(sum(error .* error)) / (M * N);
set(handles.edit32, 'String', num2str(MSE1));
case 'radiobutton21'
% Mendefinisikan level dekomposisi
level = str2double(get(handles.editLevel,'String'));
% Mendefinisikan variansi derau
variansi = str2double(get(handles.editVariansi,'String'));
% Mendefinisikan wavelet
switch get(handles.popupmenu5,'Value')
case 1
wavelet = 'db4';
case 2
wavelet = 'db8';
case 3
wavelet = 'coif4';
case 4
wavelet = 'sym3';
case 5
wavelet = 'bior3.7';
end
%Melakukan dekomposisi wavelet
[C,S]=wavedec2(g,level,wavelet);
%Visu Shrink (VS)
N=size(g,1)^2;
VS=variansi*sqrt(2*log(N*N)) + 0.75*max(C);
%Ambang-batas halus
%Hanya pada koefisien-koefisien aproksimasi
%softC=[wthresh(C(1:S(1,1)^2),'h',VS), C(S(1,1)^2+1:length(C))];
%Pada koefisien-koefisien detil
softC=[C(1:S(1,1)^2), wthresh(C(S(1,1)^2+1:length(C)),'s',VS)];
%Merekonstruksi citra dari koefisien-koefisien hasil ambang-batas
citraBaru=waverec2(softC,S,wavelet);
%Menampilkan hasil citra ambang-batas
axes(handles.axes4)
imagesc(citraBaru); axis off;
error = double(I) - citraBaru;
MSE1 = sum(sum(error .* error)) / (M * N);
set(handles.edit32, 'String', num2str(MSE1));
case 'radiobutton22'
% Mendefinisikan level dekomposisi
level = str2double(get(handles.editLevel,'String'));
% Mendefinisikan variansi derau
variansi = str2double(get(handles.editVariansi,'String'));
% Mendefinisikan wavelet
switch get(handles.popupmenu5,'Value')
case 1
wavelet = 'db4';
case 2
wavelet = 'db8';
case 3
wavelet = 'coif4';
case 4
wavelet = 'sym3';
case 5
wavelet = 'bior3.7';
end
%Melakukan dekomposisi wavelet
[C,S]=wavedec2(g,level,wavelet);
%Minimax Shrink (MS)
N=size(g,1)^2;
MS=0.394+0.264*log(N)+ 0.5*max(C);
%Ambang-batas halus
%Hanya pada koefisien-koefisien aproksimasi
%softC=[wthresh(C(1:S(1,1)^2),'h',MS), C(S(1,1)^2+1:length(C))];
%Pada koefisien-koefisien detil
softC=[C(1:S(1,1)^2), wthresh(C(S(1,1)^2+1:length(C)),'s',MS)];
%Merekonstruksi citra dari koefisien-koefisien hasil ambang-batas
citraBaru=waverec2(softC,S,wavelet);
%Menampilkan hasil citra ambang-batas
axes(handles.axes4)
imagesc(citraBaru); axis off;
error = double(I) - citraBaru;
MSE1 = sum(sum(error .* error)) / (M * N);
set(handles.edit32, 'String', num2str(MSE1));
case 'radiobutton23'
% Mendefinisikan level dekomposisi
level = str2double(get(handles.editLevel,'String'));
% Mendefinisikan variansi derau
variansi = str2double(get(handles.editVariansi,'String'));
% Mendefinisikan wavelet
switch get(handles.popupmenu5,'Value')
case 1
wavelet = 'db4';
case 2
wavelet = 'db8';
case 3
wavelet = 'coif4';
case 4
wavelet = 'sym3';
case 5
wavelet = 'bior3.7';
end
%Melakukan dekomposisi wavelet
%[C,S]=wavedec2(g,level,wavelet);
% Ambang-batas SURE Shrink (SS)
citraBaru = NeighShrinkSUREdenoise_approksimasi(g, variansi, wavelet, level);
%Menampilkan hasil citra ambang-batas
axes(handles.axes4)
imagesc(citraBaru); axis off;
error = double(I) - citraBaru;
MSE1 = sum(sum(error .* error)) / ((M * N)*N);
set(handles.edit32, 'String', num2str(MSE1));
case 'radiobutton24'
% Mendefinisikan level dekomposisi
level = str2double(get(handles.editLevel,'String'));
% Mendefinisikan variansi derau
variansi = str2double(get(handles.editVariansi,'String'));
% Mendefinisikan wavelet
switch get(handles.popupmenu5,'Value')
case 1
wavelet = 'db4';
case 2
wavelet = 'db8';
case 3
wavelet = 'coif4';
case 4
wavelet = 'sym3';
case 5
wavelet = 'bior3.7';
end
%Melakukan dekomposisi wavelet
[C,S]=wavedec2(g,level,wavelet);
% Ambang-batas Bayes Shrink (SS)
SS = bayesthf(g,variansi) + 0.25*max(C);
%Ambang-batas halus
%Hanya pada koefisien-koefisien aproksimasi
%softC=[wthresh(C(1:S(1,1)^2),'h',SS), C(S(1,1)^2+1:length(C))];
%Pada koefisien-koefisien detil
softC=[C(1:S(1,1)^2), wthresh(C(S(1,1)^2+1:length(C)),'s',SS)];
%Merekonstruksi citra dari koefisien-koefisien hasil ambang-batas
citraBaru=waverec2(softC,S,wavelet);
%Menampilkan hasil citra ambang-batas
axes(handles.axes4)
imagesc(citraBaru); axis off;
error = double(I) - citraBaru;
MSE1 = sum(sum(error .* error)) / ((M * N)*N);
set(handles.edit32, 'String', num2str(MSE1));
end
% --------------------------------------------------------------------
function uipanel4_ButtonDownFcn(hObject, eventdata, handles)
% hObject handle to uipanel4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% --- Executes on button press in pushbutton19.
function pushbutton19_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton19 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global I
%kasus 1
% Mendefinisikan variansi derau
variansi = str2double(get(handles.editVariansi,'String'));
mu=20;
lambda=1;
tol=0.001;
[M,N]=size(I);
H1 = fspecial('average',11);
kabur1 = imfilter(I,H1,'replicate');
derau1 = imnoise(kabur1,'gaussian', 0,variansi);
g_denoise_atv = SB_ATV(double(derau1),mu,tol,lambda);
error = double(I) - reshape(g_denoise_atv,M,M);
MSE1 = sum(sum(error .* error)) / (M * M);
set(handles.edit34, 'String', num2str(MSE1));
%kasus 2
H2 = fspecial('gaussian',[11 11], 10);
kabur2 = imfilter(I,H2,'replicate');
derau2 = imnoise(kabur2, 'poisson');
g_denoise_atv = SB_ATV(double(derau2),mu,tol,lambda);
error = double(I) - reshape(g_denoise_atv,M,M);
MSE2 = sum(sum(error .* error)) / (M * M);
set(handles.edit35, 'String', num2str(MSE2));
%kasus 3
H3 = fspecial('disk',10);
kabur3 = imfilter(I,H3,'replicate');
derau3 = imnoise(kabur3,'salt & pepper',variansi);
g_denoise_atv = SB_ATV(double(derau3),mu,tol,lambda);
error = double(I) - reshape(g_denoise_atv,M,M);
MSE3 = sum(sum(error .* error)) / (M * M);
set(handles.edit36, 'String', num2str(MSE3));
%kasus 4
H4 = fspecial('motion',20,45);
kabur4 = imfilter(I,H4,'replicate');
derau4 = imnoise(kabur4,'speckle',variansi);
g_denoise_atv = SB_ATV(double(derau4),mu,tol,lambda);
error = double(I) - reshape(g_denoise_atv,M,M);
MSE4 = sum(sum(error .* error)) / (M * M);
set(handles.edit37, 'String', num2str(MSE4));
MSE_5 = [MSE1 MSE2 MSE3 MSE4];
global MSE_5
function edit34_Callback(hObject, eventdata, handles)
% hObject handle to edit34 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit34 as text
% str2double(get(hObject,'String')) returns contents of edit34 as a double
% --- Executes during object creation, after setting all properties.
function edit34_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit34 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 edit35_Callback(hObject, eventdata, handles)
% hObject handle to edit35 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit35 as text
% str2double(get(hObject,'String')) returns contents of edit35 as a double
% --- Executes during object creation, after setting all properties.
function edit35_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit35 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 edit36_Callback(hObject, eventdata, handles)
% hObject handle to edit36 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit36 as text
% str2double(get(hObject,'String')) returns contents of edit36 as a double
% --- Executes during object creation, after setting all properties.
function edit36_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit36 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 edit37_Callback(hObject, eventdata, handles)
% hObject handle to edit37 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit37 as text
% str2double(get(hObject,'String')) returns contents of edit37 as a double
% --- Executes during object creation, after setting all properties.
function edit37_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit37 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 pushbutton20.
function pushbutton20_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton20 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
img2 = double(getimage(handles.axes3))./255;
img1 = double(getimage(handles.axes1))./255;
% Parameter-parameter NLEM
sigma = str2num(get(handles.editSigma,'String'));
F = str2num(get(handles.editF,'String'));
theta = str2num(get(handles.editTheta,'String'));
[x,y]=meshgrid(-50:50,-50:50); %sigma = 10; theta = pi/3; F = 0.04;
g_sigma = (1./(2*pi*sigma^2)).*exp(((-1).*(x.^2+y.^2))./(2*sigma.^2));
riil_g = g_sigma.*cos((2*pi*F).*(x.*cos(theta)+y.*sin(theta)));
im_g = g_sigma.*sin((2*pi*F).*(x.*cos(theta)+y.*sin(theta)));
axes(handles.axes2);imagesc([riil_g im_g]);colormap('gray');axis image;
title('Bagian riil dan imajiner dari tapis Gabor');
function editKunci_Callback(hObject, eventdata, handles)
% hObject handle to editKunci (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of editKunci as text
% str2double(get(hObject,'String')) returns contents of editKunci as a double
% --- Executes during object creation, after setting all properties.
function editKunci_CreateFcn(hObject, eventdata, handles)
% hObject handle to editKunci (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 editLambda_Callback(hObject, eventdata, handles)
% hObject handle to editLambda (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of editLambda as text
% str2double(get(hObject,'String')) returns contents of editLambda as a double
% --- Executes during object creation, after setting all properties.
function editLambda_CreateFcn(hObject, eventdata, handles)
% hObject handle to editLambda (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 edit40_Callback(hObject, eventdata, handles)
% hObject handle to edit40 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit40 as text
% str2double(get(hObject,'String')) returns contents of edit40 as a double
% --- Executes during object creation, after setting all properties.
function edit40_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit40 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 edit41_Callback(hObject, eventdata, handles)
% hObject handle to edit41 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit41 as text
% str2double(get(hObject,'String')) returns contents of edit41 as a double
% --- Executes during object creation, after setting all properties.
function edit41_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit41 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 edit42_Callback(hObject, eventdata, handles)
% hObject handle to edit42 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit42 as text
% str2double(get(hObject,'String')) returns contents of edit42 as a double
% --- Executes during object creation, after setting all properties.
function edit42_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit42 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 edit43_Callback(hObject, eventdata, handles)
% hObject handle to edit43 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit43 as text
% str2double(get(hObject,'String')) returns contents of edit43 as a double
% --- Executes during object creation, after setting all properties.
function edit43_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit43 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 edit44_Callback(hObject, eventdata, handles)
% hObject handle to edit44 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit44 as text
% str2double(get(hObject,'String')) returns contents of edit44 as a double
% --- Executes during object creation, after setting all properties.
function edit44_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit44 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 editMu_Callback(hObject, eventdata, handles)
% hObject handle to editMu (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of editMu as text
% str2double(get(hObject,'String')) returns contents of editMu as a double
% --- Executes during object creation, after setting all properties.
function editMu_CreateFcn(hObject, eventdata, handles)
% hObject handle to editMu (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 pushbutton21.
function pushbutton21_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton21 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% --- Executes on button press in pushbutton22.
function pushbutton22_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton22 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
[namafile namapath]=uigetfile('*.jpg;*.bmp;*.jpeg;*.png;*.tif;','Pilih Sebuah Citra');
namacitra=[namapath namafile];
if(size(namacitra,3) == 3)
namacitra = rgb2gray(namacitra);
end
axes(handles.axes3)
imshow(namacitra);title('Citra Fusi 1');
global I1
I1 = getimage(handles.axes3);
% --- Executes on button press in pushbutton24.
function pushbutton24_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton24 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
[namafile namapath]=uigetfile('*.jpg;*.bmp;*.jpeg;*.png;*.tif;','Pilih Sebuah Citra');
namacitra=[namapath namafile];
if(size(namacitra,3) == 3)
namacitra = rgb2gray(namacitra);
end
axes(handles.axes10)
imshow(namacitra); title('Citra Fusi 2');
global I2
I2 = getimage(handles.axes10);
% --- Executes during object creation, after setting all properties.
function axes1_CreateFcn(hObject, eventdata, handles)
% hObject handle to axes1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: place code in OpeningFcn to populate axes1
% --- Executes on button press in pushbutton25.
function pushbutton25_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton25 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
I = getimage(handles.axes1);
switch get(handles.popupmenu7,'Value')
case 1
kabur = I;
case 2
H = fspecial('average',11);
kabur = imfilter(I,H,'replicate');
case 3
H = fspecial('motion',20,45);
kabur = imfilter(I,H,'replicate');
case 4
H = fspecial('disk',10);
kabur = imfilter(I,H,'replicate');
case 5
H = fspecial('gaussian',[11 11], 10);
kabur = imfilter(I,H,'replicate');
end
axes(handles.axes3)
imshow(uint8(kabur)); title('Citra 2')
% --- Executes on button press in pushbutton26.
function pushbutton26_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton26 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
I_kabur = getimage(handles.axes3);
% Mendefinisikan variansi derau
variansi = str2double(get(handles.editVariansi,'String'));
switch get(handles.popupmenu8,'Value')
case 1
derau = imnoise(I_kabur,'gaussian', 0,variansi);
case 2
derau = imnoise(I_kabur, 'poisson');
case 3
derau = imnoise(I_kabur,'salt & pepper',variansi);
case 4
derau = imnoise(I_kabur,'speckle',variansi);
end
axes(handles.axes3)
imshow(uint8(derau)); title('Citra 2')
% --- Executes on selection change in popupmenu7.
function popupmenu7_Callback(hObject, eventdata, handles)
% hObject handle to popupmenu7 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: contents = cellstr(get(hObject,'String')) returns popupmenu7 contents as cell array
% contents{get(hObject,'Value')} returns selected item from popupmenu7
% --- Executes during object creation, after setting all properties.
function popupmenu7_CreateFcn(hObject, eventdata, handles)
% hObject handle to popupmenu7 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: popupmenu 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 selection change in popupmenu8.
function popupmenu8_Callback(hObject, eventdata, handles)
% hObject handle to popupmenu8 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: contents = cellstr(get(hObject,'String')) returns popupmenu8 contents as cell array
% contents{get(hObject,'Value')} returns selected item from popupmenu8
% --- Executes during object creation, after setting all properties.
function popupmenu8_CreateFcn(hObject, eventdata, handles)
% hObject handle to popupmenu8 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: popupmenu 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 pushbutton27.
function pushbutton27_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton27 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global I_derau1
global I_derau2
global I
im1 = double(I_derau1);
im2 = double(I_derau2);
imt = double(I);
% Mendefinisikan ukuran blok
bs = str2num(get(handles.editJendela,'String'));
%bs = 8;
class(bs)
%%
mode = [0 1 3 4 5 6 7 8]; % mode direksional
lmode = length(mode);
h1 = waitbar(0,'Silahkan tunggu...');
for j=1:lmode
imf1{j} = DDCTIFmax(im1,im2,bs,mode(j));
waitbar(j/lmode,h1);
end
close(h1);
%%
% fusi dengan PCA
imf = fuse_pca(imf1{1},imf1{2},imf1{3},imf1{4},imf1{5},imf1{6},imf1{7},imf1{8});
%%
%menampilkan citra terfusi
axes(handles.axes2); imshow(imf,[]); title('Citra Terfusi');
%citra error
imd = double(imt)-double(imf);
axes(handles.axes4); imshow(imd,[]); title('Citra Error');
% metrik-metrik eveluasi kualitas fusi
[RMSE,PFE,MAE,CORR,SNR,PSNR,MI,QI,SSIM] = pereval(double(imt),im1,im2,imf);
t = handles.uitable1;
d = [RMSE,PFE,MAE,CORR,SNR,PSNR,MI,QI,SSIM];
set(t,'Data',d);
set(t,'ColumnName',{'RMSE |(Root Mean Square Error)';'PFE |(Persentage Fit Error)';'MAE |(Mean Absolute Error)'; 'CORR| (Correlation)';...
'SNR |(Signal to Noise Ratio'; 'PSNR |(Peak Signal to Noise Ratio)';'MI | (Mutual Information)'; 'QI| (Quality Index)';...
'SSIM| (Measure of Structural Similarity)';})
% --- Executes on button press in pushbutton28.
function pushbutton28_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton28 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global I_derau1
global I_derau2
global I
im1 = double(I_derau1);
im2 = double(I_derau2);
imt = double(I);
% Mendefinisikan ukuran blok
bs = str2num(get(handles.editJendela,'String'));
%bs = 8;
class(bs)
%%
mode = [0 1 3 4 5 6 7 8]; % mode direksional
lmode = length(mode);
h1 = waitbar(0,'Silahkan tunggu...');
for j=1:lmode
imf1{j} = DDCTIFek(im1,im2,bs,mode(j));
waitbar(j/lmode,h1);
end
close(h1);
%%
% fusi dengan PCA
imf = fuse_pca(imf1{1},imf1{2},imf1{3},imf1{4},imf1{5},imf1{6},imf1{7},imf1{8});
%%
%menampilkan citra terfusi
axes(handles.axes2); imshow(imf,[]); title('Citra Terfusi');
%citra error
imd = double(imt)-double(imf);
axes(handles.axes4); imshow(imd,[]); title('Citra Error');
% metrik-metrik eveluasi kualitas fusi
[RMSE,PFE,MAE,CORR,SNR,PSNR,MI,QI,SSIM] = pereval(double(imt),im1,im2,imf);
t = handles.uitable1;
d = [RMSE,PFE,MAE,CORR,SNR,PSNR,MI,QI,SSIM];
set(t,'Data',d);
set(t,'ColumnName',{'RMSE |(Root Mean Square Error)';'PFE |(Persentage Fit Error)';'MAE |(Mean Absolute Error)'; 'CORR| (Correlation)';...
'SNR |(Signal to Noise Ratio'; 'PSNR |(Peak Signal to Noise Ratio)';'MI | (Mutual Information)'; 'QI| (Quality Index)';...
'SSIM| (Measure of Structural Similarity)';})
function editJendela_Callback(hObject, eventdata, handles)
% hObject handle to editJendela (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of editJendela as text
% str2double(get(hObject,'String')) returns contents of editJendela as a double
% --- Executes during object creation, after setting all properties.
function editJendela_CreateFcn(hObject, eventdata, handles)
% hObject handle to editJendela (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 editAlfa_Callback(hObject, eventdata, handles)
% hObject handle to editAlfa (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of editAlfa as text
% str2double(get(hObject,'String')) returns contents of editAlfa as a double
% --- Executes during object creation, after setting all properties.
function editAlfa_CreateFcn(hObject, eventdata, handles)
% hObject handle to editAlfa (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 editTheta_Callback(hObject, eventdata, handles)
% hObject handle to editTheta (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of editTheta as text
% str2double(get(hObject,'String')) returns contents of editTheta as a double
% --- Executes during object creation, after setting all properties.
function editTheta_CreateFcn(hObject, eventdata, handles)
% hObject handle to editTheta (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 pushbutton29.
function pushbutton29_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton29 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
b = getimage(handles.axes3);
a = getimage(handles.axes1);
[kpl1,i2a] = sift(a);
[kpl2,i2b] = sift(b);
axes(handles.axes2); imshow(i2a,[]); title('Citra 1 Dengan Titik-Titik Kunci');
axes(handles.axes4); imshow(i2b,[]); title('Citra 2 Dengan Titik-Titik Kunci');
%% Perbandingan titik-titik kunci pada kedua citra
tic
cacah=0;
for i=1:2:length(kpl1)
for j=1:2:length(kpl2)
if (kpl1(i)==kpl2(j)) && (kpl1(i+1)==kpl2(j+1))
cacah=cacah+1;
break;
end
end
end
mp=(cacah/(0.5*length(kpl1)))*100;
set(handles.editSigma,'String',mp);
function editSigma_Callback(hObject, eventdata, handles)
% hObject handle to editSigma (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of editSigma as text
% str2double(get(hObject,'String')) returns contents of editSigma as a double
% --- Executes during object creation, after setting all properties.
function editSigma_CreateFcn(hObject, eventdata, handles)
% hObject handle to editSigma (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 pushbutton30.
function pushbutton30_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton30 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
I_derau = getimage(handles.axes3);
% Mendefinisikan sudut
sudut = str2double(get(handles.editSudut,'String'));
derau =imrotate(I_derau,sudut);
axes(handles.axes3)
imshow(derau); title('Citra 2');
% --- Executes on button press in pushbutton31.
function pushbutton31_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton31 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
I_kabur1 = getimage(handles.axes3);
% Mendefinisikan faktor
faktor = str2double(get(handles.editFaktor,'String'));
derau2 =I_kabur1/faktor;
axes(handles.axes3)
imshow(derau2); title('Citra 2');
function editFaktor_Callback(hObject, eventdata, handles)
% hObject handle to editFaktor (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of editFaktor as text
% str2double(get(hObject,'String')) returns contents of editFaktor as a double
% --- Executes during object creation, after setting all properties.
function editFaktor_CreateFcn(hObject, eventdata, handles)
% hObject handle to editFaktor (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 editSudut_Callback(hObject, eventdata, handles)
% hObject handle to editSudut (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of editSudut as text
% str2double(get(hObject,'String')) returns contents of editSudut as a double
% --- Executes during object creation, after setting all properties.
function editSudut_CreateFcn(hObject, eventdata, handles)
% hObject handle to editSudut (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 pushbutton33.
function pushbutton33_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton33 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
I1 = getimage(handles.axes1);
axes(handles.axes3)
imshow(I1); title('Citra 2');
function editS_Callback(hObject, eventdata, handles)
% hObject handle to editTheta (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of editTheta as text
% str2double(get(hObject,'String')) returns contents of editTheta as a double
% --- Executes during object creation, after setting all properties.
function editS_CreateFcn(hObject, eventdata, handles)
% hObject handle to editTheta (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 editF_Callback(hObject, eventdata, handles)
% hObject handle to editF (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of editF as text
% str2double(get(hObject,'String')) returns contents of editF as a double
% --- Executes during object creation, after setting all properties.
function editF_CreateFcn(hObject, eventdata, handles)
% hObject handle to editF (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 editPhi_Callback(hObject, eventdata, handles)
% hObject handle to editPhi (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of editPhi as text
% str2double(get(hObject,'String')) returns contents of editPhi as a double
% --- Executes during object creation, after setting all properties.
function editPhi_CreateFcn(hObject, eventdata, handles)
% hObject handle to editPhi (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% 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 pushbutton34.
function pushbutton34_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton34 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
img1 = double(getimage(handles.axes3));
% menyusutkan citra untuk mengurangi waktu komputasi
skala = 0.2;
img = imresize(img1,skala);
% memuat lokasi-lokasi vessel menggunakan metode morfologi DREO
%bwImg = double(imread('\Fundus_photograph_of_normal_left_eye_binary.tif'));
% memuat citra dari wikipedia
dimensi = 5;
se=strel('square',dimensi);
H = fspecial('average',5);
namacitra = imfilter(img1,H,'replicate');
ed = (imdilate(namacitra,se)-namacitra);
bwImg = double(im2bw(0.1*ed));
bwImg = imresize(bwImg,skala,'nearest');
bwImg(bwImg==255) = 1;
bwImg(bwImg==0) = 0;
% memperoleh citra pelatihan dan citra pengujian
% dan lokasi vessel dari citra-citra tersebut
imgPengujian = img(:,:);
lokasiPengujian = bwImg(:,:);
imgPelatihan = img(:,:);
lokasiPelatihan = bwImg(:,:);
%% Mengekstraksi fitur-fitur untuk transformasi Gabor
% menginisialisasi parameter-parameter untuk Gabor
ukuran_tapis = 40.*skala;
setengah_ukuran_tapis = round((ukuran_tapis)/2);
Fs = 0.1:0.1:0.3;
sigmas = [2:2:8].*skala;
thetas=pi/8:pi/8:pi-pi/8;
% menginisialisasi array untuk menyimpan fitur
fitur = zeros([size(imgPelatihan),numel(sigmas),numel(thetas),numel(Fs)]);
% melakukan sejumlah transformasi Gabor dengan memvariasi parameter-parameter
for k = 1:numel(sigmas)
for j = 1:numel(Fs)
for i = 1:numel(thetas)
sigma = sigmas(k);
F = Fs(j);
theta = thetas(i);
% merancang transformasi Gabor
[x,y]=meshgrid(-setengah_ukuran_tapis:setengah_ukuran_tapis,-setengah_ukuran_tapis:setengah_ukuran_tapis);
g_sigma = (1./(2*pi*sigma^2)).*exp(((-1).*(x.^2+y.^2))./(2*sigma.^2));
riil_g = g_sigma.*cos((2*pi*F).*(x.*cos(theta)+y.*sin(theta)));
im_g = g_sigma.*sin((2*pi*F).*(x.*cos(theta)+y.*sin(theta)));
% melakukan transformasi Gabor
uT =sqrt(conv2(imgPelatihan,riil_g,'same').^2+conv2(imgPelatihan,im_g,'same').^2);
% menormalisasi citra tertransformasi
uT = (uT-mean(uT(:)))./std(uT(:));
% menugaskan citra tertransformasi ke fitur
fitur(:,:,k,j,i) = uT;
% mmvisualisasi citra tertapis dan tapis-tapis pengubah
axes(handles.axes2);
imagesc([imgPelatihan mat2gray(uT).*255],[0 255]);
colormap('gray'); axis image; axis off;
title('Citra uji dan Citra Hasil Transformasi Gabor');
axes(handles.axes4);
imagesc([riil_g im_g]);
colormap('gray'); axis image; axis off;
title(sprintf('Tapis Gabor F:%1.2f theta:%1.2f sigma:%1.f',F,theta,sigma));
drawnow;%pause(0.5);
end
end
end
% menata-ulang array fitur
szG = size(fitur);
fitur = reshape(fitur,[prod(szG(1:2)),prod(szG(3:end))]);
% menerapkan GLM pada fitur dan lokasi vessel
b = glmfit(fitur,lokasiPelatihan(:),'normal');
% melihat keluaran dari pemodelan basis pada fitur-fitur pelatihan
CTrain = glmval(b,fitur,'logit');
CTrain = reshape(CTrain,szG(1:2));
% memvisualisasikan
axes(handles.axes11);
imagesc([imgPelatihan lokasiPelatihan.*255 CTrain.*255]);
colormap('gray');axis image;
title('citra uji, lokasi vessel, dan keluaran dari GLM');
%% Melakukan validasi silang untuk Gabor+GLM
% Lagi, melakukan transformasi Gabor
fitur = zeros([size(imgPengujian),numel(sigmas),numel(thetas),numel(Fs)]);
for k = 1:numel(sigmas)
for j = 1:numel(Fs)
for i = 1:numel(thetas)
sigma = sigmas(k);
F = Fs(j);
theta = thetas(i);
% merancang transformasi Gabor
[x,y]=meshgrid(-setengah_ukuran_tapis:setengah_ukuran_tapis,-setengah_ukuran_tapis:setengah_ukuran_tapis);
g_sigma = (1./(2*pi*sigma^2)).*exp(((-1).*(x.^2+y.^2))./(2*sigma.^2));
riil_g = g_sigma.*cos((2*pi*F).*(x.*cos(theta)+y.*sin(theta)));
im_g = g_sigma.*sin((2*pi*F).*(x.*cos(theta)+y.*sin(theta)));
% melakukan transformasi Gabor
uT =sqrt(conv2(imgPengujian,riil_g,'same').^2+conv2(imgPengujian,im_g,'same').^2);
% menormalisasi citra tertransformasi
uT = (uT-mean(uT(:)))./std(uT(:));
% menugaskan citra tertransformasi menjadi fitur
fitur(:,:,k,j,i) = uT;
end
end
end
% memberikan fitur kepada GLM
szG = size(fitur);
fitur = reshape(fitur,[prod(szG(1:2)),prod(szG(3:end))]);
Ctest = glmval(b,fitur,'logit');
Ctest = reshape(Ctest,szG(1:2));
% menghitung sensitifitas dan spesifisitas dengan mengambang-batas
% keluaran dari GLM 'Ctest' dan membandingkan dengan citra terambang-batas
% dengan lokasi-lokasi vessel.
sensitifitas = [];
spesifitas = [];
rgs = 0:0.01:1;
for i = rgs
tmpBwImg = im2bw(Ctest,i);
tp = sum(tmpBwImg == 1 & lokasiPengujian ==1);
fn = sum(tmpBwImg == 0 & lokasiPengujian ==1);
tn = sum(tmpBwImg == 0 & lokasiPengujian ==0);
fp = sum(tmpBwImg == 1 & lokasiPengujian ==0);
sensitifitas = [sensitifitas tp/(tp+fn)]; %laju positif sesungguhnya
spesifitas = [spesifitas tn/(tn+fp)]; %laju negatif sesungguhnya
end
% menampilkan kurva roc
axes(handles.axes13);
plot(1-spesifitas,sensitifitas,'k-','linewidth',2);
xlabel('Laju Positif False (1-Spesifisitas)');
ylabel('Laju Positif True (Sensitifitas)');
axis([0 1 0 1]);grid on;
% menghitung auc.
[fprSort, fprSortInd] = sort([1-spesifitas],'ascend');
auc = trapz([0 fprSort 1],[0 sensitifitas(fprSortInd) 1]);
title(sprintf('Kurva ROC, AUC: %1.2f',auc));
% mendapatkan ambang-batas optimal dengan memaksimalkan indeks Youden
[trsh, thInd] = max(sensitifitas + spesifitas - 1);
th = rgs(thInd);
%% Memvisualisasi
axes(handles.axes12);
imagesc([imgPengujian Ctest.*255 (Ctest > th).*255]);
colormap('gray');axis image;
title('Citra semula, keluaran dari GLM, dan keluaran terambang-batas optimal dari GLM');
%% Referensi
% Soares, Joao VB, et al. "Retinal vessel segmentation using the 2-D
% Gabor wavelet and supervised classification." Medical Imaging,
% IEEE Transactions on 25.9 (2006): 1214-1222.
% http://www.ncbi.nlm.nih.gov/pubmed/16967806
%
% Sandberg, Berta, Tony Chan, and Luminita Vese. "A level-set and
% gabor-based active contour algorithm for segmenting textured images."
% UCLA Department of Mathematics CAM report. 2002.
% http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.7.3145
%
% --- Executes on button press in pushbutton35.
function pushbutton35_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton35 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global fitur
global lokasiPelatihan
%% Menerapkan GLM pada fitur dan lokasi vessel
% menata-ulang array fitur
szG = size(fitur);
fitur = reshape(fitur,[prod(szG(1:2)),prod(szG(3:end))]);
% menerapkan GLM pada fitur dan lokasi vessel
b = glmfit(fitur,lokasiPelatihan(:),'normal');
% melihat keluaran dari pemodelan basis pada fitur-fitur pelatihan
CTrain = glmval(b,fitur,'logit');
CTrain = reshape(CTrain,szG(1:2));
% memvisualisasikan
axes(handles.axes11);
imagesc([imgPelatihan lokasiPelatihan.*255 CTrain.*255]);
colormap('gray');axis image;
title('citra uji, lokasi vessel, dan keluaran dari GLM');
No comments:
Post a Comment