Tugas Multimedia Pertemuan 9


NAMA                         : RIKSON HABINSARAN BANUREA
NIM                         : 17190511
KELAS                         : TI-17.4F.01
MATKUL                 : MULTIMEDIA
TUGAS PERTEMUAN 9



1. Jelaskan Elemen-elemen citra digital 


Gambar Digital Terbuat Dari Elemen Gambar Yang Disebut Piksel. Biasanya, Piksel Diatur Dalam Larik Persegi Panjang Yang Teratur. Ukuran Gambar Ditentukan Oleh Dimensi Array Piksel Ini. Lebar Gambar Adalah Jumlah Kolom, Dan Tinggi Gambar Adalah Jumlah Baris Dalam Larik. Dengan Demikian Larik Piksel Adalah Matriks Dari M Kolom X N Baris. Untuk Merujuk Ke Piksel Tertentu Dalam Matriks Gambar, Kami Mendefinisikan Koordinatnya Pada X Dan Y. Sistem Koordinat Matriks Citra Mendefinisikan X Sebagai Peningkatan Dari Kiri Ke Kanan Dan Y Meningkat Dari Atas Ke Bawah. Dibandingkan Dengan Konvensi Matematika Normal, Titik Asal Ada Di Pojok Kiri Atas Dan Koordinat Y Dibalik. Mengapa Sistem Koordinat Dibalik Secara Vertikal? Awalnya, Gambar Digital Didefinisikan Sebagai Pola Pemindaian Berkas Elektron Televisi. Sinar Dipindai Dari Kiri Ke Kanan Dan Dari Atas Ke Bawah. Selain Alasan Historis Ini, Tidak Ada Tujuan Yang Dilayani Oleh Pembalikan Koordinat Y Ini.

Ukuran Gambar Jangan Sampai Tertukar Dengan Ukuran Representasi Gambar Dunia Nyata. Ukuran Gambar Secara Khusus Menjelaskan Jumlah Piksel Dalam Gambar Digital. Representasi Gambar Digital Di Dunia Nyata Membutuhkan Satu Faktor Tambahan Yang Disebut Resolusi. Resolusi Adalah Skala Spasial Piksel Gambar. Misalnya, Gambar 3300x2550 Piksel Dengan Resolusi 300 Piksel Per Inci (Ppi) Akan Menjadi Gambar Dunia Nyata Berukuran 11 "X 8,5". Untuk Memperjelas Istilah Resolusi, Ppi Adalah Piksel Per Inci Dan Dpi Adalah Titik Per Inci. Ppi Mengacu Pada Array Piksel, Sedangkan Dpi Mengacu Pada Resolusi Printer. Pada Kenyataannya, Kedua Istilah Resolusi Ini Digunakan Secara Bergantian. Istilah Resolusi Lain Yang Mungkin Anda Temui Adalah Lpi, Untuk Baris Per Inci, Yang Menjelaskan Resolusi Halftone Dan Digunakan Dalam Pencetakan Majalah Dan Surat Kabar. Banyak Aplikasi Pengeditan Gambar Default Resolusinya Ke 72 Ppi. Ini Juga Berlaku Untuk Menyimpan Gambar Jpg Di Imagej.

Setelah Menentukan Jumlah Piksel, Mxn Hanya Memberikan Bentuk Persegi Panjang Untuk Gambar Kita. Satu Lagi Parameter Yaitu Intensitas Diperlukan Untuk Benar-Benar Mendefinisikan Sebuah Citra. Setiap Piksel Memiliki Nilai Intensitas, Atau Kecerahannya Sendiri. Jika Semua Piksel Memiliki Nilai Yang Sama, Bayangan Gambar Akan Seragam; Semuanya Hitam, Putih, Abu-Abu, Atau Bayangan Lainnya. Dalam Jenis Intensitas Yang Digunakan Untuk Setiap Piksel Itulah Jenis Gambar Bervariasi. Gambar Hitam Dan Putih Hanya Memiliki Intensitas Dari Abu-Abu Paling Gelap (Hitam) Hingga Abu-Abu Paling Terang (Putih). Gambar Berwarna, Sebaliknya, Memiliki Intensitas Dari Yang Paling Gelap Dan Paling Terang Dari Tiga Warna Yang Berbeda, Merah, Hijau, Dan Biru. Berbagai Campuran Intensitas Warna Ini Menghasilkan Citra Berwarna. Jadi, Dua Jenis Gambar Digital Paling Dasar, Hitam Putih Dan Warna, Dikenal Sebagai Gambar Grayscale Dan Rgb. Selain Jenis Intensitas Tiap Piksel, Rentang Nilai Intensitas Juga Bervariasi.

