Perbandingan Algoritma Wiener Dan Lucy-Richardson Untuk Memperbaiki Kualitas Citra

(1)

LISTING PROGRAM

1. Form Awal

function FormAwal_OpeningFcn(hObject, eventdata, handles, varargin)

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

function varargout = FormAwal_OutputFcn(hObject, eventdata, handles) citra_asli=imread('logo_usu.jpg'); citra_hasil=double(citra_asli); citra_hasil=uint8(citra_hasil); axes(handles.axes1); imshow(citra_hasil);

varargout{1} = handles.output;

function Wiener_Callback(hObject, eventdata, handles) Tesku

close FormAwal;

function Blind_Deconvolotion_Callback(hObject, eventdata, handles)

BlindDeconvolution close FormAwal;

function Bantuan_Callback(hObject, eventdata, handles) Bantuan

close FormAwal;

function Keluar_Callback(hObject, eventdata, handles) selection=questdlg(['Anda Ingin Keluar'],...

['Button Keluar'],... 'Yes','No','Yes'); if strcmp(selection,'No') return; end delete(handles.figure1)

II. Form Wiener

function varargout = Tesku(varargin) gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @Tesku_OpeningFcn, ... 'gui_OutputFcn', @Tesku_OutputFcn, ... 'gui_LayoutFcn', [] , ...


(2)

'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 global gb; global B; global noise; global PSF; global g; global Len; global teta;

function pushbutton1_Callback(hObject, eventdata, handles) [nama_file, namaPath]=uigetfile({'*.jpg; *.bmp; *tif; '},'Buka File');

if ~isequal (nama_file,0)

handles.citra=imread(fullfile(namaPath,nama_file)); guidata(hObject,handles); axes(handles.axes1); set(imshow(handles.citra)); info=imfinfo(fullfile(namaPath,nama_file)); set(handles.edit7,'String',info.Filename); set(handles.edit8,'String',info.Format); set(handles.edit9,'String',info.FileSize); set(handles.edit10,'String',info.FileModDate); else return; end

function pushbutton2_Callback(hObject, eventdata, handles) global gb; global noise; global PSF; global runtimeblur; runtimeblur=cputime; Len=str2num(get(handles.Len,'string')); teta=str2num(get(handles.theta,'string')); noise=getimage(handles.axes1); PSF=fspecial('motion',Len,teta); gb=imfilter(noise,PSF,'circular','conv'); axes(handles.axes2); imshow(gb); runtimeblur=cputime-runtimeblur;

function pushbutton3_Callback(hObject, eventdata, handles) global gb;

global g;


(3)

global noise;

runtimenoise=cputime;

A=str2double(get(handles.nilai,'string')); A=A/100;

b=imnoise(noise,'salt & pepper',A); g=gb+b;

axes(handles.axes3); imshow(g);

runtimenoise=cputime-runtimenoise;

function pushbutton4_Callback(hObject, eventdata, handles) global B; global g; global noise; global PSF; global runtimewiener; global A; runtimewiener=cputime; noise1=getimage(handles.axes2); gb=imfilter(noise1,PSF,'circular','conv'); A=str2double(get(handles.nilai,'string')); A=A/100; pilih=handles.pilih switch handles.pilih case 1

M = getimage(handles.axes2); x = rand(size(M));

d = find(x < A/2);

M(d) = 255; % Minimum value

d = find(x >= A/2 & x < A);

M(d) = 0; % Maximum (saturated) value

N=uint8(M);

case 2

b1=getimage(handles.axes2); [r c d] = size (b1);

x=1:r; y=1:c; z=1:d;

E = double(b1(x,y,1)); F = double(b1(x,y,2)); G = double(b1(x,y,3));

M(x,y,1) = E +sqrt (12*A)*E.*(rand(size(E))-.5); M(x,y,2) = F +sqrt (12*A)*F.*(rand(size(F))-.5); M(x,y,3) = G +sqrt (12*A)*G.*(rand(size(G))-.5);

N=uint8(M);


(4)

case 3

b2 = getimage(handles.axes2); [r c d] = size (b2);

x=1:r; y=1:c; z=1:d;

E = double(b2(x,y,1)); F = double(b2(x,y,2)); G = double(b2(x,y,3));

M(x,y,1) = E +sqrt (A)*(rand(size(E))); M(x,y,2) = F +sqrt (A)*(rand(size(F))); M(x,y,3) = G +sqrt (A)*(rand(size(G))); N=uint8(M); end g=gb+N; Sn=(abs(fft2(N))).^2; nA=sum(Sn(:))/prod(size(N)); Sf=(abs(fft2(noise1))).^2; fA=sum(Sf(:))/prod(size(noise1)); NCORR=fftshift(real(ifft(Sn))); ICORR=fftshift(real(ifft(Sf))); fr3=deconvwnr(g,PSF,NCORR,ICORR); axes(handles.axes4); imshow(fr3); runtimewiener=cputime-runtimewiener;

function pushbutton5_Callback(hObject, eventdata, handles) citraAsli=getimage(handles.axes1);

CitraHasil = getimage(handles.axes3);

[psnrval mseval] = MSE_PSNR(citraAsli,CitraHasil); set(handles.text1,'String',mseval);

function pushbutton6_Callback(hObject, eventdata, handles) citraAsli=getimage(handles.axes1);

CitraHasil = getimage(handles.axes3);

[psnrval mseval] = MSE_PSNR(citraAsli,CitraHasil); set(handles.text2,'String',psnrval);

function pushbutton7_Callback(hObject, eventdata, handles) citraAsli=getimage(handles.axes1);

CitraHasil = getimage(handles.axes4);

[psnrval mseval] = MSE_PSNR(citraAsli,CitraHasil); set(handles.text3,'String',mseval);

function pushbutton8_Callback(hObject, eventdata, handles) citraAsli=getimage(handles.axes1);

CitraHasil = getimage(handles.axes4);

[psnrval mseval] = MSE_PSNR(citraAsli,CitraHasil); set(handles.text4,'String',psnrval);


(5)

function pushbutton9_Callback(hObject, eventdata, handles) citraAsli=getimage(handles.axes1);

CitraHasil = getimage(handles.axes5);

[psnrval mseval] = MSE_PSNR(citraAsli,CitraHasil); set(handles.text5,'String',mseval);

function pushbutton10_Callback(hObject, eventdata, handles) citraAsli=getimage(handles.axes1);

CitraHasil = getimage(handles.axes5);

[psnrval mseval] = MSE_PSNR(citraAsli,CitraHasil); set(handles.text6,'String',psnrval);

function pushbutton11_Callback(hObject, eventdata, handles) citraAsli=getimage(handles.axes1);

CitraHasil = getimage(handles.axes2);

[psnrval mseval] = MSE_PSNR(citraAsli,CitraHasil); set(handles.text7,'String',mseval);

function pushbutton12_Callback(hObject, eventdata, handles) citraAsli=getimage(handles.axes1);

CitraHasil = getimage(handles.axes2);

[psnrval mseval] = MSE_PSNR(citraAsli,CitraHasil); set(handles.text8,'String',psnrval);

function pushbutton13_Callback(hObject, eventdata, handles) global runtimeblur;

set(handles.text9,'String',runtimeblur);

function pushbutton14_Callback(hObject, eventdata, handles) global runtimewiener;

set(handles.text10,'String',runtimewiener);

function pushbutton15_Callback(hObject, eventdata, handles) global runtimenoise;

set(handles.text11,'String',runtimenoise);

