• Tidak ada hasil yang ditemukan

1. Form Program_Filtering - Implementasi Perbandingan Low-Pass Filtering dan High- Pass Filtering untuk Mereduksi Noise pada Citra Digital

N/A
N/A
Protected

Academic year: 2019

Membagikan "1. Form Program_Filtering - Implementasi Perbandingan Low-Pass Filtering dan High- Pass Filtering untuk Mereduksi Noise pada Citra Digital"

Copied!
23
0
0

Teks penuh

(1)

LISTING PROGRAM

1.

Form Program_Filtering

function varargout = Program_Filtering(varargin)

% Begin initialization code - DO NOT EDIT

gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ...

'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @Program_Filtering_OpeningFcn,

...

'gui_OutputFcn', @Program_Filtering_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

function Program_Filtering_OpeningFcn(hObject, ~, handles, varargin) handles.output = hObject;

guidata(hObject, handles);

logo = imread ('Logo\logo2.png'); axes(handles.axesLogo);

imshow(logo);

function varargout = Program_Filtering_OutputFcn(~, ~, handles) varargout{1} = handles.output;

function menuprogram_Callback(~, ~, ~)

function menuhelp_Callback(~, ~, ~) FormHelp;

function menuabout_Callback(~, ~, ~) FormAbout;

function submenu_withnoise_Callback(~, ~, ~) FormCitraDenganNoise;

function submenu_nonoise_Callback(~, ~, ~) FormCitraTanpaNoise;

function menuexit_Callback(~, ~, ~)

selection = questdlg('Keluar dari Aplikasi ini ?','Exit','Ya','Tidak','Ya');

if strcmp(selection,'Tidak') return;

end;

(2)

2.

Form Citra Dengan Noise

function varargout = FormCitraDenganNoise(varargin)

% Begin initialization code - DO NOT EDIT

gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ...

'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @FormCitraDenganNoise_OpeningFcn, ...

'gui_OutputFcn', @FormCitraDenganNoise_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

function FormCitraDenganNoise_OpeningFcn(hObject, ~, handles, varargin)

handles.output = hObject; guidata(hObject, handles);

function varargout = FormCitraDenganNoise_OutputFcn(~, ~, handles) varargout{1} = handles.output;

function menuprogram_Callback(~, ~, ~)

function menuhelp_Callback(~, ~, ~) FormHelp;

function menuclose_Callback(~, ~, ~) close;

function submenu_withnoise_Callback(~, ~, ~)

function submenu_nonoise_Callback(~, ~, ~) FormCitraTanpaNoise;

% --- Executes on button press in btnOpen. function btnOpen_Callback(hObject, ~, handles) [nama_file, nama_path] = uigetfile({

'*.bmp','Windows Bitmap (*.bmp)'; ...

'*.png','Portable Network Graphics (*.png)'}, ...

'Open File Citra');

if ~isequal(nama_file,0)

handles.citra=imread(fullfile(nama_path,nama_file)); guidata(hObject,handles);

axes(handles.citraAsli); imshow(handles.citra);

[Baris Kolom]=size(handles.citra);

(3)

set(handles.txtlebar,'string',Baris);

msgbox('Citra berhasil diinputkan, Lanjutkan ke Filtering','Sukses','modal');

else

return;

end;

% --- Executes on button press in btnClear.

function btnClear_Callback(hObject, eventdata, handles) set(handles.txtnamafile,'string','');

set(handles.txtpanjang,'string',''); set(handles.txtlebar,'string','');

cla(handles.citraAsli); cla(handles.citraILP); cla(handles.citraBLP); cla(handles.citraGLP); cla(handles.citraIHP); cla(handles.citraBHP); cla(handles.citraGHP);

set(handles.mseILP,'string','-'); set(handles.psnrILP,'string','-'); set(handles.runtimeILP,'string','-');

set(handles.mseBLP,'string','-'); set(handles.psnrBLP,'string','-'); set(handles.runtimeBLP,'string','-');

set(handles.mseGLP,'string','-'); set(handles.psnrGLP,'string','-'); set(handles.runtimeGLP,'string','-');

set(handles.mseIHP,'string','-'); set(handles.psnrIHP,'string','-'); set(handles.runtimeIHP,'string','-');

set(handles.mseBHP,'string','-'); set(handles.psnrBHP,'string','-'); set(handles.runtimeBHP,'string','-');

set(handles.mseGHP,'string','-'); set(handles.psnrGHP,'string','-'); set(handles.runtimeGHP,'string','-');

% --- Executes on button press in btnFilter.

function btnFilter_Callback(hObject, eventdata, handles) Img = getimage(handles.citraAsli);

Fs = double(Img);

d0 = str2double(get(handles.editCutoff,'string')); n = str2double(get(handles.editOrde,'string'));