Nilai Intensitas Dalam Gambar Digital Ditentukan Oleh Bit. Bit Adalah Biner Dan Hanya Memiliki Dua Kemungkinan Nilai, 0 Atau 1. Rentang Intensitas 8-Bit Memiliki 256 Nilai Yang Mungkin, 0 Hingga 255. Hal Ini Dapat Dilihat Secara Matematis Dengan 2 (# Bit). Untuk Gambar 1-Bit, Atau Biner, 21 = 2 Kemungkinan Nilai Dan Untuk Gambar 8-Bit, 28 = 256 Kemungkinan Nilai. Foto Digital Standar Menggunakan Kisaran Nilai 8-Bit; Gambar Rgb Menggunakan Rentang Intensitas 8-Bit Untuk Setiap Warna Dan Gambar B&W Memiliki Rentang Intensitas 8-Bit Tunggal. Karena Gambar Rgb Berisi Intensitas 3 X 8-Bit, Gambar Ini Juga Disebut Sebagai Gambar Berwarna 24-Bit. Sejauh Ini Kita Hanya Membahas Kisaran Nilai Yang Mungkin Dan Bukan Interval Antar Nilai. Secara Teoritis, Rentang 8-Bit Dapat Menempati Nilai Dari 0 Hingga 1 Menggunakan Kenaikan 1/256, Tetapi Pada Kenyataannya, Gambar 8-Bit Didefinisikan Untuk Hanya Menggunakan Nilai Bilangan Bulat (Bilangan Bulat) Dari 0 Hingga 255.

 


2. Jawaban Kompresi Lossless Pada Citra Digital Menggunakan Matlab

Kompresi atau pemampatan citra bertujuan untuk mereduksi atau memperkecil ukuran file citra. Dalam kompresi citra dikenal dua buah algoritma yaitu kompresi lossless dan kompresi lossy. Pada kompresi lossless memungkinkan citra asli dapat disusun kembali secara utuh dari citra hasil kompresi. Sedangkan pada kompresi lossy akan lebih banyak data yang hilang ketika penyusunan kembali dari citra hasil kompresi ke citra asli.

Berikut ini merupakan contoh aplikasi pemrograman matlab untuk melakukan kompresi lossless pada citra digital. Pemrograman yang dilakukan merupakan pengembangan program yang sebelumnya telah dikerjakan oleh Lalit G. Patil. Tahapan kompresi yang dilakukan ditunjukkan pada gambar flowchart berikut ini:

Langkah-langkah pemrograman untuk melakukan kompresi lossless pada citra digital adalah sebagai berikut:

1. Membaca file citra asli

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
% menampilkan menu browse file
[file, path] = uigetfile({'*.bmp;*.jpg;*.png;*.tiff;';'*.*'},...
    'Select an Image File');
 
% jika ada file citra yang dipilih maka akan mengeksekusi perintah di
% bawahnya
if ~isequal(file,0)
    % membaca file citra yang dipilih
    Img = im2double(imread(fullfile(path,file)));
    % melihat ukuran file citra dalam satuan kb
    fileinfo = imfinfo(file);
    SIZE = fileinfo.FileSize;
    Size = SIZE/1024;
    % menampilkan ukuran file citra dalam satuan kb
    set(handles.edit3,'String',[num2str(Size),' kb']);
    % menampilkan file citra ke dalam axes
    imshow(Img,'Parent', handles.axes1)
    % menyimpan variabel Img & fileinfo pada lokasi handles (lokasi
    % penyimpanan variabel dalam MATLAB) agar dapat dipanggil oleh
    % pushbutton yang lain
    handles.Img = Img;
    handles.fileinfo = fileinfo;
    guidata(hObject, handles)
    % mereset button2
    axes(handles.axes2)
    cla reset
    set(gca,'XTick',[])
    set(gca,'YTick',[])
    set(handles.pushbutton2,'Enable','on')
    set(handles.pushbutton3,'Enable','off')
    set(handles.edit1,'String',[])
    set(handles.edit2,'String',[])
    set(handles.edit4,'String',[])
    set(handles.edit5,'String',[])
    % jika tidak ada file citra yang dipilih maka akan kembali
else
    return
end


2. Melakukan kompresi lossless terhadap citra asli

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
% memanggil variabel Img & fileinfo yang ada pada lokasi handles
Img = handles.Img;
fileinfo = handles.fileinfo;
 
% melakukan lossless kompresi terhadap citra asli
Img_comp = zeros(size(Img));
for n = 1:3
    I = im2double(Img(:,:,n));
    T = dctmtx(8);
    B = blkproc(I,[8 8],'P1*x*P2',T,T');
    mask = [1   1   1   1   0   0   0   0
        1   1   1   0   0   0   0   0
        1   1   0   0   0   0   0   0
        1   0   0   0   0   0   0   0
        0   0   0   0   0   0   0   0
        0   0   0   0   0   0   0   0
        0   0   0   0   0   0   0   0
        0   0   0   0   0   0   0   0];
    B2 = blkproc(B,[8 8],'P1.*x',mask);
    Img_comp(:,:,n) = blkproc(B2,[8 8],'P1*x*P2',T',T);
end
 
% menyimpan file citra hasil kompresi
file_comp = ['Hasil Kompresi.',fileinfo.Format];
imwrite(Img_comp,file_comp);
% melihat ukuran file citra hasil kompresi dalam satuan kb
fileinfo_comp = imfinfo(file_comp);
SIZE = fileinfo_comp.FileSize;
Size = SIZE/1024;
% menampilkan ukuran file citra hasil kompresi dalam satuan kb
set(handles.edit4,'string',[num2str(Size),' kb']);
% menampilkan file citra hasil kompresi ke dalam axes
imshow(Img_comp,'Parent',handles.axes2)
 
% mereset button2
set(handles.pushbutton3,'Enable','on')
set(handles.edit1,'String',[])
set(handles.edit2,'String',[])
set(handles.edit5,'String',[])
 
% menyimpan variabel Img_comp & fileinfo_comp pada lokasi handles (lokasi
% penyimpanan variabel dalam MATLAB) agar dapat dipanggil oleh
% pushbutton yang lain
handles.Img_comp = Img_comp;
handles.fileinfo_comp = fileinfo_comp;
guidata(hObject, handles)


3. Menghitung nilai PSNR, MSE, dan persentase kompresi

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
% memanggil variabel Img, fileinfo, Img_comp, dan fileinfo_comp yang ada
% pada lokasi handles
Img = handles.Img;
fileinfo = handles.fileinfo;
Img_comp = handles.Img_comp;
fileinfo_comp = handles.fileinfo_comp;
 
% menghitung nilai PSNR, MSE, dan % kompresi
nilai_psnr = psnr(Img,Img_comp);
nilai_mse = mean(mse(Img,Img_comp));
filesize = fileinfo.FileSize;
filesize_comp = fileinfo_comp.FileSize;
persen_kompresi = filesize_comp/filesize*100;
% menampilkan nilai PSNR, MSE, dan % kompresi pada edit text
set(handles.edit1,'String',nilai_psnr)
set(handles.edit2,'String',nilai_mse)
set(handles.edit5,'String',persen_kompresi)


4. Melakukan kompresi terhadap file citra yang lain







Source code GUI pada pemrograman di atas adalah sebagai berikut:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
function varargout = kompresi_citra(varargin)
% KOMPRESI_CITRA MATLAB code for kompresi_citra.fig
%      KOMPRESI_CITRA, by itself, creates a new KOMPRESI_CITRA or raises the existing
%      singleton*.
%
%      H = KOMPRESI_CITRA returns the handle to a new KOMPRESI_CITRA or the handle to
%      the existing singleton*.
%
%      KOMPRESI_CITRA('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in KOMPRESI_CITRA.M with the given input arguments.
%
%      KOMPRESI_CITRA('Property','Value',...) creates a new KOMPRESI_CITRA or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before kompresi_citra_OpeningFcn gets called.  An
%      unrecognized property name or invalid value makes property application
%      stop.  All inputs are passed to kompresi_citra_OpeningFcn via varargin.
%
%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
%      instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
 
% Edit the above text to modify the response to help kompresi_citra
 
% Last Modified by GUIDE v2.5 01-Nov-2018 12:43:14
 
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
    'gui_Singleton',  gui_Singleton, ...
    'gui_OpeningFcn', @kompresi_citra_OpeningFcn, ...
    'gui_OutputFcn',  @kompresi_citra_OutputFcn, ...
    'gui_LayoutFcn',  [] , ...
    'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end
 
if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
 
 
% --- Executes just before kompresi_citra is made visible.
function kompresi_citra_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to kompresi_citra (see VARARGIN)
 
% Choose default command line output for kompresi_citra
handles.output = hObject;
 
% Update handles structure
guidata(hObject, handles);
movegui(hObject,'center');
 
% UIWAIT makes kompresi_citra wait for user response (see UIRESUME)
% uiwait(handles.figure1);
 
 
% --- Outputs from this function are returned to the command line.
function varargout = kompresi_citra_OutputFcn(hObject, eventdata, handles)
% varargout  cell array for returning output args (see VARARGOUT);
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
 
% Get default command line output from handles structure
varargout{1} = handles.output;
 
 
 
function edit4_Callback(hObject, eventdata, handles)
% hObject    handle to edit4 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
 
% Hints: get(hObject,'String') returns contents of edit4 as text
%        str2double(get(hObject,'String')) returns contents of edit4 as a double
 
 
% --- Executes during object creation, after setting all properties.
function edit4_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit4 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called
 
% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end
 
 
 
function edit3_Callback(hObject, eventdata, handles)
% hObject    handle to edit3 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
 
% Hints: get(hObject,'String') returns contents of edit3 as text
%        str2double(get(hObject,'String')) returns contents of edit3 as a double
 
 
% --- Executes during object creation, after setting all properties.
function edit3_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit3 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called
 
% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end
 
 
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
 
% menampilkan menu browse file
[file, path] = uigetfile({'*.bmp;*.jpg;*.png;*.tiff;';'*.*'},...
    'Select an Image File');
 
% jika ada file citra yang dipilih maka akan mengeksekusi perintah di
% bawahnya
if ~isequal(file,0)
    % membaca file citra yang dipilih
    Img = im2double(imread(fullfile(path,file)));
    % melihat ukuran file citra dalam satuan kb
    fileinfo = imfinfo(file);
    SIZE = fileinfo.FileSize;
    Size = SIZE/1024;
    % menampilkan ukuran file citra dalam satuan kb
    set(handles.edit3,'String',[num2str(Size),' kb']);
    % menampilkan file citra ke dalam axes
    imshow(Img,'Parent', handles.axes1)
    % menyimpan variabel Img & fileinfo pada lokasi handles (lokasi
    % penyimpanan variabel dalam MATLAB) agar dapat dipanggil oleh
    % pushbutton yang lain
    handles.Img = Img;
    handles.fileinfo = fileinfo;
    guidata(hObject, handles)
    % mereset button2
    axes(handles.axes2)
    cla reset
    set(gca,'XTick',[])
    set(gca,'YTick',[])
    set(handles.pushbutton2,'Enable','on')
    set(handles.pushbutton3,'Enable','off')
    set(handles.edit1,'String',[])
    set(handles.edit2,'String',[])
    set(handles.edit4,'String',[])
    set(handles.edit5,'String',[])
    % jika tidak ada file citra yang dipilih maka akan kembali
else
    return
end
 
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
 
% memanggil variabel Img & fileinfo yang ada pada lokasi handles
Img = handles.Img;
fileinfo = handles.fileinfo;
 
% melakukan lossless kompresi terhadap citra asli
Img_comp = zeros(size(Img));
for n = 1:3
    I = im2double(Img(:,:,n));
    T = dctmtx(8);
    B = blkproc(I,[8 8],'P1*x*P2',T,T');
    mask = [1   1   1   1   0   0   0   0
        1   1   1   0   0   0   0   0
        1   1   0   0   0   0   0   0
        1   0   0   0   0   0   0   0
        0   0   0   0   0   0   0   0
        0   0   0   0   0   0   0   0
        0   0   0   0   0   0   0   0
        0   0   0   0   0   0   0   0];
    B2 = blkproc(B,[8 8],'P1.*x',mask);
    Img_comp(:,:,n) = blkproc(B2,[8 8],'P1*x*P2',T',T);
end
 
% menyimpan file citra hasil kompresi
file_comp = ['Hasil Kompresi.',fileinfo.Format];
imwrite(Img_comp,file_comp);
% melihat ukuran file citra hasil kompresi dalam satuan kb
fileinfo_comp = imfinfo(file_comp);
SIZE = fileinfo_comp.FileSize;
Size = SIZE/1024;
% menampilkan ukuran file citra hasil kompresi dalam satuan kb
set(handles.edit4,'string',[num2str(Size),' kb']);
% menampilkan file citra hasil kompresi ke dalam axes
imshow(Img_comp,'Parent',handles.axes2)
 
% mereset button2
set(handles.pushbutton3,'Enable','on')
set(handles.edit1,'String',[])
set(handles.edit2,'String',[])
set(handles.edit5,'String',[])
 
% menyimpan variabel Img_comp & fileinfo_comp pada lokasi handles (lokasi
% penyimpanan variabel dalam MATLAB) agar dapat dipanggil oleh
% pushbutton yang lain
handles.Img_comp = Img_comp;
handles.fileinfo_comp = fileinfo_comp;
guidata(hObject, handles)
 
function edit1_Callback(hObject, eventdata, handles)
% hObject    handle to edit1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
 
% Hints: get(hObject,'String') returns contents of edit1 as text
%        str2double(get(hObject,'String')) returns contents of edit1 as a double
 
 
% --- Executes during object creation, after setting all properties.
function edit1_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called
 
% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end
 
 
 
function edit2_Callback(hObject, eventdata, handles)
% hObject    handle to edit2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
 
% Hints: get(hObject,'String') returns contents of edit2 as text
%        str2double(get(hObject,'String')) returns contents of edit2 as a double
 
 
% --- Executes during object creation, after setting all properties.
function edit2_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called
 
% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end
 
 
% --- Executes on button press in pushbutton3.
function pushbutton3_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton3 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
 
% memanggil variabel Img, fileinfo, Img_comp, dan fileinfo_comp yang ada
% pada lokasi handles
Img = handles.Img;
fileinfo = handles.fileinfo;
Img_comp = handles.Img_comp;
fileinfo_comp = handles.fileinfo_comp;
 
% menghitung nilai PSNR, MSE, dan % kompresi
nilai_psnr = psnr(Img,Img_comp);
nilai_mse = mean(mse(Img,Img_comp));
filesize = fileinfo.FileSize;
filesize_comp = fileinfo_comp.FileSize;
persen_kompresi = filesize_comp/filesize*100;
% menampilkan nilai PSNR, MSE, dan % kompresi pada edit text
set(handles.edit1,'String',nilai_psnr)
set(handles.edit2,'String',nilai_mse)
set(handles.edit5,'String',persen_kompresi)
 
 
% --- Executes on button press in pushbutton4.
function pushbutton4_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton4 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
 
% mereset button2
axes(handles.axes1)
cla reset
set(gca,'XTick',[])
set(gca,'YTick',[])
axes(handles.axes2)
cla reset
set(gca,'XTick',[])
set(gca,'YTick',[])
set(handles.pushbutton2,'Enable','off')
set(handles.pushbutton3,'Enable','off')
set(handles.edit1,'String',[])
set(handles.edit2,'String',[])
set(handles.edit3,'String',[])
set(handles.edit4,'String',[])
set(handles.edit5,'String',[])
 
 
function edit5_Callback(hObject, eventdata, handles)
% hObject    handle to edit5 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
 
% Hints: get(hObject,'String') returns contents of edit5 as text
%        str2double(get(hObject,'String')) returns contents of edit5 as a double
 
 
% --- Executes during object creation, after setting all properties.
function edit5_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit5 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called
 
% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end

Komentar

Postingan populer dari blog ini

LATIHAN UTS

Pembahasan Convolution Neural Network Pertemuan 6 Pembelajaran Mesin

Tugas Routing Dan Switching Essential Pertemuan 1