makalah kompresi jpeg

27
MAKALAH METODE KOMPRESI JPEG MENGGUNAKAN MATLAB 6.5 OLEH FAJAR HARIADI (0706032737) JURUSAN TEKNIK ELEKTRO FAKULTAS SAINS DAN TEKNIK UNIVERSITAS NUSA CENDANA KUPANG 2010

Upload: fajar-hariadi

Post on 27-Jun-2015

1.785 views

Category:

Documents


130 download

TRANSCRIPT

Page 1: Makalah Kompresi JPEG

MAKALAH

METODE KOMPRESI JPEG

MENGGUNAKAN MATLAB 6.5

OLEH

FAJAR HARIADI

(0706032737)

JURUSAN TEKNIK ELEKTRO

FAKULTAS SAINS DAN TEKNIK

UNIVERSITAS NUSA CENDANA

KUPANG

2010

Page 2: Makalah Kompresi JPEG

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

Page 3: Makalah Kompresi JPEG

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

Page 4: Makalah Kompresi JPEG

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.

Page 5: Makalah Kompresi JPEG

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

Page 6: Makalah Kompresi JPEG

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.

Page 7: Makalah Kompresi JPEG

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.

Page 8: Makalah Kompresi JPEG

• 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

Page 9: Makalah Kompresi JPEG

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).

Page 10: Makalah Kompresi JPEG

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.

Page 11: Makalah Kompresi JPEG

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.

Page 12: Makalah Kompresi JPEG

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

Page 13: Makalah Kompresi JPEG

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 :

Page 14: Makalah Kompresi JPEG

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

Page 15: Makalah Kompresi JPEG

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 :

Page 16: Makalah Kompresi JPEG

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

Page 17: Makalah Kompresi JPEG

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

Page 18: Makalah Kompresi JPEG

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

Page 19: Makalah Kompresi JPEG

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)

Page 20: Makalah Kompresi JPEG

% --- 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)

Page 21: Makalah Kompresi JPEG

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

Page 22: Makalah Kompresi JPEG

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.

Page 23: Makalah Kompresi JPEG

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 :

Page 24: Makalah Kompresi JPEG

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)”

Page 25: Makalah Kompresi JPEG

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.

Page 26: Makalah Kompresi JPEG

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.

Page 27: Makalah Kompresi JPEG

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)