UL
PENGOLAHAN CITRA DIGITAL
Dosen Pengampuh :
Siaulhak S.Kom.,M.Pd.
TEKNIK KOMPRESI
CITRA
MODUL
DOSEN PENGAMPU :
SIAULHAK, S.Kom., M.Pd.
PROGRAM
STUDI
INFORMATIKA
FAKULTAS
TEKNIK
KOMPUTER
UNIVERSITAS
OLEH :
KELOMPOK 7
ii
KATA PENGANTAR
Puji syukur kami panjatkan kepada Tuhan Yang Maha Kuasa, atas limpahan
nikmat, berkah, rahmat, dan karunia-Nya, sehingga penyusunan modul
peningkatan mutu citra untuk persentasi telah selesai. Modul ini disusun sebagai
salah satu bahan ajar dalam pelaksanaan kegiatan pembelajaran pengolahan citra
digital di bangku kuliah. Didalam modul ini disajikan materi pembelajaran teknik
kompresi citra secara sederhana, efektif, dan mudah dimengerti yang disertai
contoh.
Sesuai dengan tujuan dalam pembelajaran pengolahan citra digital,
mahasiswa diharapkan dapat memahami konsep kompresi citra, menjelaskan
keterkaitan antar konsep, dan mengaplikasikannya untuk memecahkan masalah.
Mahasiswa diharapkan mampu menggunakan penalaran mengomunikasikan
gagasan dengan berbagai perangkat MATLAB.
Dalam kesempatan ini saya mengucapkan terima kasih kepada:
1. Bapak Siaulhak. S.Kom., M.Pd. selaku dosen pengampu yang telah
memberikan bimbingan dan arahan dalam penyusunan modul histogram ini.
2. Kedua orang tua saya yang selalu memberikan semangat.
Kami telah berusaha semaksimal mungkin dalam menyusun modul ini.
Apabila terdapat kesalahan dalam penulisan maka mohon maaf. Kritik dan saran
yang bersifat membangun sangat saya harapkan demi kesempurnaan modul
berikutnya. Akhirnya semoga modul ini memberikan manfaat kepada semua pihak
yang membutuhkan.
Kelompok 7
iii
DAFTAR ISI
Halaman
SAMPUL.......................................................................................................... ii
KATA PENGANTAR...................................................................................... iii
DAFTAR ISI.................................................................................................... iv
BAB I TINJAUAN MATA KULIAH.............................................................. 1
A. Deskripsi Mata Kuliah........................................................................ 1
B. Nama Matakuliah............................................................................... 1
C. Semester/SKS..................................................................................... 2
D. Kegunaan Mata Kuliah....................................................................... 2
E. Sasaran Belajar................................................................................... 2
F. Urutan Penyajian................................................................................ 2
BAB II PENDAHULUAN............................................................................... 3
A. Sasaran Pembelajaran yang Ingin Dicapai......................................... 3
B. Ruang Lingkup Bahan Modul............................................................ 3
C. Manfaat Mempelajari Modul.............................................................. 3
D. Urutan Pembahasan............................................................................ 3
BAB III MATERI PEMBELAJARAN............................................................ 4
BAB IV MATERI PRAKTEK......................................................................... 7
BAB V LATIHAN........................................................................................... 21
BAB VI RANGKUMAN................................................................................. 33
DAFTAR PUSTAKA....................................................................................... 34
iv
v
BAB I
TINJAUAN MATA KULIAH
1
telah memahami dasar dasar pengolahan citra digital sebagai sarana untuk
penelitian yang lebih lanjut dalam bidang pengolahan citra digital.
c. Semester/SKS
Mata kuliah pengolahan citra digital diajarkan pada semester 6 (genap) pada
Universitas Cokroaminoto Palopo dengan jumlah SKS sebanyak 2 (dua) SKS.
d. Kegunaan Mata Kuliah
1. Mampu memahami dan mengembangkan konsep dan tehnik dasar pengolahan
citra.
2. Mampu memahami algoritma pengolahan citra dan mengimplementasikannya
dengan bahasa pemrograman.
3. Mampu menerapkan teknik-teknik pengolahan citra untuk aplikasi pengolahan
citra yang lebih kompleks secara individu maupun dalam kelompok dalam
bentuk presentasi atau makalah.
e. Sasaran Belajar
1. Memahami maksud dan tujuan dari perkuliahan pengolahan citra digital.
2. Memahami konsep dasar teknik kompresi citra digital.
3. Memahami karakteristik citra digital.
4. Mampu menjelaskan manfaat dari pengolahan citra digital dalam kehidupan
sehari-hari.
5. Memahami fungsi dan proses kompresi terhadap suatu citra digital.
f. Urutan Penyajian
1. Gambaran umum perkuliahan
2. Mamfaat pengolahan citra digital
3. Dasar – dasar kompresi pada citra digital
4. Cara kerja kompresi pada suatu citra digital
5. Pengaruh kompresi pada suatu citra digital
2
BAB II
PENDAHULUAN
3
BAB III
MATERI PEMBELAJARAN
1. Kompresi Citra
Image compression atau yang disebut juga kompresi citra adalah proses
untuk meminimalisasi jumlah bit yang merepresentasikan suatu citra sehingga
ukuran data citra menjadi lebih kecil. Pada dasarnya teknik kompresi citra
digunakan pada proses transmisi data (data transmission) dan penyimpanan data
(data storage). Kompresi citra banyak diaplikasikan pada penyiaran televisi,
penginderaan jarak jauh (remote sensing), komunikasi militer, radar,
telekonferensi, pencitraan kedokteran, dan lain-lain.
Dalam teknik kompresi data, redundansi dari data menjadi masalah utama.
Redudansi yaitu kejadian berulangnya data atau kumpulan data yang sama dalam
sebuah database yang mengakibatkan pemborosan media penyimpanan.
Kompresi data ditujukan untuk mereduksi penyimpanan data yang redundan. Atau
dalam istilah lain kompresi citra digital dilakukan untuk dengan cara
meminimalkan jumlah bit yang diperlukan untuk merepresentasikan suatu data
citra, namun seringkali kualitas gambar yang dihasilkan jauh lebih buruk dari
aslinya karena keinginan kita untuk memperoleh rasio kompresi yang tinggi.
2. Konsep Dasar Teknik image compression
Teknik kompresi citra mengacu pada dua konsep dasar, yaitu :
1. Mengeksploitasi redundansi informasi yang terdapat pada pola sinyal citra
digital. Metode ini digunakan pada teknik kompresi citra lossless coding.
Redundansi tersebut dapat berupa:
1. Redundansi Spasial akibat korelasi antara piksel-piksel yang bertetangga yang
memiliki intensitas yang sama.
2. Redundansi Spektral akibat korelasi antara bidang-bidang warna yang berbeda
3. Redundansi Temporal akibat korelasi frame-frame yang berbeda pada citra
dinamis
4. Menggunakan deviasi dalam batas yang dapat ditoleransi dengan cara
mengurangi detail citra yang tidak dapat ditangkap oleh penglihatan manusia.
Resolusi spasial, waktu dan amplitudo disesuaikan dengan aplikasi yang
4
digunakan. Metode ini digunakan pada teknik kompresi citra lossy coding
dengan mengeksploitasi redundansi statistik dan visual.
Teknik kompresi data :
1. Kompresi berbasis Statistik (Lossless)
2. Kompresi berbasis Kuantisasi (Lossy)
3. Kompresi berbasis Transformasi (Lossless/Lossy)
4. Kompresi berbasis Fraktal (Lossy)
3. Sifat Kompresi berdasarkan hasil
1. Lossless Compression
Prinsip dasar: eksploitasi data statistik citra
1. Menghasilkan citra hasil kompresi yang tepat sama dengan citra semula.
2. Dalam proses kompresinya, tidak ada informasi yang hilang.
3. Rasio kompresi sangat rendah / terbatas
4. Contoh aplikasi: citra medis, citra biner (facsimile), dll
Algoritma kompresi lossless dibagi dalam dua kategori, yaitu
a. Dictionary-based Technique
Menghasilkan file kompresi yang berisi fixed-length code (12 – 16 bits) yang
merepresentasikan sekuen bytes file asli, misalnya Run-Length Encoding dan
LZW encoding.
b. Variable Length Coding
Merepresentasikan karakter yang sering muncul dalam bit yang lebih kecil,
misalnya Huffman Coding
Contoh format file dengan kompresi lossless : GIF, PCX, BMP, TIFF, TRG, PGM
2. Lossy Compression
a. Menghasilkan citra hasil kompresi yang hampir sama dengan citra semula.
Dalam proses kompresinya, ada informasi yang hilang namun dalam batas
toleransi tertentu.
b. Rasio kompresi tinggi
c. Contoh aplikasi: transmisi citra pada bandwidth saluran komunikasi terbatas.
d. Algoritma kompresi lossy telah banyak dikembangkan, diantaranya
menggunakan kuantisasi, fraktal, wavelet, dll
5
e. Teknik ini mengubah detail dan warna pada file citra menjadi lebih sederhana
tanpa terlihat citra menjadi lebih sederhana tanpa terlihat perbedaan yang
mencolok dalam pandangan manusia, sehingga ukurannya menjadi lebih kecil.
f. Biasanya digunakan pada citra foto atau image lain yang tidak terlalu
memerlukan detail citra, dimana kehilangan bit rate foto tidak berpengaruh
pada citra.
6
BAB IV
MATERI PRAKTEK
7
Gambar 3. Tampilan menu editor GUI
2. Buat tampilan gui seperti gambar dibawha ini.
8
Gambar 9. Tampilan halaman coding
2. Isi masing-masing tombol dengan coding seperti gambar dibawah ini,
Coding tombol open
% 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)
Img = im2double(imread(fullfile(path,file)));
fileinfo = imfinfo(file);
SIZE = fileinfo.FileSize;
Size = SIZE/1024;
set(handles.edit3,'String',[num2str(Size),' kb']);
imshow(Img,'Parent', handles.axes1)
handles.Img = Img;
handles.fileinfo = fileinfo;
guidata(hObject, handles)
axes(handles.axes2)
cla reset
set(gca,'XTick',[])
set(gca,'YTick',[])
set(handles.pushbutton2,'Enable','on')
set(handles.pushbutton3,'Enable','off')
set(handles.edit4,'String',[])
set(handles.edit5,'String',[])
else
return
end
9
Coding tombol reset
% 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.edit3,'String',[])
set(handles.edit4,'String',[])
set(handles.edit5,'String',[])
10
SIZE = fileinfo_comp.FileSize;
Size = SIZE/1024;
set(handles.edit4,'string',[num2str(Size),' kb']);
imshow(Img_comp,'Parent',handles.axes2)
set(handles.pushbutton3,'Enable','on')
set(handles.edit5,'String',[])
handles.Img_comp = Img_comp;
handles.fileinfo_comp = fileinfo_comp;
guidata(hObject, handles)
% kompresi
filesize = fileinfo.FileSize;
filesize_comp = fileinfo_comp.FileSize;
persen_kompresi = filesize_comp/filesize*100;
% kompresi pada edit text
set(handles.edit5,'String',persen_kompresi)
end
coding background
handles.output = hObject;
movegui(hObject,'center');
ah = axes('unit', 'normalized', 'position', [0 0 1 1]);
uistack(ah,'bottom');
bg = imread('bg.jpg'); imagesc(bg);
set(ah, 'handlevisibility', 'off', 'visible', 'off');
3. Setelah pengkodingan selesasi maka kita simpan dan menekan tombol play
untuk melihat hasil.
11
3) Hasil
Berikut hasil tampilan GUI yang ditampilkan seperti gambar berikut
12
Gambar 19. Tampilan kompresi lossless
13
Gambar 21. Tampilan exit
14
Gambar 2. Tampilan pilihan editor GUI
3. Setelah menekan ok maka akan mucul editor dari GUI seperti gambar
diabawah ini.
15
Gambar 4. Gambar tampilan GUI kompresi losy
2) Coding
4. Selesai membuat tampilan GUI dan setelah mengklik callback maka kita akan
dibawa pada coding yang harus diisi, berikut tampilannya.
16
'*.jpg','JPEG Bitmaps (*.jpg)';
'*.tif','Tiff Bitmap (*.tif)';
'*.png','Portable Network Graphics (*.png)';
'*.*','Semua File(*.*)'},...
'Buka File Citra Host/Asli');
if ~isequal(nama_file1,0)
handles.data1 = imread(fullfile(nama_path1,nama_file1));
fileinfo = imfinfo(nama_file1);
SIZE = fileinfo.FileSize;
Size = SIZE/1024;
set(handles.edit1,'String',[num2str(Size),' kb']);
guidata(hObject,handles);
handles.current_data1 = handles.data1;
axes(handles.axes1);
imshow(handles.current_data1);
else
return
end
set(handles.pushbutton2,'Enable','on')
set(handles.pushbutton3,'Enable','on')
17
imwrite(handles.data1,fullfile(path_simpan,nama_file_simpan),...
'quality',handles.quality);
citra_kompres =
imread(fullfile(path_simpan,nama_file_simpan));
fileinfo_comp = imfinfo(nama_file_simpan);
SIZE = fileinfo_comp.FileSize;
Size = SIZE/1024;
set(handles.edit2,'string',[num2str(Size),' kb']);
guidata(hObject,handles);
axes(handles.axes2);
imshow(citra_kompres);
else
return
end
coding quality
val = get(hObject,'Value');
switch val
case 1
quality = 25;
case 2
quality = 50;
case 3
quality = 75;
case 4
quality = 100;
end
handles.quality = quality;
guidata(hObject,handles);
coding background
handles.output = hObject;
movegui(hObject,'center');
ah = axes('unit', 'normalized', 'position', [0 0 1 1]);
uistack(ah,'bottom');
bg = imread('bg.jpg'); imagesc(bg);
set(ah, 'handlevisibility', 'off', 'visible', 'off');
end
18
6. Setelah pengkodingan selesasi maka kita simpan dan menekan tombol play
untuk melihat hasil.
3) Hasil
Berikut hasil tampilan GUI yang ditampilkan seperti gambar berikut
19
Gambar 20. Tampilan tombol simpan
20
Gambar 1. Pengetikan guide pada command promd
21
Gambar 3. Tampilan menu editor GUI
6. Buat tampilan gui seperti gambar dibawha ini.
22
Gambar 9. Tampilan halaman coding
8. Isi masing-masing tombol dengan coding seperti gambar dibawah ini,
Coding tombol open
[nama_file1, nama_path1] = uigetfile( ...
{'*.bmp;*.jpg;*.tif;*.png','File Citra
(*.bmp,*.jpg,*.tif,*.png)';
'*.bmp','Windows Bitmap (*.bmp)';
'*.jpg','JPEG Bitmaps (*.jpg)';
'*.tif','Tiff Bitmap (*.tif)';
'*.png','Portable Network Graphics (*.png)';
'*.*','Semua File(*.*)'},...
'Buka File Citra Host/Asli');
if ~isequal(nama_file1,0)
handles.data1 = imread(fullfile(nama_path1,nama_file1));
fileinfo = imfinfo(nama_file1);
SIZE = fileinfo.FileSize;
Size = SIZE/1024;
set(handles.edit1,'String',[num2str(Size),' kb']);
guidata(hObject,handles);
handles.current_data1 = handles.data1;
axes(handles.axes1);
imshow(handles.current_data1);
else
return
end
set(handles.pushbutton2,'Enable','on')
set(handles.pushbutton3,'Enable','on')
23
axes(handles.axes2)
cla reset
set(gca,'XTick',[])
set(gca,'YTick',[])
set(handles.pushbutton7,'Enable','off')
set(handles.pushbutton8,'Enable','off')
set(handles.text2,'String',[])
set(handles.text3,'String',[])
handles.Img_comp = Img_comp;
guidata(hObject, handles)
24
coding tombol simpan
thresh = handles.Img_comp;
[name_file_save,path_save] = uiputfile( ...
{'*.bmp','File Bitmap (*.bmp)';...
'*.jpg','File jpeg (*.jpg)';
'*.tif','File Tif (*.tif)';
'*.*','All Files (*.*)'},...
'Save Image');
if ~isequal(name_file_save,0)
imwrite(thresh,fullfile(path_save,name_file_save));
else
return
end
coding background
handles.output = hObject;
movegui(hObject,'center');
ah = axes('unit', 'normalized', 'position', [0 0 1 1]);
uistack(ah,'bottom');
bg = imread('bg.jpg'); imagesc(bg);
set(ah, 'handlevisibility', 'off', 'visible', 'off');
9. Setelah pengkodingan selesasi maka kita simpan dan menekan tombol play
untuk melihat hasil.
3) Hasil
Berikut hasil tampilan GUI yang ditampilkan seperti gambar berikut
25
Gambar 19. Tampilan kompresi hofman
26
Gambar 21. Tampilan exit
C. Pembuatan GUI Profil
1. Langkah pertama ketik guide pada commad promd untuk membuka tampilan
editor GUI pada MATLAB kemudian pilih balnk dan tekan ok. Berikut
tampilannya.
27
Gambar 2. Tampilan pilihan editor GUI
2. Setelah menekan ok maka akan mucul editor dari GUI seperti gambar
diabawah ini.
28
Gambar 4. Gambar tampilan GUI profil
2) Coding
1. Selesai membuat tampilan GUI dan setelah mengklik callback maka kita akan
dibawa pada coding yang harus diisi, berikut tampilannya.
29
Coding pop up menu
pilihan = get(handles.popupmenu1, 'value');
axes(handles.axes1);
switch pilihan
case 2
gambar = imread('ahmad.jpeg');
set(handles.text2,'string', {'Nama : Ahmad Khalid Bin
Walid Muthy';...
'NIM : 1904411425';'Alamat : Blok A-B, Salekoe, wara
timur'});
case 3
gambar = imread('anggota1.jpeg');
set(handles.text2, 'string', {'Nama : Karina Elo
Parambanan';...
'NIM : 1904411807';'Alamat : Jl Ratulangi, libukang permai
perumahan griya bukit salobulo blok d nmr 8, kota Palopo'});
case 4
gambar = imread('anggota2.jpeg');
set(handles.text2, 'string', {'Nama : Mei Saltri
Mintu';...
'NIM : 1904411557';'Alamat : Desa Tabah Kec, Walenrang
timur Kab, Luwu'});
case 5
gambar = imread('anggota3.jpeg');
set(handles.text2, 'string', {'Nama : Devianty Lukman';...
'NIM : 1904411818';'Alamat : Jln. A. Djemma, kecamatan
malili, kabupaten luwu timur'});
case 6
gambar = imread('anggota4.jpeg');
set(handles.text2, 'string', {'Nama : Nadia Irawan';...
'NIM : 1904411556';'Alamat : Jl. Andi Tenriadjeng, Lr.
Cimpu, No. 10, Kota Palopo'});
end
imshow(gambar);
coding background
movegui(hObject,'center');
ah = axes('unit', 'normalized', 'position', [0 0 1 1]);
uistack(ah,'bottom');
bg = imread('bg.jpg'); imagesc(bg);
set(ah, 'handlevisibility', 'off', 'visible', 'off');
3. Setelah pengkodingan selesasi maka kita simpan dan menekan tombol play
untuk melihat hasil.
3) Hasil
Berikut hasil tampilan GUI yang ditampilkan seperti gambar berikut
30
Gambar 17. Tampilan GUI profil
31
BAB V
LATIHAN
32
BAB VI
RANGKUMAN
Image compression atau yang disebut juga kompresi citra adalah proses
untuk meminimalisasi jumlah bit yang merepresentasikan suatu citra sehingga
ukuran data citra menjadi lebih kecil. Pada dasarnya teknik kompresi citra
digunakan pada proses transmisi data (data transmission) dan penyimpanan data
(data storage). Kompresi citra banyak diaplikasikan pada penyiaran televisi,
penginderaan jarak jauh (remote sensing), komunikasi militer, radar,
telekonferensi, pencitraan kedokteran, dan lain-lain.
Dalam teknik kompresi data, redundansi dari data menjadi masalah utama.
Redudansi yaitu kejadian berulangnya data atau kumpulan data yang sama dalam
sebuah database yang mengakibatkan pemborosan media penyimpanan.
Kompresi data ditujukan untuk mereduksi penyimpanan data yang redundan. Atau
dalam istilah lain kompresi citra digital dilakukan untuk dengan cara
meminimalkan jumlah bit yang diperlukan untuk merepresentasikan suatu data
citra, namun seringkali kualitas gambar yang dihasilkan jauh lebih buruk dari
aslinya karena keinginan kita untuk memperoleh rasio kompresi yang tinggi.
33
DAFTAR PUSTAKA
34