PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
KOMPRESI CITRA MENGGUNAKAN METODE DISCRETE COSINE TRANSFORM ( DCT ) SKRIPSI
Diajukan untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Sains Program Studi Ilmu Komputer
Oleh: Albertus Guritno Noviardhi NIM : 033124001
PROGRAM STUDI ILMU KOMPUTER JURUSAN MATEMATIKA FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS SANATA DHARMA YOGYAKARTA 2008
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
IMAGE COMPRESSION USING DISCRETE COSINE TRANSFORM (DCT) METHOD THESIS
Presented As Partial Fulfillment of The Requirenets To Obtain The Sarjana Sains Degree In Computer Science
By: Albertus Guritno Noviardhi Student Number : 033124001
STUDY PROGRAM OF COMPUTER SCIENCE DEPARTEMENT OF MATHEMATICS FACULTY OF SCIENCE AND TECHNOLOGY SANATA DHARMA UNIVERSITY YOGYAKARTA 2008
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
kadangkala mengobati kerinduan diri ini pd keluarga yg jauh Teman... Percayalah,dirimu telah banyak menyadarkan diri tentang arti kehidupan tentang pribadi manusia yg berpendirian tentang arti persahabatan utuh tentang apa itu arti rindu dan kasih sayang tentang emosi dan perasaan yg kadang kala berubah dan datang tak diundang Bagaimana aku habiskan tulisan ini sedangkan cerita bersamamu seperti tidak akan habis Ada saja persoalan yg bakal tercerna di pikiran ini bila mengenang dirimu Yang pastinya... sering melakarkan senyum paling indah, bila saja bibir ini menyebutkan namamu aku pasti akan merindukan dirimu...
Teman... Jika di ambang kesedihan terpikirkah kita tentang bgmn ia bermula? "Kesedihan yg mendatang bukanlah pengakhiran sebuah kehidupan" kata yg mudah diluncurkan dr bibir yg blm pasti seikhlas hati yg merasa Teman... Jika mentari menyinari alam terpikirkah dikau tentang diri temanmu yg mungkin merindukan dirimu tapi gagal utk bertemu lantaran batasan jarak & waktu Teman... sesungguhnya aku amat menyayangimu sebagaimana batasan kasih sayang seorang teman kepada temannya Taukah dikau? Setiap kerutan di wajahmu turut melancarkan pedih di hati ini Teman... Aku tdk mampu mengucapkan pujian atau kata‐kata manis utk memikat hatimu Tetapi,jika kejujuran,kesetiaan,dan keakraban sebagai seorang teman, moga2 hati ini belum keras Teman... Air mata ini pasti akan menetes bila mengingat saat‐saat bersamamu keriangan dan senda gurau menjadi sulaman indah dari hari‐hari kita keakraban yg terjadi
(Album kenangan IKAMUDIKA 2002-2004)
Kupersembahkan karya ini untuk Jesus Christ, my Lord Bapak dan Ibu, teladanku Mbak Ria, my Sister Almamaterku
vi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ABSTRAK Pemampatan data adalah proses mengubah data masukan menjadi sebuah data lain yang ukuran file-nya lebih kecil dengan cara menghilangkan redundansi data (data yang tidak mengandung informasi terkait atau merupakan pengulangan dari informasi yang sudah dinyatakan sebelumnya atau yang sudah diketahui). Pemampatan citra adalah salah satu aplikasi dari pemampatan data dalam citra digital yang mempunyai tujuan untuk mengurangi jumlah bit dari sebuah citra, agar dapat disimpan ataupun ditransmisikan secara lebih efisien.Salah satu metode yang digunakan untuk pemampatan citra adalah Discrete Cosine Transform (DCT), yang merupakan kelas dari operasi matematika Fast Fourier Transform (FFT). Dalam tulisan ini, DCT digunakan dalam proses pemampatan file citra, yaitu untuk mentransformasikan sebuah matriks citra menjadi sebuah matriks dengan representasi lain. Dengan demikian dapat diketahui data mana yang harus dihilangkan, sehingga ukuran file citra tersebut dapat menjadi lebih kecil. Namun jika data hasil pemampatan tersebut dikembalikan (direkonstruksi) maka data tersebut dapat menyerupai data asli. Proses pemampatan ini dapat menggunakan 2 (dua) cara yaitu berdasarkan prosentase dan berdasarkan nilai ambang. Dari hasil pengujian yang dilakukan terhadap suatu citra dengan resolusi 128x128 pixel, maka untuk memperoleh hasil yang baik, metode yang digunakan adalah “Blok Matriks” dengan besar blok adalah 8x8 dan nilai ambang kuantisasi dibawah 50.
vii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ABSTRACT Data compression is a process to change an input data becomes another data which has smaller size by reducing data redundancy (data that don’t content related information or constitute repeating of information which is already mentioned or known). Image compression is one of data compression application in digital image. In order, the objective is to reduce the amount of bit of an image, so that it can be saved or tansmited efficiently.One of the method that is used to compress the image is Discrete Cosine Transform (DCT), one of mathemathic operation class Fast Fourier Transform (FFT). In this paper, DCT is used in an image compression process, that is to transform a matrix of an image become a matrix with a different representation. Thus we can know which data that have to be erased, so the image file size can be smaller. But if the compression data output mentioned is being returned (reconstructed) then that data can be similar with the original data. This compression process can use 2 (two) method that is percentage based and threshold value based. From the output of the experiment that has done toward and image which has resolution 128x128 pixel, so to get the good output, methode that have to used is “Blok Matriks” with the amount of the blok is 8x8 and threshhold value is under 50.
viii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
KATA PENGANTAR
Puji syukur penulis panjatkan ke Tuhan atas berkat dan cinta kasih – Nya, sehingga penulis dapat menyelesaikan penelitian dan penyusunan skripsi berjudul “Kompresi Citra Menggunakan Metode Discrete Cosine Transform”. Skripsi ini disusun sebagai salah satu syarat mencapai gelar Sarjana Sains (S.Si) Program Studi Ilmu Komputer. Dalam pelaksanaan penelitian dan penyusunan skripsi ini tidak terlepas dari bantuan berbagai pihak. Oleh karena itu penulis ucapkan terima kasih kepada: 1. Bapak Y. Joko Nugroho, S.Si selaku dosen pembimbing, terima kasih atas
segala
bimbingan,
saran,
kritik
dan
kesabarannya
dalam
membimbing penulis selama menyelesaikan skripsi ini. 2. Ibu P. H. Prima Rosa, S.Si, M.Sc. , selaku Ketua Program Studi ilmu komputer. Terima kasih atas bimbingan dan nasihatnya kepada kami, generasi terakhir Ikom. 3. Anastasia Rita Widiarti, S.Si., M.Kom selaku dosen penguji. 4. Sri Hartati Wijono, S.Si., M.Kom selaku dosen penguji. 5. Segenap dosen Fakultas Sains dan Teknologi Universitas Sanata Dharma. 6. Bapak dan Ibu, Mbak Ria, Mbak Ayuk terima kasih atas doa, restu, dukungan dan perhatian kalian. Luv U all...
x
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
7. ‘Adek’ yang selalu mendukung dan selalu ada untuk memberikan dukungan, semangat, dan doa. Terima kasih telah menemaniku dalam perjalanan ini. 8. Mas Tukijo dan Mbak Linda, beserta segenap karyawan sekretariat. 9. Mas Susilo, terima kasih atas bantuannya dan kerjasamanya selama ini. 10. Komunitas Lab, Beni, Lilik, Iyus, Hendro, Ferry, Yus, Kornel (logikamu cemerlang), terima kasih untuk dukungan dan bantuan kalian. 11. Teman–teman IKOM angkatan 2003, Friendship never end. 12. Teman-teman
Gregorius
Caecilia
Choir
atas
kebersamaan
dan
kekompakan kalian. Thank’s for the wonderful voice... 13. Tim BPKnet; Didik, Dani, Anto’x, Agung Warenk, Seto, Yunan, Danan; kalian membuat komplek kita menjadi Cyber Komplek. 14. Alfonsus Maria de Ligouri youngsters; Rena, Esta, Kiki, Yussi, Yunan, atas kebersamaan dan kekompakannya. 15. Dan pihak-pihak yang belum dapat penulis sebutkan satu per satu. Penulis menyadari bahwa skripsi ini masih jauh dari sempurna. Harapan penulis semoga skripsi ini bermanfaat bagi kemajuan kita semua. Yogyakarta, 8 Oktober 2008 Penulis
Albertus Guritno Noviardhi
xi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
DAFTAR ISI
HALAMAN JUDUL................................................................................
i
HALAMAN JUDUL (INGGRIS)............................................................
ii
HALAMAN PERSETUJUAN PEMBIMBING......................................
iii
HALAMAN PENGESAHAN.................................................................
iv
PERNYATAAN KEASLIAN KARYA..................................................
v
HALAMAN PERSEMBAHAN...............................................................
vi
ABSTRAK................................................................................................
vii
ABSTRACT..............................................................................................
viii
HALAMAN PERSETUJUAN PUBLIKASI..........................................
ix
KATA PENGANTAR..............................................................................
x
DAFTAR ISI............................................................................................
xii
DAFTAR TABEL................................................................................. ...
xvi
DAFTAR GAMBAR...............................................................................
xvii
BAB I
PENDAHULUAN
A.
Latar Belakang.........................................................................
1
B.
Perumusan Masalah.................................................................
2
C.
Tujuan......................................................................................
2
D.
Manfaat....................................................................................
3
E.
Batasan Masalah.......................................................................
3
F.
Metodologi...............................................................................
3
G.
Sistematika Penulisan...............................................................
4
xii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB II
OPTIMISASI FUNGSI
A.
Citra ........................................................................................
6
B.
Elemen-elemen Citra Digital....................................................
8
1. Kecerahan (Brightness)......................................................
9
2. Kontras (Contrast).............................................................
9
3. Kontur (Contour)...............................................................
9
4. Warna (Color)....................................................................
9
5. Bentuk (Shape)..................................................................
9
6. Tekstur (Texture)...............................................................
10
Warna........................................................................................
10
1. Intensity/brigthness/luminance.............................................
11
2. Hue......................................................................................
11
3. Saturation.............................................................................
11
D.
Format Berkas Bitmap...............................................................
12
E.
Kompresi Data...........................................................................
15
1. Pendekatan Ruang...............................................................
15
2. Pendekatan Statistik............................................................
16
3. Pendekatan Kuantisasi.........................................................
16
4. Pendekatan Fraktal...............................................................
16
Faktor Penting dalam Kompresi Data.........................................
18
1. Scalability..............................................................................
18
a. Quality Progrresive........................................................
18
C.
F.
xiii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
G.
b. Resolution Prograsive....................................................
18
c. Component Prograsive...................................................
18
2. Region of Coding...................................................................
18
3. Meta Information...................................................................
18
Metode Kompresi Data...............................................................
19
1. Subsampling..........................................................................
19
2. Pengurangan Kedalaman bit..................................................
19
3. Transformasi........................................................................... 19 H.
Faktor Penting dalam Pembutan Aplikasi Kompresi Data........... 20
I.
Discrete Cosine Transform..........................................................
21
J.
Kuantisasi dan Zig-zag Scanning.................................................
31
K.
Kompresi dengan DCT................................................................
33
L.
Matriks Jarang..............................................................................
35
M.
Pengukuran Eror dan Rasio Pemampatan dalam Kompresi Citra.. 37
BAB III
ANALISIS DAN PERANCANGAN PROGRAM
A.
Perancangan Secara Umum.........................................................
39
B.
Perancangan Secara rinci.............................................................
40
1. Perancangan Proses.................................................................
40
a. Diagram Konteks (DAD level 0)......................................... 40 b. DAD level 1........................................................................
41
c. DAD level 2........................................................................
44
d. Perancangan Struktur Menu................................................
45
e. Perancangan Antarmuka (Interface)...................................
48
xiv
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
D.
Algoritma......................................................................................
55
BAB IV IMPLEMENTASI DAN PEMBAHASAN PROGRAM A.
Implemantasi Program..................................................................
60
B.
Pembahasan Program...................................................................
70
C.
Pengujian Program.......................................................................
73
1.
Persiapan berkas sumber ......................................................
73
2.
Pengaktifan program.............................................................
74
Perbandingan Hasil Pemampatan.................................................
85
1.
Metode “Blok Matriks”.........................................................
85
2.
Metode “Langsung”..............................................................
90
D.
BAB V PENUTUP A.
Kesimpulan ................................................................................
93
B.
Saran...........................................................................................
94
DAFTAR PUSTAKA……...............………………………...………….
95
LAMPIRAN.............................................................................................
97
xv
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
DAFTAR TABEL
Tabel 2.1 Header berkas bitmap (panjang 14 byte).................................
13
Tabel 2.2 Header bitmap versi lama dari Microsoft Windows (12 byte).. 13 Tabel 2.3 Header bitmap versi baru dari Microsoft Windows (40 byte).. 13 Tabel 2.4 Header bitmap versi lama dari IBM OS/2 (64 byte)..............
14
Tabel 2.5 Tabel penghitungan DCT 1 dimensi........................................
25
Tabel 2.6 Tabel penghitungan DCT 2 dimensi........................................
30
Tabel 4.1 Citra uji..................................................................................... 73 Tabel 4.2 Data pengujian program metode Blok Matriks 8x8................. 85 Tabel 4.3 Data pengujian program metode Blok Matriks 16x16............. 86 Tabel 4.4 Data pengujian program metode Blok Matriks 32x32............. 87 Tabel 4.5 Data pengujian program metode Blok Matriks 64x64............. 87 Tabel 4.6 Data pengujian program metode Blok Matriks 8x8................. 87 Tabel 4.7 Data pengujian program metode Blok Matriks 16x16............. 88 Tabel 4.8 Data pengujian program metode Blok Matriks 32x32............. 88 Tabel 4.9 Data pengujian program metode Blok Matriks 64x64............. 89 Tabel 4.10 Data pengujian program metode Blok Matriks 128x128....... 89 Tabel 4.11 Data pengujian program metode Langsung 64x64................
90
Tabel 4.12 Data pengujian program metode Langsung 128x128............
91
xvi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
DAFTAR GAMBAR
Gambar 2.1 Pixel......................................................................................
6
Gambar 2.2 Citra Biner............................................................................
7
Gambar 2.3 Citra gray scale.....................................................................
7
Gambar 2.4 Citra berwarna.......................................................................
8
Gambar 2.5 Warna RGB........................................................................... 11 Gambar 2.6 Urutan Zig-zag scan............................................................... 32 Gambar 3.1 Rancangan DAD level 0........................................................ 40 Gambar 3.2 Rancangan DAD level 1........................................................ 41 Gambar 3.3 Rancangan DAD level 2....................................................... 44 Gambar 3.4 Rancangan menu utama........................................................ 45 Gambar 3.5 Rancangan menu edit............................................................ 46 Gambar 3.6 Rancangan menu help........................................................... 47 Gambar 3.7 Rancangan tampilan awal program....................................... 48 Gambar 3.8 Rancangan tampilan program utama..................................... 49 Gambar 3.9 Rancangan tampilan buka berkas citra.................................. 51 Gambar 3.10 Rancangan tampilan help....................................................... 52 Gambar 3.11 Rancangan tampilan pemilihan metode kuantisasi.............. 53 Gambar 3.12 Rancangan tampilan “Lihat Blok”....................................... 53 Gambar 3.13 Rancangan tampilan “Hitung Error”.................................... 54 Gambar 3.14 Flow chart transformasi........................................................ 56 Gambar 3.15 Prosedur hitung sigma DCT.................................................. 57
xvii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Gambar 3.16 Flow chart invers................................................................. 58 Gambar 3.15 Prosedur hitung sigma invers.............................................. 58 Gambar 4.1 Tampilan awal program.......................................................... 60 Gambar 4.2 Tampilan program utama...................................................... 61 Gambar 4.3 Tombol “Buka File Citra”..................................................... 62 Gambar 4.4 Menu bar “Buka File Citra”.................................................. 62 Gambar 4.5 Radiobutton dan popup menu pemilihan metode kuantisasi.. 62 Gambar 4.6 Tombol “Transformasi”.......................................................... 63 Gambar 4.7 Menu bar “Transformasi”...................................................... 64 Gambar 4.8 Tombol “Rekonstruksi”......................................................... 64 Gambar 4.9 Menu bar “Rekonstruksi”...................................................... 64 Gambar 4.10 Tombol “Tampilkan” dan Edit text lihat blok..................... 65 Gambar 4.11 Grid citra asli, transformasi, dan rekonstruksi.................... 65 Gambar 4.12 Contoh penerapan kuantisasi............................................... 66 Gambar 4.13 Implementasi penerapan input nilai kuantisasi.................... 67 Gambar 4.14 Implementasi penerapan prosentase kuantisasi.................. 68 Gambar 4.15 Tombol “Reset”.................................................................. 69 Gambar 4.16 Menu bar “Reset”............................................................... 69 Gambar 4.17 Menu bar “Help” dan “About”..........................................
70
Gambar 4.18 Tampilan Buka File Citra...................................................
74
Gambar 4.19 Citra asli.............................................................................. 75 Gambar 4.20 Tampilan citra transformasi................................................ 76 Gambar 4.21 Tampilan citra setelah rekonstruksi tanpa di kuantisasi..... 78
xviii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Gambar 4.22 Tampilan citra setelah rekonstruksi setelah dikuantisasi.... 79 Gambar 4.23 Tampilan report.................................................................. 80 Gambar 4.24 Tampilan petunjuk penggunaan program........................... 81 Gambar 4.25 Tampilan informasi program.............................................. 82 Gambar 4.26 Tampilan pesan error.........................................................
83
Gambar 4.27 Tampilan peringatan 1........................................................ 83 Gambar 4.28 Tampilan peringatan 2........................................................ 84
xix
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB I PENDAHULUAN
A. Latar Belakang Data atau informasi sekarang ini tidak hanya disajikan dalam bentuk teks saja, tetapi juga dapat berupa gambar, suara, dan video. Keempat macam data ini sering disebut dengan multimedia. Gambar sebagai salah satu komponen multimedia adalah salah satu bentuk representasi data yang efisien. Gambar atau citra mempunyai karakteristik yang tidak dipunyai oleh data teks dalam hal penyajian data. Pada masa sekarang ini, komputer sudah dilengkapi dengan kemampuan grafis untuk menyampaikan sebuah informasi. Namun ada beberapa kendala yang biasa dihadapi yaitu diantaranya adalah pada besarnya ukuran file yang dibutuhkan untuk menyimpan data tersebut. Akibatnya jika data tersebut akan ditransmisikan ke tempat lain tentunya membutuhkan jalur yang besar, sehingga berdampak pula terhadap lamanya waktu yang digunakan untuk mentransmisikan data tersebut yang akhirnya meningkatkan biaya yang dikeluarkan. Selain itu juga banyaknya pengguna komputer yang cenderung untuk menyimpan suatu data (dalam hal ini adalah data gambar), daripada membuangnya, walaupun belum tentu data tersebut berguna. Hal ini mengakibatkan meningkatnya kebutuhan akan tempat penyimpanan yang besar dalam komputer. Untuk mengatasi berbagai masalah tersebut di atas, maka dibutuhkan suatu teknik untuk dapat memperkecil ukuran data gambar, yaitu dengan mengurangi
1
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2
redundancy atau duplikasi data. Teknik tersebut dinamakan teknik kompresi. Ada beberapa macam metode kompresi data citra diantaranya adalah Discrete Cosine Transform (DCT), Fast Forier Transform (FFT), Huffman, dan lain-lain. Dalam tugas akhir ini, penulis memilih teknik kompresi citra menggunakan metode Discrete Cosine Transform karena metode transformasi ini dapat secara efektif membuang data-data yang tidak diperlukan dengan pengurangan kualitas yang masih dapat ditoleransi oleh mata manusia, jika dibandingkan dengan citra aslinya. Jika dibandingkan dengan fourier transform, karakteristik penyusunan kerapatan signal DCT ini lebih baik dan DCT memberikan konsentrasi energi pada koefisien DCT frekuensi rendah.
B. Perumusan Masalah Berdasarkan latar belakang, maka dapat dirumuskan permasalahan yaitu bagaimana menerapkan algoritma Discrete Cosine Transform untuk memperkecil ukuran file sebuah data citra.
C. Tujuan 1. Mengetahui penerapan DCT untuk memampatkan ukuran file citra. 2. Mengetahui efektivitas DCT untuk memampatkan ukuran file citra. 3. Mengetahui tingkatan toleransi kesalahan pada pemampatan citra dengan metode DCT. 4. Membuat program pemampatan data citra menggunakan metode DCT dengan menggunakan MATLAB 7.0.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3
D. Manfaat Pembuatan aplikasi ini bermanfaat untuk menganalisis sebuah file citra, dari citra asli dan setelah citra tersebut direkonstruksi. Analisis yang dilakukan dapat berupa perbandingan kualitas citra secara langsung maupun dengan melihat perbedaan nilai-nilainya. Sehingga pengguna dapat mengetahui seberapa efektif penggunaan DCT pada pemampatan data citra.
E. Batasan Masalah Dalam pembuatan aplikasi ini, masalah dibatasi pada : 1. Citra yang akan dimampatkan adalah citra greyscale dengan format *.BMP, karena format ini belum mengalami penurunan kualitas citra dan belum terkompresi. 2. Citra yang akan dimampatkan mempunyai resolusi 2n x 2n. 3. Citra yang akan dimampatkan tidak terbatas ukurannya, dengan konsekuensi semakin besar ukuran citra, maka akan semakin lama proses pemampatan. 4. Metode yang dipakai untuk kompresi citra adalah Discrete Cosine Transform (DCT). 5. Software yang digunakan adalah Matlab 7.0.
F. Metodologi Metodologi dalam penulisan ini adalah: 1.
Studi Literatur, yaitu mempelajari teori-teori yang berhubungan dengan kompresi data, dan khususnya kompresi citra menggunakan DCT.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
4
2.
Perancangan sistem: a. Desain interface. b. Desain DAD. c. Rancangan algoritma dan penerapannya.
3.
Membuat program aplikasi dan menggabungkan dengan interface. Metode yang digunakan untuk penelitian ini adalah dengan prototyping.
Dengan metode ini, maka penulis langsung dapat menguji program yang telah dibuat, sehingga kesalahan-kesalahan yang ada dapat segera diperbaiki.
G. SISTEMATIKA PENULISAN BAB I PENDAHULUAN Bab ini berisi tentang penjelasan singkat tentang latar belakang, rumusan masalah, tujuan, batasan masalah, dan metodologi penulisan. BAB II DASAR TEORI Berisi tentang dasar teori tentang kompresi data, yang digunakan untuk mengerjakan tugas akhir ini. BAB III ANALISIS DAN PERANCANGAN PROGRAM Berisi tentang perancangan sistem yang terdiri dari analisis sistem dan perancangan user interface. BAB IV IMPLEMENTASI DAN PEMBAHASAN Berisi tentang implementasi dari desain yang sudah dibuat, beserta dengan pembahasannya dan hasil program.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
5
BAB V KESIMPULAN DAN SARAN Berisi kesimpulan dan saran terhadap hasil-hasil dari penulisan atau pembuatan program. DAFTAR PUSTAKA LAMPIRAN
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB II DASAR TEORI
A. Citra Secara harafiah, citra adalah gambar pada bidang dwimatra atau dua dimensi (Munir, 2004). Citra dapat digolongkan menjadi 2 golongan, yaitu citra kontinu dan citra diskrit. Citra kontinu dihasilkan oleh sistem optik yang menerima sinyal analog, misalnya kamera analog, mata manusia. Sedangkan citra diskrit diperoleh melalui proses digitalisasi pada citra kontinu. Beberapa sistem optik dilengkapi dengan fungsi digitalisasi sehingga mampu untuk menghasilkan citra diskrit, misalnya kamera digital dan scanner. Citra diskrit disebut juga citra digital. Citra digital dapat didefinisikan sebagai fungsi dua variabel f(x,y) dimana x dan y adalah koordinat spasial (bidang) dan nilai f(x,y) merupakan intensitas citra pada koordinat tersebut, atau biasa disebut pixel (picture element). y
f ( x1, y1)
x Gambar 2.1. Pixel
6
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
7
Citra dapat dibedakan menjadi 3 kategori yaitu citra biner, citra keabuan (grayscale) dan citra berwarna. Citra biner terdiri dari 2 warna yaitu hitam dan putih. Satu satuan warna atau yang biasa disebut pixel, merepresentasikan sebuah titik dalam sebuah citra. Dalam citra biner, nilai pixel yang ada adalah 0 untuk warna hitam dan 1 untuk warna putih.
Gambar 2.2 Citra Biner
Sedangkan untuk citra grayscale, memiliki n tingkatan warna keabuan (0 s/d n-1). Biasanya tingkatan warna keabuan tersebut terdiri dari 4, 8, 12, sampai dengan 256 warna, tergantung dari derajat keabuannya. Kebanyakan citra grayscale dikuantisasi pada 256 warna dan membutuhkan 8 bit (1 byte) untuk representasi tiap pixel-nya.
Gambar 2.3 Citra gray scale
Citra berwarna pada dasarnya merupakan kombinasi dari 3 warna primer yaitu merah, hijau dan biru (Red, Green, Blue – RGB). Tiap pixel disusun oleh
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
8
ketiga komponen tersebut. Pada citra bitmap 256 warna, setiap pixel panjangnya 8 bit, dan komponen warna RGB-nya disimpan dalam tabel RGB yang disebut palet (palette). Setiap komponen warna panjangnya 8 bit, sehingga ada 256 nilai keabuan untuk komponen warna merah, 256 nilai keabuan untuk komponen warna hijau, dan 256 nilai keabuan untuk komponen warna biru. Nilai setiap pixel tidak menyatakan derajat keabuannya secara langsung, tetapi nilai pixel menyatakan index tabel RGB yang memuat nilai keabuan merah, nilai keabuan hijau, dan nilai keabuan biru. Dalam hal derajat keabuan tersebut, semakin tinggi nilai derajat keabuan, maka semakin cerah warnanya. Kebanyakan file citra berwarna berukuran besar, karena 1 pixel memerlukan tempat berukuran 3 x 8 bit = 24 bit, atau sama dengan 3 byte. Misalnya sebuah citra berwarna mempunyai resolusi 512 x 512, maka citra tersebut akan disimpan dalam sebuah file berukuran 512 x 512 x 3 byte = 786.432 byte.
Gambar 2.4 Citra berwarna
B. Elemen-elemen Citra Digital Citra digital mempunyai beberapa elemen dasar yang penting, diantaranya adalah:
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
9
1. Kecerahan (Brightness) Kecerahan atau yang sering disebut dengan intensitas cahaya pada sebuah pixel dalam sebuah citra sebenarnya bukan intensitas yang riil, tetapi merupakan intensitas rata-rata dari suatu area yang melingkupinya. Penglihatan manusia mampu menyesuaikan dengan tingkat kecerahan dengan jangkauan sebesar 1010. 2. Kontras (Contrast) Kontras menyatakan sebaran terang dan gelap dalam sebuah citra. Sebuah citra dengan kontras rendah dicirikan oleh sebagian besar komposisi citra yang cenderung terang atau gelap. Sedangkan citra dengan kontras yang baik, komposisi gelap dan terang tersebar dengan merata. 3. Kontur (Contour) Kontur adalah keadaan yang ditimbulkan oleh perubahan intensitas pada pixel-pixel yang bertetangga. Karena adanya perubahan intensitas ini, maka mata manusia mampu mendeteksi tepi-tepi pada sebuah citra. 4. Warna (Color) Warna adalah persepsi yang dirasakan oleh mata manusia terhadap panjang gelombang cahaya yang dipantulkan oleh objek. Warna-warna yang diterima oleh mata manusia merupakan hasil kombinasi cahaya dengan panjang gelombang yang berbeda. 5. Bentuk (Shape) Bentuk adalah sebuah properti intrinsik dari sebuah objek tiga dimensi. Pada umumnya, citra yang dibentuk oleh mata merupakan citra dua dimensi, sedangkan objek yang dilihat merupakan objek tiga dimensi. Informasi bentuk
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
10
objek dapat diekstraksi dari citra pada permulaan prapengolahan dan segmentasi citra. 6. Tekstur (Texture) Tekstur dicirikan sebagai distribusi spasial dari derajat keabuan di dalam sekumpulan pixel-pixel yang bertetangga. Jadi tekstur tidak dapat didefinisikan untuk sebuah pixel, melainkan untuk satu kesatuan citra.
C. Warna Warna yang diterima oleh mata manusia dari sebuah objek ditentukan oleh warna sinar yang dipantulkan oleh objek tersebut. Warna sinar yang direspon oleh mata adalah sinar tampak (visible spectrum) dengan penjang gelombang antara 400 (biru) sampai 700 nanometer (merah). Kombinasi warna yang memberikan rentang warna paling lebar adalah red (R), green (G), dan blue (B). Ketiga warna tersebut dinamakan warna pokok (primaries). Warna RGB yang sering disebut dengan truecolor (24bit/pixel) sering dituliskan dengan 3 bilangan bulat antara 0 sampai dengan 255, yang masingmasing merepresentasikan intensitas dari komponen warna merah, hijau, dan biru.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
11
Gambar 2.5 Warna RGB
Selain dari ketiga warna red, green, blue (RGB), warna juga dapat dimodelkan berdasarkan atribut warnanya. Setiap warna mempunyai 3 atribut yaitu: 1. Intensity/brightness/luminance Atribut yang menyatakan banyknya cahaya yang diterima oleh mata, tanpa mempedulikan warna. Kisaran nilainya atara gelap (hitam) dan terang (putih). 2. Hue Hue berasosiasi dengan panjang gelombang cahaya. Hue digunakan untuk membedakan warna-warna. 3. Saturation Saturation
menyatakan
tingkat
kemurnaian
warna
cahaya,
yaitu
mengindikasikan seberapa warna putih diberikan pada warna. Sebagai contoh, warna merah adalah 100% warna jenuh (saturated color), sedangkan warna pink
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
12
adalah warna merah dengan tingkat kejenuhan yang rendah, karena ada warna putih di dalamnya. Jadi jika hue menyatakan warna sebenarnya, maka saturation menyatakan seberapa dalam warna tersebut. Warna RGB juga mempunyai warna-warna komplementer, yaitu warna cyan, magenta, dan yellow (CMY). Dua buah warna komplementer tersebut jika dicampur dengan perbandingan yang tepat akan menghasilkan warna putih. Model warna CMY dapt digunakan untuk mencetak citra berwarna, tetapi karena ketidaksempurnaan tinta, model CMY tidak dapat menghasilkan warna hitam dengan baik. Karena itu, model warna CMY disempurnakan menjadi model CMYK, yang dalam hal ini K (key) menyatakan warna keempat.
D. Format Berkas Bitmap Sebuah citra digital disimpan dalam sebuah file yang mempunyai format tertentu. Salah satu format file yang digunakan untuk menyimpan suatu citra yang kita kenal adalah bitmap (BMP). Format BMP ini pada umumnya berukuran besar karena belum dimampatkan. Sehingga kualitas citra dengan format ini belum berkurang, karena tidak ada data yang hilang. Saat ini beredar tiga versi berkas bitmap yaitu (i) berkas bitmap versi lama dari Microsoft Windows atau IBM OS/2, (ii) berkas bitmap versi baru dari Microsoft Windows, (iii) berkas bitmap versi baru dari IBM OS/2 (Munir, 2004). Perbedaan ketiga versi tersebut adalah panjang header bitmap-nya. Sedangkan untuk ukuran header berkas sama untuk semua versi.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
13
Tabel 2.1 Header berkas bitmap (panjang 14 byte)
Byte ke-
Panjang (byte)
1–2
2
Nama BmpType
Keterangan Tipe berkas Bitmap BA = bitmap array, CI = icon, BM = bitmap, CP = color pointer, PT = pointer
3–6
4
BmpSize
Ukuran berkas bitmap
7–8
2
XhotSpot
X hotspot untuk kursor
9 – 10
2
YhotSpot
Y hotspot untuk kursor
11 – 14
4
OffBits
Ofset ke awal data bitmap (dalam byte )
(Munir, 2004)
Tabel 2.2 Header bitmap versi lama dari Microsoft Windows (12 byte)
Byte ke-
Panjang (byte)
Nama
Keterangan
1–4
4
HdrSize
Ukuran header dalam satuan byte
5–6
2
Width
Lebar bitmap dalam satuan pixel
7–8
2
Height
Tinggi bitmap dalam satuan pixel
9 – 10
2
Planes
Jumlah plane (umumnya selalu satu)
11 – 12
2
BitCount
Jumlah bit per pixel
(Munir, 2004)
Tabel 2.3 Header bitmap versi baru dari Microsoft Windows (40 byte)
Byte ke-
Panjang (byte)
Nama
Keterangan
1–4
4
HdrSize
Ukuran header dalam satuan byte
5–8
4
Width
Lebar bitmap dalam satuan pixel
9 – 12
4
Height
Tinggi bitmap dalam satuan pixel
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
14
13 – 14
2
Planes
Jumlah plane (umumnya selalu satu)
15 – 16
2
BitCount
Jumlah bit per pixel
17 – 20
4
Compression
0=tak dimampatkan, 1=dimampatkan
21 – 24
4
ImgSize
Ukuran bitmap dalam byte
25 – 28
4
HorzRes
Resolusi horizontal
29 – 32
4
VertRes
Resolusi vertical
33 – 36
4
ClrUsed
Jumlah warna yang digunakan
37 – 40
4
ClrImportant
Jumlah warna yang penting
(Munir, 2004)
Tabel 2.4 Header bitmap versi lama dari IBM OS/2 (64 byte)
Byte ke-
Panjang (byte)
Nama
Keterangan
1–4
4
HdrSize
Ukuran header dalam satuan byte
5–8
4
Width
Lebar bitmap dalam satuan pixel
9 – 12
4
Height
Tinggi bitmap dalam satuan pixel
13 – 14
2
Planes
Jumlah plane (umumnya selalu satu)
15 – 16
2
BitCount
Jumlah bit per pixel
17 – 20
4
Compression
0=tak dimampatkan, 1=dimampatkan
21 – 24
4
ImgSize
Ukuran bitmap dalam byte
25 – 28
4
HorzRes
Resolusi horizontal
29 – 32
4
VertRes
Resolusi vertical
33 – 36
4
ClrUsed
Jumlah warna yang digunakan
37 – 40
4
ClrImportant
Jumlah warna yang penting
41 – 42
2
Units
Satuan pengukuran yang dipakai
43 – 44
2
Reserved
Field cadangan
45 – 46
2
Recording
Algoritma perekaman
47 – 48
2
Rendering
Algoritma haltoning
49 – 52
4
Size1
Nilai ukuran 1
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
15
53 – 56
4
Size2
Nilai ukuran 2
57 – 60
4
ClrEncoding
Pengkodean warna
61 – 64
4
Identifier
Kode yang digunakan aplikasi
(Munir, 2004)
Penyimpanan data bitmap di dalam berkas disusun terbalik dari bawah ke atas dalam bentuk matriks yang berukuran M x N. Baris ke-0 pada matriks data bitmap menyatakan data pixel di citra baris terbawah, sedangkan baris terakhir pada matriks menyatakan data pixel di citra baris teratas.
E. Kompresi Data Kompresi data adalah proses mengubah data masukan (input data stream, source stream, original row data) menjadi data lain (output stream, compressed stream) yang ukurannya lebih kecil, dengan cara mengurangi atau menghilangkan redundancy. Redundancy adalah bagian data yang tidak mengandung informasi terkait atau merupakan pengulangan dari informasi yang sudah dinyatakan sebelumnya atau yang sudah diketahui. Ada beberapa pendekatan kompresi yang dikenal, diantaranya adalah pendekatan ruang, pendekatan statistik, pendekatan kuantisasi, dan pendekatan fractal. 1. Pendekatan Ruang Kompresi data berdasarkan pendekatan ruang didasarkan pada hubungan spasial antara data di dalam suatu kelompok yang memiliki data yang sama.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
16
Contohnya adalah Run Length Encoding, yaitu salah satu aplikasi kompresi data yang paling sederhana. Cara bekerja dari metode ini adalah dengan menyimpan beberapa data yang sama dan berurutan menjadi data tunggal, dengan mencantumkan satu data asli dan suatu nilai yang menyatakan banyaknya data tersebut. 2. Pendekatan Statistik Kompresi data pada pendekatan statistik didasarkan pada frekuensi kemunculan suatu data dalam seluruh bagian data asli (data stream). Contoh aplikasi penerapan metode ini adalah Huffman-coding. Metode kompresi Huffman ini menggunakan prinsip bahwa suatu nilai yang sering muncul dalam suatu data asli akan dikodekan dngan jumlah bit yang lebih sedikit. Sedangkan nilai yang paling jarang muncul akan dikodekan dengan jumlah bit yang lebih panjang. 3. Pendekatan Kuantisasi Pendekatan kuantisasi menggunakan suatu algoritma dengan tujuan memampatkan data stream dengan mengurangi secara langsung jumlah bit dari data yang ada. Contohnya adalah metode pemampatan kuantisasi dalam suatu citra. Cara kerja dari metode ini adalah dengan mengurangi secara langsung derajat keabuan dari suatu citra. Misalnya citra dengan derajat keabuan dari 256 menjadi 32. Hal ini tentunya akan mengurangi besarnya file citra asli, tetapi perlu diingat bahwa pengurangan derajat keabuan yang drastis akan banyak berpengaruh terhadap kualitas citra hasil. 4. Pendekatan Fraktal Pendekatan fraktal adalah suatu teknik pemampatan yang dilakukan pada
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
17
sebuah data didasarkan pada kenyataan bahwa kemiripan bagian-bagian didalam sebuah data, dalam hal ini adalah data citra, dapat dikurangi dengan menggunakan matriks transformasi. Contohnya adalah fractal image compression. Prinsip dasar dari metode ini adalah dengan mencari bagian di dalam suatu citra yang memiliki kemiripan dengan bagian lainnya, dengan ukuran yang lebih besar. Kemudian dicari matriks yang mentransformasikan bagian yang lebih besar tersebut dengan bagian yang lebih kecil. Beberapa teknik tersebut dibagi dalam 2 kategori yaitu lossless compression dan lossy compression. Lossless compression adalah teknik untuk memproses data asli menjadi data lain yang ukurannya lebih kecil, tanpa hilangnya informasi dalam data aslinya. Sedangkan lossy compression adalah teknik untuk mendapatkan data yang lebih kecil ukurannya, tetapi dengan hilangnya sebagian kecil data, namun dengan tingkat error yang masih dapat diterima. Artinya adalah bahwa data output yang didapat hasilnya sangat mendekati data aslinya. Kompresi citra merupakan salah satu aplikasi dari kompresi data. Kompresi citra ini bertujuan untuk mengurangi jumlah bit pada sebuah citra digital, sehingga menghasilkan sebuah citra yang sangat mendekati dengan jumlah bit yang lebih sedikit. Teknik kompresi citra dikembangkan untuk mempermudah dalam penyimpanan dan pengiriman citra.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
18
F. Faktor Penting dalam Kompresi Data Hal-hal penting yang perlu diperhatikan dalam pemampatan sebuah citra diantaranya adalah sebagai berikut: 1. Scalability Scalability adalah kualitas dari hasil proses pemampatan citra karena manipulasi bitstream tanpa adanya dekompresi atau rekompresi. Beberapa tipe scalability adalah: a. Quality Progressive dimana sebuah citra dimampatkan secara perlahanlahan dengan penurunan kualitasnya. b. Resolution Progressive dimana sebuah citra dimampatkan dengan mengkode resolusi citra yang lebih rendah terlebih dahulu baru kemudian ke resolusi yang lebih tinggi. c. Component Progressive dimana sebuah citra dimampatkan berdasarkan komponennya. Pertama mengkode komponen grey-nya, kemudian mengkode komponen warnanya. 2. Region of Interest Coding Daerah-daerah tertentu dienkode dengan kualitas yang lebih tinggi daripada yang lain. 3. Meta Information Citra yang dimampatkan juga dapat memiliki meta information seperti statistik warna, tekstur, small preview image, dan author atau copyright information.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
19
G. Metode Kompresi Data Selain hal-hal penting yang disebut di atas, kompresi citra juga dibagi dalam beberapa metode, diantaranya: 1. Subsampling Subsampling merupakan metode kompresi dengan mengurangi jumlah pixel yang diperlukan untuk merepresentasikan sebuah citra. Metode ini dapat dilakukan dengan dua cara. Pertama, dengan cara mengambil pixelpixel tertentu pada sebuah citra, misalnya pada baris dan kolom saja. Dan yang kedua adalah dengan cara mengambil nilai rata-rata dari kelompok pixel dan menggunakan nilai tersebut untuk mengganti nilai kelompok pixel ini. 2. Pengurangan kedalaman bit Metode ini dilakukan dengan mengurangi jumlah bit yang digunakan untuk merepresentasikan suatu pixel. Misalnya dengan mengurangi kedalaman bit dari 24 bit/pixel menjadi 16 bit/pixel. Dengan demikian, tentu saja kualitas sebuah citra akan berkurang. 3. Transformasi Metode ini digunakan untuk mentransformasikan data dari domain ruang ke domain frekuensi. Cara ini menghasilkan data yang lebih mudah diproses untuk kompresi lebih lanjut. Metode yang banyak digunakan berdasarkan metode transformasi diantaranya adalah Wavelet dan Discrete Cosine Transform (DCT).
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
20
H. Faktor Penting dalam Pembuatan Aplikasi Kompresi Data Beberapa faktor penting yang harus diperhatikan dalam pembuatan aplikasi untuk pemampatan data diantaranya adalah sebagai berikut: 1. Seberapa prosentase berkas yang dapat dimampatkan. Jika
sebuah
program
aplikasi
pemampatan
memiliki
prosentase
pemampatan berkas yang besar, maka program tersebut bisa dikatakan baik. 2. Jaminan keutuhan berkas setelah dimampatkan dan dimekarkan kembali. Berkas yang telah dimampatkan kapasitasnya akan menjadi lebih kecil dibandingkan dengan berkas aslinya, akan tetapi berkas hasil pemampatan tersebut jika dimekarkan kembali, maka kapasitasnya harus kembali seperti pada kapasitas semula. 3. Kecepatan pemampatan Waktu yang dibutuhkan saat proses pemampatan juga mempengaruhi baik atau tidaknya sebuah program pemampatan. Semakin sedikit waktu yang diperlukan untuk proses pemampatan suatu berkas, maka semakin baik pula program pemampatan tersebut. 4. Kemudahan pemakaian program serta fasilita tambahan yang tersedia. Pengguna
program
tidak
mengalami
kesulitan
pada
saat
akan
menggunakan program pemampatan yang dibuat, dengan kata lain program pemampatan yang dibuat bersifat user friendly. Program tersebut
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
21
juga akan semakin baik dan menarik apabila diberi fasilitas tambahan seperti permainan, daftar istilah, bantuan/ pertolongan penggunaan program, dan lain-lain jika dimungkinkan.
I. Discrete Cosine Transform (DCT) Discrete Cosine Transform atau yang biasa disingkat DCT adalah satu kelas operasi matematika yang termasuk dalam Fast Fourier Transform. Operasi dasar yang ditampilkan dalam transformasi ini adalah mengambil suatu signal dan mentransformasikannya dari representasi satu tipe ke tipe yang lain. Transformasi ini dikerjakan secara frekuentatif yaitu dengan cara mengambil suatu nilai dari domain spasial dan mentransformasikannya ke dalam suatu representasi yang identik. DCT merupakan salah satu metode transformasi yang dapat digunakan untuk kompresi data citra yang mempunyai sifat lossy. Metode kompresi DCT ini menggunakan pendekatan nilai kosinus. Pada dasarnya DCT akan mengubah detil warna dari gambar asli, namun karena keterbatasan indra manusia, maka perubahan yang terjadi tidak begitu terlihat. Dalam operasi DCT ini yang digunakan adalah nilai real. Ada 2 macam persamaan yang bisa digunakan yaitu DCT 1 dimensi yang digunakan untuk menghitung data vektor, dan DCT 2 dimensi yang digunakan untuk menghitung data matriks. Persamaan umum untuk DCT 1 dimensi adalah sebagai berikut:
DCT (i ) =
N −1 2 ⎡ (2 x + 1)iπ ⎤ C (i )∑ pixel ( x) cos ⎢ ⎥⎦ ...................................................(2.1) N ⎣ 2N x =0
dengan DCT( i) = nilai DCT indeks ke-i
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
22
N = ukuran matriks Pixel(x) = nilai pixel pada indeks ke-x
C (i ) = 1 jika x > 0 C (i ) =
1 2
jika x = 0
Sedangkan persamaan untuk invers DCT 1 dimensi adalah sebagai berikut: Pixel ( x) =
2 N
N −1
⎡ (2 x + 1)iπ ⎤ ⎥⎦ ...................................................(2.2) 2N
∑ C (i) DCT (i) cos⎢⎣ i =0
dengan DCT(i) = nilai DCT pada indeks ke-i N = ukuran matriks Pixel(x) = nilai ke-x C (i ) = 1 jika i > 0 C (i ) =
1 2
jika i = 0
Persamaan DCT dan invers DCT (IDCT) di atas disebut persamaan DCT 1 dimensi dan IDCT 1 dimensi karena kedua persamaan tersebut digunakan untuk mentransformasi nilai pixel suatu citra berukuran 1xN. Sebagai contoh terdapat matriks berukuran 1x8 yang ditampilkan sebagai suatu citra sebagai berikut: [0 25 50 75 100 125 150 200]
=
Nilai DCT dari matriks di atas adalah: [255 0 11 0 8 0 4 0]
=
Sedangkan nilai IDCT dan citra hasil rekonstruksi adalah sebagai berikut:
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
23
[0 24 49 75 99 124 150 199] =
Dari contoh di atas terlihat bahwa nilai matriks hasil rekonstruksi sangat mendekati nilai matriks aslinya. Hasil dari nilai DCT inilah yang dapat digunakan untuk pemampatan, karena nilai tersebut nantinya akan banyak mengandung nilai 0 (nol). Nilai nol tersebut dalam penyimpanan sebuah data dapat diabaikan (tidak disimpan) sehingga dapat mengurangi banyaknya data yang harus disimpan. Di bawah ini akan diilustrasikan metode DCT 1 dimensi: Terdapat sebuah matriks 1 dimensi [1 2 3 4 5 6 7 8]. Matriks tersebut akan dikenai persamaan (2.1) dengan: i = 1,2,3,…N, x = 0,1,2,…N-1, N = 8, pixel(x) = 1,2,3…8 C(i) = 1,jika x>0, C(i) =
1 2
, jika x=0,
Pixel(x) = nilai pixel ke-x, maka, hasil transformasinya adalah seperti dalam tabel 2.5. Dari tabel tersebut, dapat dilihat bahwa nilai hasil penghitungan, yaitu yang terdapat dalam kolom DCT(i) adalah [12.727 -6.442 0 -0.673 0 -0.201 0 -0.051]. Hasil tersebut yang nantinya dapat digunakan untuk pemampatan data, sebelum dikembalikan ke data aslinya. Pemampatan yang dilakukan tentunya menggunakan aturan-aturan tertentu sehingga nantinya jika data tersebut
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
24
dikembalikan ke bentuk aslinya akan sama atau paling tidak menyerupai data asli dengan toleransi yang masih dapat diterima. Dari data hasil DCT tersebut, jika dikembalikan seperti semula, maka harus dikenai fungsi inverse dari DCT (IDCT). Setelah data itu dikembalikan, maka nilainya akan menjadi [1 2 3 4 5 6 7 8]. Terlihat bahwa nilai hasil invers tersebut masih terlihat sama dengan data aslinya. Sedangkan persamaan DCT 2 dimensi ditampilkan dalam matrik NxN, dan menghasilkan matriks NxN. Persamaan DCT 2 dimensi ini digunakan untuk transformasi matriks 2 dimensi. Persamaan dari DCT 2-dimensi adalah sebagai berikut: DCT (i, j ) =
N −1 2 C (i )C ( j )∑ N x =0
N −1 y =0
dengan DCT(i , j)= nilai DCT pada indeks ke-(i,j) N = ukuran matriks pixel(x,y) = nilai pixel pada indeks ke-(x,y)
C (i ), C ( j ) = 1 jika i, j> 0 C (i ), C ( j ) =
1 2
⎡ (2 y + 1) jπ ⎤ ⎡ (2 x + 1)iπ ⎤ cos ⎢ ⎥ ..(2.3) ⎥ 2N 2N ⎦ ⎣ ⎦
∑ pixel ( x, y) cos⎢⎣
jika i, j = 0.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
25 Tabel 2.5 Tabel penghitungan DCT 1 dimensi
Nilai i
PENGHITUNGAN x1
x2
x3
x4
x5
x6
x7
x8
DCT(i)
1
1
3
6
10
15
21
28
36
12.727
2
0.980
2.643
4.310
5.090
4.115
0.781
-5.038
-12.884
-6.442
3
0.923
1.689
0.541
-3.154
-7.773
-10.069
-7.391
-2.664 e-015
0
4
0.831
0.441
-2.501
-4.723
-1.945
3.939
5.304
-1.346
-0.673
5
0.707
-0.707
-2.828
-8.882 e-016
3.535
-0.707
-5.656
0
0
6
0.555
-1.406
-0.820
2.505
-1.652
-2.822
4.042
-0.401
-0.201
7
0.382
-1.465
1.306
-0.224
-2.137
3.405
-3.061 -5.3291 e-015
0
8
0.195
-0.916
1.578
-2.344
2.559
-2.429
1.459
-0.101
-0.051
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
26
Jika matriks berukuran MxN, maka persamaan di atas dapat dituliskan sebagai berikut: DCT(i, j) =
2 M
M −1 N −1 2 ⎡ (2x + 1)iπ ⎤ ⎡ (2 y + 1) jπ ⎤ C(i)C( j) ∑∑ pixel( x, y) cos⎢ ⎥ ...(2.4) ⎥ cos⎢ N ⎦ ⎣ 2M ⎦ ⎣ 2N x =0 y =0
dengan DCT(i , j)= nilai DCT pada indeks ke-(i,j) N= ukuran baris matriks M= ukuran kolom matriks pixel(x,y) = nilai pixel pada indeks ke-(x,y)
C (i ), C ( j ) = 1 jika i, j> 0 C (i ), C ( j ) =
1 2
jika i, j = 0.
Sedangkan persamaan untuk invers DCT (IDCT) adalah sebagai berikut: Pixel ( x, y ) =
2 N
N −1 N −1
⎡ (2 x + 1)iπ ⎤ ⎡ (2 y + 1) jπ ⎤ cos ⎢ ⎥ ⎥⎦ ....(2.5) 2N 2N ⎦ ⎣
∑∑ C (i)C ( j ) DCT (i, j ) cos ⎢⎣ i =0 j =0
dengan DCT(i , j)= nilai DCT pada indeks ke-(i,j) N = ukuran matriks pixel(x,y) = nilai pixel pada indeks ke-(x,y) C (i ), C ( j ) = 1 jika i, j> 0 C (i ), C ( j ) =
1 2
jika i, j = 0.
Jika matriks berukuran MxN, maka persamaan di atas dapat dituliskan sebagai berikut:
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
27
Pixel( x, y) =
2 2 M −1 N −1 ⎡ (2x + 1)iπ ⎤ ⎡ (2 y + 1) jπ ⎤ ....(2.6) C(i)C( j)DCT(i, j) cos⎢ cos ∑∑ M N i=0 j =0 ⎣ 2M ⎥⎦ ⎢⎣ 2N ⎥⎦
dengan DCT(i , j)= nilai DCT pada indeks ke-(i,j) N, M= ukuran matriks pixel(x,y) = nilai pixel pada indeks ke-(x,y)
C (i ), C ( j ) = 1 jika i, j> 0 C (i ), C ( j ) =
1 2
jika i, j = 0.
Invers DCT tersebut berfungsi untuk mengembalikan data citra seperti semula. Contoh penerapan DCT dan IDCT dalam citra greyscale: Terdapat sebuah citra greyscale dengan matriks 8x8 dengan nilai sebagai berikut:
⎡30 ⎢28 ⎢ ⎢33 ⎢ ⎢43 ⎢36 ⎢ ⎢21 ⎢45 ⎢ ⎣⎢46
19 10 4 15 37 31 42 27
8 11 24 40 37 39 ⎤ 5 9 23 41 37 35 ⎥⎥ 0 6 17 38 30 23 ⎥ ⎥ 1 2 7 25 29 26 ⎥ 21 12 2 20 34 30 ⎥ ⎥ 35 22 16 35 33 40⎥ 44 26 18 32 10 14 ⎥ ⎥ 28 39 22 30 13 3 ⎦⎥
=
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
28
Nilai DCT dari matriks di atas adalah : ⎡195 ⎢ 0 ⎢ ⎢ 15 ⎢ ⎢ 20 ⎢ 0 ⎢ ⎢ 0 ⎢ 0 ⎢ ⎣⎢ 0
0 0 9 0 10 10 0 13
39 19 0 7 10 2 0 1
33 23 5 0 3 5 0 0
0 7 6 0 5 1 2 0
9 0 0 0 6 0 2 0
15 0 5 0 0 6 0 0
0⎤ 5 ⎥⎥ 0⎥ ⎥ 0⎥ 0⎥ ⎥ 1⎥ 0⎥ ⎥ 0 ⎦⎥
=
Sedangkan nilai IDCT dan citra hasil rekonstruksi adalah sebagai berikut: ⎡30 ⎢28 ⎢ ⎢33 ⎢ ⎢43 ⎢36 ⎢ ⎢21 ⎢45 ⎢ ⎣⎢46
19 10 4 15 37 31 42 27
8 11 24 40 37 39 ⎤ 5 9 23 41 37 35 ⎥⎥ 0 6 17 38 30 23 ⎥ ⎥ 1 2 7 25 29 26 ⎥ 21 12 2 20 34 30 ⎥ ⎥ 35 22 16 35 33 40⎥ 44 26 18 32 10 14 ⎥ ⎥ 28 39 22 30 13 3 ⎦⎥
=
Di bawah ini akan diilustrasikan bagaimana DCT diterapkan dalam sebuah matriks 2 dimensi: Terdapat sebuah matriks 2 dimensi sebagai berikut: ⎡1 ⎢4 ⎢ ⎢⎣7
2 5 8
3⎤ 6⎥⎥ 9 ⎥⎦
Matriks ini akan dikenai operasi DCT 2 dimensi dengan persamaan 2.6, dengan: i = 1,2,3 ; j = 1,2,3 x = 0,1,2 ; y = 0,1,2
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
29
pixel(x,y) = 1,2,3...9 N = 3, M = 3 C(x) = 1,jika x>0, C(x) =
1 2
, jika x=0,
Pixel(x,y) = nilai pixel ke-(x,y), Maka hasil penghitungan yang terjadi akan terlihat seperti pada tabel 2.6. Dari tabel tersebut, dapat dilihat bahwa nilai hasil penghitungan, yaitu ⎡ 15 yang terdapat dalam kolom DCT(i,j) adalah ⎢⎢- 7.348 ⎢⎣ 0
- 2.449 0 ⎤ 0 0 ⎥⎥ . Terlihat 0 0⎥⎦
bahwa matriks hasil transformasi tersebut memuat banyak elemen 0 (nol). Hal ini tentunya tidak efisien dalam penyimpana data tersebut. Oleh karena itu, data ini nantinya akan dapat dimampatkan dengan menghilangkan elemen 0 (nol) yang ada.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
30
Tabel 2.6 Tabel penghitungan DCT 2 dimensi
Nilai (i,j)
PENGHITUNGAN (x0,y0) (x0,y1)
(x0,y2)
(x1,y0)
(x1,y1)
(x1,y2)
(x2,y0) (x2,y1)
(x2,y2)
DCT(i,j)
(1,1)
1
3
6
10
15
21
28
36
45
15
(1,2)
0.866
0.866
-1.732
1.732
1.732
-3.464
2.598
2.598
-5.196
-2.449
(1,3)
0.5
-1.5 4.4409e-016
2
-3
1.7764e-015
3.5
-4.5
3.5527e-015
0
(2,1)
0.866
2.598
5.196
5.196
5.196
5.196 -0.866 -7.794
-15.588
-7.348
(2,2)
0.75
0.75
-1.5
-1.5
-1.5
0
0
3.897 -1.3323e-015
0
(2,3)
0.433 -1.299 2.2204e-016 3.4451e-016 3.8348e-017
-1.5
-6.75
2.2204e-016 -3.031
-6.75
(3,1)
0.5
1.5
3
-1
-6
-12
-8.5
-4.5
1.7764e-015
0
(3,2)
0.433
0.433
-0.866
-4.33
-4.33
0.866
3.897
3.897
0
0
(3,3)
0.25
-0.75 3.3307e-016
-2
3 -8.8818e-016
1.75
-2.25
0
0
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
31
J. Kuantisasi dan Zig-zag Scanning
Kuantisasi ini digunakan untuk menentukan kualitas kompresi, yaitu dengan menghilangkan beberapa informasi dari nilai pixel yang telah ditransformasi. Informasi yang dihilangkan adalah informasi yang dianggap paling tidak penting, dalam hal ini adalah nilai pixel yang paling mendekati nol (0) setelah dilakukan transformasi, ataupun pembulatan nilai desimal dari nilai yang didapat. Kuantisasi ini sangat penting dalam proses pemampatan data, karena penentuan kuantisasi ini juga akan berpengaruh terhadap kualitas citra yang dimampatkan dan tentunya besarnya file yang telah dimampatkan. Ilustrasi dari kuantisasi ini adalah sebagai berikut: Sebuah matriks dengan delapan data yaitu [12,10,8,10,12,10,8,11], kemudian matriks tersebut dikenai operasi DCT 1 dimensi, sehingga hasil transformasi menjadi [28.6375, 0.571202, 0.46194, 1.757, 3.18198, -1.72956, 0.191342, 0.308709]. Setelah itu, matriks hasil transformasi tersebut akan dikuantisasi menjadi [28, 0, 0, 2, 3, -2, 0, 0]. Dan digunakan operasi IDCT 1 dimensi untuk mengembalikan data, didapat [11.236, 9.62443, 7.66286, 9.57302, 12.3471, 10.0146, 8.05304, 10.6842]. Terlihat dari hasil invers yang didapat mendekati data aslinya. Perbedaan antara data asli (12) dan data hasil rekonstruksi (11.236) adalah 0,764 (atau 6,4% dari 12) (David Salomon, 2001). Nilai kuantisasi dapat pula ditentukan dengan menyatakan suatu nilai sebagai batasan kuantisasi tersebut. Misalnya kuantisasi dinyatakan sebagai Q. Maka nilai yang berada dalam range nilai Q dan -Q tersebut dikuantisasi menjadi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
32
nol (0). Sebagai contoh dalam kasus di atas, nilai [28.6375, 0.571202, 0.46194, 1.757, 3.18198, -1.72956, 0.191342, -0.308709] akan dikuantisasi dengan Q=1, maka nilai yang berada di antara 1 dan -1 akan dikuantisasi menjadi nol (0). Sehingga hasil dari nilai tersebut akan menjadi [28.6375, 0, 0, 1.757, 3.18198, 1.72956, 0, 0]. Kuantisasi untuk matriks berukuran 2nx2n dapat dilakukan dengan cara mengubah matriks menjadi vektor secara zig-zag (zig-zag scanning).
Gambar 2.6 Urutan Zig-zag scan
Ilustrasi penerapan kuantisasi secara zig-zag adalah sebagai berikut: ⎡30 19 8 11⎤ ⎢28 10 5 9 ⎥ ⎥ , kemudian Terdapat matriks 4x4 dengan elemen ⎢ ⎢33 4 0 6 ⎥ ⎢ ⎥ ⎣43 15 1 2 ⎦ ⎡56.0000 39.2241 25.0000 3.2359 ⎤ ⎢ ⎥ matriks tersebut akan ditransformasi menjadi ⎢ 3.5042 - 11.2604 - 6.6585 - 3.3713 ⎥ . ⎢ 8.5000 6.7378 - 3.5000 - 3.3321⎥ ⎢ ⎥ ⎣ - 1.9927 - 0.8713 2.2168 0.7604⎦
Jika matriks hasil transformasi ini dikenai fungsi zig-zag scan, maka akan menjadi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
33
vector dengan urutan [56.0000 39.2241 3.2359 2.2168
-6.6585
6.7378
-1.9927
3.5042 -0.8713
8.5000 -11.2604 25.0000 -3.5000
-3.3713
-3.3321
0.7604]. Dari hasil zig-zag scan tersebut kuantisasi dapat dilakukan,
yaitu dengan cara mengambil beberapa nilai dari belakang, tergantung prosentase yang diinginkan. Misalkan prosentase yang diinginkan untuk kuantisasi adalah 25%, maka diambil 4 nilai paling belakang, kemudian nilai tersebut dikuantisasi menjadi nol (0). Maka hasilnya adalah [56.0000 39.2241 11.2604 25.0000 0
3.2359 -6.6585
3.5042
8.5000 -
6.7378 -1.9927 -0.8713 -3.5000 0 0
0]. Kuantisasi dapat dilakukan dengan berbagai cara, tergantung yang
diinginkan. Dapat dengan pembulatan seperti contoh yang terjadi pada DCT 1 dimensi di atas, dapat pula dengan mengambil beberapa pixel paling belakang berdasarkan berapa persen pixel akan diambil setelah dilakukan zig-zag scan, tergantung dari prosentase yang diinginkan.
K. Kompresi dengan DCT
Penerapan DCT dalam kompresi data diharapkan dapat secara efisien mengurangi besar file data tersebut tanpa mengurangi kualitas dari data yang dimampatkan. Besarnya kompresi sangat tergantung dari kuantisasi. Jika menginginkan kompresi yang besar (ukuran file semakin kecil) maka kuantisasi yang dilakukan juga harus besar. Namun hal ini tentunya akan mengorbankan kualitas data hasil kompresi tersebut, jika nantinya data ini dikembalikan ke
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
34
bentuk aslinya. Dalam kasus kompresi citra, maka kualitas citra yang didapat akan semakin buruk. Sebagai contoh, matriks hasil transformasi yang terdapat dalam tabel 2.6 ⎡ 15 yaitu ⎢⎢- 7.348 ⎢⎣ 0
- 2.449 0 ⎤ 0 0 ⎥⎥ . Kemudian matriks tersebut akan dikuantisasi 0 0⎥⎦
⎡ 15 dengan nilai Q=3, maka hasilnya adalah ⎢⎢- 7.348 ⎢⎣ 0
0 0 0
0⎤ 0 ⎥⎥ . 0⎥⎦
Dapat dilihat bahwa matriks tersebut memuat banyak elemen dengan nilai 0, atau biasa disebut matriks jarang (sparse matrix). Hal ini tentunya tidak efisien. Oleh karena itu, penyimpanan matriks hasil transformasi menggunakan suatu cara agar lebih efisien yaitu dengan menghilangkan elemen matriks yang mempunyai nilai 0. Maka matriks tersebut hanya akan disimpan nomor indeks matriks yang bukan nol dan data yang ada dalam indeks tersebut, yaitu (1,1) 15 dan (2,1) 7.348. Bilangan yang ada didalam tanda “( )” menunjukkan indeks matriks yaitu baris dan kolom, sedangkan bilangan dibelakangnya adalah nilai matriks yang ada pada nomor indeks tersebut. Dalam proses penyimpanan, nilai nol (0) dapat diabaikan (tidak disimpan), maka dalam kasus tersebut besar data sebelum dilakukan kuantisasi adalah 3x8bit=24bit, sedangkan setelah dilakukan kuantisasi besar data menjadi 2x8bit=16bit. Dalam kasus yang lebih besar, pengurangan data seperti ini tentunya akan lebih signifikan dan dalam penyimpanan data tentunya akan lebih efisien.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
35
Tetapi jika menggunakan cara yang kedua yaitu dengan metode zig-zag scanning, maka nilai matriks akan menjadi [15 -2.449 -7.348 0 0 0 0 0 0], dan posentase kuantisasi misalnya adalah 80%, maka sebanyak 80% data akan dikuantisasi menjadi nol (0) (data diambil dari belakang). Sehingga setelah proses kuantisasi, data akan menjadi [15 -2.449 0 0 0 0 0 0 0]. Dan jika data tersebut dikembalikan dengan urutan matriks seperti semula (dezig-zag scan) maka akan ⎡ 15 menjadi ⎢⎢ 0 ⎢⎣ 0
- 2.449 0 0
0⎤ 0⎥⎥ 0⎥⎦
Dari sini terlihat bahwa kedua cara yang digunakan menghasilkan nilai yang sama. Dalam kasus yang berbeda, hasil yang didapat belum tentu sama seperti kasus di atas.
L. Matriks Jarang
Matriks jarang adalah matriks yang banyak memiliki banyak elemen nol. Matriks jarang menyimpan sebuah informasi yang terstruktur secara efisien, terutama saat direpresentasikan terhadap sebuah format yang dimampatkan. Pemampatan matriks jarang dapat dilakukan dengan menyimpan elemen tidak nol. Penyimpanan dan manipulasi matriks jarang akan menjadi efisien jika menggunakan algoritma dan struktur data tertentu, yang dapat menyimpan hasil pemampatan matriks jarang tersebut secara efisien pula. Keuntungan yang didapat dengan menggunakan pemampatan ini diantaranya adalah dapat mengurangi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
36
tempat penyimpanan (storage) sebuah data. Sebagai contoh, matriks hasil transformasi DCT di atas adalah: ⎡ 15 ⎢- 7.348 ⎢ ⎢⎣ 0
- 2.449 0 ⎤ 0 0 ⎥⎥ 0 0⎥⎦
Matriks di atas dapat dikatakan sebuah matriks jarang, karena elemen matriks tersebut banyak terdiri dari nol. Sehingga jika matriks tersebut akan disimpan dalam sebuah file, maka membutuhkan tempat untuk menyimpan file tersebut sebesar 3x8 bit = 24 bit, dengan asumsi ukuran file tiap elemen matriks adalah 8 bit. Jika matriks di atas dimampatkan menggunakan konsep matriks jarang, yang dalam hal ini adalah menghilangkan elemen nol, maka akan menjadi sebagai berikut:
Index matriks
Nilai Matriks
(1,1)
15
(1,2)
-2.449
(2.1)
-7.348
Index matriks menandakan nomor baris dan nomor kolom dari matriks, sedangkan nilai matriks menandakan nilai dari baris dan kolom yang ditunjuk pada indeks matriks. Sebagai contoh pada index matriks (1,1) dan nilai matriks 15. Hal ini menunjukkan data dengan nilai 15 terletak pada matriks baris 1 dan kolom 1. Nilai yang di depan pada indeks matriks menunjukkan nomor baris
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
37
sedangkan nilai yang di belakang pada indeks matriks menunjukkan nomor kolom.
M. Pengukuran Error dan Rasio Pemampatan dalam Kompresi Citra
Dalam pemampatan citra terdapat suatu standar pengukuran error yaitu sebagai berikut: -
Mean Square Error (MSE), yaitu sigma dari jumlah error antara citra hasil pemampatan dengan citra asli. MSE =
1 MN
dimana:
M
N
y =1
x =1
∑ ∑ [I ( x, y) − I ' ( x, y)]
2
............................................(2.7)
I(x,y) adalah nilai pixel dari citra asli. I’(x,y) adalah nilai pixel dari citra hasil pemampatan M, N adalah resolusi citra.
-
Peak Signal to Noise Ratio (PSNR), yaitu untuk menghitung error maksimal.
PSNR = 10 log 10(
255 2 ) ..................................................................(2.8) MSE
Nilai MSE yang rendah akan lebih baik, sedangkan nilai PSNR yang tinggi juga akan lebih baik. Sedangkan yang dimaksud dengan rasio pemampatan dalam sebuah pemampatan citra adalah perbandingan antara besar file citra hasil pemampatan dengan besar file citra asli. Hal ini dilakukan untuk melihat seberapa efektif pemampatan yang dilakukan. Semakin besar prosentase nilai rasio, maka citra
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
38
hasil pemampatan akan semakin terlihat menyerupai citra asli. Demikian pula sebaliknya, semakin kecil prosentase nilai rasio, maka citra hasil pemampatan akan semakin buruk. Penghitungan rasio pemampatan dapat dicari dengan persamaan berikut: RasioKompresi =
HasilKompresi .........................................................(2.9) DataMasukan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB III ANALISIS DAN PERANCANGAN PROGRAM
A. Perancangan Secara Umum Pada bagian perancangan akan dibahas algoritma program secara umum, yaitu tentang hubungan antara modul-modul yang merupakan modul terpenting dan terpokok dalam program yang akan dibuat. Modul perancangan program terbentuk dalam tampilan yang terdiri dari beberapa fungsi dalam bentuk berkas yang berekstensi .m. a. Kebutuhan perangkat lunak (software) Perangkat lunak yang digunakan adalah MATLAB versi 7.0 dari Mathworks, dan system operasi Windows XP. b. Kebutuhan perangkat keras (hardware) Perangkat keras yang digunakan adalah sebuah komputer dengan spesifikasi minimal sebagai berikut: - Prosesor
: Pentium III 800 MHz
- Media tampilan
: VGA card 64 MB
- Memori
: 256 MB
- Media masukan
: Keyboard dan Mouse
39
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
40
- Media penyimpanan : Harddisk 20 GB B. Perancangan Secara Rinci Dalam pembahasan perancangan secara rinci ini akan dibahas beberapa hal yang terkait, diantaranya: 1.
Perancangan proses a. Diagram konteks (DAD level 0)
Citra Transform Citra Rekonstruksi Blok Matriks Citra Asli Blok Martriks Citra Transform Blok Matriks Citra Rekonstruksi Blok Matriks Citra Transform Terkuantisasi MSE Total PSNR Total
MSE Blok PSNR Blok
0
User Pemampatan Citra
Citra Asli Blok Matriks Prosentase Blok Baris Blok Kolom Nilai Kuantisasi
Gambar 3.1 Rancangan DAD level 0
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
41
Pada intinya, input atau masukan dari sistem ini adalah sebuah berkas citra greyscale yang bertipe *.BMP, dan output-nya berupa sebuah citra yang direkonstruksi setelah mengalami proses transformasi dan dimampatkan dengan kuantisasi. Selanjutnya ada beberapa masukan juga dari user yang digunakan oleh sistem untuk melihat dan membandingkan citra asli dan citra yang telah direkonstruksi. Perbandingan tersebut dapat dilihat baik dari citranya secara langsung, dari nilai-nilai matriksnya, maupun dari nilai error yang didapat. b. DAD level 1
Gambar 3.2 Rancangan DAD level 1
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
42
Beberapa proses yang terlihat dalam DAD level 1 ini adalah rincian dari proses pada level sebelumnya. Ada 5 (lima) proses didalamnya. (i) Proses “DCT blok” Proses ini terjadi jika user memilih metode kuantisasi blok transform. Masukan dari proses ini adalah sebuah citra greyscale yang telah dipilih user, kemudian user memilih metode kuantisasi blok matriks dan menentukan
besarnya
blok
yang
akan
digunakan
untuk
proses
transformasi. (ii) Proses “DCT Langsung” Proses ini terjadi jika user memilih metode kuantisasi secara langsung. Masukan dari proses ini adalah sebuah citra greyscale yang telah dipilih user, kemudian user memilih metode kuantisasi “langsung” dan menentukan besarnya prosentase yang nantinya akan digunakan sebagai prosentase nilai kuantisasi. (iii) Proses “IDCT” Proses IDCT digunakan untuk meng-invers nilai matriks citra setelah dilakukan
transformasi.
Masukannya
berupa
matriks
citra
hasil
transformasi, ataupun matriks citra transformasi yang telah mengalami proses kuantisasi juga. Output dari proses ini adalah sebuah citra yang telah direkonstruksi, dan nilai matriks citra yang telah direkonstruksi pula.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
43
(iv) Proses “Lihat blok” Proses ini berfungsi untuk melihat blok nilai matriks dengan ukuran 8x8. Baik dari citra asli, citra hasil transfomasi, maupun citra hasil rekonstruksi. Input dari proses ini berupa citra asli, citra hasil transformasi, dan citra hasil rekonstruksi. Disini user juga diminta memasukkan sebuah nilai integer untuk melihat baris dan kolom ke berapa blok yang akan dilihat. (v) Proses “Kuantisasi” Proses kuantisasi ini dapat diakses jika user memilih metode kuantisasi blok matriks. Masukannya berupa citra hasil transformasi dan sebuah nilai integer sebagai nilai kuantisasi. Output dari proses ini adalah sebuah matriks citra hasil transformasi yang telah terkuantisasi nilainya. (vi) Proses “Hitung Error Total” Proses ini akan terjadi jika user memilih “Hitung Error Total” pada radiobutton hitung error. Dalam proses ini ada 2 hal yang dilakukan yaitu menghitung nilai MSE dan menghitung nilai PSNR. Nilai-nilai yang dihitung adalah nilai-nilai matriks dari keseluruhan citra. (vii) Proses “Hitung Error Blok” Proses ini dilakukan jika user memilih “Hitung Error Perblok” pada pilihan radiobutton hitung error. Proses ini mengerjakan 2 hal yaitu
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
44
menghitung nilai MSE dan nilai PSNR. Nilai-nilai yang dihitung adalah nilai-nilai dari blok matriks yang sedang ditampilkan dalam grid matriks. c. DAD level 2
Citra Asli 6.1
6.2 Nilai PSNR Total
Niali MSE Total Citra Rekonstruksi
Hitung MSE Total
Hitung PSNR Total
Nilai MSE Total
Blok Citra Asli 7.1
7.2 Nilai PSNR Blok
Niali MSE Blok Blok Citra Rekonstruksi
Hitung MSE Blok
Hitung PSNR Blok
Nilai MSE Blok
Gambar 3.3 Rancangan DAD level 2
Dalam DAD level 2 ini ada 2 macam proses, yang pertama adalah proses untuk menghitung nilai MSE. Input yang dibutuhkan adalah citra asli dan citra rekonstruksi, yang berfungsi untuk membandingkan antara data asli dengan data hasil rekonstruksi, untuk kemudian dihitung error-nya. Output dari hitung nilai MSE tersebut nantinya digunakan untuk menghitung nilai PSNR. Dua proses tersebut nantinya akan menghasilkan masing-masing 2 output juga, yaitu nilai MSE dan nilai PSNR. Perbedaannya adalah proses
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
45
pertama untuk menghitung secara total, sedangkan proses yang kedua digunakan untuk menghitung nilai MSE dan nilai PSNR secara perblok. d. Perancangan struktur menu Menu yang dimaksud adalah menu navigasi dalam program ini. Menu ini berfungsi untuk memudahkan pengguna (user) untuk menjalankan program. Ada beberapa menu yang dapat diakses oleh user untuk dapat mengoperasikan program ini. Menu-menu yang digunakan diantaranya seperti di bawah ini:
Gambar 3.4 Rancangan menu utama
Di dalam menu utama terdapat tiga buah submenu, yaitu: •
Menu “Buka File Citra” Berfungsi untuk membuka file citra bertipe *.BMP.
•
Menu “Home” Berfungsi untuk kembali ke tampilan awal.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
46
•
Menu “Keluar” Berfungsi untuk keluar dari program.
Edit
Reset
Transformasi
Rekonstruksi
Lihat Blok
Gambar 3.5 Rancangan menu edit
Dalam menu edit terdapat empat buah submenu yaitu menu yaitu: •
Menu “Reset” Berfungsi untuk me-reset (mengosongkan) kotak yang digunakan untuk menampilkan citra, penghitungan error, nama file dan resolusi, dan mengembalikan fungsi-fungsi tombol yang lain seperti pada saa pertama program dijalankan.
•
Menu “Transformasi” Berfungsi untuk melakukan transformasi terhadap citra yang telah dibuka.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
47
•
Menu “Rekonstruksi” Berfungsi
untuk
melakukan
rekonstruksi
terhadap
hasil
transformasi. •
Menu “Lihat Blok” Berfungsi untuk melihat nilai matriks blok 8x8 pixel dari matriks citra asli, matriks citra transformasi, maupun matriks citra rekonstruksi, dengan sebelumnya memasukkan sebuah nilai yang menandakan blok mana yang akan dilihat, untuk kemudian ditampilkan dalam grid yang telah disediakan.
Gambar 3.6 Rancangan menu help
Dalam menu “Help” ini, terdapat dua submenu, yaitu: •
Menu “Help” Berfungsi untuk melihat bantuan tentang cara pemakaian program.
•
Menu “About” Berfungsi untuk melihat informasi tentang program.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
48
e.
Perancangan antarmuka (interface) Antarmuka yang dimaksud adalah rancangan tampilan pada layar monitor
untuk memvisualisasikan dan menampilkan informasi yang diperlukan agar pengguna dapat memahami bagaimana menjalankan program. Ada beberapa rancangan tampilan antarmuka. Sebagai contoh terlihat pada gambar 3.6 di bawah ini adalah rancangan tampilan awal saat program dijalankan. Pada tampilan awal program ini, terdapat dua tombol yang dapat diakses yaitu tombol “Lanjutkan” yang berfungsi untuk masuk ke program utama, dan tombol “Keluar” untuk keluar dari program.
LOGO USD
KOMPRESI CITRA DENGAN METODE DISCRETE COSINE TRANSFORM
PROGRAM STUDI ILMU KOMPUTER JURUSAN MATEMATIKA FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS SANATA DHARMA 2008
Lanjutkan
Keluar
Gambar 3.7 Rancangan tampilan awal program
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
49
(i) Tampilan program utama Tampilan program utama menampilkan semua isi fungsi navigasi ke semua tampilan yang lain dalam keseluruhan program. Dalam tampilan ini pula, terdapat tombol yang dapat dieksekusi, yaitu tombol “Buka File Citra” untuk membuka file citra. KOMPRESI CITRA DENGAN METODE DISCRETE COSINE TRANSFORM Metode Kuantisasi
MSE : CITRA TRANSFORMASI
Blok Matriks Blok
CITRA ASLI
PSNR : CITRA REKONSTRUKSI Perblok
Langsung
Total
Lihat Blok
Prosentase
Baris :
Hitung Error
Kolom : Tampilkan
Nama File:
Resolusi:
Matriks Blok Citra Asli
Matriks Blok Citra Transform
Matriks Blok Citra Rekonstruksi
Reset
Home Kuantisasi Buka File Citra
Transformasi
Rekonstruksi
Keluar
Gambar 3.8 Rancangan tampilan program utama
(ii) Tampilan Citra Asli Pada tampilan ini, citra asli sebelum dilakukan pemampatan akan tampil dalam kolom “Citra Asli” setelah pengguna (user) membuka file citra. Terdapat beberapa informasi yang dapat dilihat yaitu nama file cita dan resolusi citra.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
50
(iii) Tampilan buka berkas citra Jika pengguna (user) menekan tombol “Buka File” maka akan keluar tampilan buka berkas citra. Pada tampilan buka berkas citra ini, terdapat dua
buah
tombol
navigasi.
Pada
tombol
“Open”
akan
membuka/menampilan berkas citra yang akan dimampatkan pada kotak yang terdapat pada tampilan citra asli. Sedangkan tombol “Cancel” akan membatalkan pencarian berkas citra, dan akan kembali pada tampilan sebelumnya. Citra yang dapat dibuka\ditampilkan adalah citra dengan tipe file *.BMP, karena dalam hal ini, pembatasan masalah hanya pada citra bertipe file *.BMP. Dalam tampilan ini pula, terdapat radiobutton yang dapat dieksekusi (menjadi aktif ketika user sudah melakukan buka file citra), yaitu “Blok Matriks” untuk mengaktifkan popup menu pemilihan blok yang akan digunakan untuk trasformasi, dan “Langsung” yang akan mengaktifkan popup menu pemilihan prosentase untuk kuantisasi pemampatan yang diinginkan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
51
BUKA FILE CITRA Look in :
File Name :
Open
Files of Type :
Cancel
Gambar 3.9 Rancangan tampilan buka berkas citra
(iv) Pemilihan metode kuantisasi Pada tahap ini, user akan diminta memilih metode kuantisasi yang akan digunakan, sebelum dapat melakukan transformasi. Ada dua metode yang dapat dipilih yaitu dengan blok matriks atau secara langsung. Jika user memilih “Langsung” maka kotak untuk memasukkan nilai kuantisasi (di sebelah tombol transformasi) akan menghilang, karena kuantisasi akan dilakukan dengan prosentase yang dipilih user.
(v) Tampilan citra transformasi Setelah membuka citra dan memilih metode kuantisasi, maka tombol transformasi akan aktif. Jika user mengakses tombol tersebut, maka citra akan ditransformasi berdasarkan metode yang telah dipilih.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
52
(vi) Tampilan citra rekonstruksi Tampilan citra rekonstruksi akan menampilkan citra hasil rekonstruksi dari matriks hasil transformasi. Citra ini berguna untuk membandingkan kualitas dari citra asli dengan citra yang telah dikenai fungsi transformasi DCT dan kemudian direkonstruksi.
(vii)
Fungsi-fungsi lain
Selain fungsi utama program seperti yang tersebut di atas, dalam program ini juga terdapat beberapa tombol yang terdapat disebelah kanan tampilan program diantaranya adalah: •
Tombol “Help” Tombol ini berfungsi untuk menampilkan jendela help yang berisi tentang petunjuk pemakaian program. Menu ini berguna untuk pengguna yang belum mengerti bagaimana cara menjalankan program ini. Gambar 3.6 di bawah ini adalah rancangan tampilan help. KOMPRESI CITRA DENGAN METODE DISCRETE COSINE TRANSFORM
HELP
Gambar 3.10 Rancangan tampilan help
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
53
•
Tombol “About” Tombol ini berfungsi untuk melihat informasi program.
•
Popup menu blok matriks. Popup menu ini berfungsi untuk memilih blok matriks yang nantinya akan digunakan untuk transformasi.
•
Popup menu prosentase. Popup menu ini berfungsi untuk menentukan prosentase kualitas pemampatan yang akan dilakukan. Kualitas pemampatan ditentukan dalam bentuk persen (%). Metode Kuantisasi Blok Matriks Blok Langsung Prosentase
Gambar 3.11 Rancangan tampilan pemilihan metode kuantisasi
•
Edit text lihat blok. Edit text ini digunakan untuk melihat nilai matriks dengan blok 8x8 pixel, yang nantinya nilai-nilai tersebut akan tampil pada grid yang telah tersedia. Lihat Blok Baris : Kolom : Tampilkan
Gambar 3.12 Rancangan tampilan “Lihat Blok”
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
54
•
Edit text kuantisasi Jika user memilih metode kuantisasi berdasarkan blok matriks, maka user dapat pula memasukkan besarnya nilai kuantisasi dalam edit text ini.
•
Hitung error Penghitungan error dalam program ini dibagi menjadi dua yaitu “per blok” dan “total”. Penghitungan error per blok akan menghitung error dalam blok yang ditampilkan pada grid. Sedangkan penghitungan error total akan menghitung error pada keseluruhan matriks.
Gambar 3.13 Rancangan tampilan “Hitung Error”
•
Tombol “Keluar” Tombol ini berfungsi untuk keluar dari program.
•
Tombol “Home” Tombol ini berfungsi untuk kembali ke tampilan awal program.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
55
C. Algoritma Algoritma untuk proses transformasi dan rekonstruksi file citra adalah sebagai berikut: •
Program akan meminta masukan berupa sebuah citra greyscale dengan resolusi 2nx2n.
•
Selanjutnya user diminta untuk memilih metode kuantisasi. Ada 2 (dua) metode yang dapat dipilih yaitu “Blok Transform” dan “Langsung”. -
Jika user memilih metode “Blok Transform” maka akan diminta masukan berupa blok-blok yang telah tersedia.
-
Jika user memilih metode “Langsung” maka user akan diminta nilai prosentase yang nantinya akan digunakan untuk proses kuantisasi.
•
Program akan melakukan transformasi berdasarkan metode yang telah dipilih.
•
Matriks transformasi selanjutnya akan dikuantisasi. Proses kuantisasi juga terbagi dalam 2 (dua) metode berdasarkan metode yang telah dipilih sebelumnya. -
Jika user memilih metode “Blok Transform” maka kuantisasi akan dilakukan berdasarkan range nilai yang dimaksukkan oleh user.
-
Jika user memilih metode “Langsung” maka kuantisasi akan dilakukan berdasarkan prosentase yang telah dipilih, dengan sebelumnya dilakukan zigzag scanning dan setelah nilai
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
56
terkuantisasi akan dilakukan proses dezig-zag scanning untuk mengembalikan ke bentuk matriks. •
Kemudian program akan melakukan proses rekonstruksi.
Algoritma di atas jika dibuat dalam sebuah flow chart akan menjadi seperti gambar 3.17 dan gambar 3.18 di bawah ini. Start
Baca Citra
Baca Ukuran Citra
Bagi matriks dalam blok
Blok matriks
Pilih Metode
Langsung
Prosedur Hitung Transformasi
Prosedur Hitung Transformasi
Hitung Nilai DCT
Hitung Nilai DCT
Matriks transformasi
Matriks transformasi
Pembagian dengan matriks kuantisasi
Zig-zag scanning
Kuantisasi dengan prosentase
Kuantisasi nilai
Matriks hasil kuantisasi
Dezig-zag scanning
A
Gambar 3.14 Flow chart transformasi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
57
Gambar 3.15 Prosedur hitung sigma DCT
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
58
A
Kalikan dengan matriks kuantisasi
Blok matriks
Lihat metode
Langsung Bagi matriks dalam blok
Prosedur Hitung Sigma Invers
Hitung Nilai Invers
Citra Hasil
Selesai
Gambar 3.16 Flow chart invers
Gambar 3.17 Prosedur hitung sigma Invers
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
59
Pertama kali, pengguna (user) akan diminta masukan berupa berkas citra *.BMP. Kemudian user diminta untuk memilih metode kuantisasi yang akan dilakukan. Jika user memilih “Blok Matriks”, maka user akan diminta untuk menentukan blok nxn yang akan dipakai untuk mentransformasi citra masukan. Tetapi jika user memilih metode “Langsung” maka citra akan secara utuh ditransformasi tanpa membagi-bagi kedalam blok. Pada metode blok matriks, program akan membagi matriks citra ke dalam blok-blok yang telah dipilih oleh user untuk selanjutnya dilakukan transformasi berdasarkan blok-blok tersebut. Setelah matriks citra ditransformasi, maka dapat langsung direkonstruksi. Proses rekontruksi juga dilakukan per blok, mengacu pada blok saat dilakukan transformasi. Proses kuantisasi kemudian dilakukan dengan memasukkan nilai yang akan menjadi range untuk proses kuantisasi. Pada metode transformasi secara langsung, setelah matriks citra ditransformasi, maka program akan melakukan zig-zag scanning data matriks untuk selanjutnya dilakukan kuantisasi berdasarkan kualitas yang telah ditentukan oleh user. Matriks yang telah dikuantisasi kemudian dimekarkan kembali dengan dezig-zag scanning lalu dikenai fungsi invers agar data matriks dapat kembali seperti semula, atau mirip seperti data aslinya.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB IV
IMPLEMENTASI DAN PEMBAHASAN PROGRAM
A. Implementasi Program Program ini dibuat dengan menggunakan mfile dan beberapa tampilan menggunakan handle grafik yang merupakan program visual dari MATLAB versi 7.0. Handle grafik merupakan salah satu elemen dari MATLAB untuk menampilkan data dan pembuatan GUI (Graphics User Interface). Tampilan yang menggunakan handle grafik adalah tampilan “Help” dan “About”, sedangkan tampilan lainnya menggunakan mfile. Tampilan awal dari program ini adalah sebagai berikut:
Gambar 4.1 Tampilan awal program
60
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
61
Dalam tampilan awal program ini, terdapat dua tombol yaitu “Lanjutkan” yang berfungsi untuk masuk ke tampilan program utama, dan “Keluar” yang berfungsi untuk keluar dari program. Sedangkan tampilan program utama adalah sebagai berikut:
Gambar 4.2 Tampilan program utama
Dalam tampilan tersebut terdapat 3 kotak untuk menampilkan citra asli (kotak sebelah kiri), citra hasil transformasi (kotak tengah), dan citra hasil rekonstruksi atau nilai invers dari nilai DCT (kotak sebelah kanan). Dalam tampilan tersebut terdapat pula beberapa operasi yang dapat diakses yaitu: 1. Tombol “Buka File Citra” Tombol ini berfungsi untuk membuka file citra yang akan dimampatkan. File citra yang dapat dibuka adalah file citra bertipe *.BMP.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
62
Gambar 4.3 Tombol “Buka File Citra”
Untuk membuka file citra ini juga dapat dilakukan dengan cara lain, yaitu melalui menu bar. Dalam menu bar tersebut, pilih “File Æ Buka File Citra”. Setelah membuka file citra, maka program akan mengaktifkan radiobutton untuk memilih metode kuantisasi.
Gambar 4.4 Menu bar “Buka File Citra”
2. Pilihan metode kuantisasi Dalam proses ini, user diminta untuk memilih metode kuantisasi yang akan digunakan. User hanya diperkenankan memilih salah satu saja, oleh karena itu, jika user telah memilih, maka pilihan yang lainnya akan di-nonaktif-kan.
radiobutton popup menu
Gambar 4.5 Radiobutton dan popup menu pemilihan metode kuantisasi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
63
Ada dua opsi yang dapat dipilih oleh user, yaitu “Blok Matriks” yang akan mentransformasikan citra berdasarkan blok yang dipilih, dan “Langsung” yang akan mentransformasikan citra secara langsung, tanpa dibagi dalam blok-blok tertentu. Dalam masing-masing pilihan tersebut tersedia popup menu yang digunakan oleh masing-masing metode. Dalam metode “Blok Matriks” opsi yang dapat dipilih adalah menentukan pembagian blok nxn pixel yang digunakan untuk mentransformasikan citra. Sedangkan dalam metode “Langsung” adalah menentukan prosentase yang nantinya akan digunakan untuk proses kuantisasi.
3. Tombol “Transformasi” Tombol ini berfungsi untuk mentransformasikan citra yang telah dibuka. Tombol ini akan aktif setelah user memilih metode transformasi yang akan dipakai. Hasil dari transformasi ini akan ditampilkan di kotak tengah.
Gambar 4.6 Tombol “Transformasi”
Selain dengan menekan tombol “Transformasi”, cara lain yang dapat digunakan untuk mentransformasikan citra yang telah dibuka adalah melalui menu bar, yaitu dengan memilih “Edit Æ Transformasi”.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
64
Gambar 4.7 Menu bar “Transformasi”
Setelah tombol ini ditekan, maka citra hasil trnasformasi akan tampil di kotak tengah. Hal ini juga akan mengaktifkan tombol untuk rekonstruksi.
4. Tombol “Rekonstruksi” Tombol ini berfungsi untuk merekontruksi citra yang telah ditransformasi.
Gambar 4.8 Tombol “Rekonstruksi”
Selain dengan menekan tombol rekonstruksi, ada cara yang lain pula untuk keluar dari aplikasi, yaitu melalui menu bar, pilih “Edit Æ Rekonstruksi”.
Gambar 4.9 Menu bar “Rekonstruksi”
5. Tombol “Tampil” dan Edit text “Lihat Blok” Setelah mengoperasikan fungsi rekonstruksi, maka akan mengaktifkan tombol “Tampil” yang berfungsi untuk melihat blok citra asli, citra hasil
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
65
transformasi, ataupun citra hasil rekonstruksi per 8x8 blok, dengan cara memasukkan suatu nilai pada edit text yang tersedia. Nilai maksimal yang dapat dimasukkan oleh user akan tampil di atas edit text tersebut.
Gambar 4.10 Tombol “Tampilkan” dan Edit text lihat blok
6. Grid nilai pixel Nilai pixel blok 8x8 akan ditampilkan pada grid yang telah tersedia. Nilai pixel tersebut akan tampil setelah user menekan tombol tampilkan, dan blok yang akan tampil berdasarkan nilai masukan dari user. Sebagai contoh misalnya user memasukkan nilai 5 pada “Baris” dan 6 pada “Kolom”, maka citra akan dibagi menjadi blok-blok 8x8 pixel, dan penghitungan baris dan kolom berdasarkan dari blok-blok tersebut.
nilai pixel asli
nilai pixel transformasi
nilai pixel rekonstruksi
Gambar 4.11 Grid citra asli, transformasi, dan rekonstruksi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
66
7. Input “Kuantisasi” User dapat memasukkan nilai kuantisasi jika metode yang dipilih adalah “Blok Matriks”. Hal ini disebabkan karena jika user memilih metode “Langsung” maka kuantisasi akan ditentukan berdasarkan prosentase yang telah dipilih. Masukan kuantisasi berupa sebuah nilai yang digunakan untuk mengkuantisasi nilai dari pixel hasil transformasi (membuat nol nilai yang berada di range masukan user). Nilai yang dimasukkan nantinya akan dijadikan batas atas dan batas bawah. Contohnya adalah sebagai berikut:
Nilai pixel sebelum kuantisasi
-6 -5 -4 -3 -2 -1
0
1
2
3
4
5
6
2
3
4
5
6
0
0
4
5
6
Nilai kuantisasi (Q) = 3
-6 -5 -4 -3 -2 -1
0
1
Hasil kuantisasi
-6
-5 -4
0
0
0 0
0
Gambar 4.12 Contoh penerapan kuantisasi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
67
Dalam implementasinya akan menjadi seperti gambar di bawah ini: Nilai pixel sebelum kuantisasi
Nilai kuantisasi (Q) = 10
Hasil kuantisasi
Gambar 4.13 Implementasi penerapan input nilai kuantisasi
Dari gambar tersebut terlihat bahwa nilai yang berada di atas -10 dan di bawah 10 ( − 10 ≤ x ≤ 10 ) akan dikuantisasi menjadi nol. Dalam kasus tersebut antara nilai asli dan nilai rekonstruksi terlihat banyak berbeda dan banyak pula yang mempunyai selisih yang besar. Hal ini disebabkan karena contoh yang diambil adalah sebuah citra dengan resolusi 8x8 pixel sehingga range antara nilai terbesar dengan nilai terkecil tidak terlalu lebar. Dalam kasus yang lain, setiap citra memiliki range yang berbeda sehingga hasil yang didapat berbeda pula.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
68
8. Prosentase kuantisasi Prosentase kuantisasi ini dapat dipilih jika sebelumnya user
memilih
metode kuantisasi “Langsung”. Nilai-nilai yang tertera pada popup menu merupakan prosentase dari nilai yang akan digunakan untuk kuantisasi. Sebelum kuantisasi dilakukan, program sebelumnya akan melakukan zigzag scanning untuk membuat matriks hasil transformasi menjadi sebuah vector. Kemudian nilai vector tersebut akan dikuantisasi (di-nol-kan) sebanyak n% (n persen), tergantung masukan dari user. Setelah itu dilakukan dezig-zag scanning untuk mengembalikan vector tersebut menjadi matriks dengan ukuran seperti semula, untuk mendapatkan nilai yang diinginkan. Implementasi dalam program adalah sebagai berikut: Nilai pixel sebelum kuantisasi
Prosentase kuantisasi = 50
Hasil kuantisasi
Gambar 4.14 Implementasi penerapan prosentase kuantisasi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
69
Dalam gambar di atas diambil sebuah citra dengan resolusi 8x8 pixel. Terlihat bahwa kuantisasi sebanyak 50% akan menghasilkan nilai 0 (nol) sebanyak separuh dari ukuran citra. Nilai-nilai yang dihasilkan setelah citra tersebut direkonstruksi terlihat mempunyai selisih yang berbeda-beda. Hal ini juga berlaku terhadap citra yang berbeda dengan prosentase yang berbeda pula. Semakin kecil prosentase, maka akan semakin sedikit selisih nilai antara citra asli dengan citra hasil rekonstruksi.
9. Tombol “Reset” Tombol ini berfungsi untuk melakukan reset (mengosongkan) kotak yang digunakan untuk menampilkan citra, baik citra asli, citra hasil transformasi, maupun citra hasil rekonstruksi. Selain itu, tombol ini juga berfungsi untuk mengeset tombol-tombol dan beberapa menu kembali seperti awal saat program ini pertama kali dijalankan.
Gambar 4.15 Tombol “Reset”
Selain dengan menekan tombol reset, ada cara yang lain pula untuk melakukan reset, yaitu melalui menu bar, pilih “Edit Æ Reset”.
Gambar 4.16 Menu bar “Reset”
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
70
10. Menu bar “Help” dan “About” Menu “Help” berfungsi untuk melihat bantuan bagaimana cara menggunakan program ini. Sedangkan menu “About” berfungsi untuk melihat informasi tentang program.
Gambar 4.17 Menu bar “Help” dan “About”
B. Pembahasan Program Discrete Cosine Transform (DCT) adalah salah satu kelas operasi matematika Fast Fourier Transform (FFT), dimana teknik ini mengambil suatu sinyal, yang dalam hal ini adalah data pixel dari suatu mariks citra, kemudian mentransformasikannya dengan persamaan yang ada. Satu hal yang terlihat saat menguji persamaan algoritma DCT adalah waktu yang dibutuhkan untuk penghitungan tiap elemen dalam DCT yang sangat tergantung pada ukuran matriks. Karena elemen matriks citra yang dihitung cukup banyak jika citra yang diambil berukuran besar, maka komputer juga memerlukan waktu yang lebih lama untuk melakukan penghitungan tersebut. Untuk mengatasi hal ini, implementasi DCT biasanya membagi sebuah gambar menjadi lebih kecil, yang biasa disebut dengan blok, dan penghitungan dilakukan dengan basis vector. Dalam implementasi di MATLAB, penghitungan dengan basis vector dilakukan secara langsung dan bersama-sama, tanpa harus menggunakan proses looping.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
71
Blok-blok yang digunakan biasanya berukuran 8 x 8 atau 16 x 16 (2nx2n). Blok-blok tersebut kemudian dihitung dengan basis vector. Hal ini bertujuan untuk mempersingkat waktu yang lama saat mentransformasikan nilai pixel satu per satu. Sebagai contoh, sebuah citra dengan ukuran 128 x 128 pixel akan ditransformasikan dengan persamaan DCT secara langsung, tanpa menggunakan pembagian blok matriks 8 x 8 ataupun 16 x 16. Maka dari persamaan DCT 2.4 akan terjadi looping sebanyak 16.384 kali untuk menghitung nilai yang ada dalam tanda zigma ( ∑ ). Ditambah dengan pengecekan nilai C(i) dan C(j) yang masingmasing memerlukan looping yang sama juga. Jadi total looping yang dibutuhkan sebanyak 268.435.456 kali. Demikian pula yang terjadi saat akan merekontruksi citra dengan persamaan invers DCT 2.6 yang berarti program akan melakukan looping sebanyak 268.435.456 juga. Hal ini sangat tidak efisien dan menghabiskan banyak waktu, apalagi jika ukuran citra jauh lebih besar. Berbeda jika citra tersebut dibagi dalam blok 8 x 8 dan dihitung menggunakan basis vector dalam implementasi dengan bahasa pemrograman MATLAB. Maka hanya akan terjadi pengulangan sebanyak ((128 x 128) ÷ (8 x 8) x 2)2 = 262.144 (Perkalian dengan dua (2) dilakukan untuk menghitung 2 proses yaitu transformasi dan rekonstruksi, dan pengkuadratan dilakukan untuk mengecekan nilai C(i) dan C(j)) Proses yang kedua ini tentunya dapat lebih menghemat waktu jika dibandingkan dengan proses yang pertama.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
72
Dalam metode kuantisasi “Langsung” citra tidak dibagi dalam blok-blok, melainkan citra akan ditransformasi secara langsung. Namun proses penghitungan nilai transformasi maupun rekonstruksi dilakukan dengan penghitungan basis vector. Jadi proses dapat berjalan dengan lebih cepat jika dibanding dengan menggunakan looping dengan perintah “for”. Listing di bawah ini adalah contoh syntax penggunaan perintah looping dengan statement for dan contoh penghitungan dengan basis vector. %-----------Looping dengan statement “for”----------% for i=1:m-1 for j=1:n-1 .....Isi dari program..... end end %---------------------------------------------------------------%
%-----------Penghitungan dengan basis vector---------% i=1:m-1; j=1:n-1; [A,B]=meshgrid(i,j); .....Isi dari program..... %---------------------------------------------------------------%
Pada contoh listing penghitungan dengan basis vector tersebut terdapat statement [A,B]=meshgrid(i,j); yang berfungsi untuk menghasilkan array [A,B] berdasarkan ukuran (i,j), yang berguna untuk mengalokasikan memori yang akan dipakai nantinya.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
73
C. Pengujian Program 1.
Persiapan Berkas Sumber Berkas–berkas (file) yang disiapkan untuk menjadi citra uji ada beberapa
citra dengan resolusi yang berbeda, yang nantinya akan dimampatkan dengan kualitas pemampatan yang berbeda dan dengan metode yang berbeda pula, untuk membandingkan hasil dari masing-masing metode dan kualitas pemampatan. Citra yang akan dijadikan citra uji adalah sebagai berikut:
Tabel 4.1 Citra uji
No.
Citra
Nama file
Resolusi
Jenis citra
1
64.bmp
64 x 64
Greyscale
2
naga.bmp
128 x 128
Greyscale
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
74
2.
Pengaktifan Program a. Tampilan buka citra Saat menekan tombol “Buka File Citra”, maka akan keluar tampilan untuk memilih citra mana yang akan dibuka, dan citra yang dibuka harus bertipe *.BMP.
Gambar 4.18 Tampilan Buka File Citra
Listing untuk membuka file citra adalah sebagai berikut: %==============================================% .... [nama_file, nama_path]=uigetfile(... {'*.bmp','File Citra(*.bmp)'},... 'Buka File Citra'); if ~isequal(nama_file,0) fullpath=strcat(nama_path,nama_file); lasterr(''); citra=imread(fullpath); .... %==============================================%
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
75
“Uigetfile” digunakan menampilkan antarmuka untuk membuka
file, dan tipe citra yang dibuka ditentukan pula dari script ini.
b. Tampilan citra asli Setelah menentukan citra yang akan dibuka, maka program akan menampilkan citra tersebut ke tampilan citra asli.
Gambar 4.19 Citra asli
Listing untuk menampilkan file citra adalah sebagai berikut: %==============================================% .... [citra, res_citra, nama_file, info]=buka_citra; axes1 = axes('position',[0.120 0.37 0.25 0.446]); imshow(citra); .... %==============================================%
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
76
[citra, res_citra, nama_file, info]=buka_citra; digunakan untuk memanggil
function buka_citra. Sedangkan axes1 digunakan untuk membuat suatu axes untuk menampilkan citra yang dibuka dan kemudian menentukan dimana citra tersebut nantinya akan ditampilkan, dan imshow digunakan untuk menampilkan citra tersebut.
c. Tampilan citra hasil transformasi Tampilan hasil transformasi ini akan menampilkan citra yang telah mengalami proses transformasi.
Gambar 4.20 Tampilan citra transformasi
Tampilan citra transformasi ini akan muncul setelah user menekan tombol “Transformasi”, yang sebelumnya memilih metode yang akan digunakan. Dalam contoh di atas, metode yang digunakan adalah dengan “Blok Matriks” dan blok yang digunakan adalah 8x8
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
77
Listing untuk menampilkan menghitung nilai transformasi (DCT):
%==============================================% .... j1=0:blok-1; j2=0:blok-1; [J1,J2]=meshgrid(j1,j2); C=cos(((2.*J1+1).*J2*pi)/(blok*2)); D=C'; citra=double(citra)./(blok/2); ukuran=size(citra,1); nblok=ukuran/blok; brsklm=1:blok; [baris,kolom]=meshgrid(0:(nblok-1), 0:(nblok-1)); baris=baris(:); kolom=kolom(:); citra_transform = zeros(size(citra));
for k=1:length(baris) x=citra(baris(k)*blok+brsklm,kolom(k)*blok+brsklm); D1=x*D; D2=C*D1; D2(:,1)=D2(:,1).*(1/sqrt(2)); D2(1,:)=D2(1,:).*(1/sqrt(2));
citra_transform(baris(k)*blok+brsklm,kolom(k)*blok+brsklm)=D2(brsklm, brsklm); end;.... %==============================================%
Dalam listing program di atas, membutuhkan sebuah masukan berupa nilai dari variable blok. Nilai tersebut didapat dari function lain, dimana function tersebut membaca popup menu saat user menentukan blok yang akan dipakai.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
78
Output dari listing program tersebut adalah citra_transform yang nantinya akan ditampilkan sebagai citra hasil transformasi.
d. Tampilan citra hasil rekonstruksi, nilai pixel serta penghitungan error Tampilan citra hasil rekonstruksi ini akan menampilkan citra yang telah mengalami proses transformasi, dan kemudian direkonstruksi (dikenai fungsi invers) untuk mendapatkan citra seperti semula.
Gambar 4.21 Tampilan citra setelah rekonstruksi tanpa di kuantisasi
Gambar di atas menunjukkan hasil rekonstruksi citra sebelum dikenai proses kuantisasi. Tampak bahwa citra hasil rekonstruksi, dan nilai matriks yang ditampilkan dalam grid citra asli dan grid citra rekonstruksi terlihat sama. Hal ini juga tampak pada error yang ditampilkan. Pada MSE terlihat nilai 0 (nol) dan pada PSNR juga tidak terdefinisi yang ditunjukkan dengan ”inf” dengan satuan desible.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
79
Namun setelah dikuantisasi dengan nilai tertentu, citra hasil rekonstruksi maupun nilai matriks yang ditampilkan dalam grid akan menjadi berbeda. Citra rekonstruksi akan tampak lebih buruk, tergantung dari nilai kuantisasi yang dimasukkan. Semakin besar nilai kuantisasi, maka akan semakin buruk hasil citra yang didapat. Gambar di bawah ini adalah hasil setelah dikuantisasi dengan nilai kuantisasi 100. Ini berarti nilai yang berada di antara -100 sampai dengan 100 akan dikuantisasi menjadi nol 0 (nol).
Gambar 4.22 Tampilan citra setelah rekonstruksi setelah dikuantisasi
Dalam tampilan di atas juga terlihat bahwa setelah mengalami proses kuantisasi dengan nilai 100, terdapat nilai error MSE=460,97 dan PSNR=21,49 dB. Semakin banyak error, maka nilai MSE semakin tinggi dan nilai PSNR semakin rendah. Demikian pula sebaliknya, semakin
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
80
sedikit error, maka nilai MSE semakin rendah dan nilai PSNR semakin tinggi.
e. Tampilan report Report digunakan untuk melihat laporan secara keseluruhan dari datadata yang dihasilkan. Dari tampilan report ini, user dapat melihat dengan lebih ringkas data-data yang telah diproses dan output-nya.
Gambar 4.23 Tampilan report
Dalam tampilan ini pula terdapat beberapa informasi yang belum terdapat pada tampilan program utama, yaitu besar data setelah transformasi, selisih data antara data asli dengan data setelah transformasi, dan juga rasio kompresi.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
81
Besar data setelah mengalami proses transformasi dan kuantisasi dengan nilai 100 dalam kasus tersebut di atas terlihat sangat jauh berkurang, tetapi nilai MSE yang didapat juga cukup besar. Jika dilihat dari kualitas citra setelah direkonstruksi juga terlihat buruk. Hal ini disebabkan oleh nilai kuantisasi yang terlalu besar. Dalam kasus ini, user dapat menentukan seberapa toleransi kualitas hasil citra rekonstruksi yang diinginkan. Setelah itu, user dapat melihat dari hasil report. Berapa nilai kuantisasi, besar data transformasi, selisih data, dan rasio kompresi yang masih dapat ditoleransi, serta hasil error yang didapat.
f. Tampilan pertolongan program (help) dan informasi program Tampilan ini berisi tentang cara penggunaan program.
Gambar 4.24 Tampilan petunjuk penggunaan program
Tampilan informasi program adalah tampilan yang berisi tentang informasi program yang telah dibuat.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
82
Gambar 4.25 Tampilan informasi program
Listing untuk menampilkan “Help”, dan “About”: %==============================================% .... h1 = uimenu('Parent',h0,'Label','Help','Tag','uimenu3'); h2 = uimenu('Parent',h1,'Callback','pertolongan','Label','Help','Tag','help','Enable','on'); h2 = uimenu('Parent',h1,'Callback','about','Label','About','Tag','about','Enable','on'); ... %==============================================%
g. Tampilan pesan kesalahan Progam ini juga akan menampilkan berbagai pesan kesalahan apabila user salah dalam mengoperasikan program. Berbagai pesan kesalahan ini antara lain:
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
83
Gambar 4.26 Tampilan pesan error
Pesan ini akan tampil jika ukuran blok yang dipilih oleh user lebih besar daripada ukuran citra masukan. Misalnya ukuran citra masukan adalah 64x64 pixel, sedangkan ukuran blok yang dipilih adalah 128x128, maka pesan ini akan muncul, hal ini disebabkan karena citra dengan resolusi 64x64 pixel tidak dapat dibagi menjadi blok 128x128.
h. Tampilan peringatan a. Peringatan dalam memasukkan blok matriks User juga akan mendapat peringatan jika ada input yang salah. Peringatan kesalahan tersebut adalah sebagai berikut:
Gambar 4.27 Tampilan peringatan 1
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
84
Peringatan ini akan muncul jika user memilih metode kuantisasi “Blok Matriks” dan kemudian menekan tombol “Tansformasi”, tetapi belum memilih blok matriks pada popup menu.
b. Peringatan dalam memasukkan baris dan kolom Jika user salah dalam memasukkan baris dan kolom yang digunakan untuk melihat blok matriks, ataupun salah satu baris atau kolom atau keduanya dalam keadaan kosong, dan user menekan tombol “Tampil” maka akan muncul peringatan seperti gambar 4.28 di bawah ini:
Gambar 4.28 Tampilan peringatan 2
Di atas kotak untuk input angka baris dan kolom tercantum batas maksimal user dapat memasukkan nilai. Jika user memasukkan sebuah nilai yang melebihi batas maksimal tersebut maka peringatan ini akan muncul.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
85
D. Perbandingan hasil pemampatan Dari 2 metode transformasi yang telah diujikan terhadap citra uji, maka didapat perbandingan hasil yang diperoleh antara citra asli dengan citra hasil transformasi, yaitu sebagai berikut:
1. Metode “Blok Matriks” a. Citra dengan resolusi 64 x 64 pixel Citra ini diuji dengan berbagai ukuran blok matriks, dan dengan nilai kuantisasi yang berbeda. Hasil dari pengujian tersebut terlihat seperti tabel di bawah ini:
Tabel 4.2 Data pengujian program metode Blok Matriks 8x8 Ambang Kuantisasi
Besar data asli (Matriks)
Besar data transformasi
MSE Total
PSNR Total (dB)
Rasio (%)
1
0
4096
4096
0
Inf
100
2
10
4096
2092
13,29
36,89
51,07
50
4096
318
249,47
24,16
7,76
4
75
4096
188
367,45
22,48
4,59
5
100
4096
131
471,74
21,39
3,20
No
3
Ukuran file Asli
8 KB
Hasil pengujian dalam tabel 4.2 menyatakan bahwa banyaknya elemen matriks pada data asli yang harus disimpan adalah 4096 (64x64 pixel). Matriks citra tersebut ditransformasi dengan menggunakan metode “Blok Matriks” dengan besar blok 8x8, dengan nilai ambang kuantisasi yang berbeda-beda (dapat dilihat pada kolom “Ambang Kuantisasi”).
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
86
Dari pengujian tersebut terlihat bahwa semakin besar ambang kuantisasi, maka akan semakin besar pula error yang didapat. Hal ini ditunjukkan dengan nilai MSE (Mean Squared Error) yang didapat (dapat dilihat dalam kolom “MSE Total”). Semakin besar nilai MSE, menunjukkan semakin besar error yang didapat. Selain itu, besarnya ambang kuantisasi juga akan mengakibatkan nilai PSNR (Peak Signal to Noise Ratio) semakin kecil dan nilai rasio atau prosentase perbandingan antara hasil pemampatan dan data asli (dalam tabel “Besar Data Transformasi” dan “Besar Data Asli”) juga akan semakin kecil. Hal tersebut di atas mengakibatkan kualitas citra hasil rekonstruksi semakin buruk. Atau jika citra tersebut dilihat dalam bentuk matriks, maka nilai matriks hasil rekonstruksi akan semakin menjauhi nilai matriks asli. Hasil pengujian yang lain dapat dilihat pada tabel 4.3 sampai dengan 4.10. Perbedaan pengujian terletak pada blok matriks yang diujikan pada citra yang mempunyai resolusi sama. Metode tersebut juga diujian dengan citra yang mempunyai resolusi lebih besar dan dengan blok matriks yang berbeda-beda pula.
Tabel 4.3 Data pengujian program metode Blok Matriks 16x16 No
Ukuran file Asli
1 2 3
8 KB
Ambang Kuantisasi
Besar data asli (Matriks)
Besar data transformasi
MSE Total
PSNR Total (dB)
Rasio (%)
0
4096
4096
0
Inf
100
10
4096
2210
14,04
36,66
53,96
50
4096
270
274,13
23,75
6,59
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
87
4
75
4096
137
395,88
22,16
3,34
5
100
4096
90
483,04
21,29
2,20
Tabel 4.4 Data pengujian program metode Blok Matriks 32x32 Ambang Kuantisasi
Besar data asli (Matriks)
Besar data transformasi
MSE Total
PSNR Total (dB)
Rasio (%)
1
0
4096
4096
0
Inf
100
2
10
4096
2304
14,25
36,59
56,25
50
4096
261
307,44
23,25
6,37
4
75
4096
126
422,34
21,87
3,08
5
100
4096
77
508,02
21,07
1,88
No
3
Ukuran file Asli
8 KB
Tabel 4.5 Data pengujian program metode Blok Matriks 64x64 Ambang Kuantisasi
Besar data asli (Matriks)
Besar data transformasi
MSE Total
PSNR Total (dB)
Rasio (%)
1
0
4096
4096
0
Inf
100
2
10
4096
2579
11,99
37,34
62,96
50
4096
233
337,97
22,84
5,69
4
75
4096
102
450,34
21,60
2,49
5
100
4096
74
502,57
21,12
1,81
No
3
Ukuran file Asli
8 KB
b. Citra dengan resolusi 128 x 128 pixel Tabel 4.6 Data pengujian program metode Blok Matriks 8x8 No
Ukuran file Asli
Ambang Kuantisasi
Besar data asli (Matriks)
Besar data transformasi
MSE Total
PSNR Total (dB)
Rasio (%)
1
12 KB
0
16384
16384
0
Inf
100
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
88
2
10
3
50
4
75
5
100
16384 16384 16384 16384
5075
5,39
40,81
30,98
1772
151,77
26,32
10,82
1110
303,12
23,31
6,77
761
460,97
21,49
4,64
Tabel 4.7 Data pengujian program metode Blok Matriks 16x16 Ambang Kuantisasi
Besar data asli (Matriks)
Besar data transformasi
MSE Total
PSNR Total (dB)
Rasio (%)
1
0
16384
16384
0
Inf
100
2
10
5790
6,67
39,89
35,34
1676
184,07
25,48
10,23
909
358,96
22,58
5,55
578
509,16
21,06
3,53
No
3
Ukuran file Asli
12 KB
50
4
75
5
100
16384 16384 16384 16384
Tabel 4.8 Data pengujian program metode Blok Matriks 32x32 Ambang Kuantisasi
Besar data asli (Matriks)
Besar data transformasi
MSE Total
PSNR Total (dB)
Rasio (%)
1
0
16384
16384
0
Inf
100
2
10
7379
9,57
38,32
45,04
1771
247,56
24,19
10,81
961
432,64
21,77
5,87
563
611,99
20,26
3,44
No
3
Ukuran file Asli
12 KB
50
4
75
5
100
16384 16384 16384 16384
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
89
Tabel 4.9 Data pengujian program metode Blok Matriks 64x64 Ambang Kuantisasi
Besar data asli (Matriks)
Besar data transformasi
MSE Total
PSNR Total (dB)
Rasio (%)
1
0
16384
16384
0
Inf
100
2
10
8991
12,68
37,10
54,88
1990
298,81
23,38
12,15
972
529,36
20,89
5,93
552
721,77
19,55
3,37
No
3
Ukuran file Asli
12 KB
50
4
75
5
100
16384 16384 16384 16384
Tabel 4.10 Data pengujian program metode Blok Matriks 128x128 Ambang Kuantisasi
Besar data asli (Matriks)
Besar data transformasi
MSE Total
PSNR Total (dB)
Rasio (%)
1
0
16384
16384
0
Inf
100
2
10
11566
9,54
38,34
70,59
2061
416,70
21,93
12,58
900
675,56
19,83
5,49
521
848,12
18,85
3,18
No
3
Ukuran file Asli
12 KB
50
4
75
5
100
16384 16384 16384 16384
Dari tabel-tabel di atas terlihat bahwa dengan nilai kuantisasi yang sama, semakin besar blok maka akan semakin kecil data transformasi (data yang harus disimpan) berapapun resolusi citranya, yang menyebabkan semakin besar pula error yang didapat. Hal ini tentunya akan berpengaruh pada kualitas citra hasil rekonstruksi yang terlihat semakin tidak menyerupai citra aslinya.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
90
2. Metode “Langsung” a. Citra dengan resolusi 64 x 64 pixel Citra ini diuji dengan nilai prosentase kuantisasi yang berbeda. Hasil dari pengujian tersebut terlihat seperti tabel di bawah ini: Tabel 4.11 Data pengujian program metode Langsung 64x64 Prosentase Kuantisasi
Besar data asli (Matriks)
Besar data transformasi
MSE Total
PSNR Total (dB)
Rasio (%)
1
10
4096
3686
223,65
24,64
89,99
2
20
3276
210,66
24,90
79,98
3
50
2048
144,99
26,52
50,00
1024
242,64
24,28
25,00
409
364,31
22,52
9,99
40
731,60
19,49
0,98
No
Ukuran file Asli
4096 4096
8 KB 4
75
5
90
6
99
Hasil
4096 4096 4096
pengujian
citra
dengan
metode
yang
berbeda
ini
menunjukkan hasil yang berbeda pula. Dalam tabel 4.11 terlihat citra dengan besar data matriks asli adalah 4096 (64x64 pixel) diuji dengan tingkatan prosentase kuantisasi yang berbeda. Prosentase ini yang nantinya akan dipakai untuk melakukan proses kuantisasi, sampai seberapa persen matriks yang akan di-nol-kan. Dari hasil pengujian tersebut, semakin besar prosentase kuantisasi, yang berarti bahwa semakin banyak nilai matriks yang di-nol-kan, maka besar data yang harus disimpan (besar data transformasi) akan semakin kecil. Hal ini berakibat pada nilai error (MSE) yang didapat semakin besar, sedangkan nilai PSNR (Peak Signal to Noise Ratio) akan semakin
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
91
kecil. Jika nilai-nilai tersebut direpresentasikan sebagai sebuah citra, maka kualitas citra akan terlihat lebih buruk, dan hasil matriks citra rekonstruksi semakin berbeda dari matriks citra asli. Demikian pula yang terjadi pada nilai rasio (prosentase perbandingan antara “Besar Data Transformasi” dengan “Besar Data Asli”) akan semakin kecil.
b. Citra dengan resolusi 128 x 128 pixel Tabel 4.12 Data pengujian program metode Langsung 128x128 Prosentase Kuantisasi
Besar data asli (Matriks)
Besar data transformasi
MSE Total
PSNR Total (dB)
Rasio (%)
1
10
16384
14745
422,48
21,87
90,00
2
20
13107
390,64
22,21
80,00
8192
222,22
24,66
50,00
4096
450,99
21,59
25,00
1638
771,04
19,26
10,00
163
1420,11
16,61
0,99
No
Ukuran file Asli
50
3 8 KB 4
75
5
90
6
99
16384 16384 16384 16384 16384
Tabel di atas menggambarkan bahwa berapapun ukuran citra, dengan prosentase kuantisasi yang semakin besar maka data transformasi (data yang harus disimpan) akan semakin kecil, yang berakibat pada besarnya nilai error yang didapat. Sehingga kualitas citra pun akan semakin tidak menyerupai citra aslinya. Demikian pula sebaliknya, semakin kecil prosentase kuantisasi, maka semakin kecil pula error yang didapat, tetapi data transformasi menjadi lebih besar jika dibandingkan dengan prosentase
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
92
kuantisasi yang lebih besar. Tetapi hal ini mengakibatkan kualitas citra yang lebih baik.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB V
KESIMPULAN DAN SARAN
A. Kesimpulan Dari data yang diperoleh saat hasil pengujian program, maka dapat diambil beberapa kesimpulan yang dapat diambil dari penulisan tugas akhir ini adalah: 1.
Metode Discrete Cosine Transform (DCT) dapat digunakan untuk proses pemampatan file citra.
2.
Dalam proses pemampatan tersebut dapat menggunakan berbagai cara kuantisasi, diantaranya adalah dengan menentukan nilai ambang kuantisasi atau dengan menentukan prosentase untuk kuantisasi.
3.
Kualitas pemampatan tergantung dari cara dan besarnya ambang kuantisasi. Semakin kecil ukuran file yang dihasilkan, maka semakin besar pula nilai MSE yang didapat dan semakin kecil nilai PSNR.
4.
Dari kedua metode yang diterapkan, metode “Blok Matriks” menghasilkan output yang lebih baik daripada metode “Langsung”. Hal tersebut disebabkan karena nilai ambang kuantisasi pada metode “Blok Matriks” dapat ditentukan oleh user sehingga nilai-nilai yang penting dapat diminimalisasi untuk dikuantisasi. Sedangkan pada metode “Langsung” user tidak dapat menentukan sendiri batas nilai yang akan dikuantisasi karena metode tersebut
93
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 94
akan mengambil nilai berdasarkan prosentase, dan tidak menghiraukan apakah nilai yang dikuantisasi itu nilai yang penting atau bukan. 5.
Dari hasil pengujian yang dilakukan, dengan citra “naga.bmp” yang mempunyai resolusi 128x128 pixel, maka nilai yang didapat untuk hasil yang masih baik adalah dengan metode blok matriks, dengan besar blok 8x8 dan nilai ambang kuantisasi dibawah 50.
B. Saran Pada perkembangan selanjutnya dapat dikembangkan suatu program pemampatan citra dengan resolusi M x N dan citra berwarna. Dan juga dapat dikembangkan sebuah aplikasi yang tidak hanya sekedar untuk menganalisis, tetapi juga hasil dari pemampatan dapat disimpan, sehingga dapat benar-benar menghemat media penyimpanan data.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
95
Daftar Pustaka
Gonzales, Rafael C., Richard E. Woods, Steven L. Eddins, 2004, Digital Image Processing Using MATLAB, Upper Saddle River, Prentice Hall, New Jersey.
Hankerson, Darel, Greg A. Harris, and Peter D. Johnson, Jr., 2003, Introduction to Information Theory and Data Compression, 2nd ed., A CRC Press Company, Wasington, DC.
Hansen Per C., James G. Nagy, Dianne P. O’Leary, 2006, Deblurring Images Matrices, Spectra, and Filtering, Society for Industrial and Applied Mathematics, Philadelphia.
Magrab, Edward B., Shapour Azarm, Balakumar Balachandran, James H. Duncan, Keith E. Herold, Gregory C. Walsh, 2005, An Engineer’s Guide to MATLAB, 2nd ed., Upper Saddle River, Prentice Hall, New Jersey.
Munir, Renaldi, 2004, Pengolahan Citra Digital dengan Pendekatan Algoritmik, Informatika, Bandung.
Nelson, Mark, 1992, The Data Compression Book, M&T Publishing Inc, Borel Avenue, San Mateo, California.
Pitas, Ioannis, 1993, Digital Image Processing Algorithms, Prentice Hall International, United Kingdom.
Salomon, David, 2001, Data Compression The Complete Reference, Dept. Of Computer Science, California State University, Northridge, USA.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
96
Sonka, M., Vaclav Hlavac, dan Roger Boyle, Image Processing, Analysis, and Machine Vision, 2nd ed., 1998, International Thompson Publishing, CA
Steinmetz, Ralf dan Klara Nahrstedt, Multimedia: Computing, Communication, and Application, 1995, Prentice Hall Inc., NJ
Yonata, Yosi, 2002, Kompresi Video, PT Elex Media Komputindo, Jakarta: Gramedia
http://en .wikipedia.org, diakses tanggal 08 Oktober 2006 http://www.cs.af.ac.uk, diakses tanggal 20 Maret 2007 http://www.mathworks.com, diakses tanggal 20 Maret 2007
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
LAMPIRAN
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
97 PERBANDINGAN CITRA ASLI DENGAN CITRA HASIL REKONSTRUKSI
Citra resolusi 128x128 dengan Blok Matriks 8x8
Citra Asli
Ambang kuantisasi = 10
Ambang kuantisasi = 50
Ambang kuantisasi = 75
Ambang kuantisasi = 100
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
98
Citra resolusi 128x128 dengan Blok Matriks 16x16
Citra Asli
Ambang kuantisasi = 10
Ambang kuantisasi = 50
Ambang kuantisasi = 75
Ambang kuantisasi = 100
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
99 Citra resolusi 128x128 dengan Blok Matriks 32x32
Citra Asli
Ambang kuantisasi = 10
Ambang kuantisasi = 50
Ambang kuantisasi = 75
Ambang kuantisasi = 100
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
100 Citra resolusi 128x128 dengan Blok Matriks 64x64
Citra Asli
Ambang kuantisasi = 10
Ambang kuantisasi = 50
Ambang kuantisasi = 75
Ambang kuantisasi = 100
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
101 Citra resolusi 128x128 dengan Blok Matriks 128x128
Citra Asli
Ambang kuantisasi = 10
Ambang kuantisasi = 50
Ambang kuantisasi = 75
Ambang kuantisasi = 100
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
102 Citra resolusi 128x128 dengan metode langsung
Citra asli
Prosentase = 10%
Prosentase = 20%
Ambang kuantisasi = 50%
Ambang kuantisasi = 75%
Ambang kuantisasi = 90%
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
103 LISTING PROGRAM %----------DCT----------%
function citra_transform=dct2blok(citra,blk,selek); %Input: % X - matriks harus 2^n x 2^n % blok - ukuran blok harus square (8x8, 16x16, ...) % %Output: % citra_transform - DCT matriks terbagi dalam blok % global selek
if selek==1 blok=blk; elseif selek==0 [m n]=size (citra); blok=m; end j1=0:blok-1; j2=0:blok-1; [J1,J2]=meshgrid(j1,j2); C=cos(((2.*J1+1).*J2*pi)/(blok*2)); D=C'; citra=double(citra)./(blok/2); ukuran=size(citra,1); nblok=ukuran/blok; brsklm=1:blok; [baris,kolom]=meshgrid(0:(nblok-1), 0:(nblok-1)); baris=baris(:); kolom=kolom(:); citra_transform = zeros(size(citra)); for k=1:length(baris) x=citra(baris(k)*blok+brsklm,kolom(k)*blok+brsklm); D1=x*D; D2=C*D1; D2(:,1)=D2(:,1).*(1/sqrt(2)); D2(1,:)=D2(1,:).*(1/sqrt(2)); citra_transform(baris(k)*blok+brsklm,kolom(k)*blok+brsklm)=D 2(brsklm,brsklm); end; %----------IDCT----------%
function citra_rekons=blkidct2cos(citra,dqZig,blk,selek,qZig); %Output: % citra - inverse transformed matrix % qmtrx=get(findobj(figura,'Tag','quant_axes'),'UserData'); % dqZig=round(blkproc(Z,[8 8],'x./P1',qmtrx));
if selek==1 blok=blk; else [m n]=size (citra); blok=m; end blok=blk; j1=0:blok-1; j2=0:blok-1; [J1,J2]=meshgrid(j1,j2); C=cos(((2.*J1+1).*J2*pi)/(blok*2)); D=C';
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
104 dqZig=double(dqZig)./(blok/2); ukuran=size(dqZig,1); nblok=ukuran/blok; brsklm=1:blok; [baris,kolom]=meshgrid(0:(nblok-1), 0:(nblok-1)); baris=baris(:); kolom=kolom(:); citra_rekons = zeros(size(dqZig)); for k=1:length(baris) x=dqZig(baris(k)*blok+brsklm,kolom(k)*blok+brsklm); x(:,1)=x(:,1).*(1/sqrt(2)); x(1,:)=x(1,:).*(1/sqrt(2)); D1=x*C; D2=D*D1; citra_rekons(baris(k)*blok+brsklm,kolom(k)*blok+brsklm)=D2 (brsklm,brsklm); end;