Wednesday, May 10, 2017

Cara Membuat GUI MATLAB Untuk TEKNIK FUSI CITRA BERBASIS TRANSFORMASI KOSINUS DISKRET DAN PIRAMIDA LAPLACIAN


Berikut adalah GUI dari TEKNIK FUSI CITRA BERBASIS TRANSFORMASI KOSINUS DISKRET DAN PIRAMIDA LAPLACIAN










Berikut kode untuk semua fungsi callbacknya:


function varargout = DCT_LP(varargin)
% DCT_LP MATLAB code for DCT_LP.fig
%      DCT_LP, by itself, creates a new DCT_LP or raises the existing
%      singleton*.
%
%      H = DCT_LP returns the handle to a new DCT_LP or the handle to
%      the existing singleton*.
%
%      DCT_LP('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in DCT_LP.M with the given input arguments.
%
%      DCT_LP('Property','Value',...) creates a new DCT_LP or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before DCT_LP_OpeningFcn gets called.  An
%      unrecognized property name or invalid value makes property application
%      stop.  All inputs are passed to DCT_LP_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 DCT_LP

% Last Modified by GUIDE v2.5 12-Mar-2017 10:13:03

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @DCT_LP_OpeningFcn, ...
                   'gui_OutputFcn',  @DCT_LP_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 DCT_LP is made visible.
function DCT_LP_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 DCT_LP (see VARARGIN)

% Choose default command line output for DCT_LP
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

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


% --- Outputs from this function are returned to the command line.
function varargout = DCT_LP_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 Referensi');

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)

cla(handles.axes11,'reset');
global I_derau1
global I_derau2
global I

im1 = double(I_derau1);
im2 = double(I_derau2);
imt = double(I);

% Mendefinisikan ukuran blok
k = str2num(get(handles.editPiramida,'String'));
imf = DCTIFlp(im1,im2,k);

%%
%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)';})



axes(handles.axes11)
bar(1,double(d(1)),'r');
hold on
bar(2,d(2),'c');
hold on
bar(3,d(3),'m');
hold on
bar(4,d(4),'y');
hold on
bar(5,d(5),'g');
hold on
bar(6,d(6),'k');
hold on
bar(7,d(7),'b');
hold on
bar(8,d(8),'w');
hold on
bar(9,d(9),'r');

kinerja = [d(1) d(2) d(3) d(4) d(5) d(6) d(7) d(8) d(9)];
title('Grafik Parameter-Parameter Kinerja Atas Algoritma Fusi Citra');
set(gca,'XTick',1:9)
set(gca,'XTickLabel',{'RMSE','PFE','MAE','CORR','SNR','PSNR', 'MI', 'QI', 'SSIM'});
for i=1:9
    text(i,kinerja(i),num2str(kinerja(i),'%.4f'),'HorizontalAlignment','center','VerticalAlignment','bottom')
end

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)

global I1
global I2

switch get(handles.popupmenu7,'Value')  
    case 1
       kabur1 = I1;
       kabur2 = I2;
    case 2
       H = fspecial('average',11);
       kabur1 = imfilter(I1,H,'replicate'); 
       axes(handles.axes3)
       imshow(uint8(kabur1));
       title('Pengaburan Rerata');
       
       kabur2 = imfilter(I2,H,'replicate');
       axes(handles.axes10)
       imshow(uint8(kabur2));
       title('Pengaburan Rerata');
    case 3
       H = fspecial('motion',20,45);
       kabur1 = imfilter(I1,H,'replicate');
       axes(handles.axes3)
       imshow(uint8(kabur1));
       title('Pengaburan Motion');
       
       kabur2 = imfilter(I2,H,'replicate');
       axes(handles.axes10)
       imshow(uint8(kabur2));
       title('Pengaburan Motion');
    case 4
       H = fspecial('disk',10);
       kabur1 = imfilter(I1,H,'replicate');
       axes(handles.axes3)
       imshow(uint8(kabur1));
       title('Pengaburan Disk');
       
       kabur2 = imfilter(I2,H,'replicate');
       axes(handles.axes10)
       imshow(uint8(kabur2));
       title('Pengaburan Disk');
       
    case 5
       H = fspecial('gaussian',[11 11], 10);
       kabur1 = imfilter(I1,H,'replicate');
       axes(handles.axes3)
       imshow(uint8(kabur1));
       title('Pengaburan Gaussian');
       
       kabur2 = imfilter(I2,H,'replicate');
       axes(handles.axes10)
       imshow(uint8(kabur2));
       title('Pengaburan Gaussian');
end  

global I_kabur1
global I_kabur2
I_kabur1 = getimage(handles.axes3);
I_kabur2 = getimage(handles.axes10);


% --- 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)

global I_kabur1
global I_kabur2


% Mendefinisikan variansi derau
variansi = str2double(get(handles.editVariansi,'String'));

switch get(handles.popupmenu8,'Value')   
    case 1
       derau1 = imnoise(I_kabur1,'gaussian', 0,variansi);
       derau2 = imnoise(I_kabur2,'gaussian', 0,variansi);
       axes(handles.axes3)
       imshow(uint8(derau1)); title('Derau Gaussian');
       axes(handles.axes10)
       imshow(uint8(derau2)); title('Derau Gaussian');
    case 2
       derau1 = imnoise(I_kabur1, 'poisson');
       derau2 = imnoise(I_kabur2, 'poisson');
       axes(handles.axes3)
       imshow(uint8(derau1)); title('Derau Poisson');
       axes(handles.axes10)
       imshow(uint8(derau2)); title('Derau Poisson');
    case 3
       derau1 = imnoise(I_kabur1,'salt & pepper',variansi);
       derau2 = imnoise(I_kabur2,'salt & pepper',variansi);
       axes(handles.axes3)
       imshow(uint8(derau1)); title('Derau Salt&Pepper');
       axes(handles.axes10)
       imshow(uint8(derau2)); title('Derau Salt&Pepper');
    case 4
       derau1 = imnoise(I_kabur1,'speckle',variansi);
       derau2 = imnoise(I_kabur2,'speckle',variansi);
       axes(handles.axes3)
       imshow(uint8(derau1)); title('Derau Speckle');
       axes(handles.axes10)
       imshow(uint8(derau2)); title('Derau Speckle');
end

global I_derau1
global I_derau2
I_derau1 = getimage(handles.axes3);
I_derau2 = getimage(handles.axes10);


% --- 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.editPiramida,'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.editPiramida,'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 editPiramida_Callback(hObject, eventdata, handles)
% hObject    handle to editPiramida (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 editPiramida as text
%        str2double(get(hObject,'String')) returns contents of editPiramida as a double


% --- Executes during object creation, after setting all properties.
function editPiramida_CreateFcn(hObject, eventdata, handles)
% hObject    handle to editPiramida (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









No comments: