• Tidak ada hasil yang ditemukan

Implementasi Dan Analisis Kinerja Algoritma Arithmetic Coding Dan Shannon-Fano Pada Kompresi Citra BMP

N/A
N/A
Protected

Academic year: 2016

Membagikan "Implementasi Dan Analisis Kinerja Algoritma Arithmetic Coding Dan Shannon-Fano Pada Kompresi Citra BMP"

Copied!
131
0
0

Teks penuh

(1)

ARITHMETIC CODING DAN SHANNON-FANO

PADA KOMPRESI CITRA BMP

SKRIPSI

SYAHFITRI KARTIKA LIDYA

081402070

PROGRAM STUDI TEKNOLOGI INFORMASI

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA

(2)

PADA KOMPRESI CITRA BMP

SKRIPSI

Diajukan untuk melengkapi tugas dan memenuhi syarat mencapai gelar Sarjana Teknologi Informasi

SYAHFITRI KARTIKA LIDYA 081402070

PROGRAM STUDI TEKNOLOGI INFORMASI

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA

(3)

PERSETUJUAN

Judul : IMPLEMENTASI DAN ANALISIS KINERJA ALGORITMA ARITHMETIC CODING DAN SHANNON-FANO PADA KOMPRESI CITRA BMP Kategori : SKRIPSI

Nama : SYAHFITRI KARTIKA LIDYA Nomor Induk Mahasiswa : 081402070

Program Studi : SARJANA (S1) TEKNOLOGI INFORMASI Departemen : TEKNOLOGI INFORMASI

Fakultas : ILMU KOMPUTER DAN TEKNOLOGI INFORMASI (FASILKOM-TI) UNIVERSITAS SUMATERA UTARA

Diluluskan di Medan, 18 Juli 2012

Komisi Pembimbing :

Pembimbing 2 Pembimbing 1

Romi Fadillah R, B.Comp.Sc.M.Sc. M. Andri Budiman, ST.M.Comp.Sc.M.E.M. NIP. 198603032010121004 NIP. 197510082008011011

Diketahui/Disetujui oleh

Program Studi S1 Teknologi Informasi Ketua,

(4)

PERNYATAAN

IMPLEMENTASI DAN ANALISIS KINERJA ALGORITMA ARITHMETIC CODING DAN SHANNON-FANO

PADA KOMPRESI CITRA BMP

SKRIPSI

Saya mengakui bahwa skripsi ini adalah hasil karya saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.

Medan, 18 Juli 2012

(5)

PENGHARGAAN

Puji syukur saya panjatkan kehadirat Allah SWT, yang telah memberikan rahmat dan hidayah-Nya serta segala sesuatunya dalam hidup, sehingga saya dapat menyelesaikan penyusunan Skripsi ini, sebagai syarat untuk memperoleh gelar Sarjana Teknologi Informasi, Program Studi S1 Teknologi Informasi Universitas Sumatera Utara. Dalam pengerjaan Skripsi ini penulis banyak sekali mendapatkan dukungan, saran, dan nasehat dari berbagai pihak.

Dalam kesempatan ini penulis mengucapkan terima kasih kepada: Bapak M. Andri Budiman, ST.M.Comp.Sc.M.E.M, selaku Dosen Pembimbing I, yang telah bersedia meluangkan waktu dan pikirannya dalam membimbing, memotivasi untuk menyelesaikan Skripsi ini. Bapak Romi Fadillah Rahmat, B.Comp.Sc.M.Sc, selaku Dosen Pembimbing II, yang telah bersedia meluangkan waktu dan pikirannya dalam menyelesaikan Skripsi ini, Ucapan terima kasih juga ditujukan kepada Ketua dan Sekretaris Jurusan Prof. Dr. Opim Salim Sitompul, M.Sc dan Drs. Sawaluddin, M.IT, serta kepada dosen-dosen Program Studi Teknologi dan pegawai di Program Studi Teknologi Informasi, khususnya bu Delima, kak Umi, kak Maya, bang Faisal, kak Wardah, bu Lia yang telah membantu kelancaran proses administrasi.

Segala hormat dan terima kasih secara khusus penulis ucapkan kepada ayahanda Yonnes Hasan dan Ibunda Nova Mustika atas motivasi, kasih sayang, dan dukungan baik secara materi maupun do’a yang tak pernah putus yang diberikan kepada penulis, tak lupa kepada adik-adik tersayang Vayon Rachmat Ramadhan dan Sabilla Afiya, serta tante tersayang Julia Reveny telah memberi motivasi dan nasehat. Tidak lupa kepada seluruh sahabat penulis Stambuk 2008 yang selalu berusaha menjadi sahabat terbaik dan tidak mudah putus asa khususnya Karina Ayesha, Cahya, Ishri, Mauza, Karina Andi.

(6)

ABSTRAK

Perkembangan teknologi yang pesat, sangat berperan penting dalam pertukaran informasi yang cepat. Pada pengiriman informasi dalam bentuk citra masih mengalami kendala, diantaranya adalah karena besarnya ukuran citra sehingga solusi untuk masalah tersebut adalah dengan melakukan kompresi. Pada skripsi ini akan mengimplementasi dan membandingkan kinerja algoritma Arithmetic Coding dan Shannon-Fano melalui perhitungan rasio kompresi, ukuran file hasil kompresi, kecepatan proses kompresi dan dekompresi. Berdasarkan seluruh hasil pengujian, bahwa algoritma Arithmetic Coding menghasilkan rata-rata rasio kompresi 62,88 % dan rasio kompresi Shannon-Fano 61,73 %, kemudian Arithmetic Coding rata-rata kecepatan dalam kompresi citra yaitu 0,072449 detik dan Shannon-Fano 0,077838 detik. Kemudian algoritma Shannon-Fano memiliki rata-rata kecepatan untuk dekompresi yaitu 0,028946 detik dan algoritma Arithmetic Coding 0,034169 detik. Citra hasil dekompresi pada algoritma Arithmetic Coding dan Shannon-Fano sesuai dengan citra asli. Dapat diambil kesimpulan dari hasil pengujian bahwa algoritma Arithmetic Coding lebih efisien dalam mengkompresi citra *.bmp dibandingkan algoritma Shannon-Fano, walaupun dalam hal dekompresi Shannon-Fano sedikit lebih cepat dibandingkan Arithmetic Coding.

(7)

ABSTRACT

Rapid technological developments, a very important role in the rapid exchange of information. On the transmission of information in the form of the image is still experiencing problems, such as the large size of the image so that the solution to that problem is to do the compression. In this thesis will implement and compare the performance of the algorithm Arithmetic Coding and Shannon-Fano through the calculation of compression ratio, the size of the compressed file, the speed of compression and decompression process. Based on all the test results, that Arithmetic Coding algorithm yielded an average compression ratio of 62.88% and a compression ratio Shannon-Fano of 61.73%, Arithmetic Coding the average speed in image compression is 0.072449 seconds and Shannon-Fano 0,077838 seconds. Then the Shannon-Fano algorithm has an average speed for the decompression algorithm is 0.028946 second and Arithmetic Coding 0.034169 seconds. Image decompression algorithm results Arithmetic Coding and Shannon-Fano line with the original image. Can be concluded from the results of testing that Arithmetic Coding algorithm is more efficient in image compression *.bmp than Shannon-Fano algorithm, although in terms of Shannon-Fano decompress a bit faster than Arithmetic Coding.

(8)
(9)

 

3.3.3.1 Proses Aplikasi Algoritma Arithmetic Coding dan Shannon-

Fano 55 4.1.1 Spesifikasi Perangkat Keras dan Perangkat Lunak yang Digunakan 64 4.1.2 Tampilan Menu Utama 65

4.2.2.1 Analisis Rasio dan Ukuran File Kompresi antara Algoritma Arithmetic Coding dan Shannon-Fano 83 4.2.2.2 Analisis Ukuran File Citra Hasil Kompresi antara Algoritma

Arithmetic Coding dan Shannon-Fano 86 4.2.2.3 Analisis Kecepatan Proses Kompresi dan Dekompresi Citra

antara Algoritma Arithmetic Coding dan Shannon-Fano 87

Bab 5 Kesimpulan dan Saran 91

5.1 Kesimpulan 91

5.2 Saran 92

(10)

 

DAFTAR TABEL

Halaman

Tabel 2.1 Contoh Warna 24 bit 13

Tabel 2.2 Keterangan Gambar 2.11 25 Tabel 3.1Tabel Probabilitas dan Range untuk Gambar 3.4 31 Tabel 3.2Proses Encoding untuk Gambar 3.4 34 Tabel 3.3Tabel Range Probabilitas 35 Tabel 3.4Proses Decoding untuk Gambar 3.4 38 Tabel 3.5Frekuensi Kemunculan Simbol 42 Tabel 3.6Proses Pengkodean 43 Tabel 3.7Kode dan Panjang Kode Shannon-Fano 43

Tabel 4.1 Citra Uji 77

Tabel 4.2 Rasio dan Ukuran File Kompresi Algoritma Arithmetic Coding

dan Shannon-Fano 83

Tabel 4.3 Kecepatan Proses Kompresi Algoritma Arithmetic Coding

dan Shannon-Fano 86

Tabel 4.4Kecepatan Proses Dekompresi Algoritma Arithmetic Coding