if (isempty(get(handles.editOrde,'string'))) && (isempty(get(handles.editCutoff,'string')))

warndlg('Masukkan Nilai Cut-off dan Orde','Error','modal')

(4)

warndlg('Nilai Cut-off = 0 < d0 < 1; Nilai Orde = 1 < N < 4','Error','modal')

elseif (isempty(get(handles.editCutoff,'string'))) || (d0 <= 0) || (d0 > 1)

warndlg('Nilai Cut-off = 0 < d0 < 1','Error','modal')

elseif (isempty(get(handles.editOrde,'string'))) || (n <= 0) || (n > 4)

warndlg('Nilai Orde = 1 < N < 4','Error','modal')

else

R = Fs(:,:,1); G = Fs(:,:,2); B = Fs(:,:,3);

%Ideal Low-pass %global runtimeILP;

runtimeILP = cputime; ilp_R = ilpf(R,d0); ilp_G = ilpf(G,d0); ilp_B = ilpf(B,d0);

img_ilp = cat(3, ilp_R, ilp_G, ilp_B); runtimeILP = cputime - runtimeILP; axes(handles.citraILP);

imshow(img_ilp);

[MSE PSNR] = mse_psnr(Img, img_ilp); set(handles.mseILP,'String',MSE); set(handles.psnrILP,'String',PSNR);

set(handles.runtimeILP,'String',runtimeILP);

%Butterworth Low-pass %global runtimeBLP;

runtimeBLP = cputime; blp_R = blpf(R,d0,n); blp_G = blpf(G,d0,n); blp_B = blpf(B,d0,n);

img_blp = cat(3, blp_R, blp_G, blp_B); runtimeBLP = cputime - runtimeBLP; axes(handles.citraBLP);

imshow(img_blp);

[MSE PSNR] = mse_psnr(Img, img_blp); set(handles.mseBLP,'String',MSE); set(handles.psnrBLP,'String',PSNR);

set(handles.runtimeBLP,'String',runtimeBLP);

%Gaussian Low-pass %global runtimeGLP;

runtimeGLP = cputime; glp_R = glpf(R,d0); glp_G = glpf(G,d0); glp_B = glpf(B,d0);

img_glp = cat(3, glp_R, glp_G, glp_B); runtimeGLP = cputime - runtimeGLP; axes(handles.citraGLP);

imshow(img_glp);

[MSE PSNR] = mse_psnr(Img, img_glp); set(handles.mseGLP,'String',MSE); set(handles.psnrGLP,'String',PSNR);

set(handles.runtimeGLP,'String',runtimeGLP);

(5)

%global runtimeIHP;

runtimeIHP = cputime; ihp_R = ihpf(R,d0); ihp_G = ihpf(G,d0); ihp_B = ihpf(B,d0);

img_ihp = cat(3, ihp_R, ihp_G, ihp_B); runtimeIHP = cputime - runtimeIHP; axes(handles.citraIHP);

imshow(img_ihp);

[MSE PSNR] = mse_psnr(Img, img_ihp); set(handles.mseIHP,'String',MSE); set(handles.psnrIHP,'String',PSNR);

set(handles.runtimeIHP,'String',runtimeIHP);

%Butterworth High-pass %global runtimeBHP;

runtimeBHP = cputime; bhp_R = bhpf(R,d0,n); bhp_G = bhpf(G,d0,n); bhp_B = bhpf(B,d0,n);

img_bhp = cat(3, bhp_R, bhp_G, bhp_B); runtimeBHP = cputime - runtimeBHP; axes(handles.citraBHP);

imshow(img_bhp);

[MSE PSNR] = mse_psnr(Img, img_bhp); set(handles.mseBHP,'String',MSE); set(handles.psnrBHP,'String',PSNR);

set(handles.runtimeBHP,'String',runtimeBHP);

%Gaussian High-pass %global runtimeGHP;

runtimeGHP = cputime; ghp_R = ghpf(R,d0); ghp_G = ghpf(G,d0); ghp_B = ghpf(B,d0);

img_ghp = cat(3, ghp_R, ghp_G, ghp_B); runtimeGHP = cputime - runtimeGHP; axes(handles.citraGHP);

imshow(img_ghp);

[MSE PSNR] = mse_psnr(Img, img_ghp); set(handles.mseGHP,'String',MSE); set(handles.psnrGHP,'String',PSNR);

set(handles.runtimeGHP,'String',runtimeGHP);

end

% --- Executes on button press in btnSaveNoise. function btnSaveNoise_Callback(~, ~, handles) [nama_file,nama_path] = uiputfile({

'*.bmp','Windows Bitmap (*.bmp)'; ...

'*.png','Portable Network Graphics (*.png)'}, ...

'Save File Citra');

if isequal([nama_file,nama_path],[0,0]) return

else

Img = getimage(handles.citraNoise);

imwrite(Img, strcat(nama_path,nama_file));

end

(6)

function btnSaveILP_Callback(~, ~, handles)

Img = getimage(handles.citraILP);

imwrite(Img, strcat(nama_path,nama_file));

end

% --- Executes on button press in btnSaveBLP. function btnSaveBLP_Callback(~, ~, handles) [nama_file,nama_path] = uiputfile({

Img = getimage(handles.citraBLP);

imwrite(Img, strcat(nama_path,nama_file));

end

% --- Executes on button press in btnSaveGLP. function btnSaveGLP_Callback(~, ~, handles) [nama_file,nama_path] = uiputfile({

Img = getimage(handles.citraGLP);

imwrite(Img, strcat(nama_path,nama_file));

end

% --- Executes on button press in btnSaveIHP. function btnSaveIHP_Callback(~, ~, handles) [nama_file,nama_path] = uiputfile({

Img = getimage(handles.citraIHP);

imwrite(Img, strcat(nama_path,nama_file));

end

(7)

else

Img = getimage(handles.citraBHP);

imwrite(Img, strcat(nama_path,nama_file));

end

% --- Executes on button press in btnSaveGHP. function btnSaveGHP_Callback(~, ~, handles) [nama_file,nama_path] = uiputfile({

'*.bmp','Windows Bitmap (*.bmp)'; ...

'*.png','Portable Network Graphics (*.png)'}, ... 'Save File Citra');

if isequal([nama_file,nama_path],[0,0]) return

else

Img= getimage(handles.citraGHP);

imwrite(Img, strcat(nama_path,nama_file));

end

function editCutoff_Callback(~, ~, ~)

function editCutoff_CreateFcn(hObject, ~, ~)

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

set(hObject,'BackgroundColor','white');

end

function editOrde_Callback(~, ~, ~)

function editOrde_CreateFcn(hObject, ~, ~)

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

set(hObject,'BackgroundColor','white');

end

3.

Form Citra Tanpa Noise

function varargout = FormCitraTanpaNoise(varargin)

% Begin initialization code - DO NOT EDIT

gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ...

'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @FormCitraTanpaNoise_OpeningFcn,

...

'gui_OutputFcn', @FormCitraTanpaNoise_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

(8)

function FormCitraTanpaNoise_OpeningFcn(hObject, ~, handles, varargin)

handles.output = hObject; guidata(hObject, handles);

function varargout = FormCitraTanpaNoise_OutputFcn(~, ~, handles) varargout{1} = handles.output;

function menuProgram_Callback(~, ~, ~)

function menuHelp_Callback(~, ~, ~) FormHelp;

function menuClose_Callback(~, ~, ~) close;

function submenu_withnoise_Callback(~, ~, ~) FormCitraDenganNoise;

function submenu_nonoise_Callback(~, ~, ~)

function btnOpen_Callback(hObject, ~, handles) [nama_file, nama_path] = uigetfile({

'*.bmp','Windows Bitmap (*.bmp)'; ...

'*.png','Portable Network Graphics (*.png)'}, ...

'Open File Citra');

if ~isequal(nama_file,0)

handles.citra = imread(fullfile(nama_path,nama_file)); guidata(hObject,handles);

axes(handles.citraAsli); imshow(handles.citra);

[Baris Kolom] = size(handles.citra);

set(handles.txtnamafile,'string',nama_file); set(handles.txtpanjang,'string',Kolom); set(handles.txtlebar,'string',Baris);

uiwait(msgbox('Citra berhasil diinputkan, Silahkan Generate Noise ','Success','modal'));

else

return;

end;

% --- Executes on button press in btnClear. function btnClear_Callback(~, ~, handles) set(handles.txtnoise,'string','');

set(handles.txtnamafile,'string',''); set(handles.txtpanjang,'string',''); set(handles.txtlebar,'string','');

(9)

cla(handles.citraGHP);

set(handles.mseILP,'string','-'); set(handles.psnrILP,'string','-'); set(handles.runtimeILP,'string','-');

set(handles.mseBLP,'string','-'); set(handles.psnrBLP,'string','-'); set(handles.runtimeBLP,'string','-');

set(handles.mseGLP,'string','-'); set(handles.psnrGLP,'string','-'); set(handles.runtimeGLP,'string','-');

set(handles.mseIHP,'string','-'); set(handles.psnrIHP,'string','-'); set(handles.runtimeIHP,'string','-');

set(handles.mseBHP,'string','-'); set(handles.psnrBHP,'string','-'); set(handles.runtimeBHP,'string','-');

set(handles.mseGHP,'string','-'); set(handles.psnrGHP,'string','-'); set(handles.runtimeGHP,'string','-');

% --- Executes on button press in btnExpo. function btnExpo_Callback(~, ~, handles) img = getimage(handles.citraAsli);

P = str2double(get(handles.editExpo,'string'));

if (isempty(get(handles.editExpo,'string')))

warndlg('Masukkan Nilai Probabilitas','Error','modal')

elseif (P <= 0) || (P > 10)

warndlg('Nilai probabilitas = 0 < Probabilitas <= 10','Error','modal')

else

P = P/100;

Img = noiseexponential(img,P); axes(handles.citraNoise); imshow(Img);

[MSE PSNR] = mse_psnr(img, Img); set(handles.mse,'String',MSE); set(handles.psnr,'String',PSNR);

set(handles.txtnoise,'string','Exponential Noise');

uiwait(msgbox('Noise Eksponensial berhasil ditambahkan, Lanjutkan ke proses Filtering','Success','modal'));

end

% --- Executes on button press in btnRayleigh. function btnRayleigh_Callback(~, ~, handles) img = getimage(handles.citraAsli);

A = str2double(get(handles.editA,'string')); B = str2double(get(handles.editB,'string'));

if (isempty(get(handles.editA,'string'))) && (isempty(get(handles.editB,'string')))

warndlg('Masukkan Nilai A dan B','Error','modal')

(10)

warndlg('Nilai A = 10 < A < 100; Nilai B = 250 < B < 2500','Error','modal')

elseif (isempty(get(handles.editA,'string'))) || (A <= 0) || (A > 100)

warndlg('Nilai 10 < A < 100','Error','modal')

elseif (isempty(get(handles.editB,'string'))) || (B <= 0) || (B > 2500)

warndlg('Nilai 250 < B < 2500','Error','modal')

else

Img = noiserayleigh(img,A,B); axes(handles.citraNoise); imshow(Img);

[MSE PSNR] = mse_psnr(img, Img); set(handles.mse,'String',MSE); set(handles.psnr,'String',PSNR);

set(handles.txtnoise,'string','Rayleigh Noise');

uiwait(msgbox('Noise Rayleigh berhasil ditambahkan, Lanjutkan ke proses Filtering ','Success','modal'));

end

% --- Executes on button press in btnFilter. function btnFilter_Callback(~, ~, handles) citra_asli = getimage(handles.citraAsli); Img = getimage(handles.citraNoise);

Fs = double(Img);

d0 = str2double(get(handles.editCutoff,'string')); n = str2double(get(handles.editOrde,'string'));

if (isempty(get(handles.editOrde,'string'))) && (isempty(get(handles.editCutoff,'string')))

warndlg('Masukkan Nilai Cut-off dan Orde','Error','modal')

elseif (d0 <= 0) && (n <= 0)

warndlg('Nilai Cut-off = 0 < d0 < 1; Nilai Orde = 1 < N < 4','Error','modal')

elseif (isempty(get(handles.editCutoff,'string'))) || (d0 <= 0) || (d0 > 1)

warndlg('Nilai Cut-off = 0 < d0 < 1','Error','modal')

elseif (isempty(get(handles.editOrde,'string'))) || (n <= 0) || (n > 4)

warndlg('Nilai Orde = 1 < N < 4','Error','modal')

else

R = Fs(:,:,1); G = Fs(:,:,2); B = Fs(:,:,3);

%Ideal Low-pass %global runtimeILP;

runtimeILP = cputime; ilp_R = ilpf(R,d0); ilp_G = ilpf(G,d0); ilp_B = ilpf(B,d0);

img_ilp = cat(3, ilp_R, ilp_G, ilp_B); runtimeILP = cputime - runtimeILP; axes(handles.citraILP);

imshow(img_ilp);

[MSE PSNR] = mse_psnr(citra_asli, img_ilp); set(handles.mseILP,'String',MSE);

set(handles.psnrILP,'String',PSNR);

(11)

%Butterworth Low-pass %global runtimeBLP;

runtimeBLP = cputime; blp_R = blpf(R,d0,n); blp_G = blpf(G,d0,n); blp_B = blpf(B,d0,n);

img_blp = cat(3, blp_R, blp_G, blp_B); runtimeBLP = cputime - runtimeBLP; axes(handles.citraBLP);

imshow(img_blp);

[MSE PSNR] = mse_psnr(citra_asli, img_blp); set(handles.mseBLP,'String',MSE);

set(handles.psnrBLP,'String',PSNR);

set(handles.runtimeBLP,'String',runtimeBLP);

%Gaussian Low-pass %global runtimeGLP;

runtimeGLP = cputime; glp_R = glpf(R,d0); glp_G = glpf(G,d0); glp_B = glpf(B,d0);

img_glp = cat(3, glp_R, glp_G, glp_B); runtimeGLP = cputime - runtimeGLP; axes(handles.citraGLP);

imshow(img_glp);

[MSE PSNR] = mse_psnr(citra_asli, img_glp); set(handles.mseGLP,'String',MSE);

set(handles.psnrGLP,'String',PSNR);

set(handles.runtimeGLP,'String',runtimeGLP);

%Ideal High-pass %global runtimeIHP;

runtimeIHP = cputime; ihp_R = ihpf(R,d0); ihp_G = ihpf(G,d0); ihp_B = ihpf(B,d0);

img_ihp = cat(3, ihp_R, ihp_G, ihp_B); runtimeIHP = cputime - runtimeIHP; axes(handles.citraIHP);

imshow(img_ihp);

[MSE PSNR] = mse_psnr(citra_asli, img_ihp); set(handles.mseIHP,'String',MSE);

set(handles.psnrIHP,'String',PSNR);

set(handles.runtimeIHP,'String',runtimeIHP);

%Butterworth High-pass %global runtimeBHP;

runtimeBHP = cputime; bhp_R = bhpf(R,d0,n); bhp_G = bhpf(G,d0,n); bhp_B = bhpf(B,d0,n);

img_bhp = cat(3, bhp_R, bhp_G, bhp_B); runtimeBHP = cputime - runtimeBHP; axes(handles.citraBHP);

imshow(img_bhp);

[MSE PSNR] = mse_psnr(citra_asli, img_bhp); set(handles.mseBHP,'String',MSE);

(12)

set(handles.runtimeBHP,'String',runtimeBHP);

%Gaussian High-pass %global runtimeGHP;

runtimeGHP = cputime; ghp_R = ghpf(R,d0); ghp_G = ghpf(G,d0); ghp_B = ghpf(B,d0);

img_ghp = cat(3, ghp_R, ghp_G, ghp_B); runtimeGHP = cputime - runtimeGHP; axes(handles.citraGHP);

imshow(img_ghp);

[MSE PSNR] = mse_psnr(citra_asli, img_ghp); set(handles.mseGHP,'String',MSE);

set(handles.psnrGHP,'String',PSNR);

set(handles.runtimeGHP,'String',runtimeGHP);

end

% Fungsi Exponential Noise

function [G] = noiseexponential(F, a) [m, n, o] = size(F);

F = double(F); G = zeros(m, n, o);

for i=1 : m for j=1 : n for k=1 : o

noise = -1/a * log(1 - rand);

G(i,j,k) = round(F(i,j,k) + noise); if G(i,j,k) > 255

G(i,j,k) = 255; end

end

end end

G = uint8(G);

% Fungsi Rayleigh Noise

function [G] = noiserayleigh(F, a, b) [m, n, o] = size(F);

F = double(F); G = zeros(m, n, o);

for i=1 : m for j=1 : n for k=1 : o

noise = a + sqrt(-b * log(1 - rand)); G(i,j,k) = round(F(i,j,k) + noise); if G(i,j,k) > 255

G(i,j,k) = 255; end

end end end

G = uint8(G);

(13)

'*.bmp','Windows Bitmap (*.bmp)'; ...

Img = getimage(handles.citraNoise);

imwrite(Img, strcat(nama_path,nama_file));

%H = msgbox('Citra Noise berhasil disimpan','Success','modal'); end

% --- Executes on button press in btnSaveILP. function btnSaveILP_Callback(~, ~, handles) [nama_file,nama_path] = uiputfile({

Img = getimage(handles.citraILP);

imwrite(Img, strcat(nama_path,nama_file));

end

% --- Executes on button press in btnSaveBLP. function btnSaveBLP_Callback(~, ~, handles) [nama_file,nama_path] = uiputfile({

Img = getimage(handles.citraBLP);

imwrite(Img, strcat(nama_path,nama_file));

end

% --- Executes on button press in btnSaveGLP. function btnSaveGLP_Callback(~, ~, handles) [nama_file,nama_path] = uiputfile({

Img = getimage(handles.citraGLP);

imwrite(Img, strcat(nama_path,nama_file));

end

(14)

Img = getimage(handles.citraIHP);

imwrite(Img, strcat(nama_path,nama_file));

end

% --- Executes on button press in btnSaveBHP. function btnSaveBHP_Callback(~, ~, handles) [nama_file,nama_path] = uiputfile({

'*.bmp','Windows Bitmap (*.bmp)'; ...

'*.png','Portable Network Graphics (*.png)'}, ...

'Save File Citra');

if isequal([nama_file,nama_path],[0,0]) return

else

Img = getimage(handles.citraBHP);

imwrite(Img, strcat(nama_path,nama_file));

end

% --- Executes on button press in btnSaveGHP. function btnSaveGHP_Callback(~, ~, handles) [nama_file,nama_path] = uiputfile({

'*.bmp','Windows Bitmap (*.bmp)'; ...

'*.png','Portable Network Graphics (*.png)'}, ...

'Save File Citra');

if isequal([nama_file,nama_path],[0,0]) return

else

Img= getimage(handles.citraGHP);

imwrite(Img, strcat(nama_path,nama_file));

end

function editExpo_Callback(~, ~, ~)

function editExpo_CreateFcn(hObject, ~, ~)

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

set(hObject,'BackgroundColor','white');

end

function editA_Callback(~, ~, ~)

function editA_CreateFcn(hObject, ~, ~)

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

set(hObject,'BackgroundColor','white');

end

function editB_Callback(~, ~, ~)

function editB_CreateFcn(hObject, ~, ~)

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

set(hObject,'BackgroundColor','white');

end

function editCutoff_Callback(~, ~, ~)

function editCutoff_CreateFcn(hObject, ~, ~)

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

set(hObject,'BackgroundColor','white');

(15)

function editOrde_Callback(~, ~, ~)

function editOrde_CreateFcn(hObject, ~, ~)

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

set(hObject,'BackgroundColor','white');

end

4.

Form Help

function varargout = FormHelp(varargin)

% Begin initialization code - DO NOT EDIT

gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ...

'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @FormHelp_OpeningFcn, ...

'gui_OutputFcn', @FormHelp_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

function FormHelp_OpeningFcn(hObject, ~, handles, varargin) handles.output = hObject;

guidata(hObject, handles);

function varargout = FormHelp_OutputFcn(~, ~, handles) varargout{1} = handles.output;

function menuHelp_Callback(~, ~, ~)

function menuclose_Callback(~, ~, ~) close;

5.

Form

About

function varargout = FormAbout(varargin)

% Begin initialization code - DO NOT EDIT

gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ...

'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @FormAbout_OpeningFcn, ...

'gui_OutputFcn', @FormAbout_OutputFcn, ... 'gui_LayoutFcn', [] , ...

'gui_Callback', []);

if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1});

(16)

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

else

gui_mainfcn(gui_State, varargin{:});

end

% End initialization code - DO NOT EDIT

function FormAbout_OpeningFcn(hObject, ~, handles, varargin) handles.output = hObject;

guidata(hObject, handles);

foto = imread ('Logo\IMG_0004.jpg'); axes(handles.axesFoto);

imshow(foto);

function varargout = FormAbout_OutputFcn(~, ~, handles) varargout{1} = handles.output;

function menuabout_Callback(~, ~, ~)

function menuclose_Callback(~, ~, ~) close;

6.

Fungsi ilpf.m

function F = ilpf(Fs, d0)

% Berdasarkan buku 'Teori dan Aplikasi Pengolahan Citra' % oleh: Abdul Kadir & Adhi Susanto

% hal : 157-158

[a, b] = size(Fs); %Peroleh ukuran citra

% Menentukan ukuran baru untuk perluasan citra

r = nextpow2(2 * max(a, b)); p = 2 ^ r;

q = p;

% Menentukan jangkauan frekuensi u dan v

u = 0:(p - 1); v = 0:(q - 1);

% Hitung indeks untuk meshgrid

idx = find(u > q/2); u(idx) = u(idx) - q; idy = find(v > p/2); v(idy) = v(idy) - p;

% Peroleh array meshgrid

[V, U] = meshgrid(v, u);

% Hitung jarak D(v,u)

D = sqrt(V.^2 + U.^2);

% Hitung frekuensi ambang sebesar d0 kali lebar citra

ambang = d0 * q;

% Peroleh fungsi transfer

(17)

% Transformasi via FFT dengan zero padding

Ff = fft2(Fs, p, q);

% Pemfilteran

G = Hf.* Ff;

% Transformasi balik

F = real(ifft2(G)); F = uint8(F(1:a, 1:b));

7.

Fungsi ihpf.m

function F = ihpf(Fs, d0)

% Berdasarkan buku 'Teori dan Aplikasi Pengolahan Citra' % oleh: Abdul Kadir & Adhi Susanto

[a, b] = size(Fs); %Peroleh ukuran citra

% Menentukan ukuran baru untuk perluasan citra

r = nextpow2(2 * max(a, b)); p = 2 ^ r;

q = p;

% Menentukan ukuran baru untuk perluasan citra

r = nextpow2(2 * max(a, b)); p = 2 ^ r;

q = p;

% Menentukan jangkauan frekuensi u dan v

u = 0:(p - 1); v = 0:(q - 1);

% Hitung indeks untuk meshgrid

idx = find(u > q/2); u(idx) = u(idx) - q; idy = find(v > p/2); v(idy) = v(idy) - p;

% Peroleh array meshgrid

[V, U] = meshgrid(v, u);

% Hitung jarak D(v,u)

D = sqrt(V.^2 + U.^2);

% Hitung frekuensi ambang

ambang = d0 * p;

Hlr = double(D <= ambang); % Lolos-rendah

Hlt = 1 - Hlr; % Lolos-tinggi

% Transformasi via FFT dengan zero padding

Ff = fft2(Fs, p, q);

% Pemfilteran

(18)

% Transformasi balik

F = real(ifft2(G)); F = uint8(F(1:a, 1:b));

8.

Fungsi blpf.m

function F = blpf(Fs, d0, n)

% Berdasarkan buku 'Teori dan Aplikasi Pengolahan Citra' % oleh: Abdul Kadir & Adhi Susanto

% hal : 159-160

[a, b] = size(Fs); %Peroleh ukuran citra

% Menentukan ukuran baru untuk perluasan citra

r = nextpow2(2 * max(a, b)); p = 2 ^ r;

q = p;

% Menentukan jangkauan frekuensi u dan v

u = 0:(p - 1); v = 0:(q - 1);

% Hitung indeks untuk meshgrid

idx = find(u > q/2); u(idx) = u(idx) - q; idy = find(v > p/2); v(idy) = v(idy) - p;

% Peroleh array meshgrid

[V, U] = meshgrid(v, u);

% Hitung jarak D(v,u)

D = sqrt(V.^2 + U.^2);

% Menentukan n kalau n tidak disebutkan if nargin == 2

n = 1;

end

% Hitung frekuensi ambang

ambang = d0 * p;

Hf = 1 ./ (1 + (D ./ ambang) .^(2 * n));

% Transformasi via FFT dengan zero padding

Ff = fft2(Fs, p, q);

% Pemfilteran

G = Hf .* Ff;

% Transformasi balik

F = real(ifft2(G)); F = uint8(F(1:a, 1:b));

(19)

function F = bhpf(Fs, d0, n)

% Berdasarkan buku 'Teori dan Aplikasi Pengolahan Citra' % oleh: Abdul Kadir & Adhi Susanto

% hal : 165-166

[a, b] = size(Fs);

r = nextpow2(2 * max(a, b)); p = 2 ^ r;

q = p;

% Menentukan ukuran baru untuk perluasan citra

r = nextpow2(2 * max(a, b)); p = 2 ^ r;

q = p;

% Menentukan jangkauan frekuensi u dan v

u = 0:(p - 1); v = 0:(q - 1);

% Hitung indeks untuk meshgrid

idx = find(u > q/2); u(idx) = u(idx) - q; idy = find(v > p/2); v(idy) = v(idy) - p;

% Peroleh array meshgrid

[V, U] = meshgrid(v, u);

D = sqrt(V.^2 + U.^2);

% Menentukan n kalau n tidak disebutkan if nargin == 2

n = 1;

end

ambang = d0 * p;

Hlr = 1 ./ (1 + (D ./ ambang) .^(2 * n)); % Lolos-rendah

Hlt = 1 - Hlr; % Lolos-tinggi

Ff = fft2(Fs, p, q); G = Hlt .* Ff;

F = real(ifft2(G)); F = uint8(F(1:a, 1:b));

10.

Fungsi glpf.m

function F = glpf(Fs, d0)

% Berdasarkan buku 'Teori dan Aplikasi Pengolahan Citra' % oleh: Abdul Kadir & Adhi Susanto

% hal : 152-163

(20)

% Menentukan ukuran baru untuk perluasan citra

r = nextpow2(2 * max(a, b)); p = 2 ^ r;

q = p;

% Menentukan jangkauan frekuensi u dan v

u = 0:(p - 1); v = 0:(q - 1);

% Hitung indeks untuk meshgrid

idx = find(u > q/2); u(idx) = u(idx) - q; idy = find(v > p/2); v(idy) = v(idy) - p;

% Peroleh array meshgrid

[V, U] = meshgrid(v, u);

% Hitung jarak D(v,u)

D = sqrt(V.^2 + U.^2);

% Hitung frekuensi ambang

ambang = d0 * p;

Hf = exp(-(D.^2) ./ (2 * ambang ^ 2));

% Transformasi via FFT dengan zero padding

Ff = fft2(Fs, p, q);

% Pemfilteran

G = Hf .* Ff;

% Transformasi balik

F = real(ifft2(G)); F = uint8(F(1:a, 1:b));

11.

Fungsi ghpf.m

function F = ghpf(Fs, d0)

% Berdasarkan buku 'Teori dan Aplikasi Pengolahan Citra' % oleh: Abdul Kadir & Adhi Susanto

[a, b] = size(Fs); %Peroleh ukuran citra

r = nextpow2(2 * max(a, b)); p = 2 ^ r;

q = p;

% Menentukan ukuran baru untuk perluasan citra

r = nextpow2(2 * max(a, b)); p = 2 ^ r;

q = p;

% Menentukan jangkauan frekuensi u dan v

(21)

% Hitung indeks untuk meshgrid

idx = find(u > q/2); u(idx) = u(idx) - q; idy = find(v > p/2); v(idy) = v(idy) - p;

% Peroleh array meshgrid

[V, U] = meshgrid(v, u);

D = sqrt(V.^2 + U.^2);

ambang = d0 * p;

Hlr = exp(-(D.^2) ./ (2 * ambang ^ 2)); % Lolos-rendah

Hlt = 1 - Hlr; % Lolos-tinggi

Ff = fft2(Fs, p, q); G = Hlt .* Ff;

F = real(ifft2(G)); F = uint8(F(1:a, 1:b));

12.

Fungsi mse_psnr.m

function [MSE, PSNR] = mse_psnr(citra_asli, Ihat) [a b] = size(citra_asli);

mseRImage = (double(citra_asli(:,:,1)) - double(Ihat(:,:,1))) .^ 2; mseGImage = (double(citra_asli(:,:,2)) - double(Ihat(:,:,2))) .^ 2; mseBImage = (double(citra_asli(:,:,3)) - double(Ihat(:,:,3))) .^ 2;

mseR = sum(sum(mseRImage))/(a*b); mseG = sum(sum(mseGImage))/(a*b); mseB = sum(sum(mseBImage))/(a*b);

MSE = (mseR + mseG + mseB)/3; PSNR = 10 * log10( 255^2 / MSE);

(22)

CURRICULUM VITAE

1. DATA PRIBADI

Nama Lengkap

: NURUL ULFAH PRIMADINI

Nama Panggilan

: Dini

Tempat/Tgl. Lahir

: Yogyakarta / 31 Januari 1991

Jenis Kelamin

: Perempuan

Agama

: Islam

Warga Negara

: Indonesia

Alamat

: Komplek Wisma Lapai Jaya Blok i/2 Padang 25142

No. Telp./HP

: - / 081267448080

Email

: nu.primadini@gmail.com

Status

: Belum Menikah

No.

Nama Sekolah

Tahun

1.

SD Pertiwi 2 Padang

1997 - 2003

3.

SMP Nurul Ikhlas Tanah Datar

2003 - 2006

4.

SMA Nurul Ikhlas Tanah Datar

2006 - 2009

5.

S1 Ilmu Komputer Universitas Sumatera Utara

2010 - 2015

No.

Instansi/Unit

Jabatan/Posisi

Tahun

1.

IKLC (Ilmu Komputer

Laboratory Center

)

Asisten Laboratorium (Sistem

Database)

2013

2.

IKLC (Ilmu Komputer

Laboratory Center

)

Asisten Laboratorium (Sistem

Manajemen Database)

2013

No.

Nama Kursus/Pelatihan/Seminar

Tahun

1.

Seminar Teknologi Informasi “The Development of Modern

Operating System Technology: Android - The New Trend in

Modern Operating System”.

2011

2.

Seminar Nasional Kongres Nasional ILP2MI “Pencaplokan

Budaya”

2013

3.

Pelatihan Jurnalistik

METRO TV ON CAMPUS

2013

4.

Seminar “Career Day”

2014

PENGALAMAN KERJA

(23)

No

SKILL

Keterangan

1.

Bahasa

Indonesia, English, Arab

2.

Pemrograman

Pascal, Matlab,

3.

Database

MySQL

Demikian daftar riwayat hidup ini saya buat dengan sebenarnya.

Hormat saya,

Referensi

Dokumen terkait

penilaian dan evaluasi dari Semua Data dalam surat penawaran harga. perusahaan ternyata rekanan / perusahaan tersebut telah

Pekerjaan/jabatan : FSU JAK-TIM (FORUM SANDI UNO JAKARTA TIMUR). 94 Nama lengkap : H.ABDUL

Sehubungan dengan pelaksanaan Evaluasi Kualifikasi dari perusahaan yang saudara/i pimpin, maka dengan ini kami mengundang saudara/i dalam kegiatan Pembuktian

[r]

[r]

pelaksanaan fungsi lain yang diberikan oleh Menteri...

1) Dunia itu ada, dan kita dapat mengetahui bahwa dunia itu benar ada. Apakah benar dunia ada? Pertanyaan itu bukanlah pertanyaan ilmiah,

[r]