• Tidak ada hasil yang ditemukan

Perbandingan Algoritma Wiener Dan Lucy-Richardson Untuk Memperbaiki Kualitas Citra

N/A
N/A
Protected

Academic year: 2017

Membagikan "Perbandingan Algoritma Wiener Dan Lucy-Richardson Untuk Memperbaiki Kualitas Citra"

Copied!
19
0
0

Teks penuh

(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, ...

(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;

global runtimenoise;

(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);

(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;

(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);

(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;

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

(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})

gui_State.gui_Callback = str2func(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 ');

(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;

axes(handles.axes3);

(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;

(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

:

[email protected]

Riwayat Pendidikan

2009-2014

: S1 Ilmu Komputer Universitas Sumatera Utara, Medan

2006-2009

: Yaspend Teladan Binjai

2003-2006

: SMP Negeri 6 Binjai

1997-2003

: SD Negeri 028067 Binjai

(19)

Referensi

Dokumen terkait

Algoritma Wiener lebih baik dibandingkan Lucy-Richardson dalam merestorasi gambar blur dan noise untuk jenis noise salt and pepper, speckle ataupun Gaussian dimana

function varargout = profil_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure.. % eventdata

Hal yang dilakukan disini yaitu proses restorasi terhadap citra yang blur dan bernoise ( salt and pepper, speckle, dan gaussian ) sedangkan algoritma yang digunakan

Penulis dalam penelitian ini mencoba mengimplementasikan suatu algoritma untuk perbaikan kualitas citra yaitu algoritma Wiener dan algoritma Lucy- Richardson yang

Restorasi Citra Kabur dengan Algoritma Lucy- Richardson dan Perbandingannya Dengan Wiener.. Pengolahan Citra Digital dan Aplikasinya menggunakan

function lokasi1_CreateFcn(hObject, eventdata, handles) if ispc &amp;&amp; isequal(get(hObject,'BackgroundColor'),

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to Skripsi

function filename_Callback(hObject, eventdata, handles) function filename_CreateFcn(hObject, eventdata, handles) if ispc &amp;&amp; isequal(get(hObject,'BackgroundColor'),