(11)

  Gambar 2.10 Antarmuka pada Aplikasi Visual Basic 2008 Express Edition 25 Gambar 3.1 Flowchart Proses Kompresi Algoritma Arithmetic Coding 28 Gambar 3.2 Flowchart Proses Dekompresi Algoritma Arithmetic Coding 29 Gambar 3.3 Citra Berwarna 2 x 2 Piksel 30 Gambar 3.4 Matriks Citra Berwarna 2 x 2 Piksel 30 Gambar 3.5 Flowchart Proses Kompresi Algoritma Shannon-Fano 40 Gambar 3.6 Flowchart Proses Dekompresi Algoritma Shannon-Fano 41 Gambar 3.7 Citra Berwarna 2 x 2 Piksel 42 Gambar 3.8 Matriks Citra Berwarna 2 x 2 Piksel 42 Gambar 3.9 Matriks Citra Berwarna 2 x 2 Piksel setelah di Subtitusi ke SF 43 Gambar 3.10Proses Subtitusi SF Code ke Simbol Warna 44 Gambar 3.11Arsitektur Sistem Algoritma Arithmetic Coding 45 Gambar 3.12Arsitektur Sistem Algoritma Shannon-Fano Coding 46 Gambar 3.13 Komponen DFD Menurut Yourdan dan DeMarco 46 Gambar 3.14Rancangan DFD Level 0 Proses Kompresi / Dekompresi Algoritma

Arithmetic Coding 47 Gambar 3.15Rancangan DFD Level 1 P.0.1 untuk Proses Kompresi dan Dekompresi

Algoritma Arithmetic Coding 48 Gambar 3.16Rancangan DFD Level 2 P.1.1 untuk Proses Kompresi Algoritma

Arithmetic Coding 49 Gambar 3.17Rancangan DFD Level 2 P.1.2 untuk Proses Dekompresi Algoritma Arithmetic Coding 50 Gambar 3.18Rancangan DFD Level 0 Proses Kompresi / Dekompresi Algoritma

Shannon-Fano 51

Gambar 3.19Rancangan DFD Level 1 P.0.1 untuk Proses Kompresi dan Dekompresi Algoritma Shannon-Fano 51 Gambar 3.20Rancangan DFD Level 2 P.1.1 untuk Proses Kompresi Algoritma

Shannon-Fano 52

(12)

 

Shannon-Fano 53

Gambar 3.22 Flowchart Sistem Kompresi dan Dekompresi Secara Umum 54 Gambar 3.23 Flowchart Aplikasi Algoritma Arithmetic Coding

dan Shannon-Fano 55 Gambar 3.24Rancangan Menu Utama 56 Gambar 3.25Rancangan Menu “Algoritma Kompresi” 57 Gambar 3.26Rancangan Menu “Kompresi” Arithmetic Coding 58 Gambar 3.27Rancangan Menu “Dekompresi” Arithmetic Coding 59 Gambar 3.28Rancangan Menu “Kompresi” Shannon-Fano 60 Gambar 3.29Rancangan Menu “Dekompresi” Shannon-Fano 62 Gambar 3.30Rancangan Menu “Bantuan” 63 Gambar 4.1 Tampilan Menu Utama 64 Gambar 4.2 Tampilan Menu “Algoritma Kompresi” 65 Gambar 4.3 Tampilan Menu “Kompresi” Arithmetic Coding 65 Gambar 4.4 Tampilan Menu “Buka” File citra bmp pada Arithmetic Coding 66 Gambar 4.5 Tampilan Menentukan Lokasi Penyimpanan Hasil Kompresi File Citra

Arithmetic Coding 67 Gambar 4.6 Tampilan Hasil Kompresi File Citra pada Arithmetic Coding 67 Gambar 4.7 Tampilan Menu “Dekompresi” Arithmetic Coding 68 Gambar 4.8 Tampilan Menu “Buka” File .acf 69 Gambar 4.9 Tampilan Menentukan Lokasi Penyimpanan Hasil

Dekompresi File .acf 69 Gambar 4.10 Tampilan Hasil Dekompresi File .acf 70 Gambar 4.11Tampilan Menu “Kompresi” Shannon-Fano 70 Gambar 4.12Tampilan Menu “Buka” File citra bmp pada Shannon-Fano 71 Gambar 4.13Tampilan Menentukan Lokasi Penyimpanan Hasil Kompresi File Citra

Shannon-Fano 72

Gambar 4.14Tampilan Hasil Kompresi File Citra pada Shannon-Fano 72 Gambar 4.15Tampilan Menu “Dekompresi” Shannon-Fano 73 Gambar 4.16Tampilan menu “Buka” File .sf 74 Gambar 4.17Tampilan Menentukan Lokasi Penyimpanan Hasil

Dekompresi File .sf 74 Gambar 4.18Tampilan Hasil Dekompresi File .sf 75 Gambar 4.19Tampilan Menu “Bantuan” 76 Gambar 4.20Perbandingan Rasio Kompresi Algoritma Arithmetic Coding dan

Shannon-Fano 84 Gambar 4.21Perbandingan Hasil Kompresi Algoritma Arithmetic Coding dan

Shannon-Fano 85

Gambar 4.22Perbandingan Kecepatan Kompresi Algoritma Arithmetic Coding

dan Shannon-Fano 87

Gambar 4.23Perbandingan Kecepatan Dekompresi Algoritma Arithmetic Coding

(13)

 

(14)
(15)

ABSTRAK

Perkembangan teknologi yang pesat, sangat berperan penting dalam pertukaran informasi yang cepat. Pada pengiriman informasi dalam bentuk citra masih mengalami kendala, diantaranya adalah karena besarnya ukuran citra sehingga solusi untuk masalah tersebut adalah dengan melakukan kompresi. Pada skripsi ini akan mengimplementasi dan membandingkan kinerja algoritma Arithmetic Coding dan Shannon-Fano melalui perhitungan rasio kompresi, ukuran file hasil kompresi, kecepatan proses kompresi dan dekompresi. Berdasarkan seluruh hasil pengujian, bahwa algoritma Arithmetic Coding menghasilkan rata-rata rasio kompresi 62,88 % dan rasio kompresi Shannon-Fano 61,73 %, kemudian Arithmetic Coding rata-rata kecepatan dalam kompresi citra yaitu 0,072449 detik dan Shannon-Fano 0,077838 detik. Kemudian algoritma Shannon-Fano memiliki rata-rata kecepatan untuk dekompresi yaitu 0,028946 detik dan algoritma Arithmetic Coding 0,034169 detik. Citra hasil dekompresi pada algoritma Arithmetic Coding dan Shannon-Fano sesuai dengan citra asli. Dapat diambil kesimpulan dari hasil pengujian bahwa algoritma Arithmetic Coding lebih efisien dalam mengkompresi citra *.bmp dibandingkan algoritma Shannon-Fano, walaupun dalam hal dekompresi Shannon-Fano sedikit lebih cepat dibandingkan Arithmetic Coding.

(16)

ABSTRACT

Rapid technological developments, a very important role in the rapid exchange of information. On the transmission of information in the form of the image is still experiencing problems, such as the large size of the image so that the solution to that problem is to do the compression. In this thesis will implement and compare the performance of the algorithm Arithmetic Coding and Shannon-Fano through the calculation of compression ratio, the size of the compressed file, the speed of compression and decompression process. Based on all the test results, that Arithmetic Coding algorithm yielded an average compression ratio of 62.88% and a compression ratio Shannon-Fano of 61.73%, Arithmetic Coding the average speed in image compression is 0.072449 seconds and Shannon-Fano 0,077838 seconds. Then the Shannon-Fano algorithm has an average speed for the decompression algorithm is 0.028946 second and Arithmetic Coding 0.034169 seconds. Image decompression algorithm results Arithmetic Coding and Shannon-Fano line with the original image. Can be concluded from the results of testing that Arithmetic Coding algorithm is more efficient in image compression *.bmp than Shannon-Fano algorithm, although in terms of Shannon-Fano decompress a bit faster than Arithmetic Coding.

(17)

BAB 1

PENDAHULUAN

1.1Latar Belakang

Perkembangan teknologi yang pesat, sangat berperan penting dalam pertukaran

informasi yang cepat. Pada pengiriman informasi dalam bentuk citra masih

mengalami kendala, diantaranya adalah karena besarnya ukuran citra sehingga sulit

untuk memindahkan dan mengirim citra tersebut pada suatu perangkat keras yang ada,

jadi masih terdapat kendala yang relatif besar. Untuk menghindari kendala tersebut

perlu dilakukan kompresi citra sebelum dikirim dan dipindahkan.

Kompresi adalah proses pengubahan sekumpulan data menjadi suatu bentuk

kode atau simbol untuk menghemat tempat penyimpanan dan waktu. Algoritma

kompresi yang diharapkan dari kompresi citra adalah proses kompresi dan

dekompresinya cepat, meminimalkan pemakaian memory, kualitas citra yang baik dan

proses transfer yang mudah.

Pada umumnya representasi citra membutuhkan memori yang besar, semakin

besar ukuran citra tentu semakin besar memori yang dibutuhkan. Pada sisi lain,

kebanyakan citra terdapat duplikasi data. Duplikasi data pada citra yaitu ada 2 hal.

Pertama, besar kemungkinan suatu piksel dengan piksel tetangganya memiliki

intensitas yang sama, sehingga penyimpanan piksel memboroskan tempat. Kedua,

citra banyak mengandung bagian yang sama, sehingga bagian yang sama ini tidak

dikodekan berulang kali.

Teknik untuk mengkompresi citra ada dua macam, yaitu Lossless dan Lossy. Teknik lossless adalah suatu teknik kompresi data tanpa menghilangkan satupun informasi saat sebelum dikompresi. Kompresi citra pada teknik lossless, yaitu Run

(18)

   

Coding (Lempel/Ziv). Berbeda dengan teknik lossless, teknik lossy adalah data hasil kompresi menghilangkan beberapa informasi sehingga tidak seperti data aslinya.

Algoritma untuk kompresi citra pada teknik lossy, yaitu Transform Coding, Vector

Quantisation, Fractal Coding, JPEG, GIF, PNG, Discrete Cosine Transform, Discrete Wavelet Transfrom. (Pu, 2006)

Algoritma yang telah digunakan sebelumnya untuk kompresi citra yaitu

algoritma Discrete Wavelet Transform dan Embedded Zerotree Wevelet (Anwar et al,

2008), Approximate Matching and Run Length Encoding (Kumar et al, 2011), Algoritma Huffman dan Shannon-Fano (Adhitama, 2010). Berdasarkan hal yang telah

diuraikan di atas, peneliti akan menggunakan algoritma Arithmetic Coding dengan

Shannon-Fano untuk mengkompresi citra karena menurut penelitian sebelumnya dengan menggunakan kedua algoritma tersebut diharapkan akan memiliki kelebihan

yaitu mengkompresi citra menjadi ukuran yang lebih kecil dan citra yang dihasilkan

setelah dekompresi memiliki kualitas yang sama dengan citra sebelum dikompresi,

setelah itu peneliti akan membandingkan dan menganalisis kinerja kedua algoritma

dalam hal rasio kompresi serta lama waktu kompresi dan dekompresi. Melalui

penelitian ini peneliti mengharapkan dapat menemukan kelebihan dan kekurangan

dari masing-masing algoritma tersebut dalam hal rasio kompresi serta lama waktu

kompresi dan dekompresi citra beresktensi *.bmp.

1.2Rumusan Masalah

Pengiriman informasi dalam bentuk citra masih mengalami kendala dalam hal ukuran

yaitu citra yang memiliki ukuran yang besar sehingga sulit untuk melakukan

pengiriman dan pemindahan oleh karena itu peneliti akan melakukan penelitian

tentang bagaimana mengkompresi ukuran citra, agar mempermudah pengiriman dan

(19)

   

1.3Batasan Masalah

Dalam mengimplementasi dan menganalisis kinerja algoritma Arithmetic Coding dan

Shannon-Fano dilakukan beberapa batasan sebagai berikut : 1. Citra yang diproses adalah 256 color Bitmap (*.bmp)

2. Analisis yang dilakukan adalah dalam hal rasio kompresi, ukuran file,

kecepatan pada saat kompresi dan dekompresi.

3. File citra yang sudah dikompresi harus didekompresi terdahulu agar file citra bisa ditampilkan.

4. Bahasa pemograman yang digunakan untuk membuat sistem ini adalah Visual

Basic menggunakan software VB 2008 Express Edition.

1.4Tujuan Penelitian

Adapun tujuan Tugas Akhir ini adalah sebagai berikut:

1. Mengimplementasikan algoritma Arithmetic Coding dan Shannon-Fano ke

dalam bahasa pemograman komputer untuk kompresi citra.

2. Menganalisis kinerja algoritma Arithmetic Coding dan Shannon-Fano dalam

hal rasio kompresi, kecepatannya pada saat kompresi dan dekompresi.

1.5Manfaat Penelitian

Manfaat dari Tugas Akhir ini adalah sebagai berikut:

1. Mengetahui bagaimana mengimplementasikan algoritma Arithmetic Coding

dan Shannon-Fano ke dalam bahasa pemograman komputer untuk kompresi

citra berekstensi *.bmp.

2. Mengetahui algoritma yang efisien dalam hal kompresi citra dan hasil citra

yang telah terkompresi yang dapat meminimalkan pemakaian memory serta

(20)

   

1.6Metode Penelitian

Tahapan yang akan dilakukan pada pelaksanaan Tugas Akhir ini adalah sebagai

berikut:

1. Studi Literatur

Studi literatur yang dilakukan dalam penelitian ini adalah mengumpulkan

bahan referensi mengenai Kompresi Citra dengan menggunakan algoritma

Arithmetic Coding dan Shannon-Fano dari berbagai buku, jurnal, artikel dan beberapa referensi lainnya untuk pencapaian tujuan Tugas Akhir.

2. Analisis Algoritma

Pada tahap ini dilakukan analisis terhadap hasil studi literatur untuk

mengetahui dan mendapatkan pemahaman mengenai algoritma Arithmetic

Coding dan Shannon-Fano untuk menyelesaikan masalah kompresi citra. 3. Perancangan Sistem

Pada tahap perancangan sistem dilakukan perancangan arsitektur,

pengumpulan data pelatihan, merancang antarmuka. Proses perancangan

dilakukan berdasarkan hasil analisis studi literatur yang telah didapatkan.

4. Implementasi Sistem

Pada tahap implementasi sistem ini akan dilakukan pengkodean program

menggunakan bahasa pemrograman VB 2008 Express Edition.

5. Pengujian Sistem

Pada tahap ini memastikan aplikasi kompresi citra yang telah dibuat sudah

berjalan sesuai diharapkan, dan kemudian dianalisis kinerja kedua algoritma

tersebut.

6. Dokumentasi dan Penyusunan Laporan

Pada tahap ini dilakukan dokumentasi dan penyusunan laporan hasil

implementasi dan analisis algoritma Arithmetic Coding dan Shannon-Fano

(21)

   

1.7Sistematika Penulisan

Sistematika penulisan dari Tugas Akhir ini terdiri dari beberapa bagian utama sebagai

berikut:

BAB 1: PENDAHULUAN

Bab ini akan menjelaskan tentang latar belakang pemilihan judul Tugas

Akhir “Implementasi dan Analisis Kinerja Algoritma Arithmetic

Coding dan Shannon-Fano dalam Kompresi Citra BMP”, rumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian,

metode penelitian, sistematika penulisan.

BAB 2: LANDASAN TEORI

Bab ini akan membahas teori-teori mengenai kompresi data yaitu citra

serta beberapa prinsip yang melandasi pembuatan Tugas Akhir ini.

BAB 3: ANALISIS DAN PERANCANGAN SISTEM.

Bab ini berisi tentang uraian kinerja algoritma Arithmetic Coding dan

Shannon-Fano dalam hal rasio kompresi serta lama waktu kompresi dan dekompresi citra dan kemudian membahas rancangan sistem yang

akan dibuat.

BAB 4: IMPLEMENTASI DAN PENGUJIAN SISTEM

Bab ini berisikan penjelasan tentang implementasi algoritma Arithmetic

Coding dan Shannon-Fano ke dalam bahasa pemograman Visual Basic dan tentang spesifikasi kebutuhan perangkat keras (hardware) serta

melakukan pengujian program beserta analisis yang didapatkan dari

(22)

   

BAB 5: KESIMPULAN DAN SARAN

Pada bab terakhir ini akan berisi kesimpulan isi dari keseluruhan uraian

dari bab-bab sebelumnya dan saran-saran dari hasil diperoleh akan

(23)
(24)

LANDASAN TEORI

2.1 Definisi Citra

Citra adalah suatu representasi (gambaran), kemiripan, atau imitasi dari suatu objek.

Citra sebagai keluaran suatu sistem perekaman data dapat bersifat optik berupa foto,

bersifat analog berupa sinyal-sinyal video seperti gambar pada monitor televisi, atau

bersifat digital yang dapat langsung disimpan pada suatu media penyimpan. (Sutoyo et

al, 2009)

Menurut arti secara harfiah, citra (image) adalah gambar pada bidang dua

dimensi. Ditinjau dari sudut pandang matematis, citra merupakan fungsi menerus

(continue) dari intensitas cahaya pada bidang dua dimensi. Sumber cahaya menerangi

objek, objek memantulkan kembali sebagian dari berkasi cahaya. Pantulan cahaya ini

ditangkap oleh alat-alat optik, seperti mata pada manusia, kamera, pemindai

(scanner), dan lain-lain sehingga bayangan objek dalam bentuk citra dapat terekam.

Citra sebagai output dari suatu sistem perekaman data dapat bersifat:

1. Optik, berupa foto,

2. Analog berupa sinyal video, seperti gambar pada monitor televisi,

3. Digital yang dapat langsung disimpan pada suatu pita magnetic.

Citra dapat dikelompokkan menjadi dua bagian yaitu citra diam (still image) dan citra

bergerak (moving image). Citra diam adalah citra tunggal yang tidak bergerak.

Sedangkan citra bergerak adalah rangkaian citra diam yang ditampilkan secara

beruntun (sekuensial) sehingga memberi kesan pada mata sebagai gambar yang

bergerak. Setiap citra didalam rangkaian itu disebut frame. Gambar-gambar yang

tampak pada film layar lebar atau televisi pada hakikatnya terdiri dari ratusan sampai

(25)

2.2 Definisi Citra Digital

Citra digital dihasilkan dengan proses digitalisasi terhadap citra kontinu. Sama halnya

Proses digitalisasi dalam bentuk data lain, proses digitalisasi pada citra juga

merupakan proses pengubahan suatu bentuk data citra dari yang bersifat analog ke

digital. Yang mana proses ini dihasilkan dari peralatan digital yang langsung bisa

diproses oleh komputer. Proses ini dapat dijelaskan sebagai berikut. Ada sebuah objek

yang akan diambil gambarnya untuk dijadikan citra digital. Sumber cahaya diperlukan

untuk menerangi objek, yang berarti ada intensitas cahaya (brightness) yang diterima

oleh objek. Oleh objek, intensitas cahaya ini sebagian diserap dan sebagian lagi

dipantulkan ke lingkungan sekitar objek secara radikal. Sistem pencitraan (imaging)

menerima sebagian dari intensitas cahaya yang dipantul oleh objek tadi. Di dalam

sistem pencitraan terdapat sensor optik yang digunakan untuk mendeteksi intensitas

cahaya yang masuk ke dalam sistem. Keluaran dari sistem ini berupa arus yang

besarnya sebanding dengan intensitas cahaya yang mengenainya. Arus tersebut

kemudian dikonversi menjadi data digital yang kemudian dikirimkan ke unit penampil

atau unit pengolah lainnya. Secara keseluruhan hasil keluaran sistem pencitraan

berupa citra digital. Berikut ini gambar langkah-langkah pengolahan citra digital.

(26)

Pada gambar terdapat akuisisi citra yaitu tahap awal untuk mendapatkan citra

digital. Tujuan akuisisi citra adalah untuk menentukan data yang diperlukan dan

memilih metode perekaman citra digital. Tahap ini dimulai dari objek yang akan

diambil gambarnya, persiapan alat-alat, sampai pada pencitraan. Pencitraan adalah

kegiatan transformasi dari citra tampak (foto, gambar, lukisan, patung, pemandangan,

dan lain-lain) menjadi citra digital. Beberapa alat yang dapat digunakan untuk

pencitraan, yaitu video kamera, kamera digital, kamera konvensional, scanner, sinar

infra merah. Hasil akuisisi citra ini ditentukan oleh kemampuan sensor untuk

mendigitalisasi sinyal yang terkumpul pada sensor tersebut.

Kemudian masuk tahap preprocessing, tahapan ini diperlukan untuk menjamin

kelancaran pada proses berikutnya. Hal-hal penting yang dilakukan pada tingkatan ini

antaranya adalah peningkatan kualitas citra, menghilangkan noise, perbaikan citra,

transformasi, menentukan bagian citra yang akan diobservasi. Selanjutnya masuk pada

tahap segmentasi ini bertujuan untuk mempartisi citra menjadi bagian-bagian pokok

yang mengandung informasi penting. Misalnya, memisahkan objek dan latar

belakang. Kemudian tahap representasi dan deskripsi dalam hal ini representasi

merupakan suatu proses untuk merepresentasikan suatu wilayah sebagai suatu daftar

titik-titik koordinat dalam kura yang tertutup, dengan deskripsi luasan atau

parameternya.

Tahap pengenalan dan interpretasi, pengenalan bertujuan untuk memberi label

pada sebuah objek yang informasinya disediakan oleh descriptor, sedangkan tahap

interpretasi untuk memberi arti atau makna kepada kelompok objek-objek yang

dikenali. Basis pengetahuan sebagai basis data pengetahuan berguna untuk memandu

operasi dari masing-masing modul proses dan mengkontrol interaksi antara

modul-modul tersebut. Selain itu, basis pengetahuan juga digunakan sebagai referensi pada

proses template matching atau pada pengenalan pola.

Citra digital yang tersusun dalam bentuk grid. Setiap kotak yang terbentuk

(27)

intensitas warna pada piksel tersebut. Gambar 2.2 menunjukkan posisi koordinat citra

digital.

Gambar 2.2 Koordinat Citra Digital

Citra digital dinyatakan dengan matriks berukuran N x M (kolom / tinggi = N,

baris / lebar = M). Piksel mempunyai dua parameter, yaitu koordinat dan intensitas

warna. Nilai yang terdapat pada koordinat (x,y), yaitu besar intensitas warna dari

piksel di titik itu (Putra, 2010). Sehingga citra digital dapat ditulis dalam bentuk

matriks sebagai berikut :

f(x,y) =

Gambar 2.3 Matriks Citra Digital N x M

Berdasarkan gambaran tersebut, citra digital dapat dituliskan sebagai fungsi intensitas

f(x,y), di mana harga x (baris) dan y (kolom) merupakan koordinat posisi dan f(x,y) adalah nilai fungsi pada setiap titik (x,y) yang menyatakan besar intensitas citra atau

tingkat keabuan atau warna dari piksel di titik tersebut. Merepresentasikan sebuah

citra ukuran 8 x 8 piksel dengan mengambil derajat keabuan pada tiap piksel serta

matriks yang terdiri dari 8 baris dan 8 kolom. Koordinat

asal N-1

M-1

Y

X

(28)

Gambar 2.4 Ilustrasi Sistem Matriks Citra Digital 8 x 8 Piksel

Dapat dilihat dari gambar 2.4 bahwa pada piksel pertama pada koordinat (1,1)

mempunyai derajat keabuan 47 yang mewakili dari beberapa gradasi warna,

selanjutnya piksel kedua pada koordinat (2,1) memiliki derajat keabuan 52 yang

mewakili dari beberapa gradasi warna dan seterusnya.

Ada beberapa format citra digital, antara lain: BMP, PNG, JPG, GIF dan

sebagainya. Masing-masing format mempunyai perbedaan satu dengan yang lain

terutama pada header file. Namun ada beberapa yang mempunyai kesamaan, yaitu

penggunaan palette untuk penentuan warna piksel. Sebagai studi kasus dalam tugas akhir ini akan digunakan format citra *.bmp yang dikeluarkan oleh Microsoft.

2.2.1 Citra BMP

Format BMP, disebut dengan bitmap atau format DIB (Device Independent Bitmap)

adalah sebuah format citra yang digunakan untuk menyimpan citra bitmap digital

terutama pada sistem operasi Microsoft Windows atau OS/2. Pada citra berformat

*.bmp (bitmap) yang tidak terkompresi, piksel citra disimpan dengan kedalaman

warna 1, 4, 8, 16 atau 24 bit per piksel. (Ahmad, 2005)

Pada umumnya citra bitmap teridir dari 4 blok data yaitu: BMP header, Bit

(29)

digunakan untuk mengidentifikasi citra. Beberapa aplikasi pengolah citra akan

membaca blok ini untuk memastikan bahwa citra tersebut berformat bitmap dan tidak

dalam kondisi rusak. Bit information berisi informasi detail dari citra bitmap, yang

akan digunakan untuk menampilkan citra pada layar. Color pallete berisi informasi

warna yang digunakan untuk indeks warna bitmap, dan bitmap data berisi data citra

yang sebenarnya, piksel per piksel.

Model ruang warna yang digunakan pada citra bitmap adalah RGB (red,

green, dan blue). Sebuah ruang RGB dapat diartikan sebagai semua kemungkinan warna yang dapa dibuat dari tiga warna dasar red, green, dan blue. RGB sering digunakan di dalam sebagian besar aplikasi komputer karena dengan ruang warna ini

tidak diperlukan transformasi untuk menampilkan informasi di layar monitor.

Pada citra 256 warna setiap piksel panjangnya 8 bit, tetapi komponen warna

RGBnya disimpan di dalam tabel RGB yang disebut pallete. Setiap komponen

panjangnya 8 bit, jadi ada 256 nilai keabuan untuk warna merah, 256 nilai keabuan

untuk warna hijau, 256 nilai keabuan untuk warna biru. Nilai setiap piksel tidak

menyatakan derajat keabuan secara langsung, tetapi nilai piksel menyatakan indeks

tabel RGB yang memuat nilai keabuan merah (R), nilai keabuan hijau (G), nilai

keabuan biru (B) untuk masing-masing piksel yang bersangkutan. Namun pada citra

hitam-putih, nilai R = G = B untuk menyatakan bahwa citra hitam putih hanya

mempunya satu kanal warna. Citra hitam putih umumnya adalh citra 8 bit.

Citra yang lebih kaya warna adalah citra 24 bit. Setiap piksel panjangnya 24

bit, karena setiap piksel langsung menyatakan komponen warna merah, komponen

warna hijau, dan komponen warna biru. Masing-masing komponen panjangnya 8 bit.

Citra 24 bit disebut juga citra 16 juta warna, karena citra ini mampu menghasilkan

(30)

Tabel 2.1 Contoh Warna 24 bit

Gambar 2.5 Komposisi Warna RGB

2.3Operasi-Operasi pada Pengolahan Citra

Operasi-operasi yang dilakukan pada pengolahan citra secara umum dapat

dikelompokkan dalam beberapa jenis, yaitu: (Sigit, 2005)

1. Perbaikan Kualitas (Image Enchancement)

Operasi perbaikan kualitas citra bertujuan untuk memperbaiki kualitas citra

dengan cara memanipulasi parameter-parameter citra. Melalui operasi ini,

ciri-ciri khusus yang terdapat di dalam citra dapat lebih ditonjolkan. Beberapa

operasi perbaikan citra antara lain: perbaikan kontras gelap / terang, perbaikan

(31)

2. Kompresi Citra (Image Compression)

operasi kompresi citra bertujuan untuk dapat merepresentasikan citra dalam

bentuk yang lebih kompak sehingga memerlukan memori yang lebih sedikit.

Yang menjadi perhatian penting dalam kompresi citra adalah mempertahankan

kualitas citra agar tetap baik.

3. Segmentasi Citra (Image Segmentation)

Operasi segmentasi citra bertujuan untuk memecah suatu citra ke dalam

beberapa segmen dengan suatu kriteria tertentu. Jenis operasi ini berkaitan erat

dengan pengenalan pola.

4. Analisis Citra (Image Analysis)

Operasi analisis citra bertujuan untuk menghitung besaran kuantitatif dari citra

untuk menghasilkan deskripsinya. Teknik analisis citra adalah mengekstraksi

ciri-ciri tertentu yang sangat membantu dalam identifikasi objek. Proses