function pushbutton18_Callback(hObject, eventdata, handles) [nama_file, namaPath]=uigetfile({'*.jpg',' File

Jpeg(.*jpg)'},'Buka File'); if ~isequal (nama_file,0)

handles.citra=imread(fullfile(namaPath,nama_file)); guidata(hObject,handles); axes(handles.axes7); imshow(handles.citra); else return; end

function pushbutton19_Callback(hObject, eventdata, handles) global gb;

global noise; global PSF;

global runtimeblur2; runtimeblur2=cputime;


(6)

Len1=str2num(get(handles.len2,'string')); teta2=str2num(get(handles.teta2,'string')); noise=getimage(handles.axes7); PSF=fspecial('motion',Len1,teta2); gb=imfilter(noise,PSF,'circular','conv'); axes(handles.axes8); imshow(gb); runtimeblur2=cputime-runtimeblur2;

function pushbutton23_Callback(hObject, eventdata, handles) global gb; global g; global runtimenoise1; global noise; runtimenoise1=cputime; A=str2double(get(handles.nilai2,'string')); A=A/100;

B=imnoise(noise,'salt & pepper',A); g=gb+B;

axes(handles.axes9); imshow(g);

runtimenoise1=cputime-runtimenoise1;

function pushbutton35_Callback(hObject, eventdata, handles) [nama_file_simpan, path_simpan]=uiputfile(...

{'*.jpeg','file citra (*.jpeg)'; '*.jpeg','citra bmp (*.jpeg)';... '*.*','Semua File (*.*)'},... 'Menyimpan Citra Hasil'); S=getimage(handles.axes4);

imwrite(S,fullfile(path_simpan,nama_file_simpan),'JPEG');

function pushbutton36_Callback(hObject, eventdata, handles) FormAwal

close Tesku;

function pushbutton37_Callback(hObject, eventdata, handles) axes(handles.axes1); plot(0); set(handles.edit7,'string',''); set(handles.edit8,'string',''); set(handles.edit9,'string',''); set(handles.edit10,'string',''); axes(handles.axes2); plot(0); set(handles.Len,'string',''); set(handles.theta,'string',''); set(handles.text7,'String',''); set(handles.text8,'String',''); set(handles.text9,'String',''); set(handles.radiobutton1,'value',0); set(handles.radiobutton2,'value',0); set(handles.gauss,'value',0); axes(handles.axes3); plot(0);


(7)

set(handles.nilai,'string',''); set(handles.text1,'String',''); set(handles.text2,'String',''); set(handles.text11,'String',''); axes(handles.axes5); plot(0); set(handles.text5,'String',''); set(handles.text6,'String',''); set(handles.text40,'String',''); axes(handles.axes4); plot(0); set(handles.text3,'String',''); set(handles.text4,'String',''); set(handles.text10,'string','');

function pushbutton38_Callback(hObject, eventdata, handles) [nama_file_simpan, path_simpan]=uiputfile(...

{'*.jpeg','file citra (*.jpeg)'; '*.jpeg','citra bmp (*.jpeg)';... '*.*','Semua File (*.*)'},... 'Menyimpan Citra Hasil'); G=getimage(handles.axes3);

imwrite(G,fullfile(path_simpan,nama_file_simpan),'JPEG');

function pushbutton39_Callback(hObject, eventdata, handles) global B; global g; global noise; global PSF; global runtimewiener1; global A runtimewiener1=cputime; noise1=getimage(handles.axes2); gb=imfilter(noise1,PSF,'circular','conv'); A=str2double(get(handles.nilai,'string')); A=A/100; pilih=handles.pilih switch handles.pilih case 1

M = getimage(handles.axes2); x = rand(size(M));

d = find(x < A/2);

M(d) = 255; % Minimum value

d = find(x >= A/2 & x < A);

M(d) = 0; % Maximum (saturated) value

N=uint8(M);

case 2

b1=getimage(handles.axes2); [r c d] = size (b1);

x=1:r; y=1:c;


(8)

z=1:d;

E = double(b1(x,y,1)); F = double(b1(x,y,2)); G = double(b1(x,y,3));

M(x,y,1) = E +sqrt (12*A)*E.*(rand(size(E))-.5); M(x,y,2) = F +sqrt (12*A)*F.*(rand(size(F))-.5); M(x,y,3) = G +sqrt (12*A)*G.*(rand(size(G))-.5);

N=uint8(M);

case 3

b2 = getimage(handles.axes2); [r c d] = size (b2);

x=1:r; y=1:c; z=1:d;

E = double(b2(x,y,1)); F = double(b2(x,y,2)); G = double(b2(x,y,3));

M(x,y,1) = E +sqrt (A).*(rand(size(E))); M(x,y,2) = F +sqrt (A).*(rand(size(F))); M(x,y,3) = G +sqrt (A).*(rand(size(G))); N=uint8(M); end D=gb+N; Sn=(abs(fft2(N))).^2; nA=sum(Sn(:))/prod(size(N)); Sf=(abs(fft2(noise1))).^2; fA=sum(Sf(:))/prod(size(noise1)); R=nA/fA; fr2=deconvwnr(D,PSF,R); axes(handles.axes5); imshow(fr2); runtimewiener1=cputime-runtimewiener1;

function radiobutton1_Callback(hObject, eventdata, handles) global gb;

global g;

global runtimenoise; global noise;

global A;

set(handles.text37,'String','salt & pepper'); set(handles.radiobutton1,'Value',1);

set(handles.radiobutton2,'Value',0); set(handles.gauss,'Value',0);

runtimenoise=cputime;


(9)

A=A/100; pilih = 1;

handles.pilih=pilih; guidata(hObject,handles) b = getimage(handles.axes2);; x = rand(size(b));

d = find(x < A/2);

b(d) = 255; % Minimum value

d = find(x >= A/2 & x < A);

b(d) = 0; % Maximum (saturated) value

g=gb+b;

axes(handles.axes3); imshow(g);

runtimenoise=cputime-runtimenoise;

function radiobutton2_Callback(hObject, eventdata, handles) global gb; global g; global runtimenoise; global noise; set(handles.text39,'String','speckle'); set(handles.radiobutton1,'Value',0); set(handles.radiobutton2,'Value',1); set(handles.gauss,'Value',0); runtimenoise=cputime; A=str2double(get(handles.nilai,'string')); A=A/100;

pilih = 2;

handles.pilih=pilih; guidata(hObject,handles) b1=getimage(handles.axes2); [r c d] = size (b1);

x=1:r; y=1:c; z=1:d;

E = double(b1(x,y,1)); F = double(b1(x,y,2)); G = double(b1(x,y,3));

M(x,y,1) = E +sqrt (12*A)*E.*(rand(size(E))-.5); M(x,y,2) = F +sqrt (12*A)*F.*(rand(size(F))-.5); M(x,y,3) = G +sqrt (12*A)*G.*(rand(size(G))-.5); n=uint8(M);

op=gb+n;

axes(handles.axes3); imshow(op);

runtimenoise=cputime-runtimenoise;


(10)

global runtimewiener1; set(handles.text40,'String',runtimewiener1); global gb; global g; global runtimenoise; global noise; set(handles.text39,'String','speckle'); set(handles.radiobutton1,'Value',0); set(handles.radiobutton2,'Value',0); set(handles.gauss,'Value',1); runtimenoise=cputime; A=str2double(get(handles.nilai,'string')); A=A/100;

pilih = 3;

handles.pilih=pilih; guidata(hObject,handles) b2 = getimage(handles.axes2); [r c d] = size (b2);

x=1:r; y=1:c; z=1:d;

E = double(b2(x,y,1)); F = double(b2(x,y,2)); G = double(b2(x,y,3));

M(x,y,1) = E +sqrt (A)*(rand(size(E))); M(x,y,2) = F +sqrt (A)*(rand(size(F))); M(x,y,3) = G +sqrt (A)*(rand(size(G))); n=uint8(M); op1=gb+n; axes(handles.axes3); imshow(op1); runtimenoise=cputime-runtimenoise; III. Lucy-Richardson

function varargout = BlindDeconvolution(varargin) gui_Singleton = 1;

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

@BlindDeconvolution_OpeningFcn, ... 'gui_OutputFcn', @BlindDeconvolution_OutputFcn, ...

'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1})


(11)

end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end global gb; global B; global noise; global PSF; global g; global Len; global teta; global D; global v; global UNDERPSF;

function pushbutton1_Callback(hObject, eventdata, handles) [nama_file, namaPath]=uigetfile({'*.jpg; *.bmp; *.tif'},'Buka File');

if ~isequal (nama_file,0)

handles.citra=imread(fullfile(namaPath,nama_file)); guidata(hObject,handles); axes(handles.axes1); imshow(handles.citra); info=imfinfo(fullfile(namaPath,nama_file)); set(handles.edit5,'String',info.Filename); set(handles.edit6,'String',info.Format); set(handles.edit7,'String',info.FileSize); set(handles.edit8,'String',info.FileModDate); else return; end

function pushbutton2_Callback(hObject, eventdata, handles) global gb; global noise; global PSF; global runtimeblur; runtimeblur=cputime; Len=str2num(get(handles.alfa,'string')); teta=str2num(get(handles.beta,'string')); noise=getimage(handles.axes1); PSF=fspecial('motion',Len,teta); gb=imfilter(noise,PSF,'circular','conv'); axes(handles.axes2); imshow(gb); runtimeblur=cputime-runtimeblur;

function pushbutton3_Callback(hObject, eventdata, handles) citraAsli=getimage(handles.axes1);

CitraHasil = getimage(handles.axes2);


(12)

set(handles.text1,'String',mseval);

function pushbutton4_Callback(hObject, eventdata, handles) citraAsli=getimage(handles.axes1);

CitraHasil = getimage(handles.axes2);

[psnrval mseval] = MSE_PSNR(citraAsli,CitraHasil); set(handles.text2,'String',psnrval);

function pushbutton5_Callback(hObject, eventdata, handles) global runtimeblur;

set(handles.text3,'String',runtimeblur);

function pushbutton6_Callback(hObject, eventdata, handles) global gb; global g; global runtimenoise; global noise; runtimenoise=cputime; A=str2double(get(handles.Nilai1,'string')); A=A/100;

B = noise;

x = rand(size(B)); d = find(x < A/2);

B(d) = 0; % Minimum value

d = find(x >= A/2 & x < A);

B(d) = 1; % Maximum (saturated) value

g=gb+B;

axes(handles.axes3); imshow(g);

runtimenoise=cputime-runtimenoise;

function pushbutton7_Callback(hObject, eventdata, handles) citraAsli=getimage(handles.axes1);

CitraHasil = getimage(handles.axes3);

[psnrval mseval] = MSE_PSNR(citraAsli,CitraHasil); set(handles.text4,'String',mseval);

function pushbutton8_Callback(hObject, eventdata, handles) global runtimenoise;

set(handles.text6,'String',runtimenoise);

function pushbutton9_Callback(hObject, eventdata, handles) citraAsli=getimage(handles.axes1);

CitraHasil = getimage(handles.axes3);

[psnrval mseval] = MSE_PSNR(citraAsli,CitraHasil); set(handles.text5,'String',psnrval);

function pushbutton10_Callback(hObject, eventdata, handles) global B;

global g; global D; global noise; global PSF;


(13)

global UNDERPSF; global runtimeblind1; global gb; global v; runtimeblind1=cputime; H=getimage(handles.axes3); luc1 = deconvlucy(H, PSF, 5); axes(handles.axes4);

imshow(luc1);

runtimeblind1=cputime-runtimeblind1;

function pushbutton11_Callback(hObject, eventdata, handles) citraAsli=getimage(handles.axes1);

CitraHasil = getimage(handles.axes4);

[psnrval mseval] = MSE_PSNR(citraAsli,CitraHasil); set(handles.text7,'String',mseval);

function pushbutton12_Callback(hObject, eventdata, handles) citraAsli=getimage(handles.axes1);

CitraHasil = getimage(handles.axes4);

[psnrval mseval] = MSE_PSNR(citraAsli,CitraHasil); set(handles.text8,'String',psnrval);

function pushbutton13_Callback(hObject, eventdata, handles) global runtimeblind1;

set(handles.text9,'String',runtimeblind1);

function pushbutton15_Callback(hObject, eventdata, handles) citraAsli=getimage(handles.axes1);

CitraHasil = getimage(handles.axes5);

[psnrval mseval] = MSE_PSNR(citraAsli,CitraHasil); set(handles.text10,'String',mseval);

function pushbutton16_Callback(hObject, eventdata, handles) citraAsli=getimage(handles.axes1);

CitraHasil = getimage(handles.axes5);

[psnrval mseval] = MSE_PSNR(citraAsli,CitraHasil); set(handles.text11,'String',psnrval);

function pushbutton17_Callback(hObject, eventdata, handles) global runtimeblind2;

set(handles.text12,'String',runtimeblind2);

function pushbutton18_Callback(hObject, eventdata, handles) [nama_file_simpan, path_simpan]=uiputfile(...

{'*.bmp','file citra (*.bmp)'; '*.bmp','citra bmp (*.bmp)';... '*.*','Semua File (*.*)'},... 'Menyimpan Citra Hasil');

imwrite(handles.hasil,fullfile(path_simpan,nama_file_simpan),'BMP ');

function pushbutton19_Callback(hObject, eventdata, handles) FormAwal


(14)

close BlindDeconvolution;

function pushbutton20_Callback(hObject, eventdata, handles) axes(handles.axes1); plot(0); set(handles.edit5,'string',''); set(handles.edit6,'string',''); set(handles.edit7,'string',''); set(handles.edit8,'string',''); axes(handles.axes2); plot(0); set(handles.alfa,'string',''); set(handles.beta,'string',''); set(handles.text1,'String',''); set(handles.text2,'String',''); set(handles.text3,'String',''); set(handles.salt,'value',0); set(handles.speckle,'value',0); set(handles.gauss,'value',0); axes(handles.axes3); plot(0); set(handles.Nilai1,'string',''); set(handles.text4,'String',''); set(handles.text5,'String',''); set(handles.text6,'String',''); axes(handles.axes4); plot(0); set(handles.text7,'String',''); set(handles.text8,'String',''); set(handles.text9,'String','');

function salt_Callback(hObject, eventdata, handles) global g; global runtimenoise; global noise; global A; set(handles.salt,'Value',1); set(handles.speckle,'Value',0); set(handles.gauss,'Value',0); runtimenoise=cputime; A=str2double(get(handles.Nilai1,'string')); A=A/100;

pilih = 1;

handles.pilih=pilih; guidata(hObject,handles) b = getimage(handles.axes2);; x = rand(size(b));

d = find(x < A/2);

b(d) = 255; % Minimum value

d = find(x >= A/2 & x < A);

b(d) = 0; % Maximum (saturated) value

g=gb+b;


(15)

imshow(g);

runtimenoise=cputime-runtimenoise;

function speckle_Callback(hObject, eventdata, handles) global gb; global g; global runtimenoise; global noise; set(handles.salt,'Value',0); set(handles.speckle,'Value',1); set(handles.gauss,'Value',0); runtimenoise=cputime; A=str2double(get(handles.Nilai1,'string')); A=A/100;

pilih = 2;

handles.pilih=pilih; guidata(hObject,handles) b1=getimage(handles.axes2); [r c d] = size (b1);

x=1:r; y=1:c; z=1:d;

E = double(b1(x,y,1)); F = double(b1(x,y,2)); G = double(b1(x,y,3));

M(x,y,1) = E +sqrt (12*A)*E.*(rand(size(E))-.5); M(x,y,2) = F +sqrt (12*A)*F.*(rand(size(F))-.5); M(x,y,3) = G +sqrt (12*A)*G.*(rand(size(G))-.5); n=uint8(M);

op=gb+n;

axes(handles.axes3); imshow(op);

runtimenoise=cputime-runtimenoise;

function pushbutton21_Callback(hObject, eventdata, handles) [nama_file_simpan, path_simpan]=uiputfile(...

{'*.jpeg','file citra (*.jpeg)'; '*.jpeg','citra bmp (*.jpeg)';... '*.*','Semua File (*.*)'},... 'Menyimpan Citra Hasil'); G=getimage(handles.axes3);

imwrite(G,fullfile(path_simpan,nama_file_simpan),'JPEG'); function gauss_Callback(hObject, eventdata, handles) global gb;

global g;

global runtimenoise; global noise;


(16)

set(handles.salt,'Value',0); set(handles.speckle,'Value',0); set(handles.gauss,'Value',1); runtimenoise=cputime; A=str2double(get(handles.Nilai1,'string')); A=A/100;

pilih = 3;

handles.pilih=pilih; guidata(hObject,handles) b2 = getimage(handles.axes2); [r c d] = size (b2);

x=1:r; y=1:c; z=1:d;

E = double(b2(x,y,1)); F = double(b2(x,y,2)); G = double(b2(x,y,3));

M(x,y,1) = E +sqrt (A)*(rand(size(E))); M(x,y,2) = F +sqrt (A)*(rand(size(F))); M(x,y,3) = G +sqrt (A)*(rand(size(G))); n=uint8(M);

op1=gb+n;

axes(handles.axes3); imshow(op1);

runtimenoise=cputime-runtimenoise;

function pushbutton23_Callback(hObject, eventdata, handles) [nama_file_simpan, path_simpan]=uiputfile(...

{'*.jpeg','file citra (*.jpeg)'; '*.jpeg','citra bmp (*.jpeg)';... '*.*','Semua File (*.*)'},... 'Menyimpan Citra Hasil'); G=getimage(handles.axes4);

imwrite(G,fullfile(path_simpan,nama_file_simpan),'JPEG'); IV. Bantuan

function varargout = Bantuan(varargin) gui_Singleton = 1;

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

'gui_OpeningFcn', @Bantuan_OpeningFcn, ... 'gui_OutputFcn', @Bantuan_OutputFcn, ... 'gui_LayoutFcn', [] , ...

'gui_Callback', []); if nargin && ischar(varargin{1})

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


(17)

if nargout

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

gui_mainfcn(gui_State, varargin{:}); end

function pushbutton1_Callback(hObject, eventdata, handles) FormAwal


(18)

CURRICULUM VITAE

Nama : Muhammad Huzaifa

Alamat Sekarang : Jl.P.Kemerdekaan, cengkeh turi binjai Alamat Orang tua : Jl.P.Kemerdekaan, cengkeh turi binjai

Telp/Hp : 081265713734

Email : mhuzaifa14@gmail.com

Riwayat Pendidikan

2009-2014 : S1 Ilmu Komputer Universitas Sumatera Utara, Medan 2006-2009 : Yaspend Teladan Binjai

2003-2006 : SMP Negeri 6 Binjai


(19)

(20)

DAFTAR PUSTAKA

[1] Ahmad, Usman. 2005. Pengolahan Citra Digital & Teknik Pemrogramannya. Yogyakarta: Graha Ilmu.

[2] C, Rafael & E, Richard. 2008. Digital Image Processing.3th Edition. Pearson

Education International : Pearson Prentice Hall.

[3] Effensi, Hansi. 2009. Restorasi Citra Kabur (Blur) Menggunakan Algoritma

Wiener. Jurnal. Vol.1, 2009.

[4] Hermawati, F.A. 2013. Pengolahan Citra Digital. Yogyakarta: Penerbit Andi. [5] Munir, Rinaldi. 2004. Pengolahan Citra Digital. Bandung: Penerbit Informatika. [6] Munir, Rinaldi. 2006. Restorasi Citra Kabur dengan Algoritma Lucy- Richardson

dan Perbandingannya Dengan Wiener. Seminar Nasional Aplikasi

Teknologi Informasi 2006 (SNATI 2006) ISSN: 1907-5022 Yogyakarta, 17 Juni 2006.

[7] Prasetyo, Eko . 2011. Pengolahan Citra Digital dan Aplikasinya menggunakan

Matlab. Yogyakarta: Penerbit Andi.

[8] Putra, Darma. 2009. Pengolahan Citra Digital. Yogyakarta: Penerbit Andi.

[9] Richard L. White, Image Restoration Using Damped Richardson-Lucy Method,

ASP Conference Series, Vol. 61, 1994.

[10] Sutoyo, T., Mulyanto, Edi., Suhartono, Vincent., Nurhayati, O.D & Wijanarto 2009. Teori Pengolahan Citra Digital, Yogyakarta: Penerbit Andi.


(21)

BAB III

ANALISIS DAN PERANCANGAN SISTEM

3.1. Analisis Sistem

Analisis sistem merupakan suatu tahapan yang mana dilakukan untuk membantu memahami sesuatu yang dibutuhkan sistem. Hal ini dimaksud untuk membuat sistem tersebut mengetahui permasalahan-permasalahan yang ada sehingga nantinya dapat membantu didalam proses perancangan model suatu sistem yang nantinya akan diimplementasikan.

3.1.1. Analisis Masalah

Blurring yaitu proses pengaburan pada citra. Permasalahan yang dihadapi dalam

perancangan sistem ini yaitu melakukan proses pengembalian citra yang telah terdegradasi (proses restorasi), yaitu citra yang telah mengalami kerusakan akibat proses blurring yang telah diberikan. Hal tersebut dilakukan agar dapat membuktikan apakah kedua metode yang digunakan pada percobaan ini dapat mengurangi degradasi terhadap citra. Masalahnya seberapa besar blur yang diberikan akan berpengaruh terhadap proses restorasi citra. Dengan adanya system ini diharapkan dapat membuktikan pengaruh tersebut.

Permasalah lainnya yaitu dilakukannya proses penambahan beberapa noise. Penambahan noise ini dilakukan setelah proses blurring pada citra. Melakukan percobaan ini untuk mengetahui apakah kedua metode tersebut dapat juga mengurangi

noise. Diagramnya dapat dilihat pada gambar 3.1.

Perbandingan algoritma untuk memperbaiki kualitas citra

Material

User

Metode

Sistem Memberikan kadar

blur dan noise pada citra

Blurring dan Noising Salt and pepper

Citra dengan format *.jpeg dan

*.bmp Wiener filter Lucy-Richardson speckle gaussian Proses Restorasi


(22)

3.1.2. Analisis Kebutuhan Sistem

Analisis kebutuhan sistem ini meliputi analisis kebutuhan fungsional sistem dan analisis non-fungsional sistem.

3.1.2.1. Kebutuhan Fungsional Sistem

Sistem analisis pengaruh blur dan noise pada citra memiliki kebutuhan fungsional yaitu:

1. Masukan yang berupa citra yang memiliki format *.jpeg atau *.bmp yang merupakan citra RGB.

2. Sistem dapat memberikan blur dengan nilai masing-masing yang ditentukan oleh sudut len dan teta.

3. Sistem memberikan noise dengan kadar noise tertentu.

4. Sistem melakukan proses restorasi dengan Wiener filter dan Lucy-Richardson.

3.1.2.2. Kebutuhan Non-Fungsional Sistem

Untuk membantu kinerja sistem secara lebih baik, terdapat kebutuhan non-fungsional sistem yaitu:

1. Tampilan antarmuka sistem dapat dimengerti oleh user atau pengguna sistem. 2. Efektifitas system yang dibangun dapat menyimpan citra hasil dan efisiensi

dapat terlihat dari system yang digunakan tidak memerlukan perangkat tambahan atau perangkat pendukung lainnya yang dapat mengeluarkan biaya tambahan

3. Sistem yang nantinya telah dibuat dapat dikembangkan dengan mudah sehingga sistem dapat tetap digunakan di masa yang akan datang.

3.1.3. Analisis Proses

Dalam proses ini terdapat dua proses yaitu blurring dan nosing. Blurring yaitu proses pemberian blur pada citra inputan. Noising yaitu proses pemberian noise pada citra inputan dimana nilai noise dapat ditentukan. Sedangkan pada proses restorasi


(23)

dilakukan dengan dua cara yaitu Wiener filtering dan Lucy-Richardson. Selanjutnya dilakukan perhitungan MSE, PSNR dan running time pada masing-masing langkah.

3.2. Pemodelan

Pada penelitian mengenai perbandingan algoritma Wiener dan Lucy-Richardson ini digunakan UML sebagai bahasa pemodelan yang berfungsi untuk membantu merancang sistem. Model UML yang digunakan dalam penelitian ini yaitu use case

diagram, sequence diagram, dan activity digaram.

3.2.1. Use Case Diagram

Use case diagram adalah gambaran graphical dari beberapa atau semua actor, use case, dan interaksi diantara komponen-komponen tersebut yang memperkenalkan

suatu system yang akan dibangun. Use case diagram menjelaskan manfaat suatu

system jika dilihat menurut pandangan orang yang berada di luar sistem. Diagram ini

menunjukkan fungsionalitas suatu system atau kelas dan bagaimana system tersebut berinteraksi dengan dunia luar.

Actor1

Wiener Filter

Restorasi citra

«extends»

«extends»

Lucy-Richardson

Bantuan

Gambar 3.2 Use Case Diagram Sistem Perbandingan Algoritma Wiener dan Lucy-Richardson untuk Memperbaiki Kualitas Citra

Pada sistem perbandingan algoritma sistem perbandingan Wiener dan Lucy-Richardson ini terdapat actor yang memiliki pilihan untuk :

a. Memilih Restorasi citra yang dilanjutkan dengan proses Wiener Filter atau Lucy-Richardson.


(24)

b. Bantuan dari penulis.

Berikut ini merupakan tabel dokumen naratif dari use case filter Wiener yang dapat dilihat pada tabel 3.1

Tabel 3.1 Dokumentasi Naratif Proses Wiener Filtering

Nama Use case Wiener Filtering

Actor Pengguna

Description

Use case mendeskripsikan jalannya proses restorasi pada

citra dimulai dari penambahan blur dan penambahan

noise

Pre-Condition Aplikasi siap untuk menerima inputan.

Typical course of

event

Kegiatan pengguna Respon sistem 1. Pengguna memilih

citra yang akan digunakan pada percobaan (*.jpeg atau *.bmp) dengan menekan button

Browse .

2. Sistem akan merespon dengan masuk ke direktori penyimpanan citra

3. Menampilkan citra yang telah dipilih oleh

pengguna 4. Pengguna menginput

sudut blur (len dan teta).

6. Dengan menekan

button MSE,PSNR

dan running time, pengguna dapat mengetahui error dan waktu yang

dibutuhkan untuk citra tersebut.

5. Sistem akan melakukan proses blurring dan menampilkan hasilnya. 7. Menampilkan nilai MSE,

PSNR dan running time.

8. Selanjutnya

menambahkan noise pada citra blur dengan menginput ukuran

noise (dalam %)

kemudian memilih

noise dengan menekan

jenis noise yang diinginkan.

10.Menekan button MSE,

9. Sistem akan menampilkan hasil noising dan blurring pada citra.


(25)

PSNR dan running time untuk

mengetahui error.

PSNR, dan running time.

12. Menekan tombol hasil untuk melihat hasil restorasi yang pertama.

14. Menekan button MSE, PSNR dan running time untuk mengetahui error.

13. Menampilkan hasil restorasi.

15. Menampilkan nilai MSE, PSNR dan Running time. 16. Menekan tombol

hasil 2 untuk melihat hasil restorasi yang kedua.

18. Menekan button MSE, PSNR dan running time.

17. Menampilkan hasil restorasi citra.

19. Menampilkan nilai MSE, PSNR dan running time.

Alternatecourse Tekan tombol Reset

Sistem mengosongkan gambar dan nilai MSE, PSNR dan running time. Post condition Sistem telah melakukan proses filter Wiener yang

menghasilkan citra.

Tabel 3.2 Dokumentasi Naratif Use Case Lucy-Richardson

Nama Use case Proses Lucy-Richardson

Actor Pengguna

Description

Use case mendeskripsikan jalannya proses restorasi pada

citra dimulai dari penambahan blur dan penambahan

noise.

Pre-Condition Aplikasi siap untuk menerima inputan.

Typical course of

event


(26)

1. Pengguna memilih citra yang akan digunakan pada percobaan (*.jpeg atau *.bmp) dengan menekan button

Browse .

2. Sistem akan merespon dengan masuk ke direktori penyimpanan citra.

3. Menampilkan citra yang telah dipilih oleh

pengguna. 4. Pengguna menginput

sudut blur (len dan teta).

6. Dengan menekan

button MSE,PSNR

dan running time, pengguna dapat mengetahui error dan waktu yang

dibutuhkan untuk citra tersebut.

5. Sistem akan melakukan proses blurring dan menampilkan hasilnya. 7. Menampilkan nilai MSE,

PSNR dan running time.

8. Selanjutnya

menambahkan noise pada citra blur dengan menginput ukuran

noise (dalam %)

kemudian memilih

noise dengan menekan

jenis noise yang diinginkan.

10.Menekan button MSE, PSNR dan running time untuk

mengetahui error.

9. Sistem akan

menampilkan hasil noising dan blurring pada citra.

11. Menampilkan nilai MSE, PSNR, dan running time. 12.Menekan tombol hasil

untuk melihat hasil restorasi Lucy.

14.Menekan button MSE, PSNR dan running time untuk

mengetahui error.

13. Menampilkan hasil restorasi.

15. Menampilkan nilai MSE, PSNR dan Running time.

Alternatecourse Tekan tombol Reset

Sistem mengosongkan gambar dan nilai MSE, PSNR dan running time.


(27)

Post condition Sistem telah melakukan proses Lucy-Richardson yang menghasilkan citra

Tabel 3.3 Dokumentasi Naratif Use Case Bantuan

Nama Use case Bantuan

Actor Pengguna

Description Use case ini menjelaskan cara penggunaan dari system

ini.

Pre-Condition Aplikasi siap untuk menerima inputan.

Typical course of

event

Kegiatan pengguna Respon sistem 1. Menekan button

bantuan.

2. Menampilkan isi dari bantuan tersebut.

Alternatecourse Aksi Aktor Respon sistem

Post condition Sistem membuka menu bantuan

3.2.2. Sequence Diagram

Sequence diagram adalah suatu diagram yang memperlihatkan atau menampilkan

interaksi-interaksi antar objek di dalam sistem yang disusun pada sebuah urutan atau rangkain waktu. Sequence diagram digunakan untuk menggambarkan scenario atau rangkaian langkah-langkah yang dilakukan sebagai sebuah respon dari suatu kejadian/even untuk menghasilkan output apa yang dhasilkan.


(28)

Input Citra Blurring Noising Restorasi Citra Hitung nilai MSE,PSNR

dan Running Time Simpan Citra

Penginputan Citra

Proses pemberian blur dengan inputan len dan

teta

Proses pemberian

noise inputan variance (%noise)

Proses restorasi citra dengan wiener filter

dan Lucy-Richardson

Perhitungan nilai MSE, PSNR dan running time

Tampilkan citra hasil restorasi dengan nilai MSE, PSNR dan running time

Gambar 3.3 Sequence Diagram Proses Restorasi Citra

3.2.3. Activity Diagram

Activity Diagram menggambarkan berbagai alir aktivitas dalam sistem yang sedang

dirancang, bagaimana masing-masing alir berawal, decision yang mungkin tejadi, dan bagaimana mereka berakhir. Activity diagram juga dapat menggambarkan proses paralel yang mungkin terjadi pada beberapa eksekusi. Berikut ini merupakan activity


(29)

Browse citra Baca citra *jpeg atau *.bmp

Menampilkan citra Blurring (isi len dan teta yang merupakan sudut blurnya)

Aktor Sistem

Blurring

Menampilkan citra blurring

Noising (mengisi varians noising)

Noising

Menampilkan citra hasil noising

Menekan tombol simpan

Menyimpan hasil ke direktori penyimpanan

Menekan tombol hasil

Menampilkan nilai MSE, PSNR dan Running time

Menekan tombol hasil

Menampilkan citra hasil restorasi yang kedua Menekan tombol MSE,PSNR dan running time

Menampilkan nila MSE,PSNR dan running time

Menekan tombol MSE, PSNR dan running time

Menampilkan nilai MSE, PSNR dan running time

Menampilkan citra hasil restorasi wiener

Menekan tombol MSE, PSNR dan running time Salt and pepper

speckle

gaussian

Menekan tombol MSE,PSNR dan Running time Menampilkan hasil MSE,PSNR dan Running time

Menekan tombol simpan Menyimpan citra hasil ke direktori penyimpanan


(30)

Browse citra *jpeg atau *.bmp Baca citra Menampilkan citra Blurring (mengisi len dan teta sebagai sudut blurnya)

Aktor Sistem

Blurring Menampilkan citra blurring

Noising

Noising

Menampilkan citra hasil noising

Menekan tombol simpan

Menyimpan hasil ke direktori penyimpanan Menekan tombol hasil

Menampilkan hasil MSE,PSNR dan running time Menekan tombol simpan

Menyimpan hasil ke direktori penyimpanan Menekan tombol MSE,PSNR dan running time

Menampilkan nila MSE,PSNR dan running time

Menekan tombol MSE, PSNR dan running time

Menampilkan nilai MSE, PSNR dan running time

Menampilkan citra hasil restorasi lucy Menekan tombol MSE, PSNR dan running time

Salt and pepper speckle gaussian

Gambar 3.5 Activity Diagram Filter Lucy-Richardson 3.3. Pseudocode Program

Pseudocode adalah deskripsi dari algoritma pemrograman komputer yang

menggunakan struktur sederhana dari beberapa bahasa pemograman tetapi bahasa tersebut hanya ditujukan agar dapat dibaca manusia.Tujuan penggunaan utama dari

pseudocode adalah untuk memudahkan manusia dalam memahami prinsip-prinsip dari

suatu algoritma.


(31)

Sn = abs (fft2(noise)).^2; noise power spectrum nA= sum(Sn(: ))/prod(size(noise)); noise average power

Sf= abs(fft2(i)).^2; image power spectrum fA=sum(Sf(: ))/prod(size(i));

R= nA/fA;

Fr2 = deconvwnr(g,wmotion, R);

Gambar 3.6 Pseudocode Filter wiener

Adapun tahapan-tahapan dari metode ini antara lain:

1. kekuatan spectrum noise yaitu diabsolutkan citra bernoise setelah melalui proses fft.

2. Kekuatan noise rata-rata yaitu penjumlahan matriks dari Sn kemudian dibagi perkalian ukuran citra bernoise.

3. Sf merupakan kekuatan spectrum gambar asli yaitu citra asli setelah melalui proses fft.

4. fA merupakan rata-rata kekuatan citra asli. 5. R merupakan ratio konstanta scalar nA/fA 6. Proses penampungan hasilnya.

3.3.2 Pseudocode Filter Wiener dengan autocorrelation

NCORR = fftshift(real(ifft2(Sn))); FCORR=fftshift(real(ifft2(Sf)));

Fr3=deconvwnr(g,wmotion, NCORR, FCORR);

Gambar 3.7 Pseudocode Filter Wiener dengan autocorrelation

Penjelasan :

Ketika nilai spectrum pada citra tidak diketahui maka dilakukan fungsi aucorrelation seperti diatas.


(32)

3.3.3. Pseudocode Salt and Pepper

b = a; <-- Assign b to the input image

x = rand(size(a)); <-- Generate random pixels from the image pixels

d = find(x < p3/2); <-- Find the pixels whose values are less than half of the mean value

b(d) = 0 <-- Implement minimum noise to them

d = find(x >= p3/2 & x < p3) <--- Find the pixels whose values are

greater than half of the mean value & less than mean value b(d) = 1; <-- Implement maximum noise to them

Gambar 3.8 Pseudocode Salt and pepper

Keterangan :

1. Deklarasikan b untuk menampung citra yang akan di eksekusi 2. Randomkan matriks a

3. Temukan nilai yang mana nilainya x<p3

4. Jika sudah ditemukan maka ganti semua nilainya dengan 0

3.4. Perancangan Sistem

3.4.1. Perancangan Flowchart Sistem

Flowchart merupakan bagan yang menampilkan urutan proses dari suatu sistem. Flowchart memiliki fungsi untuk memudahkan proses pengecekan terhadap sistem

yang ingin dibuat apabila ada yang terlupakan dalam analisis masalah. Berikut merupakan flowchart awal dari sistem secara umum yang nantinya akan dibangun yang dapat dilihat pada gambar 3.9.


(33)

Start

Input citra *.jpeg atau *.bmp

Blurring

Noising

Filter Wiener

Citra Hasil I + data MSE, PSNR dan

Running Time

Citra Hasil II + data MSE, PSNR dan

Running time

End

Lucy-Richardson

Citra Hasil + data MSE, PSNR dan

Running time YA

TIDAK

Hitung MSE, PSNR dan Running Time

Hitung MSE, PSNR dan Running Time


(34)

Sub Flowchart Filter Wiener :

Gambar 3.10 Proses Filter Wiener Start

Input citra asli format *bmp dan

*jpeg

Lakukan proses blurring

Lakukan proses FFT

Tambahkan noise (speckle) pada

citra

Hitung MSE dan PSNR

Citra yang sudah diperbaiki + data MSE dan

PSNR

End Lakukan proses adaptive wiener


(35)

Sub flowchart Lucy-Richardson :

Start

Input citra asli format *bmp dan

*jpeg

Lakukan proses Lucy-Richardson

Citra yang sudah diperbaiki + data MSE dan PSNR

End Hitung MSE dan

PSNR

Gambar 3.11 Proses Lucy-Richardson

3.4.2. Perancangan Antarmuka (Interface)

Sistem perbandingan algoritma restorasi citra ini dirancang dengan menggunakan bahasa pemrograman MATLAB 2012a. Perancangan antarmuka atau interface ini bertujuan untuk memudahkan interaksi antara manusia dengan komputer sehingga manusia dapat menggunakan sistem dengan baik dan mudah untuk digunakan.

3.4.2.1. Form Home

Form home sistem merupakan tampilan utama dalam sistem perbandingan algoritma


(36)

Gambar 3.12 Rancangan Form Home

Keterangan:

1. Judul Aplikasi.

2. Tampil logo Fasilkom-TI USU.

3. Tampil pembuat program dengan identitas nama dan nim. 4. Filter wiener

Berfungsi untuk menjalankan proses restorasi citra menggunakan filter Wiener. 5. Lucy-Richardson

Berfungsi untuk menjalan proses restorasi citra menggunakan filter lucy-richardson.

6. Bantuan

Berfungsi untuk memberikan petunjuk cara menggunakan software ini. 7. Keluar.

Berikut merupakan rancangan dari form filter Wiener yang dapat dilihat pada gambar 3.11.


(37)

Gambar 3.13 Rancangan Form Filter Wiener

Keterangan:

1. Browse

Berfungsi untuk mencari citra yang akan diinput. 2. Axes1

Merupakan tempat untuk menampilkan citra yang akan direstorasi. 3. Nama, Format, Ukuran, Tgl Akses

Merupakan data informasi citra inputan tersebut 4. Len dan teta

Untuk menentukan blurnya (sudut) 5. Blurring

Untuk menjalankan proses blurring-nya. 6. Axes2

Untuk menampilkan hasil citra yang telah diblur. 7. MSE,PSNR dan Running time

Untuk mengetahui nilai dari MSE, PSNR dan Running time pada citra blur tersebut.

8. % noise

Untuk menentukan seberapa %noise yang akan ditambahkan pada gambar blur sehingga gambarnya bernoise.


(38)

9. Salt and pepper, speckle, dan gaussian

Menentukan jenis noise yang akan diberikan. 10.Axes3

Untuk menampilkan citra yang telah diblur + noise dan juga menampilkan nilai dari MSE, PSNR dan Running time

11.Simpan

Tombol yang berfungsi untuk melakukan penyimpanan gambar. 12.Hasil

Merupakan tombol untuk melakukannya restorasi. 13.Axes5

Berfungsi untuk menampilkan hasil restorasi citra. 14.MSE, PSNR dan Running time

Berfungsi menampilkan nilai dari MSE, PSNR dan running time dari citra yang telah direstorasi.

15.Hasil

Berfungsi melakukan restorasi tanpa diketahui spectrum pada citra tersebut. 16.Axes4

Berfungsi menampilkan citra hasil yang kedua 17.MSE, PSNR dan running time

Berfungsi menampilkan nilai dari MSE,PSNR dan running time dari citra hasil yang kedua.

18.Simpan

Tombol yang berfungsi untuk menyimpan citra hasil. 19.Reset

Tombol yang berfungsi untuk mereset (mengosongkan) field kekeadaan semula.

20.Kembali

Tombol yang berfungsi untuk menuju ke menu sebelumnya.

Berikut merupakan rancangan dari form lucy-richardson yang dapat dilihat pada gambar 3.12.


(39)

3.4.2.3. Form Lucy-Richardson

Gambar 3.14 Rancangan Form Lucy-Richardson

Keterangan:

1. Browse

Berfungsi untuk mencari citra yang akan diinput. 2. Axes1

Merupakan tempat untuk menampilkan citra yang akan direstorasi. 3. Nama, Format, Ukuran, Tgl Akses

Merupakan data informasi citra inputan tersebut 4. Len dan teta

Untuk menentukan blurnya (sudut) 5. Blurring

Untuk menjalankan proses blurring-nya. 6. Axes2

Untuk menampilkan hasil citra yang telah diblur. 7. MSE,PSNR dan Running time

Untuk mengetahui nilai dari MSE, PSNR dan Running time pada citra blur tersebut.


(40)

Untuk menentukan seberapa %noise yang akan ditambahkan pada gambar blur sehingga gambarnya bernoise.

9. Salt and pepper, speckle, dan gaussian

Menentukan jenis noise yang akan diberikan. 10.Axes3

Untuk menampilkan citra yang telah diblur + noise 11.MSE, PSNR dan running time

Untuk menampilkan nilai dari MSE, PSNR dan Running time 12.Simpan

Tombol yang berfungsi untuk menyimpan hasil. 13.Hasil

Merupakan tombol untuk melakukannya restorasi. 14.Axes4

Berfungsi untuk menampilkan hasil restorasi citra. 15.MSE, PSNR dan Running time

Berfungsi menampilkan nilai dari MSE, PSNR dan running time dari citra yang telah direstorasi.

16.Simpan

Tombol yang berfungsi untuk menyimpan hasil. 17.Reset

Tombol yang berfungsi untuk mereset (mengosongkan) field kekeadaan semula.

18.Kembali

Tombol yang berfungsi untuk menuju ke menu sebelumnya.

Form Bantuan dapat dilihat pada gambar 3.13 dibawah ini 3.4.2.4. Form Bantuan


(41)

Gambar 3.15 Rancangan Form Bantuan

Keterangan: 1. Bantuan

Berisi tulisan yang dapat membantu pengguna dalam mengoperasikan

software ini.

2. Kembali


(42)

BAB IV

IMPLEMENTASI DAN PENGUJIAN SISTEM

4.1 Implementasi Sistem

Setelah melakukan proses analisis dan perancangan sistem, proses selanjutnya dalam penerapan pembuatan aplikasi adalah proses implementasi dan pengujian sistem. Implementasi merupakan tahap di mana sistem melakukan fungsionalitas utamanya setelah suatu program atau perangkat lunak selesai dirancang. Sedangkan tahap pengujian merupakan tahap yang dilakukan setelah proses pengimplementasikan selesai dilakukan dan sampai proses uji coba sesuai dengan kriteria-kriteria yang diinginkan pengguna pada tahap perancangan sistem. Pada system ini terdapat 4 form yaitu form awal, form filter Wiener, form Lucy-Richardson, dan form bantuan.

4.1.1Form Awal

Form Awal merupakan tampilan utama dalam system perbandingan algortima

Wiener dan Lucy-Richardson untuk restorasi citra ini. Pada form ini terdapat keterangan judul skripsi, nama dan nim penulis skripsi, menu restorasi yang akan digunakan, serta menu bantuan yang dapat membantu pengguna dalam menjalankan sistem ini. Menu restorasi yaitu filter Wiener dan Lucy-Richardson. Adapun tampilan dari form awal pada sistem yang ditunjukkan pada gambar 4.1.


(43)

Gambar 4.1 Form Awal

4.1.2Form Filter Wiener

Form filter Wiener ini merupakan tampilan untuk melakukannya proses restorasi

menggunakan filter Wiener. Dimana citra yang dimasukkan akan dilakukan blurring dengan memberikan blur sesuai yang diinginkan pada len dan teta. Kemudian ditambahkan lagi noise sesuai yang diinginkan. Dengan ditambahkan- nya noise membuat citra tersebut menjadi blur + noise. Kemudian dilakukanlah proses restorasi menggunakan filter wiener tersebut. Berikut merupakan tampilan

form Filter Wiener dapat dilihat pada gambar 4.2 dan simulasinya pada gambar


(44)

Gambar 4.2 Form Filter Wiener

Gambar 4.3 Form Simulasi Filter Wiener 4.1.3Form Lucy-Richardson

Pada Form Lucy-Richardson tidak jauh berbeda dengan form filter Wiener, yang mana pada tahap restorasi ini setelah terjadi pemilihan citra yang akan direstorasi tahap selanjutnya yaitu dengan memberikan blur dan noise sesuai dengan keinginan si pengguna. Setelah itu dapat dilihat nilai MSE, PSNR dan running


(45)

time pada masing-masing langkah dengan menekan tombolnya. Berikut merupakan tampilan dari form Lucy-Richardson yang ditampilkan pada gambar 4.4.

Gambar 4.4 Form Lucy-Richardson

Gambar 4.5 Form Simulasi Lucy-Richardson 4.1.4Form Bantuan


(46)

Form Bantuan merupakan form yang berisi tentang penjelasan dari system ini. Ini

juga dapat membantu pengguna dalam menjalankan system ini. Form bantuan dapat dilihat pada gambar 4.6.

Gambar 4.6 Form Bantuan 4.2 Pengujian

Pengujian sistem akan dilakukan untuk mengetahui sampai sejauh mana kedua metode tersebut dapat melakukan restorasi citra pada citra blur dengan besarnya

blur yang diberikan pada citra tersebut. Disini juga dilakukan apakah metode

tersebut dapat menghilangkan noise yang diberikan pada citra tersebut. Pengujian dilakukan pada citra berformat *.jpeg dan *.bmp (bitmap). Pengujian dibedakan pada tiap-tiap jenis metode.

4.2.1 Pengujian Filter Wiener

Pada pengujian filter Wiener, hal pertama yang dilakukan setelah memilih citra yaitu membuat citra tersebut menjadi blur dengan mengisi kolom len dan teta yang merupakan derajat kebluran. Kemudian memberikan noise kepada citra dengan memilihnya yaitu salt and pepper, speckle, dan gaussian.


(47)

Gambar 4.7 Proses uji coba sistem perbandingan restorasi citra

Untuk melihat sejauh mana filter wiener tersebut dapat merestorasi citra

yang rusak akibat blur dan noise, maka dilakukan pengujian pada jenis citra *.jpeg dan *.bmp yang pada kasus ini dilihat dari jenis noisenya :

1. Salt and pepper 2. Speckle

3. Gaussian

Adapun data proses uji coba penerapan filter Wiener dengan noise salt and pepper dapat dilihat pada tabel 4.1 dan 4.2.


(48)

Berikut dilakukan pengujian pada citra berformat *.jpeg

Tabel 4.1 Pengujian Salt and Pepper dengan tingkat blurring berbeda dan kadar noise yang sama 20%

Len (pixel) Teta(derajat) MSE PSNR Noise : Salt and Pepper (%) MSE PSNR MSE PSNR MSE PSNR Wiener 5 5 116,509 27,467 20 8208,27 8,988 3484,86 12,708 3463,32 12,735 koala.jpeg 15 15 328,918 22,959 20 8376,27 8,900 3553,11 12,649 3532,44 12,650 25 25 434,556 21,750 20 8453,34 8,860 3564,56 12,610 3564,94 12,610 55 55 700,449 19,677 20 8687,59 8,741 3632,13 12,529 3674,77 12,478 75 75 872,689 18,722 20 8846,18 8,663 3675,36 12,477 3706,96 12,440 85 85 963,503 18,292 20 8908,97 8,632 3701,98 12,446 3740,56 12,401 100 100 1105,04 17,697 20 9008,66 8,584 3752,79 12,387 3798,17 12,335

Metode Blurring Noise + Blur Hasil I Hasil II

Tabel 4.2 Pengujian Salt and Pepper dengan tingkat blurring sama tetapi kadar noise yang berbeda

Len (pixel) Teta(derajat)

MSE

PSNR

Noise : Salt and Pepper (%)

MSE

PSNR

MSE

PSNR

MSE

PSNR

Wiener

31

11

231,393 24,487

10

3247,78

13,014

1047,17 17,930

987,88

18,183

jellyfish.jpeg

31

11

231,393 24,487

20

7455,4

9,406

1580,74 16,142

738,874 19,445

31

11

231,393 24,487

30

9253,17

8,467

2055,62 15,001

810,305 19,044

31

11

231,393 24,487

40

11055,7

7,694

2486,12 14,175

878,544 18,693

31

11

231,393 24,487

50

12869,6

7,035

2867,01 13,556

1020,97

18

Metode

Blurring

Noise + Blur

Hasil I

Hasil II


(49)

Keterangan :

Pada tabel 4.1 diperoleh kesimpulan sebagai berikut :

Semakin besar blur yang diberikan dengan kadar noise yang sama disetiap citra yaitu koala.jpeg yang diteliti, nilai MSE pada citra hasil tersebut juga akan semakin besar dan PSNRnya semakin kecil. Tetapi tidak ditemukan perbedaan MSE dan PSNR yang mencolok pada hasil I dan II, terkadang hasil II>I ataupun sebaliknya bahkan ada yang bernilai sama.

Pada tabel 4.2 diperoleh kesimpulan sebagai berikut :

Dengan diberikannya kadar blur yang sama dipercobaan jellyfish.jpeg dan perbedaan kadar noise. Diperoleh hasil MSE yang menaik sesuai dengan kadar noise yang diberikan.

Adapun grafik antara perubahan blur dan noise dengan MSE yang dihasilkan dari masing-masing citra (*.jpeg) ditunjukkan pada gambar 4.8 dan 4.9.

Gambar 4.8 Perubahan blur pada noise salt and pepper terhadap nilai MSE

Gambar grafik diatas merupakan hasil dari tabel 4.1. Pada gambar tersebut terdapat 3 garis yaitu :

1. Garis merah merupakan garis MSE dari gambar blur

2. Garis hijau merupakan garis MSE dari gambar blur dan noise 3. Garis kuning merupakan garis MSE dari hasil restorasi citra tersebut


(50)

Gambar 4.9 Perubahan noise terhadap nilai MSE

Terdapat 3 garis didalam grafik tersebut yaitu :

1. Garis merah merupakan garis MSE dari gambar blur

2. Garis hijau merupakan garis MSE dari gambar blur dan noise 3. Garis kuning merupakan garis MSE dari hasil restorasi citra tersebut

Kesimpulan dari kedua gambar grafik diatas yaitu jika garis kuning yaitu garis yang merupakan citra hasil restorasi lebih dekat dengan garis merah maka hasil restorasinya baik, sebaliknya jika mendekat garis hijau maka hasil restorasinya tidak begitu baik.


(51)

Berikut dilakukan pengujian pada citra berformat *.bmp

Tabel 4.3 Pengujian Salt and pepper dengan blurring yang berbeda tetapi dengan noise yang sama

Len(pixel) Teta(derajat) MSE PSNR Noise : Salt and pepper(%) MSE PSNR MSE PSNR MSE PSNR

Wiener 5 5 116,519 27,467 20 8320,54 8,929 2262,66 14,584 1581,49 16,140

Koala.bmp 15 15 328,939 22,959 20 8648,63 8,761 2295,89 14,521 1652,52 15,949 25 25 434,594 21,75 20 8826,48 8,672 2348,62 14,422 1689,33 15,857 55 55 700,462 19,677 20 9315,85 8,438 2480,44 14,185 1811,37 15,558 75 75 872,69 18,722 20 9589,72 8,312 2566,75 14,037 1879,17 15,391 85 85 963,505 18,292 20 9730,15 8,249 2620,5 13,947 1924,1 15,288 100 100 1105,05 17,697 20 9983,89 8,137 2707,18 13,805 2010,05 15,098

Metode Blurring Noise + Blur Hasil I Hasil II

Tabel 4.4 Pengujian salt and pepper dengan blurring yang sama namun dengan kadar noise yang berbeda

Len(Pixel) Teta(derajat)

MSE

PSNR

Noise : Salt and pepper (%)

MSE

PSNR

MSE

PSNR

MSE

PSNR

Wiener

31

11

231,397 24,487

10

5667,29

10,597

1087,71 17,765

675,284 19,835

Jellyfish.bmp

31

11

231,397 24,487

20

7437,23

9,416

1579,28 16,146

759,74

19,324

31

11

231,397 24,487

30

9254,26

8,467

2054,06 15,004

796,388 19,119

31

11

231,397 24,487

40

11063,6

7,691

2485,8

14,176

887,371 18,649

31

11

231,397 24,487

50

12875,7

7,033

2866,98 13,556

983,968 18,201


(52)

Keterangan :

1. Pada tabel 4.3 diperoleh hasil kesimpulan sebagai berikut:

Pengujian pada citra koala.bmp dengan memberikan blur yang berbeda tetapi dengan noise yang sama diperoleh hasil MSE yang semakin meningkat namun hasil yang lebih rendah pada hasil II dibandingkan dengan hasil I. 2. Pada tabel 4.4 diperoleh hasil kesimpulan sebagai berikut:

Pengujian speckle dengan kadar blur yang sama tetapi dengan kadar noise yang berbeda, diperoleh hasil MSE yang semakin besar begitu juga pada hasil I dan II tetapi pada pengujian ini hasil II<I.

Adapun grafik antara perubahan blur dan noise dengan MSE yang dihasilkan dari masing-masing citra (*.bmp) ditunjukkan pada gambar 4.10 dan 4.11.

Gambar 4.10 Perubahan blur pada noise salt and pepper terhadap nilai MSE

Terdapat 3 garis didalam grafik tersebut yaitu :

1. Garis merah merupakan garis MSE dari gambar blur

2. Garis hijau merupakan garis MSE dari gambar blur dan noise 3. Garis kuning merupakan garis MSE dari hasil restorasi citra tersebut


(53)

Gambar 4.11 Perubahan noise terhadap nilai MSE

Terdapat 3 garis didalam grafik tersebut yaitu :

1. Garis merah merupakan garis MSE dari gambar blur

2. Garis hijau merupakan garis MSE dari gambar blur dan noise 3. Garis kuning merupakan garis MSE dari hasil restorasi citra tersebut

Kesimpulan dari kedua gambar grafik diatas yaitu jika garis kuning yaitu garis yang merupakan citra hasil restorasi lebih dekat dengan garis merah maka hasil restorasinya baik, sebaliknya jika mendekat garis hijau maka hasil restorasinya tidak begitu baik.

4.2.2 Pengujian Lucy-Richardson

Sama halnya dengan pengujian filter Wiener, hal pertama yang dilakukan setelah memilih citra yaitu memberikan blur pada citra tersebut kemudian diberikan

noise.

Adapun gambaran sistem Perbandingan algoritma restorasi ini dapat dilihat pada gambar 4.12 berikut ini:


(54)

Gambar 4.12 Proses uji coba system perbandingan restorasi citra

Dilakukan percobaan pada Lucy-Richardson pada jenis citra *.bmp dan *.jpeg serta dilakukan pada masing-masing noise yaitu :

1. Salt and pepper 2. Speckle

3. Gaussian

Adapun data proses uji coba penerapan Lucy-Richardson dengan noise speckle dapat dilihat pada tabel 4.3 dan 4.4


(55)

Berikut dilakukan pengujian pada citra berformat *.jpeg

Tabel 4.5 Pengujian Speckle dengan tingkat blurring berbeda dan kadar noise yang sama 20%

Len(pixel) Teta(derajat) MSE PSNR Noise : Speckle (%) MSE PSNR MSE PSNR

Lucy-Richardson 10 10 222,158 24,664 20 4655,02 11,451 4306,34 11,789

penguins.jpeg 30 30 586,485 20,448 20 5337,64 10,857 4797,97 11,320

45 45 795,182 19,126 20 5731,73 10,547 5091,41 11,062

60 60 918,108 18,501 20 6018,61 10,335 5288,68 10,897

75 75 963,724 18,291 20 6174,16 10,225 5420,38 10.79

85 85 1013,86 18,071 20 6297,82 10,138 5550,94 10,687

100 100 1195,1 17,356 20 6645,24 9,905 5922,73 10,405

Metode Blurring Noise + Blur Hasil I

Tabel 4.6 Pengujian Speckle dengan tingkat blurring sama tetapi kadar noise yang berbeda

Len(pixel) Teta(derajat) MSE PSNR Noise : Speckle (%) MSE PSNR MSE PSNR Lucy-Richardson 31 11 256,015 24,048 5 3505,12 12,683 3363,33 12,863

Hydrangeas.jpg 31 11 256,015 24,048 15 3529,61 12,653 3376,89 12,845

31 11 256,015 24,048 35 3609,93 12,555 3408,89 12,804

31 11 256,015 24,048 55 3741,16 12,400 3408,89 12,804

31 11 256,015 24,048 75 3873,29 12,25 3606,22 12,560

31 11 256,015 24,048 85 3930,35 12,186 3649,79 12,508

31 11 256,015 24,048 100 4025,49 12,082 3723,59 12,421


(56)

Pada masing-masing tabel pengujian Lucy-Richardson diperoleh kesimpulan yaitu:

1. Pada tabel 4.5 dengan berbedanya kadar blur yang diberikan tetapi dengan memberikan noise yang sama pada citra berformat *.jpeg diperoleh hasil MSE yang semakin besar jika kadar blur yang diberikan juga semakin bertambah. Hasil ini berlaku pada noise salt and pepper, speckle, dan Gaussian.

2. Pada tabel 4.6 dengan kadar blur yang sama diberikan pada citra berformat *.jpeg dan *.bmp tetapi perubahan terjadi pada kadar noisenya diperoleh hasil yang sama yaitu MSE semakin besar ketika terjadi perubahan noise tersebut.

Adapun grafik antara perubahan blur dan noise dengan MSE yang dihasilkan dari masing-masing citra (*.jpeg) ditunjukkan pada gambar 4.13 dan 4.14.

Gambar 4.13 Perubahan blur pada noise speckle terhadap nilai MSE

Terdapat 3 garis didalam grafik tersebut yaitu :

1. Garis merah merupakan garis MSE dari gambar blur

2. Garis hijau merupakan garis MSE dari gambar blur dan noise 3. Garis kuning merupakan garis MSE dari hasil restorasi citra tersebut


(57)

Gambar 4.14 Perubahan noise terhadap nilai MSE

Terdapat 3 garis didalam grafik tersebut yaitu :

1. Garis merah merupakan garis MSE dari gambar blur

2. Garis hijau merupakan garis MSE dari gambar blur dan noise 3. Garis kuning merupakan garis MSE dari hasil restorasi citra tersebut

Kesimpulan dari kedua gambar grafik diatas yaitu jika garis kuning yaitu garis yang merupakan citra hasil restorasi lebih dekat dengan garis merah maka hasil restorasinya baik, sebaliknya jika mendekat garis hijau maka hasil restorasinya tidak begitu baik.


(58)

Berikut dilakukan pengujian pada citra berformat *.bmp

Tabel 4.7 Pengujian Speckle dengan blurring yang berbeda tetapi dengan noise yang sama

Len(pixel) Teta(derajat) MSE PSNR Noise : Speckle(%) MSE PSNR MSE PSNR

Lucy-Richardson 10 10 222,162 24,664 20 4652,37 11,454 4305,66 11,790

Penguins.bmp 30 30 586,483 20,448 20 5334,53 10,859 4798,12 11,320

45 45 795,17 19,126 20 5731,78 10,547 5089,5 11,061

60 60 918,1 18,501 20 6017,92 10,336 5286,76 10,898

75 75 963,714 18,291 20 6178,9 10,221 5423,29 10,788

85 85 1013,85 18,071 20 6300,22 10,137 5555,31 10,683

100 100 1195,1 17,356 20 6646,36 9,904 5929,81 10,400

Metode Blurring Noise + Blur Hasil I

Tabel 4.8 Pengujian Speckle dengan blurring yang sama namun dengan kadar noise yang berbeda

Len(pixel) Teta(derajat) MSE PSNR Noise : Speckle(%) MSE PSNR MSE PSNR

Lucy-Richardson 31 11 256,014 24,048 5 3504,1 12,685 3362,7 12,863

Hydrangeas.bmp 31 11 256,014 24,048 15 3529,95 12,653 3376,17 12,846

31 11 256,014 24,048 35 3615,69 12,548 3413,91 12,798

31 11 256,014 24,048 55 3740,34 12,401 3505,38 12,683

31 11 256,014 24,048 75 3687,29 12,256 3607,79 12,563

31 11 256,014 24,048 85 3932,72 12,183 3654,68 12,502

31 11 256,014 24,048 100 4030,18 12,077 3728,45 12,415


(59)

Keterangan:

1. Pada Tabel 4.7 pengujian speckle dengan blurring yang berbeda tetapi dengan noise yang sama didapatkan hasil, perubahan blur yang diberikan mempengaruhi nilai MSE yang dihasilkan.

2. Pada tabel 4.8 didapatkan hasil MSE yang meningkat sesuai dengan terjadinya peruabahan noise yang diberikan.

Adapun grafik antara perubahan blur dan noise dengan MSE yang dihasilkan dari masing-masing citra (*.jpeg) ditunjukkan pada gambar 4.15 dan 4.16.

Gambar 4.15 Perubahan blur pada noise speckle terhadap nilai MSE

Terdapat 3 garis didalam grafik tersebut yaitu :

1. Garis merah merupakan garis MSE dari gambar blur

2. Garis hijau merupakan garis MSE dari gambar blur dan noise


(60)

Gambar 4.16 Perubahan noise terhadap nilai MSE

Terdapat 3 garis didalam grafik tersebut yaitu :

1. Garis merah merupakan garis MSE dari gambar blur

2. Garis hijau merupakan garis MSE dari gambar blur dan noise 3. Garis kuning merupakan garis MSE dari hasil restorasi citra tersebut

Kesimpulan dari kedua gambar grafik diatas yaitu jika garis kuning yaitu garis yang merupakan citra hasil restorasi lebih dekat dengan garis merah maka hasil restorasinya baik, sebaliknya jika mendekat garis hijau maka hasil restorasinya tidak begitu baik.


(61)

BAB V

KESIMPULAN DAN SARAN 5.1 Kesimpulan

Setelah melakukan beberapa tahap, yang dimulai dari tahap penelitian, perancangan hingga tahap implementasi Perbandingan Algoritma Wiener dan Lucy-Richardson untuk memperbaiki kualitas citra dapat disimpulkan bahwa:

1. Berdasarkan hasil MSE yang didapatkan perubahan blur yang diberikan pada citra *.jpeg maupun *.bmp lebih mempengaruhi citra hasil dari Lucy-Richardson dibandingkan dengan perubahan noisenya, sedangkan pada filter Wiener perubahan blur dan noisenya seimbang.

2. Algoritma Wiener lebih baik dibandingkan Lucy-Richardson dalam merestorasi gambar blur dan noise untuk jenis noise salt and pepper, speckle ataupun Gaussian dimana dengan citra yang sama (*.jpeg dan *.bmp) yang diuji pada kedua algoritma tersebut diperoleh hasil MSE yang lebih besar pada percobaan Lucy-Richardson.

3. Pada filter Wiener hasil dengan autocorrelation yaitu hasil II lebih baik dibandingkan dengan hasil I.

4. Hasil perbandingan untuk filter Wiener dan Lucy-Richardson citra *.jpeg pada

noise speckle nilai MSE-nya lebih rendah dibandingkan dengan citra *.bmp

pada perubahan blur sedangkan pada perubahan noise citra *.bmp lebih rendah dibandingkan dengan citra *.jpeg.

4.2 Saran

Berikut ini adalah saran yang dapat digunakan untuk tahap pengembangan sistem ini antara lain:

1. Menambah pengujian lain dengan jenis citra yang dicoba seperti *.png dan *.gif.

2. Sebaiknya tidak terlalu besar blur dan noise yang diberikan kepada citra sehingga hasil yang didapatkan lebih akurat.

3. Ketika proses pengujian berjalan, penulis mendapatkan hasil bahwa filter Wiener baik digunakan untuk citra dengan gangguan blur dan noise


(62)

4. sendangkan Lucy-Richardson hanya bisa digunakan untuk merestorasi citra


(63)

BAB II

LANDASAN TEORI

2.1. Citra

Citra adalah suatu representasi (gambaran), kemiripan, atau imitasi dari suatu objek. Citra sebagai keluaran suatu sistem perekaman data dapat bersifat optic berupa foto, bersifat analog berupa sinyal-sinyal video seperti gambar pada monitor televisi, atau bersifat digital yang dapat langsung disimpan pada suatu media peyimpanan. [10]

2.1.1 Definisi Citra Analog

Citra analog adalah citra yang bersifat kontinu, seperti gambar pada monitor televisi, foto sinar-X, foto yang tercetak di kertas foto, lukisan, pemandangan alam, hasil CT

scan, gambar-gambar yang terekam pada pita kaset, dan lain sebagainya. Citra analog

tidak dapat direpresentasikan dalam komputer sehingga tidak bisa diproses di computer secara langsung. Oleh sebab itu, agar citra ini dapat diproses di komputer, proses konversi analog ke digital harus dilakukan terlebih dahulu. Citra analog dihasilkan dari alat-alat analog, seperti video kamera analog, kamera foto analog,

WebCam, CT scan, sensor rontgen untuk foto thorax, sensor gelombang pendek pada system radar, sensor ultrasound pada system USG, dan lain-lain. [10]

2.1.2 Definisi Citra Digital

Citra digital adalah citra yang dapat diolah oleh komputer[10]. Citra digital merupakan sebuah larik (array) yang berisi nilai-nilai real maupun komplek yang direpresentasikan dengan deretan bit tertentu.

Suatu citra dapat didefinisikan sebagai fungsi f(x,y) berukuran M baris dan N kolom, dengan x dan y adalah koordinat spasial, dan amplitudo f di titik koordinat f(x,y) dinamakan intensitas atau tingkat keabuan dari citra pada titik tersebut. Apabila nilai x, y, dan nilai amplitudo f secara keseluruhan berhingga (finite) dan bernilai diskrit maka dapat dikatakan bahwa citra tersebut adalah citra digital.[8]


(64)

2.2. Pengolahan Citra

Meskipun sebuah citra kaya informasi, namun seringkali citra yang kita miliki mengalami penurunan mutu (degradasi), misalnya mengandung cacat atau derau (noise), warnanya terlalu kontras, kurang tajam, kabur (blurring), dan sebagainya. Tentu saja citra semacam ini menjadi lebih sulit diinterpretasi karena informasi yang disampaikan oleh citra tersebut menjadi berkurang.

Agar citra yang mengalami gangguan mudah diinterpretasi (baik oleh manusia maupun mesin), maka citra tersebut perlu dimanipulasi menjadi citra lain yang kualitasnya lebih baik. Bidang studi yang menyangkut hal ini adalah pengolahan citra (image processing)[2].

Pengolahan citra yaitu bidang tersendiri yang sudah cukup berkembang sejak orang mengerti bahwa komputer tidak hanya dapat menangani teks, tetapi juga data citra. Pengolahan citra adalah pemrosesan citra, khususnya dengan menggunakan komputer, menjadi citra yang kualitasnya lebih baik. Sebagai contoh, citra burung nuri pada Gambar 2.1 : a. tampak agak gelap, lalu pada b. dengan operasi pengolahan citra kontrasnya diperbaiki sehingga menjadi lebih terang dan tajam[4].

Umumnya, operasi-operasi pada pengolahan citra diterapkan pada citra bila : 1. Perbaikan atau memodifikasi citra perlu dilakukan untuk meningkatkan kualitas

penampakan atau untuk menonjolkan beberapa aspek informasi yang terkandung di dalam citra,

2. Elemen di dalam citra perlu dikelompokkan, dicocokkan, atau diukur, 3. Sebagian citra perlu digabung dengan bagian citra yang lain.


(65)

(a) (b)

Gambar 2.1: a. Citra burung nuri yang agak gelap, b. Citra burung yang telah diperbaiki kontrasnya sehingga terlihat jelas dan tajam[3]

Di dalam bidang komputer, sebenarnya ada tiga bidang studi yang berkaitan dengan data citra, namun tujuan ketiganya berbeda, yaitu:

1. Grafika Komputer (computer graphics). 2. Pengolahan Citra (image processing).

3. Pengenalan Pola (pattern recognition/image interpretation).

Hubungan antara ketiga bidang (grafika komputer, pengolahan citra, pengenalan pola) ditunjukkan pada Gambar 2.2

Gambar 2.2 : Tiga bidang studi yang berkaitan dengan citra[3]

Grafika Komputer bertujuan menghasilkan citra (lebih tepat disebut grafik atau

picture) dengan primitif-primitif geometri seperti garis, lingkaran, dan sebagainya.


(66)

elemen-elemen gambar. Contoh data deskriptif adalah koordinat titik, panjang garis, jari-jari lingkaran, tebal garis, warna, dan sebagainya. Grafika komputer memainkan peranan penting dalam visualisasi dan virtual reality.

Pengolahan Citra bertujuan memperbaiki kualitas citra agar mudah diinterpretasi oleh manusia atau mesin (dalam hal ini komputer). Teknik-teknik pengolahan citra mentransformasikan citra menjadi citra lain. Jadi, masukannya adalah citra dan keluarannya juga citra, namun citra keluaran mempunyai kualitas lebih baik daripada citra masukan. Termasuk ke dalam bidang ini juga adalah pemampatan citra (image compression)[3].

2.3. Restorasi Citra

Restorasi citra bertujuan merekonstruksi atau memperbaiki citra yang terdegradasi dengan menggunakan suatu priori knowledge dari fenomena degradasi tersebut. Teknik restorasi berorientasi pada pemodelan degradasi dan mengaplikasikan proses kebalikannya untuk memperbaiki citra aslinya. Degradasi citra biasanya terjadi pada saat akuisisi citra digital, baik dari sensor atau digitizer. Bentuk dari degradasi ini bisa berupa :

1. Citra ber-noise 2. Citra kabur (blur)

Teknik restorasi dapat diformulasikan pada domain spasial maupun domain frekuensi. Proses pada domain spasial diterakan pada citra yang terdegradasi oleh

noise. Proses pada domain frekuensi cocok untuk citra yang kabur (blur) [4].

2.3.1. Model Degradasi Citra

Degradasi sebuah citra dapat dimodelkan sebagai :

1. g(x,y) = f(x,y)*h(x,y) ; misalnya proses blurring menggunakan filter average dengan f(x,y) adalah citra asli, *menyatakan operasi spatial, h(x,y) menyatakan filter yang digunakan, dan g(x,y) adalah derau yang dimodelkan sebagai fungsi aditif(random errors).


(67)

2. g(x,y) = f(x,y)*h(x,y)+n(x,y) ; dengan n(x,y) adalah derau yang dimodelkan sebagai fungsi aditif(random errors)[4].

2.3.2. Noise

Noise pada citra dapat terjadi karena beberapa sebab. Efek masing-masing noise

tentunya berbeda-beda. Ada yang efeknya sangat mempengaruhi tampilan citra, tetapi ada juga yang tidak begitu berpengaruh terhadap citra[10].

Sebagai contoh, dalam pengambilan citra dengan kamera CCD, level pencahayaan dan suhu sensor adalah factor utama yang mempengaruhi tingkat noise pada citra yang dihasilkan. Citra yang terkorupsi selama transmisi secara perinsip disebabkan interferensi channel yang digunakan untuk transmisi. Misalnya, citra yang ditransmisikan menggunakan jaringan wireless dapat terkorupsi sebagai hasil dari pencahayaan atau pengaruh atmosfer yang lain[7].

2.3.2.1. Jenis-jenis Noise

Berdasarkan bentuk dan karakteristiknya, noise pada citra dibedakan menjadi beberapa macam, yakni sebagai berikut :

1. Noise Salt and Papper

Merupakan model noise seperti taburan garam, akan memberikan warna putih pada titik yang terkena noise.

Contoh :

Gambar 2.3 : (a) adalah citra einstein.jpg (original) dan (b) adalah citra einstein.jpg yang telah disimulasikan dengan derau salt and pepper dengan densitas 0,01.


(68)

Gambar 2.3 : (a) Gambar asli, (b) Gambar setelah pemberian noise salt dan peper[7]

2. Noise gaussian

Noise gaussian adalah bentuk ideal dari derau putih, disebabkan oleh fluktuasi acak

dalam sinyal. Dapat dikatakan juga bahwa noise gaussian adalah derau putih yang mempunyai distribusi normal. Jika citra dinyatakan dengan I dan noise gaussian dinyatakan dengan N, maka citra yang terkorupsi oleh noise gaussian dinyatakan dengan cara menambahkan keduanya yaitu I + N.

Contoh :

Gambar 2.4 : (a) adalah citra einstein.jpg (original), (b) adalah citra einstein.jpg yang telah disimulasikan dengan noise gaussian dengan mean = 0 dan varians = 0,01.

(a) (b)

Gambar 2.4 : (a) Gambar asli, (b) Gambar setelah pemberian noise Gaussian[7]

3. Noise Speckle

Noise speckle dimodelkan dengan I ( 1 + N ). Dengan I adalah matriks citra dan N

adalah nilai-nilai yang terdistribusi normal dengan rerata (mean) sama dengan nol.

Noise speckle disebut juga derau multiplikatif (multiplicative noise). Noise speckle

sering dijumpai pada aplikasi radar. Contoh :

Gambar 2.5 : (a) adalah citra einstein.jpg (original), (b) citra einstein.jpg yang telah disimulasikan dengan noise speckle dengan mean = 0 dan varians = 0,04.


(69)

(a) (b)

Gambar 2.5 : (a) Gambar asli, (b) Gambar setelah pemberian noise speckle[7]

4. Noise Periodik

Noise yang sifatnya periodik (bukan acak atau random) akan menghasilkan derau

periodik. Citra yang terkorupsi oleh noise periodik secara visual akan tampak terdapat garis-garis (baris) pada citra. Gambar 2.6 : (a) adalah Gambar asli, (b) citra einstein.jpg yang telah disimulasikan dengan noise periodic[7].

(a) (b)

Gambar 2.6 : (a) Gambar asli, (b) Gambar setelah pemberian noise periodic[7]

2.4 Filter Wiener

Filter Wiener diusulkan pertama kali oleh N. Wiener pada tahun 1942 sebagai satu


(70)

Filter Wiener adalah metode restorasi yang berdasarkan pada least square. Penapis ini

meminimumkan galat restorasi, yaitu selisih antar citra restorasi dengan citra asli. Penapis ini efektif bila karakteristik frekuensi citra dan derau aditif diketahui[2]. Jika tidak ada derau aditif, penapis Wiener menjadi penapis yang ideal.

Dalam domain transform, penapis Wiener berbentuk

� u, v =|� , |2+ ��∗ ,

n , /�f , ……… (1)

Di mana : H(u,v) = fungsi degradasi |H(u,v)|2 = H*(u,v)H(u,v)

H*(u,v) = perubahan lengkap pada H(u,v) Sn(u,v) = kekuatan spectrum noise

Sf (u,v) = kekuatan spectrum citra yang belum didegradasi Jika Sn(u,v) dan Sf (u,v) tidak diketahui atau tidak dapat diestimasi, maka penapis Wiener dihampiri dengan persamaan berikut:

� u, v =|� , | + K … … … .� ∗ ,

yang dalam hal ini K menyatatakan konstanta yang dispesifikasikan oleh pengguna.

2.5Fast Fourier Transform

Transformasi citra merupakan proses perubahan bentuk citra, baik intensitas maupun posisi pikselnya, yang bertujuan untuk mendapatkan suatu informasi tertentu. Secara umum transformasi bisa dibagi menjadi dua, yaitu transformasi spatial dan transformasi domain.


(1)

DAFTAR ISI

Halaman

Persetujuan ii

Pernyataan iii Penghargaan iv Abstrak vi Abstract vii Daftar Isi viii Daftar Tabel x Daftar Gambar xi Daftar Lampiran xiii Bab I Pendahuluan 1.1 Latar Belakang 1

1.2 Perumusan Masalah 2

1.3 Batasan Masalah 2

1.4 Tujuan Penelitian 3

1.5 Manfaat Penelitian 3

1.6 Sistematika Penulisan 3

BabII Landasan Teori 2.1 Citra 5

2.1.1 Definisi Citra Analog 5

2.1.2 Definisi Citra Digital 5

2.2 Pengolahan Citra 6

2.3 Restorasi Citra 8

2.3.1 Model Degradasi Citra 9

2.3.2 Noise 9

2.3.2.1 Jenis-jenis Noise 10

2.4 Filter Wiener 12

2.5 Fast Fourier Transform 13

2.6 Lucy-Richardson 14

2.7 Bitmap 15

2.8 Joint Photographic Expert Group(JPEG/JPG) 15

2.9 Mean Square Error 15

2.10 Peak Signal to Noise Ratio 16

Bab III Analisis dan Perancangan Sistem 3.1 Analisis Sistem 17

3.1.1 Analisis Masalah 17


(2)

3.1.2.1 Kebutuhan Fungsional Sistem 18

3.1.2.2 Kebutuhan Non fungsional Sistem 19

3.1.3 Analisis Proses 19

3.2 Pemodelan 19

3.2.1 Use Case Diagram 20

3.2.2 Sequence Diagram 24

3.2.3 Activity Diagram 25

3.3 Pseudo Code Program 27

3.3.1 Pseudo Code Filter Wiener 27

3.3.2 Pseudo Code Filter Wiener dengan autocorrelation 28

3.3.3 Pseudo Code Salt and Pepper 28

3.4 Perancangan Sistem 29

3.4.1 Perancangan Flowchart Sistem 29

3.4.2 Perancangan Antarmuka (Interface) 31

3.4.2.1 Form Home 32

3.4.2.2 Form Filter Wiener 33

3.4.2.3 Form Lucy-Richardson 35

3.4.2.4 Form Bantuan 37

Bab IV Implementasi dan Pengujian 4.1 Implementasi Sistem 38

4.1.1 Form Awal 38

4.1.2 Form Filter Wiener 39

4.1.3 Form Lucy-Richardson 40

4.1.4 Form Bantuan 42

4.2 Pengujian 42

4.2.1 Pengujian Filter Wiener 42

4.2.2 Pengujian Lucy-Richardson 50

Bab V Kesimpulan dan Saran 5.1 Kesimpulan 57

5.2. Saran 57

Daftar Pustaka 59

Lampiran Listing Program A-1


(3)

DAFTAR TABEL

Nomor

Tabel Nama Tabel Halaman

3.1 3.2 3.3 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8

Dokumentasi Naratif Use case Wiener Filtering Dokumentasi Naratif Use case Lucy-Richardson Dokumentasi Naratif Use case Bantuan

Pengujian Salt and Pepper dengan tingkat blurring berbeda dan kadar noise yang sama 20%

Pengujian Salt and Pepper dengan tingkat blurring sama tetapi kadar noise yang berbeda

Pengujian Salt and pepper dengan blurring yang berbeda tetapi kadar noise yang sama

Pengujian Salt and pepper dengan blurring yang sama namun dengan kadar noise yang berbeda

Pengujian Speckle dengan tingkat blurring berbeda dan kadar noise yang sama 20%

Pengujian Speckle dengan tingkat blurring sama tetapi kadar noise yang berbeda

Pengujian Speckle dengan blurring yang berbeda tetapi dengan noise yang sama

Pengujian Speckle dengan blurring yang sama namun dengan kadar noise yang berbeda

21 22 23 44 44 47 47 51 51 54 54


(4)

DAFTAR GAMBAR

Nomor

Gambar Nama Gambar Halaman

2.1 2.2 2.3 2.4 2.5 2.6 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 3.15 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 4.11

a. Citra burung nuri yang agak gelap

b. Citra burung yang telah diperbaiki kontrasnya sehingga terlihat jelas dan tajam

Tiga bidang studi yang berkaitan dengan citra a. Gambar asli

b. Gambar setelah pemberian noise salt dan pepper a. Gambar asli

b. Gambar setelah pemberian noise Gaussian a. Gambar asli

b. Gambar setelah pemberian noise speckle a. Gambar asli

b. Gambar setelah pemberian noise periodic Diagram Ishikawa

Use Case Diagram Sistem Perbandingan Algoritma Wiener dan Lucy-Richardson untuk Memperbaiki Kualitas Citra

Sequence Diagram Proses Restorasi Citra Actifity Diagram Filter Wiener

Activity Diagram Filter Lucy-Richardson Pseudocode Filter wiener

Pseudocode Filter Wiener dengan autocorrelation Pseudocode Salt and pepper

Flowchart Sistem Secara Umum Proses Filter Wiener

Proses Lucy-Richardson Rancangan Form Home

Rancangan Form Filter Wiener Rancangan Form Lucy-Richardson Rancangan Form Bantuan

Form Awal

Form Filter Wiener

Form Simulasi Filter Wiener Form Lucy-Richardson

Form Simulasi Lucy-Richardson Form Bantuan

Proses uji coba sistem perbandingan restorasi citra

Perubahan blur pada noise salt and pepper terhadap nilai MSE Perubahan noise terhadap nilai MSE

Perubahan blur pada noise salt and pepper terhadap nilai MSE Perubahan noise terhadap nilai MSE

7 7 8 10 10 11 11 11 11 12 12 18 20 24 26 26 27 28 28 29 30 31 32 33 35 37 39 40 40 41 41 42 43 45 46 48 49


(5)

4.12 4.13 4.14 4.15 4.16

Proses uji coba system perbandingan restorasi citra Perubahan blur pada noise speckle terhadap nilai MSE Perubahan noise terhadap nilai MSE

Perubahan blur pada noise speckle terhadap nilai MSE Perubahan noise terhadap nilai MSE

50 52 53 55 56


(6)

DAFTAR LAMPIRAN

Halaman

A. Listing Program A-1