View
1.795
Download
130
Category
Preview:
Citation preview
MAKALAH
METODE KOMPRESI JPEG
MENGGUNAKAN MATLAB 6.5
OLEH
FAJAR HARIADI
(0706032737)
JURUSAN TEKNIK ELEKTRO
FAKULTAS SAINS DAN TEKNIK
UNIVERSITAS NUSA CENDANA
KUPANG
2010
KATA PENGANTAR
Puji dan syukur penulis haturkan kepada Tuhan Yang Maha Esa karena atas
berkat dan bimbingan-NYA sehingga penulis dapat menyelesaikan makalah ini
dengan tepat waktunya. Adapun maksud dari penulisan makalah ini adalah dalam
rangka penyelesaian tugas mata kuliah Kompresi Data.
Penulis menyadari dalam menyelesaikan makalah ini banyak mendapat
bantuan moril dari semua pihak dan sumbangan pendapat yang biasa dijadikan
pedoman dan pegangan. Penulis juga tidak lupa mengucapkan limpah terima kasih
kepada dosen pengasuh mata kuliah ini dan segala bantuan maupun fasilitas-fasilitas
penunjang dari berbagai pihak sehingga penulis bisa menyelesaikan makalah ini
sesuai dengan waktu yang telah ditentukan.
Penulis menyadari bahwa makalah ini masih jauh dari kesempurnaan yang
disebabkan oleh pengetahuan dan pengalaman yang dimiliki, oleh karena itu penulis
sangat mengharap kritik dan saran yang konstruktif sebagai bahan masukan dalam
rangka penyempurnaan tulisan ini.
Kupang, Desember 2010
Penulis
DAFTAR ISI
KATA PENGANTAR ……………………………….…….………… i
DAFTAR ISI ………………………………..……………...….…….. ii
BAB I PENDAHULUAN …………………………….......….…….... 1
A. Latar Belakang…………………………………....…....…….......... 1
B. Tujuan .....................…………………….…….….…..…………… 2
C. Rumusan Masalah ……………………………………....……........ 2
BAB II DASAR TEORI ……...............……………………………..... 3
BAB III PEMBAHASAN …..........………….………...….…............. 8
A. Kompresi Data ………………………………..……...…………… 8
B. Kompresi Citra JPEG …………….……..……..…......................... 8
C. Implementasi Kompresi JPEG dengan Menggunakan MatLab 6.5.. 13
BAB IV KESIMPULAN …………………………………..…..…….. 23
A. Kesimpulan………………………………………………………… 23
B. Saran……………………………………………………………….. 23
DAFTAR PUSTAKA ……………………………………..………...... 24
BAB I
PENDAHULUAN
A. Latar Belakang
Seiring berkembangnya teknologi, khususnya dalam teknologi digital maka
teknologi software dan hardware pun semakin berkembang di segala bidang.
Salah satu perkembangan tersebut meliputi teknologi kompresi dengan tujuan
mengurangi penggunaan memory, walaupun saat ini ukuran memory
penyimpanan data bukan menjadi masalah lagi dengan adanya peningkatan
kualitas dan kuantitas hardware dalam hal memory, namun kompresi masih sangat
sering diperlukan dengan tujuan mempersingkat pengiriman data dan
mempermudah pengolahan. Salah satu bidang penerapan kompresi adalah dalam
bidang kompresi gambar atau citra digital dimana ada dua jenis tipe kompresi
yaitu kompresi lossless yang merupakan proses kompresi dimana kualitas citra
hasil kompresi tidak menurun setelah kompresi terjadi dan yang satunya adalah
kompresi tipe lossy yang akan menghasilkan penurunan kualitas citra setelah
proses kompresi terjadi. Kompresi citra yang paling sering digunakan adalah
JPEG yang termasuk tipe lossy dengan berbasis discrite Cosine Transform (DCT).
Walaupun sudah adanya standar baru dengan metode kompresi JPEG 2000 yang
berbasis Discrete Wavelet Transform (DWT), namun JPEG tetap kompresi yang
lebih umum digunakan dikarenakan kompresi JPEG 2000 memerlukan hardware
yang memiliki performa kinerja yang tinggi. Sedangkan pada penerapannya
digunakan program MATLAB, MATLAB adalah sebuah bahasa high-
performance untuk komputasi teknis. MATLAB merupakan singkatan dari
MATrix LABoratory yang dikembangkan oleh The Mathwork. Inc. MATLAB
mengintegrasikan perhitungan, visualisasi, dan pemrograman dalam suatu
lingkungan yang mudah digunakan. MATLAB banyak digunakan di berbagai
bidang terutama dalam bidang sains, diantaranya matematika dan komputasi,
pengembangan algoritma, analisis data, visualisasi dan eksplorasi, grafik untuk
sains dan teknik, serta pengembangan aplikasi, termasuk pembuatan antarmuka
grafis untuk pengguna (Graphical User Interface). Penulis menilai MATLAB
memiliki toolbox-toolbox yang cukup lengkap untuk pengolahan citra digital.
B. Rumusan Masalah
Agar makalah ini dapat dengan mudah dimengerti maka penulis merumuskan
permasalahan-permasalahan yang akan dibahas sehingga pembaca diharapkan
mengerti secara bertahap dan sistematis. Rumusan masalah tersebut antara lain :
1. Apakah yang dimaksud dengan kompresi data?
2. Bagaimana proses kompresi JPEG itu berjalan?
3. Bagaimana cara membuat aplikasi kompresi JPEG?
C. Tujuan
Adapun tujuan dari pembuatan makalah ini dalah :
1. Mengetahui apa itu kompresi
2. Memahami tiap proses dalam tahapan kompresi JPEG
3. Dapat mengetahui proses pembuatan aplikasi dengan menggunakan MATLAB
BAB II
DASAR TEORI
Kompresi Citra
Kompresi citra bertujuan untuk meminimalkan jumlah bit yang diperlukan untuk
merepresentasikan citra. Apabila sebuah foto berwarna berukuran 3 inci x 4 inci
diubah ke bentuk digital dengan tingkat resolusi sebesar 500 dot per inch (dpi), maka
diperlukan 3 x 4 x 500 x 500 = 3.000.000 dot ( piksel). Setiap piksel terdiri dari 3 byte
dimana masing-masing byte merepresentasikan warna merah, hijau, dan biru.
sehingga citra digital tersebut memerlukan volume penyimpanan sebesar 3.000.000 x
3 byte +1080 = 9.001.080 byte setelah ditambahkan jumlah byte yang diperlukan
untuk menyimpan format (header) citra. Citra tersebut tidak bisa disimpan ke dalam
disket yang berukuran 1.4 MB. Selain itu, pengiriman citra berukuran 9 MB
memerlukan waktu lebih lama. Untuk koneksi internet dial-up (56 kbps), pengiriman
citra berukuran 9 MB memerlukan waktu 21 menit. Untuk itulah diperlukan kompresi
citra sehingga ukuran citra tersebut menjadi lebih kecil dan waktu pengiriman citra
menjadi lebih cepat. Citra yang belum dikompres disebut citra mentah (raw image).
Sementara citra hasil kompresi disebut citra terkompresi(compressed image).
Kompresi citra dikembangkan untuk memudahkan penyimpanan dan pengiriman
citra. Teknik kompresi yang ada sekarang memungkinkan citra dikompresi sehingga
ukurannya menjadi jauh lebih kecil daripada ukuran asli. Ada dua tipe utama
kompresi data, yaitu kompresi tipe lossless dan kompresi tipe lossy. Kompresi tipe
lossy adalah kompresi dimana terdapat data yang hilang selama proses kompresi.
Akibatnya kualitas data yang dihasilkan lebih rendah daripada kualitas data asli.
Sementara itu, kompresi tipe lossless tidak menghilangkan informasi setelah proses
kompresi terjadi, akibatnya kualitas citra hasil kompresi tidak menurun.
Parameter-parameter citra yang penting dalam proses kompresi diantaranya adalah
sebagai berikut :
1. Resolusi
Resolusi citra menyatakan ukuran panjang kali lebar dari sebuah citra. Resolusi
citra biasanya dinyatakan dalam satuan piksel . piksel. Semakin tinggi resolusi
sebuah citra, semakin baik kualitas citra tersebut. Namun, tingginya resolusi
menyebabkan semakin banyaknya jumlah bit yang diperlukan untuk menyimpan
dan mentransmisikan data citra tersebut.
2. Kedalaman Bit
Kedalaman bit menyatakan jumlah bit yang dipelukan untuk mrepresentasikan
tiap piksel citra pada sebuah frame. Kedalaman bit biasanya dinyatakan dalam
satuan bit/piksel. Semakin banyak jumlah bit yang digunakan untuk
merepresentasikan sebuah citra, maka semakin baik kualitas citra tersebut.
3. Konsep Redundansi
Redundansi merupakan suatu keadaan dimana representasi suatu elemen data
tidak bernilai signifikan dalam merepresentasikan keseluruhan data. Keadaan ini
menyebabkan data keseluruhan dapat direpresentasikan secara lebih kompak
dengan cara menghilangkan representasi dari sebuah elemen data yang redundan.
Redundansi yang terdapat pada citra statik adalah redundansi spasial. Metode
kompresi citra berdasarkan redundansi spasial diantaranya adalah sebagai berikut :
• Subsampling
Subsampling merupakan metode kompresi dengan mengurangi jumlah piksel
yang diperlukan untuk merepresentasikan suatu citra. Subsampling dapat
dilakukan dengan dua cara. Cara pertama adalah mengambil piksel-piksel
tertentu dari citra, misal piksel-piksel pada baris dan kolom saja. Cara kedua
adalah dengan mengambil rata-rata dari kelompok piksel dan menggunakan
nilai tersebut sebagai ganti nilai kelom- dengan pengurangan resolusi.
• Pengurangan kedalaman bit
Metode ini dilakukan dengan mengurangi jumlah bit yang digunakan untuk
mrerepresentasikan suatu piksel. Misalnya dengan mengurangi kedalaman bit
dari 16 bit/piksel menjadi 8 bit/piksel. Metode ini mengurangi kualitas citra.
• Transformation Coding
Transformation coding merupakan transformasi data dari domain ruang ke
domain frekuensi.Cara ini menghasilkan data yang lebih mudah diproses
untuk kompresi lebih lanjut. Transformasi yang populer digunakan antara lain
Discrete CosineTransform (DCT) yang diadopsi dalam standar kompresi
JPEG dan Discrete Wavelet Transform (DWT) yang digunakan dalam
kompresi JPEG 2000. Sekarang ini, kompresi citra yang sering digunakan
adalah JPEG. JPEG dikembangkan oleh Joint Photographic Expert Group
pada akhir tahun 80an dan kemudian dikenal karena teknik kompresi-nya yang
bagus. Kompresi JPEG berdasarkan pada Discrete Cosine Transform. Pada
tahun 1997, komite JPEG memutuskan untuk mengembangkan standar baru
untuk kompresi citra. Sejak saat itulah JPEG-2000 mulai dikembangkan.
Berikut ini adalah contoh format citra baik yang lossless maupun lossy
Tabel format citra
Ekstensi Nama Keterangan
bmp Windows Bitmap
Biasanya digunakan oleh aplikasi dan sistrem operasi windows merupakan kompresi tipe lossless
gif Graphics Interchange
Format
Gif biasanya digunakan di website. Format gif mendukung citra bergerak. Namun format gif hanya mendukung 255 warna tiap frame. Format gif juga mendukung citra transparan. Format gif merupakan kompresi tipe lossy.
jpg/jpeg Joint Photographic
Experts Group
JPEG menggunakan kompresi tipe lossy. Kualitas JPEG 2000
bervariasi tergantung setting kompresi yang digunakan. Kompresi JPEG berbasis DCT (Discreete Cosine Transform)
jp2/jpg2/j2k Joint Photographic
Experts Group 2000
Merupakan pengembangan dari JPEG yang berbasis transformasi wavelet. Format ini mendukung kompresi tipe lossless dan lossy. Namun, support JPEG 2000 dalam berbagai aplikasi masih kurang, disebabkan kebutuhan hardware yang tangguh dan paten.
pbm Portable Bitmap Format
Merupakan format citra hitam putih yang sederhana. PBM memerlukan 1 bit tiap pixel. Tidak seperti format citra lainnya, format PBM erupakan plain text yang bisa diolah dengan menggunakan pengolah text. Format PBM merupakan bagian dari PNM (Portable Pixmap File format).
pgm Portable Graymap Format
Merupakan format citra abu-abu yang sederhana. Format PGM memerlukan 8 bit tiap pixel. PGM merupakan citra mentah dengan kompresi tipe lossless. Format PGM merupakan bagian dari PNM (Portable Pixmap File Format).
ppm Portable Pixmap Format
Merupakan format citra berwarna yang sederhana. PPM memerlukan 24 bit tiap pixel. PPM merupakan citra mentah dengan kompresi tipe lossless. Format PPM merupakan bagian dari PNM (Portable Pixmap File Format).
png Portable Network
Graphics
PNG adalah format citra dengan kompresi tipe lossless dengan kedalaman bit berkisar antara 1 sampai dengan 32. PNG didesain untuk menggantikan format citra GIF untuk diimplementasikan di website. Algoritma kompresi PNG tidak memerlukan paten karena sudah menjadi public domain sejak tahun 2003.
tiff Tagged Image File
Format
Merupakan format citra yang sudah digunakan sejak dulu. Mendukung kompresi tipe lossless dan lossy.
BAB III
PEMBAHASAN
A. Kompresi Data
Kompresi data adalah proses mengubah sebuah berkas data input (source
stream/data original) menjadi berkas data yang lain (output, bitstream atau berkas
terkompres) yang mempunyai ukuran lebih kecil. Kompresi bertujuan untuk
memperkecil ukuran memory penyimpanan data dan juga mempercepat transmisi
pengiriman data. Berdasarkan sifatnya kompresi dibedakan menjadi dua, yaitu
kompresi yang bersifat lossless dimana hasil pembacaan data setelah proses
kompresi sama persis dengan stream inputan, sedangkan yang kedua adalah
kompresi lossy, dimana hasil pembacaan hasil setelah kompresi memiliki
perbedaan dengan stream inputan. Saat ini kompresi data telah mencakup bidang
yang luas, salah satunya dalam bidang kompresi citra yang telah mencapai
banyakperkembangan algoritma kompresi sehingga menghasilkan berbagai jenis
format citra, salah satu yang paling umum ditemui adala kompresi JPEG (Joint
Photographic Experts Group).
B. Kompresi Citra JPEG
JPEG didirikan oleh komite Joint Photographic Expert Group yang mengeluarkan
standar pada tahun 1992. JPEG menetapkan standar yaitu codec. Codec
menjelaskan tentang bagaimana sebuah gambar dikompresi menjadi aliran byte
dan decompressed kembali menjadi sebuah gambar serta digunakan sebagai
streaming untuk file yang berisi. Algoritma kompresi JPEG merupakan yang
terbaik untuk foto-foto dan lukisan pemandangan yang realistis dengan variasi
warna yang halus dan nada.
1. Tahapan Kompresi JPEG :
a) Sampling : adalah proses pengkonversian data pixel dari RGB ke YUV
(luminance, bluechrominance, redchrominance) dan dilakukan down
sampling. Biasanya sampling dilakukan per 8x8 blok, semakin banyak
blok yang dipakai makin bagus kualitas sampling yang dihasilkan.
b) DCT (Discreate Cosine Transform) : hasil dari proses sampling akan
digunakan sebagai inputan proses DCT, dimana blok 8x8 pixels akan
diubah menjadi fungsi matriks cosinus
c) Quantization : proses membersihkan koefisien DCT yang tidak penting
untuk pembentukan image baru. Hal ini yang menyebabkan JPEG bersifat
lossy.
d) Entropy Coding : proses penggunaan algoritma entropy, misalnya
Huffman atau RLE untuk mengkodekan koefisien hasil proses DCT yang
akan mengeliminasi nilai-nilai matriks yang bernilai nol secara zig-zag
order.
Berikut adalah skema diagram proses kompresi dan dekompresi JPEG:
JPEG Encoder Block Diagram
JPEG Decoder Block Diagram
2. Contoh kasus kompresi JPEG
a) Proses pertama adalah koversi RGB pengambilan sampling( Red, Green,
Blue ) ke YCbCr, yaitu satu komponen brightness, luma ( Y ), dan dua
komponen warna, chroma ( Cb, Cr ). 2. Resolusi data chroma diturunkan
(downsampling), biasanya dengan faktor pembagian 2 (256/2 =128). Hal
ini dikarenakan mata manusia lebih peka terhadap detail brightness
daripada detail warna.
b) Misalnya setelah hasil sampling nilai citra sbb :
-128 =
Pengurangan dengan nilai 128 bertujuan agar diperoleh nilai diseputar nol.
c) Kemudian lakukan Forward-DCT dengan rumus:
Sehingga hasilnya menjadi :
d) Kemudian dikuantisasi menggunakan matriks kuantisasi yang merupakan
standar JPEG yaitu :
Rumus kuantisasinya adalah :
Setelah perhitungan didapat hasil :
e) Setelah didapat hasil maka dilakukan proses scan secara
tujuan adalah untuk mengurutkan nilai hasil kuantisasi dalam urutan
peningkatan ruang frekuensi. Jadi diperoleh vektor dengan diurutkan
sesuai kriteria dari ruang frekuensi. Nilai pertama dalam vektor (pada
indeks nol) dapat disamakan denga
ditampilkan dalam citra; ini disebut dengan istilah “DC”. Seiring
meningkatnya indeks pada vektor, maka diperoleh nilai yang disamakan
dengan ruang frekuensi yang tinggi.
koefisien frekuensi r
Sampai di dapat hasil :
Rumus kuantisasinya adalah :
Setelah perhitungan didapat hasil :
Setelah didapat hasil maka dilakukan proses scan secara
adalah untuk mengurutkan nilai hasil kuantisasi dalam urutan
peningkatan ruang frekuensi. Jadi diperoleh vektor dengan diurutkan
sesuai kriteria dari ruang frekuensi. Nilai pertama dalam vektor (pada
indeks nol) dapat disamakan dengan ruang frekuensi terendah yang
ditampilkan dalam citra; ini disebut dengan istilah “DC”. Seiring
meningkatnya indeks pada vektor, maka diperoleh nilai yang disamakan
dengan ruang frekuensi yang tinggi. Dengan kata lain mengelompokkan
koefisien frekuensi rendah di bagian atas vector.
Sampai di dapat hasil :
Setelah didapat hasil maka dilakukan proses scan secara zig-zag dengan
adalah untuk mengurutkan nilai hasil kuantisasi dalam urutan
peningkatan ruang frekuensi. Jadi diperoleh vektor dengan diurutkan
sesuai kriteria dari ruang frekuensi. Nilai pertama dalam vektor (pada
n ruang frekuensi terendah yang
ditampilkan dalam citra; ini disebut dengan istilah “DC”. Seiring
meningkatnya indeks pada vektor, maka diperoleh nilai yang disamakan
Dengan kata lain mengelompokkan
f) Untuk menghilangkan bit nol yang muncul maka dilakukan proses Zero-
Run Length Encoding dengan format (a,b), ‘a’ adalah jumlah bit nol yang
muncul sebelum nilai ‘b’, dan ‘b’ adalah nilai dari hasil zig-zag scanning.
Hasil yang didapat :
DC coefficient is -26
Zero run-length encoding is
(0, -3),
(1, -3), (0, -2), (0, -6), (0, 2), (0, -4),
(0, 1), (0, -4), (0, 1), (0, 1), (0, 5), (0, 1),
(0, 2), (0, -1), (0, 1), (0, -1), (0, 2),
(5, -1), (0, -1),
(0, 0)
g) Sedangkan untuk proses decoding adalah kebalikan dari proses encoding
maka berdasarkan table zero-run length encoding akan didapat DCT
koefisien matriks :
h) Kemudian dikalikan dengan matriks kuantisasi
G(j,k) = Q(j,k)*B(j,k)
Sehingga hasilnya :
i) Selanjutnya adalah melakukan proses Inverse DCT, maka akan didapat
hasil :
j) Kemudian ditambahkan dengan nilai skalar 128 sehingga nilai seluruh
matriks menjadi :
k) perbandingan dengan nilai aslinya :
C. Implementasi Kompresi JPEG dengan Menggunakan MatLab 6.5
Pada MATLAB, kompresi JPEG terdapat pada toolbox image processing yang
tergabung dalam perintah imwrite. Berikut adalah cara membuat GUI (General
User Interface) Kompresi citra menggunakan MatLab :
1. Penulis mengasumsikan pembaca telah memiliki computer atau notebook yang
sudah terinstall MATLAB. Oleh karena itu berikut langsung kepada langkah-
langkah pembuatan GUI Kompresi JPEG.
2. Pertama buka program MATLAB 6.5
3. Kemudian setelah masuk ke program MATLAB, pilih File → New → GUI.
Original Image Reconstructed Image
4. Setelah tampil GUIDE quick start, seperti gambar dibawah ini, pilih Blank
GUI.
5. Selanjutnya akan muncul tampilan jendela GUIDE layout editor untuk
mempermudah kita dalam membuat antar muka grafis.
6. Desain tampilan sesuai dengan aplikasi yang akan kita buat. Gunakan
komponen-komponen yang ada pada bagian kiri layar dengan cara mengklik
dan menarik komponen yang akan digunakan ke dalam area rancangan.
Setelah melakukan desain rancangan seperti yang terlihat pada gambar berikut
ini, simpan program dengan nama aplikasi.fig, maka secara otomatis akan
terbentuk m-file matlab dengan nama yang sama, yaitu aplikasi.m yang
merupakan editor untuk memasukkan script program ke dalam rancangan
yang telah kita buat sebelumnya.
7. Setelah muncul editor untuk m-file matlab, lakukan pengetikan program untuk
melakukan proses buka citra, menampilkan dan melakukan kompresi serta
untuk menyimpan citra hasil kompresi . Berikut ini script program yang ada
pada file aplikasi.m.
function varargout = aplikasi(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @aplikasi_OpeningFcn, ...
'gui_OutputFcn', @aplikasi_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
function aplikasi_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
guidata(hObject, handles);
function varargout = aplikasi_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
function pushbutton1_Callback(hObject, eventdata, handles)
[nama_file1, nama_path1]=uigetfile( ...
{'*.bmp;,*.jpg','File Citra(*.bmp,*.jpg)';
'*.bmp','File Bitmap(*.bmp)';...
'*.jpg','File JPEG(*.jpg)';
'*.*','Semua File(*.*)'},...
'Buka File Citra Host/Asli');
if ~isequal(nama_file1, 0)
handles.data1=imread(fullfile(nama_path1,nama_file1));
info = imfinfo(fullfile(nama_path1, nama_file1));
size_file = info.FileSize/1000;
guidata(hObject,handles);
handles.current_data1=handles.data1;
axes(handles.citra_asli);
imshow(handles.data1);
set(handles.name1,'String',nama_file1);
set(handles.size1,'String',size_file);
set(handles.date1,'String',info.FileModDate);
else
return;
end
% 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)
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
[nama_file_simpan, path_simpan]=uiputfile(...
{'*.jpg','File citra(*.jpg)';
'*.jpg','Citra JPEG(*.jpg)';...
'*.*','Semua File(*.*)'},...
'Menyimpan File Citra Hasil Kompresi JPEG');
imwrite(handles.data1, fullfile(path_simpan,nama_file_simpan));
citra_kompres=imread(fullfile(path_simpan,nama_file_simpan));
guidata(hObject,handles);
axes(handles.citra_kompresi);
imshow(citra_kompres);
info = imfinfo(fullfile(path_simpan,nama_file_simpan));
size_file_simpan = info.FileSize/1000;
set(handles.name2,'String',nama_file_simpan);
set(handles.size2,'String',size_file_simpan);
set(handles.date2,'String',info.FileModDate);
% 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)
% --- Executes on button press in pushbutton3.
function pushbutton3_Callback(hObject, eventdata, handles)
selection=questdlg(['Keluar ' get(handles.figure1,'Name')''],...
['Keluar ' get(handles.figure1,'Name')''],...
'Ya','Tidak','Ya');
if strcmp(selection,'Tidak')
return;
end
delete(handles.figure1)
8. Penjelasan Script Program :
a) Pembuatan GUI dengan menggunakan GUIDE menyebabkan adanya blok
inisialisasi pada M-File yang merupakan suatu ketetapan dari MATLAB,
jadi tidak dapat diubah atau dihapus isinya, karena akan menyebabkan eror
pada GUI tersebut.Yang merupakan blok inisialisi dalam program tersebut
adalah:
function aplikasi_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
guidata(hObject, handles);
function varargout = aplikasi_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
b) Berikutnya masukkan script program ke dalam rutin subfungsi yang telah
didefinisikan ke dalam button buka untuk memberikan efek atau reaksi
jika pengguna menekan tombol Buka Citra. Dalam hal ini, jika
penggunaka menekan button Buka Citra, maka program akan
menampilkan kotak dialog untuk membuka file citra yang akan diproses.
function pushbutton1_Callback(hObject, eventdata, handles)
[nama_file1, nama_path1]=uigetfile( ...
{'*.bmp;,*.jpg','File Citra(*.bmp,*.jpg)';
'*.bmp','File Bitmap(*.bmp)';...
'*.jpg','File JPEG(*.jpg)';
'*.*','Semua File(*.*)'},...
'Buka File Citra Host/Asli');
if ~isequal(nama_file1, 0)
handles.data1=imread(fullfile(nama_path1,nama_file1));
info = imfinfo(fullfile(nama_path1, nama_file1));
size_file = info.FileSize/1000;
guidata(hObject,handles);
handles.current_data1=handles.data1;
axes(handles.citra_asli);
imshow(handles.data1);
set(handles.name1,'String',nama_file1);
set(handles.size1,'String',size_file);
set(handles.date1,'String',info.FileModDate);
else
return;
end
c) Pada function pushbutton1_Callback(hObject, eventdata, handles),
digunakan fungsi uigetfile untuk membaca file citra dengan format yang
didefinisikan. Sebaliknya, fungsi ~isequal(nama_file1, 0) memberikan tes
kondisi yang menyatakan keberadaan sebuah file. Jika filenya ada, maka
isequal() akan memberikan nilai 1 dan 0 untuk sebaliknya. Fungsi imread
(fullfile(nama_path1, nama_file1)) digunakan untuk membaca file
direktori nama_path1 dan nama filenya adalah nama_file1. Dalam hal ini,
fungsi fullfile digunakan untuk membaca file lengkap dengan direktorinya.
Fungsi imfinfo digunakan untuk memberikan semua informasi tentang file
yang dibaca (nama file, ukuran, tanggal modifikasi data, tipe warna, dll).
Karena pada fungsi imfinfo size data yang ditampi lkan dalam ukuran
byte, maka dilakukan proses konversi menjadi kilobyte. Selanjutnya
adalah menampilkan file yang kita buka ke dalam axes. Statement axes
digunakan untuk menghandle tempat bagi file citra yang akan ditampilkan,
sedangkan untuk menampilkannya digunakan statement imshow.
Sedangkan untuk menampilkan informasi tentang cita digunakan
set(handles.text, ‘String’, info.File). Selanjutnya berikan script program
untuk proses kompresi JPEG. Pada matlab, kompresi JPEG terdapat pada
toolbox image processing yang tergabung dalam perintah imwrite, yaitu:
imwrite(A, filename, fmt) dengan A adalah citra asli yang dapat berupa
citra hitam putih maupun citra berwarna. Filename adalah nama file hasil
kompresi JPEG. Sedangkan fmt sebenarnya digunakan untuk
menspesifikasikan quality kompresi yang nilainya antara 1 sampai 100,
namun dalam hal ini bersifat optional. Untuk menambah interaktif
tampilan, tambahkan question dialog yang akan ditampilkan ketika
pengguna memilih tombol keluar. Untuk menutup figure dan aplikasi jika
pengguna memilih yes ketika muncul question dialog, gunakan statement
delete(handles.figure1), maka aplikasi akan tertutup.
d) Setelah itu kembali pada figure, klik kanan pada salah satu komponen
objek figure lalu pilih property inspector, pada bagian Tab sesuaikan
dengan inisial pada m-file contohnya pada axes (citra_asli) sebagai berikut
terlihat pada tanda garis merah.
Lakukan pada tiap objek dengan Tag yang sesuai dengan m-filenya.
e) Selanjutnya jalankan program dengan mengklik icon atau menekan f5
9. Maka hasil yang telah di-Run :
10. Jika kita mengklik tombol Buka File maka akan keluar tampilan untuk
memilih citra yang hendak dikompresi sebagai berikut:
11. Setelah meng-klik tombol open :
12. Jika kita hendak mengkompresinya maka klik tombol Kompresi, maka akan
keluar pilihan tempat penyimpanan file hasil kompresi serta pengisian nama
penyimpanan file cukup dengan format “nama_file.jpg (*.jpg)”
13. Setelah menentukan tempat penyimpanan maka klik tombol ‘save’ maka akan
hasil kompresi akan tersimpan di tempat yang telah ditentukan dan tampilan
program:
14. Jika ingin mengakhiri program tekan tombol ‘Keluar’, akan muncul Question
Dialog sebagai berikut :
Kemudian klik ‘Ya’ maka program akan berakhir.
BAB IV
KESIMPULAN
A. Kesimpulan
Setelah dilakukannya pembahasan terhadap rumusan masalah yang sudah
ditentukan maka penulis pun akhirnya dapat mengambil beberapa kesimpulan
sebagai berikut :
1. Kompresi data adalah proses mengubah sebuah berkas data input (source
stream/data original) menjadi berkas data yang lain (output, bitstream atau
berkas terkompres) yang mempunyai ukuran lebih kecil
2. Tahapan proses kompresi JPEG adalah:
a) Downsampling yaitu konversi dari RGB ke YUV (optional) kemudian
memecah-mecah image menjadi ukuran 8x8 piksel.
b) Kemudian proses Forward Discrete Cosine Transform
c) Setelah itu dilakukan proses Kuantisasi untuk menentukan koefisien DCT
yang tidak penting (bersifat lossy)
d) Dan tahap terakhir melakukan entropy encoding untuk menghilangkan
hasil scanning yang bernilai nol.
3. Untuk membuat aplikasi kompresi dapat digunakan program MATLAB
dimana sudah terdapat Toolbox-toolbox yang dapat digunakan, pada kasus ini
digunakan function imwrite dimana secara otomatis matlab melakukan
kompresi terhadap citra.
B. Saran
Penulis menyadari makalah ini masih memiliki banyak kekurangan, oleh karena
itu penulis dapat memberikan saran kepada pembaca yang mungkin lebih
mengerti dalam menggunakan MATLAB, hendaknya dalam pembuatan
programnya dibuat output yang lebih detail pada setiap tahap kompresi, dengan
tujuan agar dapat lebih mudah dipahami bagi pembaca lainnya.
DAFTAR PUSTAKA
(1) Herdiyeni, Yeni. 2009. Kompresi Citra. Departemen Ilmu Komputer. IPB
(2) Resyanditp,S.Kom, MSIS. 2007. Kompresi Data Citra TP4113
(3) Adriani, Karina.2010. Kompresi Citra Digital dengan Teknik Kompresi Jpeg
Menggunakan Matlab 7.1. Universitas Gunadarma
(4) http://en.wikipedia.org/wiki/JPEG.html (waktu akses 12/9/2010 10.17 PM)
Recommended