segmentasi juga diperlukan untuk melokalisasi objek dari sekelilingnya.

Contoh dari operasi analisis citra yaitu pendeteksian tepi objek, ekstraksi batas,

dan representasi daerah.

5. Rekonstruksi Citra (Image Reconstruction)

Operasi rekonstruksi citra bertujuan untuk membentuk ulang objek dari

beberapa citra hasi proyeksi. Operasi rekonstruksi citra banyak digunakan di

dalam bidang medis.

2.4 Kompresi Citra

Kompresi citra yaitu aplikasi kompresi data yang dilakukan terhadap citra digital

dengan tujuan untuk mengurangi redudansi dari data yang terdapat dalam citra

(32)

Kompresi citra merupakan proses untuk mereduksi ukuran suatu data untuk

menghasilkan representasi digital yang padat atau mampat (compact) namun tetap

dapat mewakili kuantitas informasi yang terkandung pada data tersebut (Putra, 2010).

Pada dasarnya teknik kompresi citra digunakan pada proses penyimpanan data

dan proses transmisi data. Data dan informasi adalah dua hal berbeda. Pada data

terkandung suatu informasi. Namun tidak semua bagian data terkait dengan informasi

tesebut atau pada suatu data terdapat bagian-bagian data yang berulang untuk

mewakili informasi yang sama (Putra, 2010).

Semakin besar ukuran citra, semakin besar memori yang dibutuhkan, namun

kebanyakan citra mengandung duplikasi data, yaitu:

1. Suatu piksel memiliki intensitas yang sama dengan piksel tetangganya, sehingga

penyimpanan piksel membutuhkan memori (space) yang lebih besar sehingga

sangat memboroskan tempat.

2. Citra banyak mengandung bagian (region) yang sama sehingga bagian yang sama

ini tidak perlu dikodekan berulang kali karena tidak berguna.

Contohnya citra langit biru dengan beberapa awan putih yang memiliki banyak

intensitas dan region yang sama.

Kompresi citra bertujuan untuk meminimalkan jumlah bit yang diperlukan

untuk merepresentasikan citra. Apabila sebuah foto bewarna berukuran 3 inci x 4 inci

dengan tingkat resolusi sebesar 500 dot per inch (dpi), maka diperlukan 3 x 4 x 500 x

500 = 3.000.000 dot (piksel). Setiap piksel terdiri dari 3 byte dimana masing masing

byte merepresentasikan warna merah, hijau, dan biru. Sehingga citra digital tersebut memerlukan volume penyimpanan sebesar 3.000.000 x 3 byte + 1080 = 9.001.080 byte

setelah ditambahkan jumlah byte yang diperlukan untuk menyimpan format (Header)

citra. Oleh karena itu diperlukan kompresi citra sehingga ukuran citra tersebut menjadi

lebih kecil dan waktu pengiriman citra menjadi lebih cepat. Citra yang belum

(33)

citra terkompresi (compressed image). Secara umum proses kompresi dan dekompresi

dapat dilihat pada gambar di bawah ini:

Gambar 2.6 Alur Kompresi dan Dekompresi

Proses kompresi didasarkan pada kenyataan bahwa hampir semua jenis data

selalu terdapat pengulangan pada komponen data yang dimilikinya, misalnya di dalam

suatu citra akan terdapat pengulangan warna dari 0 hingga 255. Melalui proses

kompresi berusaha untuk menghilangkan unsur pengulangan ini dengan mengubahnya

sedemikian rupa sehingga ukuran data menjadi lebih kecil.

Kompresi data sangat populer sekarang ini karena dua alasan yaitu (Salomon,

2007):

1. Orang-orang lebih suka mengumpulkan data. Tidak peduli seberapa besar

media penyimpanan yang dimilikinya. Akan tetapi cepat atau lambat akan

terjadi overflow.

2. Orang-orang tidak suka menunggu waktu yang lama untuk memindahkan

data. Misalnya ketika duduk di depan komputer untuk menunggu halaman

Web terbuka atau men-download sebuah file.

Alasan mengapa kompresi data sangat dibutuhkan karena semakin banyak informasi

saat ini yang digunakan dalam bentuk digital dan semakin lama ukuran yang

(34)

2.4.1 Teknik Kompresi Citra

Kompresi data dapat dibagi ke dalam dua teknik yaitu lossless compression dan lossy

compression. (Pu, 2006)

1. Lossless Compression

Pada teknik ini tidak ada kehilangan informasi. Jika data dikompresi secara lossless,

data asli dapat direkontruksi kembali sama persis dari data yang telah dikompresi,

dengan kata lain data asli tetap sama sebelum dan sesudah kompresi, secara umum

teknik lossless digunakan untuk penerapan yang tidak bisa mentoleransi setiap perbedaan antara data asli dan data yang telah direkonstruksi. Data berbentuk citra

untuk medis misalnya harus dikompresikan menggunakan teknik lossless, karena

kehilanggan sebuah piksel atau warna saja dapat mengakibatkan kesalahpahaman.

Lossless compression disebut juga dengan reversible compression karena data asli bisa dikembalikan dengan sempurna. Akan tetapi rasio kompresi pada teknik ini

rendah. Contoh metode ini adalah Shannon-Fano, Huffman Coding, Arithmetic

Coding dan lain sebagainya.

Rasio kompresi citra adalah ukuran presentasi citra yang telah berhasil

dikompresi. Secara umum matematis rasio kompresi citra dituliskan sebagai berikut.

(Pu, 2006)

Rasio Kompresi = x 100%

Gambar 2.7 Rumus Rasio Kompresi

Misalkan rasio kompresi adalah 40%, artinya 40% dari citra semula telah berhasil

(35)

Gambar 2.8 Ilustrasi Kompresi Lossless

2. Lossy Compression

Pada teknik ini akan terjadi kehilangan sebagian informasi. Data yang telah

dikompresi dengan teknik ini secara umum tidak bisa direkonstruksi sama persis dari

data aslinya. Di dalam banyak penerapan, rekonstruksi yang tepat bukan suatu

masalah, tergantung data yang diperlukan.

Biasanya teknik ini membuang bagian-bagian data yang sebenarnya tidak

begitu berguna, tidak begitu dirasakan, tidak begitu dilihat sehingga manusia masih

beranggapan bahwa data tersebut masih bisa digunakan walaupun sudah dikompresi.

Lossy compression disebut juga irreversible compression karena data asli tidak dapat dikembalikan seperti semula. Kelebihan teknik ini adalah rasio kompresi yang tinggi

dibanding metode lossless. Contoh metode ini adalah Transform Coding, Wavelet, dan

lain-lain.

BAAABBA 000011100101011

000011100101011 BAAABBA Algoritma

Coding

(36)

Gambar 2.9 Ilustrasi Kompresi Lossy

Ada beberapa parameter yang digunakan untuk menilai kehandalan suatu

kompresi. Diantara masing-masing parameter tersebut terdapat hubungan yang erat

dan saling mempengaruhi.

1. Faktor kompresi

Faktor kompresi adalah perbandingan jumlah data yang belum dikompresi

terhadap jumlah data hasil kompresi. Semakin bagus suatu kompresi maka faktor

kompresinya semakin tinggi. Akan tetapi faktor kompresi yang tinggi akan

mengakibatkan kualitas yang menurun. Faktor penting kompresi data, terdapat

empat faktor penting yang perlu diperhatikan, yaitu: Time Process (waktu yang

dibutuhkan dalam menjalankan proses), Completeness (kelengkapan data setelah

file-file tersebut dikompres), Ratio Compress (ukuran data setelah dilakukan kompresi), Optimaly (perbandingan apakah ukuran file sebelum dikompres sama atau tidak sama dengan file yang telah dikompres). Tidak ada metode kompresi

yang paling efektif untuk semua jenis file.

2. Kualitas

Suatu teknik kompresi dikatakan baik apabila kualitas data hasil decoding

sangatlah mirip bila dibandingkan dengan aslinya. Faktor kualitas ini sangat erat

dengan faktor kompresi.

(37)

3. Kompleksitas

Kompleksitas dari suatu teknik kompresi menentukan sulit atau tidaknya

implementasi teknik kompresi tersebut.

4. Interaktif

Pengguna dapat bebas untuk berinteraksi dengan informasi multimedia untuk

mengubah, mencari informasi yang diinginkan atau membuang informasi yang

tidak diinginkan.

2.4.2 Algoritma Arithmetic Coding

Prinsip Arithmetic Coding diperkenalkan pertama kali oleh Peter Elias sekitar tahun 1960-an. Algoritma ini melakukan proses pengkodean dengan menggantikan setiap

simbol masukan dengan suatu codeword (Pu, 2006). Arithmetic Coding memiliki

kelebihan terutama ketika memproses kumpulan abjad yang relatif sedikit. Awalnya

Arithmetic Coding diperkenalkan oleh Shannon, Fano dan Elias. Tujuannya memberikan ide alternatif yang pada saat itu setiap proses pengkodean dilakukan

dengan menggantikan setiap simbol masukan digantikan dengan sebuah angka single

floating point. Sehingga semakin panjang dan kompleks pesan yang dikodekan maka semakin banyak bit yang diperlukan untuk keperluan tersebut. Sejak tahun 1960-an

hingga sekarang Algoritma Arithmetic Coding mulai berkembang para peneliti mulai

mengembangkan Algoritma Arithmetic Coding untuk melakukan kompresi pada

multimedia yaitu: citra, audio, video dll.

Pada umumnya, algoritma kompresi data didasarkan pada pemilihan cara

melakukan penggantian satu atau lebih elemen-elemen yang sama dengan kode

