Implementasi Metode Median Filtering Dan Kompresi Jpeg Untuk Citra BMP

A-1

LAMPIRAN A-1: LISTING PROGRAM

1. home.m
on
functi
varargout = home(varargin)
% Begin initialization code - DO NOT EDIT
ngleton
gui_Si = 1;
ate
gui_St
= struct('gui_Name',
mfilename, ...
ingleton',
'gui_S
gui_Singleton, ...
'gui_OpeningFcn', @home_OpeningFcn,...
'gui_OutputFcn', @home_OutputFcn, ...
'gui_LayoutFcn', [] , ...

'gui_Callback',
[]);
if
nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if
nargout
gout{1:nargout}]
[varar
= gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
on
functi
home_OpeningFcn(hObject, eventdata, handles, varargin)
s.output
handle
= hObject;

a(hObject,
guidat
handles);
andles.axes_logoUSU);
axes(h
imread('logo_usu','jpg'));
image(
grid
ff; o
axis
ff; o
on
functi
varargout = home_OutputFcn(hObject, eventdata, handles)
out{1}
vararg = handles.output;
on
functi
Home_Callback(hObject, eventdata, handles)
on

functi
GenerateNoise_Callback(hObject, eventdata, handles)
tenoise();
genera
on
functi
Testing_Callback(hObject, eventdata, handles)
close
g();
testin
on
functi
Help_Callback(hObject, eventdata, handles)
;
help()
on
functi
Exit_Callback(hObject, eventdata, handles)
=keluar('Title','Konfirmasi
respon

Keluar');
switch
lower(respon)
case
tidak'
'
%tidak
ada aksi
case
ya' '
close
end

Universitas Sumatera Utara

A-2

2. generatenoise.m
functi
on

varargout = generatenoise(varargin)
% Begin initialization code - DO NOT EDIT
ngleton
gui_Si = 1;
ate
gui_St
= struct('gui_Name',
mfilename, ...
ui_Singleton',
'g
gui_Singleton, ...
ui_OpeningFcn',
'g
@generatenoise_OpeningFcn, ...
ui_OutputFcn',
'g
@generatenoise_OutputFcn, ...
ui_LayoutFcn',
'g
[] , ...

ui_Callback',
'g
[]);
if
nargin && ischar(varargin{1})
ate.gui_Callback
gui_St
= str2func(varargin{1});
end
if
nargout
gout{1:nargout}]
[varar
= gui_mainfcn(gui_State, varargin{:});
else
infcn(gui_State,
gui_ma
varargin{:});
end
on

functi
generatenoise_OpeningFcn(hObject, eventdata, handles,
varargin)
handles.output = hObject;
a(hObject,
guidat
handles);
on
functi
varargout = generatenoise_OutputFcn(hObject,
eventdata, handles)
out{1}
vararg = handles.output;
on
functi
pb_InputImageOri_Callback(hObject, eventdata, handles)
global
I;
file,
[nama_nama_path] = uigetfile({'*.bmp'},'Buka File

Citra');
if
~isequal(nama_file,0)
handles.citra=(imread(fullfile(nama_path, nama_file)));
info=imfinfo(fullfile(nama_path, nama_file));
size_file=info.FileSize/1000;
guidata(hObject,handles);
I=handles.citra;
[b k c]=size(I);
axes(handles.axes_original);
imshow(handles.citra);
set(handles.edit_FileLocation,'String',nama_path);
set(handles.edit_FileName,'String',nama_file);
set(handles.edit_ImageSize,'String',size_file);
set(handles.edit_Width,'String',k);
set(handles.edit_Height,'String',b);
set(handles.pb_GenerateNoise,'Visible','on');
else
return;
end;

on
functi
Home_Callback(hObject, eventdata, handles)
close
;
home()
on
functi
GenerateNoise_Callback(hObject, eventdata, handles)
on
functi
Testing_Callback(hObject, eventdata, handles)
g();
testin

Universitas Sumatera Utara

A-3

on

functi
Help_Callback(hObject, eventdata, handles)
;
help()
on
functi
Exit_Callback(hObject, eventdata, handles)
=keluar('Title','Konfirmasi
respon
Keluar');
switch
lower(respon)
case
tidak'
'
case
ya' '
close
end
on

functi
edit_FineName_Callback(hObject, eventdata, handles)
on
functi
edit_FileName_CreateFcn(hObject, eventdata, handles)
if
ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
on
functi
edit_ImageSize_Callback(hObject, eventdata, handles)
on
functi
edit_ImageSize_CreateFcn(hObject, eventdata, handles)
if
ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
on
functi
pb_GenerateNoise_Callback(hObject, eventdata, handles)
global
citra_asli;
ctedNoise=get(handles.Noise_Type,'SelectedObject');
h_sele
edNoise=get(h_selectedNoise,'Tag');
select
Igetimage(handles.axes_original);
=
str2double(get(handles.edit_ProbNoise,'String'));
noise=
oise=noise/100;
nilain
[b
k c]=size(I);
r rand(b,k,c);
=
switch selectedNoise
case 'Noise_saltpepper'
pepper = find (r1-nilainoise/2);
I(salt)=255;
guidata(hObject,handles);
axes(handles.axes_noise);
%set(proyek.figure1,'CurrentAxes',proyek.axes_noise);
%set(imshow(I));
imshow(I);
%set(proyek.axes_noise,'Userdata',I);
case 'Noise_speckle'
speckle = find (rmatriksurut(j))
temp=matriksurut(i);

Universitas Sumatera Utara

A-7

matriksurut(i)=matriksurut(j);
matriksurut(j)=temp;
end
end
end
nilaitengah=round(ukmatriks(1)/2);
filterMedian(x,y,z) = matriksurut(nilaitengah);
end
end
end
Median=uint8(filterMedian);
filter
toc
asli
citra_
= I;
a(hObject,handles);
guidat
andles.axes_medianFiltering);
axes(h
(filterMedian);
imshow
ndles.pb_saveIMedianFiltering,'Visible','on');
set(ha
se_noise
nilaim
= msecitra(citra_asli,filterMedian);
ndles.edit_mseIMedianFiltering,'String',nilaimse_noise);
set(ha
snr_noise
nilaip
= 20*log10(255/sqrt(nilaimse_noise));
ndles.edit_psnrIMedianFiltering,'String',nilaipsnr_noise);
set(ha
ndles.edit_RTimeIMedianFiltering,'String',toc);
set(ha
i
%Fungs
MSE
on
functi
[NilaiMSE]= msecitra(F1,F2)
[a1 b1 c1]=size(F1);
[a2 b2 c2]=size(F2);
Nilai = sum((( double(F1)-double(F2)).^2)/(a1*b1));
NilaiMSE = sum(Nilai(:,:,1))+sum(Nilai(:,:,2))+sum(Nilai(:,:,3));
functi
on
edit3_Callback(hObject, eventdata, handles)
on
functi
edit3_CreateFcn(hObject, eventdata, handles)
if
ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
on
functi
edit4_Callback(hObject, eventdata, handles)
on
functi
edit_mseIMedianFiltering_CreateFcn(hObject, eventdata,
handles)
if
ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
on
functi
edit5_Callback(hObject, eventdata, handles)
on
functi
edit_psnrIMedianFiltering_CreateFcn(hObject, eventdata,
handles)
if
ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
on
functi
edit1_Callback(hObject, eventdata, handles)
on
functi
edit_fileNameINoise_CreateFcn(hObject, eventdata, handles)

Universitas Sumatera Utara

A-8

if
ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
on
functi
edit2_Callback(hObject, eventdata, handles)
on
functi
edit_sizeINoise_CreateFcn(hObject, eventdata, handles)
if
ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
on
functi
edit6_Callback(hObject, eventdata, handles)
on
functi
edit_widthINoise_CreateFcn(hObject, eventdata, handles)
if
ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
on
functi
edit7_Callback(hObject, eventdata, handles)
on
functi
edit_heightINoise_CreateFcn(hObject, eventdata, handles)
if
ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
on
functi
edit8_Callback(hObject, eventdata, handles)
on
functi
edit_locationINoise_CreateFcn(hObject, eventdata, handles)
if
ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
on
functi
edit9_Callback(hObject, eventdata, handles)
on
functi
edit9_CreateFcn(hObject, eventdata, handles)
if
ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
on
functi
edit10_Callback(hObject, eventdata, handles)
on
functi
edit10_CreateFcn(hObject, eventdata, handles)
if
ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
on
functi
edit11_Callback(hObject, eventdata, handles)
on
functi
edit11_CreateFcn(hObject, eventdata, handles)
if
ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
on
functi
edit12_Callback(hObject, eventdata, handles)
on
functi
edit12_CreateFcn(hObject, eventdata, handles)
if
ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))

Universitas Sumatera Utara

A-9

set(hObject,'BackgroundColor','white');
end
on
functi
edit13_Callback(hObject, eventdata, handles)
on
functi
edit13_CreateFcn(hObject, eventdata, handles)
if
ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
on
functi
edit14_Callback(hObject, eventdata, handles)
on
functi
edit_RTimeIMedianFiltering_CreateFcn(hObject, eventdata,
handles)
if
ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
on
functi
pb_saveIMedianFiltering_Callback(hObject, eventdata,
handles)
sImage
= getimage(handles.axes_medianFiltering);
ame,
[FileN
PathName] = uiputfile('*.bmp', 'Save As');
le=fullfile(PathName,FileName);
pathfi
e(sImage,pathfile,'bmp');
imwrit
a(hObject,handles);
guidat
dianFImage
infoMe
= imfinfo(pathfile);
ile_MedianFNoise=infoMedianFImage.FileSize/1000;
size_f
ndles.edit_sizeIMedianFiltering,'String',size_file_MedianFNoise
set(ha
);
ndles.pb_JPEGComm,'Visible','on');
set(ha
on
functi
pb_JPEGComm_Callback(hObject, eventdata, handles)
tic;
A getimage(handles.axes_medianFiltering);
=
t,Width,Depth]
[Heigh
= size(A);
N 8;
=
if
mod(Height,N)~=0
Height = floor(Height/N)*N;
end
if
mod(Width,N)~=0
Width = floor(Width/N)*N;
end
A1
= A(1:Height,1:Width,:);
clear
A
A A1;
=
ingFormat
%Sampl
= '4:2:0';
A double(rgb2ycbcr(A));
=
y A(:,:,1);
=

Universitas Sumatera Utara

A-10

Cb
= imresize(A(:,:,2),[Height/2 Width/2],'cubic');
Cr
= imresize(A(:,:,3),[Height/2 Width/2],'cubic');
epsY
jpgQst
= [16 11 10
12
14
14
18
24
49
72

16
12
13
17
22
35
64
92

24
14
16
22
37
55
78
95

40
19
24
29
56
64
87
98

51 61;...
26 58 60 55;...
40 57 69 56;...
51 87 80 62;...
68 109 103 77;...
81 104 113 92;...
103 121 120 101;...
112 100 103 99];

Y
Qsteps
= jpgQstepsY;
tas
%kuali
kompresi
quality
level_ = get(handles.popupmenu_quality,'Value');
Qscale
= (10/level_quality)*0.5;
Yy
= zeros(N,N);
xqY
zeros(Height,Width);
=
Y
acBits
= 0;
Y
dcBits
= 0;
if
Depth > 1
jpgQstepsC = [17
18
24
47
99
99
99
99

18
21
26
66
99
99
99
99

24
26
56
99
99
99
99
99

47
66
99
99
99
99
99
99

66
99
99
99
99
99
99
99

99
99
99
99
99
99
99
99

99
99
99
99
99
99
99
99

99;...
99;...
99;...
99;...
99;...
99;...
99;...
99];

QstepsC = jpgQstepsC;
YCb = zeros(N,N);
YCr = zeros(N,N);
xqCb = zeros(Height/2,Width/2);
xqCr = zeros(Height/2,Width/2);
acBitsCb
dcBitsCb
acBitsCr
dcBitsCr

=
=
=
=

0;
0;
0;
0;

end
%ompute
C
the bits for the Y component
for
= 1:N:Height
m
for n = 1:N:Width
t = y(m:m+N-1,n:n+N-1) - 128;
Yy = dct2(t);

Universitas Sumatera Utara

A-11

% quantize the DCT coefficients
temp = floor(Yy./(Qscale*QstepsY) + 0.5);
% Calculate bits for the DC difference
if n==1
DC = temp(1,1);
dcBitsY = dcBitsY + jpgDCbits(DC,'Y');
else
DC = temp(1,1) - DC;
dcBitsY = dcBitsY + jpgDCbits(DC,'Y');
DC = temp(1,1);
end
% Calculate the bits for the AC coefficients
ACblkBits = jpgACbits(temp,'Y');
acBitsY = acBitsY + ACblkBits;
% dequantize & IDCT the DCT coefficients
xqY(m:m+N-1,n:n+N-1)= idct2(temp .* (Qscale*QstepsY))+ 128;
end
end

%alculate
c
the bits for the chroma components
if
Depth > 1
EndRow = Height/2;
for m=1:N:EndRow
for n=1:N:(Width/2)
if ((m+N)