tertentu. Berbeda dengan cara tersebut, Arithmetic Coding menggantikan sautu deret

simbol input dalam suatu file data dengan sebuah bilangan menggunakan proses

aritmatika. Semakin panjang dan semakin kompleks pesan dikodekan, semakin

(38)

Output dari Arithmetic Coding ini adalah satu angka yang lebih kecil dari 1 dan lebih besar atau sama dengan 0. Angka ini secara unik dapat didekompresikan

sehingga menghasilkan deretan simbol yang dipakai untuk menghasilkan angka

tersebut.

Implementasi Arithmetic Coding harus memperhatikan kemampuan encoder dan decoder. Hal ini dapat menyebabkan kesalahan atau error apabila suatu

Arithmetic Coding mempunyai kode dengan floating point yang sangat panjang. Sehingga diberikan solusi berupa modifikai algoritma Arithmetic Coding dengan

menggunakan bilangan integer. Modifikasi ini mampu mengatasi keterbatasan

pengolahan floating point dalam melakukan kompresi dan dekompresi data. Modifikasi dengan bilangan integer juga dipakai karena jumlah bit kodenya lebih

sedikit dan mempercepat proses kompresi dan dekompresi data karena perhitungan

integer jauh lebih cepat dari perhitungan floating point serta dapat diimplementasikan dalam program.

Berikut ini algoritma encoding dan decoding pada Arithmetic Coding. Akan digunakan dua variabel low dan high untuk mendefinisikan interval (low, high). (Pu,

2006)

Proses encoding, algoritma Arithmetic Coding:

Langkah 1: Set low = 0.0 (kondisi awal)

Proses decoding, algoritma Arithmetic Coding:

Langkah 1: Ambil Encoded-Symbol (ES) Langkah 2: Do

Langkah 3: Cari range dari simbol yang melingkupi Encoded-Symbo(ES) Langkah 4: Cetak simbol

Langkah 5: Code-Range = high_range – low_range

Langkah 6: Encoded-Symbol = Encoded-Symbol – low_range

Langkah 7: Encoded-Symbol = Encoded-Symbol / Code-Range

(39)

2.4.3 Algoritma Shannon-Fano

Algoritma Shannon-Fano merupakan algoritma pertama yang diperkenalkan untuk kompresi sinyal digital pada bukunya yang berjudul “A Mathematical Theory of

Communication”. Algoritma ini dikembangkan secara mandiri oleh Claude Shannon dan Robert Fano dalam dua publikasi terpisah pada tahun yang sama yaitu pada tahun

1949. Algoritma Shannon-Fano adalah salah satu banyak yang dikembangkan oleh

Claude Shannon dianggap sebagai “Father of Information Theory” yaitu membuat kemajuan dalam kaitannya dengan transfer data dan komunikasi pada umumnya. Pada

tahun 1976 Robert Fano menerima Claude Shannon Award untuk karyanya dalam Information Theory. Hingga sekarang para peneliti mulai mengembangkan Algoritma Shannon-Fano untuk melakukan kompresi pada multimedia yaitu: citra, audio, video dll.

Algoritma Shannon-Fano didasarkan pada variable-length code yang berarti karakter pada data yang akan dikodekan direpresentasikan dengan kode (codeword)

yang lebih pendek dari karakter yang ada pada data. Jika frekuensi kemunculan

karakter semakin tinggi, maka kode semakin pendek, dengan demikian kode yang

dihasilkan tidak sama panjang, sehingga kode tersebut bersifat unik. Berikut

langkah-langkah kompresi dan dekompresi pada algoritma Shannon-Fano. (Pu, 2006)

Langkah-langkah kompresi menggunakan algoritma Shannon-Fano.

1. Buatlah daftar peluang atau frekuensi kehadiran setiap simbol dari data

yang akan dikodekan.

2. Urutkanlah daftar tersebut menurut frekuensi kehadiran simbol secara

menurun (dari simbol yang frekuensi kemunculan paling banyak sampai

simbol dengan frekuensi kemunculan paling sedikit).

3. Bagilah daftar tersebut menjadi dua bagian dengan pembagian didasari

pada jumlah total frekuensi suatu bagian (disebut bagian atas) sedekat

mungkin dengan jumlah total frekuensi dengan bagian yang lain (disebut

bagian bawah).

4. Daftar bagian atas dinyatakan dengan digit 0 dan bagian bawah dinyatakan

(40)

atas akan dimulai dengan 0 dan kode untuk simbol-simbol pada bagian

bawah akan dimulai dengan 1.

5. Lakukanlah proses secara rekursif langkah 3 dan 4 pada bagian atas dan

bawah. Bagilah menjadi kelompok-kelompok dan tambahkan bit-bit pada

kode sampai setiap simbol mempunyai kode yang bersesuaian pada pohon

tersebut.

Langkah-langkah dekompresi menggunakan algoritma Shannon-Fano.

1. Baca bit pertama dari serangkaian kode yang dihasilkan

2. Jika bit tersebut ada dalam SF Code, maka bit tersebut diterjemahkan menjadi simbol yang sesuai dengan bit tersebut.

3. Jika bit tersebut tidak ada dalam SF Code, gabungkan bit tersebut dengan bit selanjutya dalam rangkaian kode, cocokkan dengan tabel hasil

pengkodean.

4. Lakukan langkah 3 sampai ada rangkaian bit yang cocok dengan SF Code,

terjemahkan rangkaian bit tersebut menjadi simbol yang sesuai.

5. Baca bit selanjutnya dan ulangi langkah 2, 3, dan 4 sampai rangkaian kode

habis.

2.5 Pengenalan Visual Basic

Visual Basic berawal dari bahasa BASIC yang dikembangkan mulai dari tahun 1963. BASIC adalah singkatan dari Beginner’s All Purpose Symbolic Instruction Code.

Sesuai namanya bahasa BASIC dibuat untuk tujuan memudahkan pengguna agar

dapat dengan mudah mempelajari, membuat, dan mengembangkan program

komputer.

Visual Basic merupakan pengembangan lebih lanjut dari bahasa BASIC yang dilakukan oleh Microsoft Visual Basic ditujukan sebagai perangkat untuk membuat

dan mengembangkan program secara cepat (Rapid Application Development: RAD).

Terutama jika menggunakan antarmuka berbasis windows (Graphical User Interface:

(41)

Visual Basic 1.0 merupakan versi pertama Visual Basic dan dirilis pada tahun 1991. Visual Basic 1.0 ditujukan untuk sistem operasi Microsoft DOS. Selanjutnya diteruskan dengan Visual Basic 2.0 di tahun 1992, versi 3.0 tahun 1993, versi 4.0

tahun 1995, versi 5.0 tahun 1997, dan versi 6.0 tahun 1998.

Visual Basic 6.0 sangat populer dan masih banyak dipakai hingga saat ini. Sayangnya, dukungan terhadapa Visual Basic 6.0 telah dihentikan oleh Microsoft

mulai bulan maret 2008. Namun, program yang dibuat dengan Visual Basic 6.0 masih

dapat dijalankan pada sistem operasi terbaru seperti Windows Server 2008 maupun

Windows Vista. Visual Basic .Net diluncurkan Februari 2002, merupakan penerus dari Visual Basic 6.0 dan menggunakan platform .Net yang berbeda dengan Visual Basic sebelumnya.

2.5.1 Microsoft Visual Basic 2008 Express Edition

Visual Basic 2008 Express Edition yang lebih lengkap dan mudah digunakan untuk mencari komponen atau objek yang diinginkan. Perhatikan antar muka yang dapat

(42)

Gambar 2.10 Antarmuka pada Aplikasi Visual Basic 2008 Express Edition

Keterangan:

Tabel 2.2 Keterangan Gambar 2.11

Antarmuka Keterangan

Menu bar Menu standar pada Visual Basic

Toolbar Daftar tool (perangkat) untuk menjalankan perintah yang sering digunakan

Toolbox Daftar kontrol yang dapat ditambahkan ke dalam program sebagai antarmuka (interface)

Form Designer Digunakan untuk mengedit tampilan form serta mengatur posisi kontrol pada form

Solution Explorer Digunakan untuk mengolah file dan projek berhubungan dengan solution

Properties Digunakan untuk mengedit properties dari form dan kontrol yang sedang diedit

(43)
(44)

BAB 3

ANALISIS DAN PERANCANGAN SISTEM

3.1 Analisis Kinerja Algoritma Arithmetic Coding

Penelitian ini akan dilakukan analisis dan perancangan perangkat lunak

pengkompresian citra yang berkeskstensi *.bmp dengan menggunakan algoritma

Arithmetic Coding. Proses kompresi citra didasarkan pada kenyataan bahwa pada semua citra selalu terdapat pengulangan pada komponen citra yang dimilikinya,

misalnya di dalam suatu data citra akan terdapat pengulangan penggunaan intensitas

warna dari angka 0 – 255 sesuai warna di tiap piksel. Kompresi citra melalui proses

encoding berusaha untuk menghilangkan unsur pengulangan ini dengan mengubahnya sehingga ukuran citra menjadi kecil.

Proses pengurangan unsur pengulangan ini dapat dilakukan dengan memakai

beberapa teknik kompresi. Misalnya jika suatu komponen muncul berulang kali dalam

suatu data, maka komponen tersebut tidak harus dikodekan berulang kali pula tetapi

dapat dikodekan dengan menulis frekuensi munculnya komponen dan di mana

komponen tersebut muncul. Teknik kompresi data lainnya, berusaha untuk mencari

suatu bentuk kode yang lebih pendek untuk suatu komponen yang sering muncul.

Dalam proses kompresi, terdapat konsep probabilitas yang menunjukkan suatu ukuran

berapa banyak informasi yang terdapat dalam suatu rangkaian citra atau yang disebut

entropy yang dapat direpresentasikan secara matematis.

Pada kinerja algoritma Arithmetic Coding yang sudah dijelaskan pada bab 2, bahwa Arithmetic Coding menggantikan suatu deret simbol input dalam suatu file data dengan sebuah bilangan menggunakan proses aritmatika. Semakin panjang dan

semakin kompleks pesan yang dikodekan, semakin banyak bit yang diperlukan untuk

(45)

acak unik dapat di-decode sehingga menghasilkan deretan simbol yang dipakai untuk menghasilkan angka tersebut. Untuk menghasilkan angka output tersebut, tiap simbol yang akan di-encode diberi satu set nilai probabilitas.

Proses encoding, algoritma Arithmetic Coding:

Langkah 1: Set low = 0.0 (kondisi awal) Langkah 2: Set high = 1.0 (kondisi awal) Langkah 3: While (simbol input masih ada) do

Langkah 4: Ambil simbol input

Langkah 5: Code-Range = high – low

Langkah 6: High = low + Code-Range*high_range (simbol) Langkah 7: Low = low + Code-Range*low_range (simbol) Langkah 8: End While

Langkah 9: Output Low

Proses decoding, algoritma Arithmetic Coding:

Langkah 1: Ambil Encoded-Symbol (ES) Langkah 2: Do

Langkah 3: Cari range dari simbol yang melingkupi Encoded-Symbol(ES) Langkah 4: Cetak simbol

Langkah 5: Code-Range = high_range – low_range

Langkah 6: Encoded-Symbol = Encoded-Symbol - low_range

Langkah 7: Encoded-Symbol = Encoded-Symbol / Code-Range

(46)

3.1.1 Proses Kompresi Arithmetic Coding

   

(47)

3.1.2 Proses Dekompresi Arithmetic Coding

(48)

3.1.3 Kompresi Arithmetic Coding pada Citra

Contoh penggunaan algoritma Arithmetic Coding pada citra adalah misalkan pada citra berwarna dengan ukuran 2 x 2 piksel dapat dilihat pada gambar 3.3 akan

di-encode maka diperoleh probabilitas untuk setiap piksel. Setelah probabilitas tiap piksel telah diketahui, tiap piksel akan diberikan range tertentu yang nilainya antara 0 dan 1, sesuai dengan probabilitas yang ada. Dalam hal ini tidak ada ketentuan

pengurutan nilai frekuensi, asalkan antara encoder dan decoder melakukan hal yang sama.

Gambar 3.3 Citra Berwarna 2 x 2 Piksel

diproses dalam bentuk matriks:

0 255 0 255 255 255

255 239 239 255 239 213

Gambar 3.4 Matriks Citra Berwarna 2 x 2 Piksel

Matriks di atas akan mewakili sebuah citra berwarna yang berukuran 2 x 2

piksel, di mana nilai setiap RGB menyatakan tiap warna pada piksel, kemudian hitung

jumlah frekuensi kemunculan pada setiap simbol warna pada citra. Setelah itu akan

diperoleh probabilitas untuk setiap simbol, kemudian tiap simbol akan diberikan

range tertentu yang nilainya 0 dan 1, sesuai dengan probabilitas yang ada. Hal ini dapat dilihat pada tabel 3.1 seperti berikut.

Warna Hijau

(49)

Tabel 3.1 Tabel Probabilitas dan Range untuk Gambar 3.4

No Simbol Frekuensi Probabilitas Range

1 0 2 2/12=0,17 0,0≤0<0,17 0,17≤255<0,67 : Nilai “255” memiliki range dari 0,17 sampai dengan 0,67 0,67≤239<0,92 : Nilai “239” memiliki range dari 0,67 sampai dengan 0,92 0,92≤213<1,00 : Nilai “213” memiliki range dari 0,92 sampai dengan 1

Selanjutnya dilakukan proses Arithmetic encoding pada gambar 3.2 yaitu sebagai berikut.

Kemudian, didapatkan nilai-nilai berikut:

High = low + CR*high_range (0)

= 0 + 1*0,17 = 0,17

Low = low + CR*low_range (0)

= 0 + 1*0,0 = 0,0

2. Perhitungan Simbol 255

Low = 0,0

Kemudian, didapatkan nilai-nilai berikut:

High = low + CR*high_range (255)

= 0,0 + 0,17*0,67 = 0,1139

Low = low + CR*low_range (255)

= 0,0 + 0,17*0,17 = 0,0289

3. Perhitungan Simbol 0

Low = 0,0289

High = 0,1139

CR = HighLow

(50)

= 0,085

High_range (0) = 0,17

Low_range (0) = 0,0

Kemudian, didapatkan nilai-nilai berikut:

High = low + CR*high_range (0)

4. Perhitungan Simbol 255

Low = 0,0289

Kemudian, didapatkan nilai-nilai berikut:

High = low + CR*high_range (255)

5. Perhitungan Simbol 255

Low = 0,0313565

High = 0,0385815

CR = HighLow

= 0,0385815 – 0,0313565

= 0,007225

High_range (255) = 0,67

Low_range (255) = 0,17

Kemudian, didapatkan nilai-nilai berikut:

High = low + CR*high_range (255)

= 0,0313565 + 0,007225*0,67

= 0,03619725

Low = low + CR*low_range (255)

= 0,0313565 + 0,007225*0,17

= 0,03258475

6. Perhitungan Simbol 255

Low = 0,03258475

High = 0,03619725

CR = HighLow

= 0,03619725 – 0,03258475

= 0,0036125

High_range (255) = 0,67

Low_range (255) = 0,17

Kemudian, didapatkan nilai-nilai berikut:

High = low + CR*high_range (255)

7. Perhitungan Simbol 255

Low = 0,033198875

High = 0,035005125

CR = HighLow

= 0,035005125 – 0,033198875

= 0,00180625

High_range (255) = 0,67

Low_range (255) = 0,17

Kemudian, didapatkan nilai-nilai berikut:

High = low + CR*high_range (255)

=0,033198875+0,0018062*0,67

(51)

Low = low + CR*low_range (255)

=0,033198875+0,0018062*0,17

= 0,0335059375

8. Perhitungan Simbol 239

Low = 0,0335059375

Kemudian, didapatkan nilai-nilai berikut:

High = low + CR*high_range (239)

=0,0335059375+ 0,000903*0,92

= 0,0343368125

Low = low + CR*low_range (239)

=0,0335059375+ 0,000903125*0,67

= 0,03411103125

9. Perhitungan Simbol 239

Low = 0,03411103125

Kemudian, didapatkan nilai-nilai berikut:

High = low + CR*high_range (239)

10. Perhitungan Simbol 255

Low = 0,0342623046875

Kemudian, didapatkan nilai-nilai berikut:

High = low + CR*high_range (255)

=0,0342623046875+

0,0000564453125*0,67

= 0,034300123046875

Low = low + CR*low_range (255)

=0,0342623046875+

0,0000564453125*0,17

= 0,034271900390625

11. Perhitungan Simbol 239

Low = 0,034271900390625

Kemudian, didapatkan nilai-nilai berikut:

High = low + CR*high_range (239)

=0,034271900390625+

0,00002822265625*0,92

= 0,034297865234375

Low = low + CR*low_range (239)

=0,034271900390625+

(52)

= 0,0342908095703125

12. Perhitungan Simbol 213

Low = 0,0342908095703125

Kemudian, didapatkan nilai-nilai berikut:

High = low + CR*high_range (239)

=0,0342908095703125+

0,0000070556640625*1

= 0,034297865234375

Low = low + CR*low_range (239)

=0,0342908095703125+

0,0000070556640625*0,92

=0,03429730078125

Dalam bentuk tabel maka data hasil encoding dapat dilihat seperti tabel 3.2

Tabel 3.2 Proses Encoding untuk Gambar 3.4

No Simbol Low High CR

5 255 0,03258475 0,03619725 0,007225

6 255 0,033198875 0,035005125 0,0036125

7 255 0,0335059375 0,0344090625 0,00180625

8 239 0,03411103125 0,0343368125 0,000903125

9 239 0,0342623046875 0,03431875 0,00022578125

10 255 0,034271900390625 0,034300123046875 0,0000564453125

11 239 0,0342908095703125 0,034297865234375 0,00002822265625

12 213 0,03429730078125 0,034297865234375 0,0000070556640625

Dari proses tersebut didapat nilai low = 0,03429730078125. Nilai inilah yang direpresentasikan untuk mewakili citra pada gambar 3.4. dalam hal ini simbol akhir

sebuah pesan dapat menggunakan simbol khusus misalnya EOM (End Of Message)

(53)

3.1.4 Dekompresi Arithmetic Coding pada Citra

Selanjutnya akan dilakukan proses Arithmetic decoding, dalam hal ini untuk data yang telah di-encode, proses decoding berikut dilakukan.

ES = 0,03429730078125

Dibandingkan nilai ini dengan range simbol berikut.

Tabel 3.3 Tabel Range Probabilitas

No Nilai Frekuensi Probabilitas Range

1 0 2 2/12=0,17 0,0≤0<0,17

2 255 6 6/12=0,5 0,17≤255<0,67

3 239 3 3/12=0,25 0,67≤239<0,92

4 213 1 1/12=0,08 0,92≤213<1,00

1. Perhitungan Simbol 0 dengan nilai

= 0,03429730078125 - 0,0

= 0,03429730078125

ES = ES / CR

= 0,03429730078125 / 0,17

= 0,201748828125

2. Perhitungan Simbol 255 dengan nilai

ES = 0,201748828125

Low_range (255) = 0,17

High_range (255) = 0,67

CR=high_range(255)–low_range (255)

= 0,67 - 0,17

= 0,5

ES = ES – low_range (255) 

= 0,201748828125- 0,17

= 0,031748828125

ES = ES / CR

= 0,031748828125 / 0,5

= 0,06349765625

3. Perhitungan Simbol 0dengan nilai ES =

0,06349765625

= 0,06349765625 / 0,17

(54)

4. Perhitungan Simbol 255 dengan nilai

ES = 0,373515625

Low_range (255) = 0,17

High_range (255) = 0,67

CR=high_range(255)–low_range (255)

= 0,67 - 0,17

5. Perhitungan Simbol 255 dengan nilai

ES = 0,40703125

Low_range (255) = 0,17

High_range (255) = 0,67

CR=high_range(255)–low_range (255)

= 0,67 - 0,17

6. Perhitungan Simbol 255 dengan nilai

ES = 0,4740625

Low_range (255) = 0,17

High_range (255) = 0,67

CR=high_range(255)– low_range(255)

= 0,67 - 0,17

7. Perhitungan Simbol 255 dengan nilai

ES = 0,608125

Low_range (255) = 0,17

High_range (255) = 0,67

CR=high_range(255)–low_range (255)

= 0,67 - 0,17

8. Perhitungan Simbol 239 dengan nilai

ES = 0,87625

Low_range (239) = 0,67

High_range (239) = 0,92

CR=high_range(239)–low_range (239)

= 0,92 - 0,67

9. Perhitungan Simbol 239 dengan nilai

ES = 0,825

(55)

High_range (239) = 0,92

CR=high_range(239)–low_range (239)

= 0,92 - 0,67

10. Perhitungan Simbol 255 dengan nilai

ES = 0,62

Low_range (255) = 0,17

High_range (255) = 0,67

CR=high_range(255)–low_range (255)

= 0,67 - 0,17

11. Perhitungan Simbol 239 dengan nilai

ES = 0,9

Low_range (239) = 0,67

High_range (239) = 0,92

CR=high_range(239)–low_range (239)

= 0,92 - 0,67

12. Perhitungan Simbol 213 dengan nilai

ES = 0,92

Low_range (213) = 0,92

High_range (213) = 1

CR=high_range(213)–low_range (213)

= 1 - 0,92

Sampai di sini perhitungan dihentikan karena diperoleh nilai ES = 0. Hasil

(56)

Tabel 3.4 Proses Decoding untuk Gambar 3.4

Maka, diperoleh ES = 0,03429730078125 bersesuaian dengan citra pada gambar 3.4

3.2 Analisis Kinerja Algoritma Shannon-Fano

Model pertama yang muncul untuk kompresi sinyal digital adalah Shannon Fano.

Ditemukan Shannon dan Fano pada tahun 1948, kemudian mengembangkan algoritma

ini yang menghasilkan codeword biner untuk setiap simbol unik yang terdapat pada data file.

Teknik coding Shannon-Fano merupakan salah satu algoritma pertama yang

tujuannya adalah membuat codeword dengan redudansi minimum. Algoritma

Shannon-Fano tergantung pada probabilitas dari setiap simbol yang hadir pada suatu data. Berdasarkan probabilitas tersebut kemungkinan dibentuk daftar kode untuk

setiap simbol dengan ketentuan sebagai berikut.

1. Setiap simbol berbeda memiliki kode berbeda.

2. Simbol dengan probabilitas kehadiran yang lebih rendah memiliki kode

jumlah bit yang lebih panjang dan simbol dengan probabilitas yang lebih

tinggi memiliki jumlah bit yang lebih pendek.

3. Meskipun memiliki panjang kode yang berbeda, simbol tetap dapat

(57)

Langkah-langkah kompresi menggunakan algoritma Shannon-Fano.

1. Buatlah daftar peluang atau frekuensi kehadiran setiap simbol dari data

yang akan dikodekan.

2. Urutkanlah daftar tersebut menurut frekuensi kehadiran simbol secara

menurun (dari simbol yang frekuensi kemunculan paling banyak sampai

simbol dengan frekuensi kemunculan paling sedikit).

3. Bagilah daftar tersebut menjadi dua bagian dengan pembagian didasari

pada jumlah total frekuensi suatu bagian (disebut bagian atas) sedekat

mungkin dengan jumlah total frekuensi dengan bagian yang lain (disebut

bagian bawah).

4. Daftar bagian atas dinyatakan dengan digit 0 dan bagian bawah dinyatakan

dengan digit 1. Hal tersebut berarti kode untuk simbol-simbol pada bagian

atas akan dimulai dengan 0 dan kode untuk simbol-simbol pada bagian

bawah akan dimulai dengan 1.

5. Lakukanlah proses secara rekursif langkah 3 dan 4 pada bagian atas dan

bawah. Bagilah menjadi kelompok-kelompok dan tambahkan bit-bit pada

kode sampai setiap simbol mempunyai kode yang bersesuaian pada proses

tersebut.

Langkah-langkah dekompresi menggunakan algoritma Shannon-Fano. 1. Baca bit pertama dari serangkaian kode yang dihasilkan

2. Jika bit tersebut ada dalam SF Code, maka bit tersebut diterjemahkan menjadi simbol yang sesuai dengan bit tersebut.

3. Jika bit tersebut tidak ada dalam SFCode, gabungkan bit tersebut dengan bit selanjutya dalam rangkaian kode, cocokkan dengan tabel hasil

pengkodean.

4. Lakukan langkah 3 sampai ada rangkaian bit yang cocok dengan SFCode, terjemahkan rangkaian bit tersebut menjadi simbol yang sesuai.

5. Baca bit selanjutnya dan ulangi langkah 2, 3, dan 4 sampai rangkaian kode

(58)

3.2.1 Proses Kompresi Shannon-Fano

   

(59)

3.2.2 Proses Dekompresi Shannon-Fano

   

Gambar 3.6 Flowchart Proses Dekompresi Algoritma Shannon-Fano

3.2.3 Kompresi Shannon-Fano pada Citra

Contoh penggunaan algoritma Shannon-Fano pada citra adalah misalkan pada citra berwarna dengan ukuran 2 x 2 piksel dapat dilihat pada gambar 3.7.

(60)

Gambar 3.7 Citra Berwarna 2 x 2 Piksel

diproses dalam bentuk matriks:

0 255 0 255 255 255

255 239 239 255 239 213

Gambar 3. 8 Matriks Citra Berwarna 2 x 2 Piksel

Matriks di atas akan mewakili sebuah citra berwarna yang berukuran 2 x 2

piksel, di mana nilai setiap RGB menyatakan tiap warna pada piksel, kemudian hitung

jumlah frekuensi kemunculan pada setiap simbol warna pada citra. Setelah itu akan

dilakukan pengurutan pada nilai frekuensi secara menurun (descending order). Hal ini dapat dilihat pada tabel 3.5 seperti berikut.

Tabel 3.5Frekuensi Kemunculan Simbol

Selanjutnya tabel 3.5 di atas kemudian dibagi menjadi 2 didasari pada total

frekuensi bagian atas sedekat mungkin dengan total frekuensi bagian bawah.

Pembagian tersebut menghasilkan simbol 255 menjadi bagian atas dengan total 6.

Sedangkan 239, 0, dan 213 menjadi bagian bawah dengan total 17, sehingga simbol

255 akan dimulai dengan kode 0, sedangkan 239, 0, dan 213 dimulai dengan kode 1.

Warna Hijau

Gambar

Gambar 2.5 Komposisi Warna RGB
Gambar 2.10 Antarmuka pada Aplikasi Visual Basic 2008 Express Edition
Tabel 3.6 Proses Pengkodean
Gambar 3.20 Rancangan DFD Level 2 P.1.1 untuk Proses Kompresi Algoritma
+7

Referensi

Dokumen terkait

Pesantren hadir dalam rupa pendidikan yang lebih menitikberatkan pada nilai yang berkembang dalam kehidupan sehari-hari.. Pendidikan nilai yang dikembangkan pesantren

Penyaluran dana zakat kepada entitas pengelola

JURUSAN TEKNIK INFORMATIKA, KOMPUTERISASI AKUNTANSI DAN MANAJEMEN INFORMATIKA JADWAL SERTIFIKASI SEMESTER GENAP TA... Basis Data Remedia

Seperti hal yang dilakukan PT.Nissan melakukan rebranding terhadap brand Datsun yang sebuah brand telah lama mati untuk dimunculkan kembali di pasar otomotif Indonesia

Kriteria proses meliputi; (1) Bekerja sama dengan klien dalam pelaksanaan tindakan keperawatan, (2) Kolaborasi dengan profesi lain untuk meningkatkan status kesehatan klien,

Biaya pendidikan adalah keseluruhan pengeluaran baik yang bersifat uang maupun bukan uang, sebagai ungkapan rasa tanggung jawab semua pihak (masyarakat, orang tua, dan

Karya ilmiah ini harus dilaksanakan oleh dosen IKIP Padang dalam rangka meningkatkan mutu, baik sebagai dosen maupun sebagai peneli ti.. Oleh karena itu, Pusat

Ada beberapa etika yang harus diterapkan dalam penyiaran program acara yang harus sesuai dengan UU no 32 tahun 2002 tentang penyiaran, Pedoman Perilaku penyiaran