BAB 2 LANDASAN TEORI

dokumen-dokumen yang mirip
NASKAH PUBLIKASI KOMPRESI CITRA DENGAN METODE ARITHMETIC CODING DALAM KAWASAN ENTROPY CODING

BAB 2 LANDASAN TEORI

PEMAMPATAN CITRA (IMA

BAB 1 PENDAHULUAN. 1.1 Latar Belakang Masalah

BAB 2 LANDASAN TEORI

BAB I PERSYARATAN PRODUK

1. Pendahuluan. 1.1 Latar Belakang Masalah

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

BAB 2 LANDASAN TEORI

1. PENDAHULUAN 1.1. Latar Belakang Masalah

BAB 2 TINJAUAN PUSTAKA

IMPLEMENTASI DAN ANALISIS KINERJA ALGORITMA ARIHTMETIC CODING DAN SHANNON-FANO PADA KOMPRESI CITRA BMP

BAB I PENDAHULUAN I-1

KOMPRESI CITRA. lain. Proses mengubah citra ke bentuk digital bisa dilakukan dengan beberapa perangkat,

BAB II TEORI DASAR PENGOLAHAN CITRA DIGITAL

BAB 2 TINJAUAN PUSTAKA

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

BAB 1 PENDAHULUAN Latar Belakang

Image Compression. Kompresi untuk apa?

BAB 2 LANDASAN TEORI

PEMAMPATAN DATA DIGITAL MENGGUNAKAN METODA RUN-LENGTH

BAB 2 LANDASAN TEORI

BAB 2 TINJAUAN PUSTAKA

BAB 2 LANDASAN TEORI

BAB I. PENDAHULUAN Latar Belakang Masalah

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

BAB 3 ANALISIS DAN PERANCANGAN PROGRAM. pengembangan sistem yang lazim disebut Waterfall Model. Metode ini terdiri dari enam

Kata kunci: pohon biner, metode Huffman, metode Kanonik Huffman, encoding, decoding.

BAB 2 TINJAUAN PUSTAKA

BAB 2 TINJAUAN PUSTAKA

Implementasi Metode HUFFMAN Sebagai Teknik Kompresi Citra

DIGITAL IMAGE CODING. Go green Aldi Burhan H Chandra Mula Fitradi Mardiyah

BAB 4 IMPLEMENTASI DAN EVALUASI. simulasi penyelesaian rubix cube ini adalah sebagai berikut. 1. Processor: Intel (R) Pentium (R) 4 CPU 1.

BAB 2 LANDASAN TEORI

BAB II TINJAUAN PUSTAKA DAN LANDASAN TEORI. Penerapan Model Human Computer Interaction (HCI) dalam Analisis Sistem

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

BAB 2 LANDASAN TEORI

BAB 2 LANDASAN TEORI

BAB 2 LANDASAN TEORI

TEKNIK PENGOLAHAN CITRA. Kuliah 13 Kompresi Citra. Indah Susilawati, S.T., M.Eng.

ANALISA DAN PERBANDINGAN ALGORITMA RUN LENGTH ENCODING DAN ALGORITMA LZW ( LEMPEL ZIV WECH ) DALAM PEMAMPATAN TEKS

BAB 4 PERANCANGAN DAN IMPLEMENTASI PROGRAM. Oriented Programming) atau secara procedural.

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

BAB II TEORI DASAR PENGOLAHAN CITRA DIGITAL. foto, bersifat analog berupa sinyal sinyal video seperti gambar pada monitor

BAB 2 LANDASAN TEORI

artifak / gambar dua dimensi yang memiliki kemiripan tampilan dengan sebuah subjek. - wikipedia

PERANCANGAN APLIKASI KOMPRESI CITRA DENGAN METODE RUN LENGTH ENCODING UNTUK KEAMANAN FILE CITRA MENGGUNAKAN CAESAR CHIPER

KOMPRESI CITRA DIGITAL MENGGUNAKAN METODE STATISTICAL CODING

BAB II DASAR TEORI. 2.1 Pendahuluan

BAB 2 TINJAUAN PUSTAKA

BAB 2 LANDASAN TEORI

BAB I PENDAHULUAN 1.1 Latar Belakang

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

BAB 2 TINJAUAN PUSTAKA

BAB I PENDAHULUAN 1.1 Latar Belakang

MKB3383 -TEKNIK PENGOLAHAN CITRA. Kompresi Citra. Muhammad Zidny Naf an, M.Kom. Genap, 2016/2017

TUGAS AKHIR IMPLEMENTASI ALGORITMA METODE HUFFMAN PADA KOMPRESI CITRA

BAB 2 LANDASAN TEORI. berhubungan dengan image restoration, di antaranya adalah tentang image, image

BAB I PENDAHULUAN. hal proses pengolahan data, baik itu data siswa, guru, administrasi sekolah maupun data

BAB III METODOLOGI PENELITIAN

BAB 2 LANDASAN TEORI

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

BAB I PENDAHULUAN 1.1 Latar Belakang

BAB III METODOLOGI PENELITIAN. 1. Spesifikasi laptop yang digunakan dalam penelitian ini adalah sebagai. Processor AMD Turion 64 X2 Dual Core 1,66 Ghz

BAB 2 LANDASAN TEORI. statistik yang dikemukakan oleh ilmuwan Inggris Thomas Bayes, yaitu

BAB 1 PENDAHULUAN. tertulis, audio dan video. Objek-objek tersebut yang sebelumnya hanya bisa

REKAYASA PERANGKAT LUNAK

BAB 2 LANDASAN TEORI. 2.1 Pengenalan Citra

Implementasi Metode Run Length Encoding (RLE) untuk Kompresi Citra

BAB 1 PENDAHULUAN. Universitas Sumatera Utara

BAB III METODOLOGI PENELITIAN

BAB III LANDASAN TEORI

ANALISIS KOMPRESI DATA TEKNIK LOSSLESS COMPRESSION

~ By : Aprilia Sulistyohati, S.Kom ~

Studi Kompresi Data dengan Metode Arithmetic Coding

BAB I PENDAHULUAN. 1.1 Latar Belakang

BAB I PENDAHULUAN. dalam suatu perusahaan, karena persediaan akan dijual secara terus menerus untuk

Perbandingan Algoritma Kompresi Terhadap Objek Citra Menggunakan JAVA

BAB III METODOLOGI PENELITIAN

BAB III METODE KOMPRESI HUFFMAN DAN DYNAMIC MARKOV COMPRESSION. Kompresi ialah proses pengubahan sekumpulan data menjadi suatu bentuk kode

BAB 1 Persyaratan Produk

STMIK GI MDP. Program Studi Teknik Informatika Skripsi Sarjana Komputer Semester Ganjil Tahun 2010/2011

BAB III METODOLOGI PENELITIAN

Teknik Kompresi Citra Menggunakan Metode Huffman

Penerapan Pohon Biner Huffman Pada Kompresi Citra

BAB II LANDASAN TEORI. tenaga kerja pada perusahaan, fokus yang dipelajari MSDM ini hanya masalah yang. berhubungan dengan tenaga kerja manusia saja.

BAB 2 TINJAUAN PUSTAKA

BAB 2 LANDASAN TEORI

BAB 1 PENDAHULUAN. Dalam penggunaan sehari-hari data berarti suatu pernyataan yang diterima secara apa

PERANCANGAN APLIKASI PENGACAKAN CITRA MENGGUNAKAN M-SEQUENCE BERDASARKAN PARAMETER

BAB III PERANCANGAN PROGRAM

KOMPRESI DATA MENGGUNAKAN METODE HUFFMAN Ari Wibowo Jurusan Teknik Informatika, Politeknik Negeri Batam

BAB 2 LANDASAN TEORI

SISTEM ANALISA PERBANDINGAN UKURAN HASIL KOMPRESI WINZIP DENGAN 7-ZIP MENGGUNAKAN METODE TEMPLATE MATCHING

PENERAPAN METODE HUFFMAN DALAM PEMAMPATAN CITRA DIGITAL

BAB 3 ANALISIS DAN PERANCANGAN

BAB II LANDASAN TEORI

BAB 1 PENDAHULUAN. 1.1 Latar Belakang Masalah

KOMPRESI CITRA MENGGUNAKAN METODE RUN LENGTH ENCODING (RLE) DAN ALGORITMA ARITMETIC CODING

Transkripsi:

8 BAB 2 LANDASAN TEORI Dalam bab ini akan dijelaskan teori-teori yang akan dipakai untuk merancang program aplikasi ini. Metode yang dipakai adalah arithmetic coding. Dalam bab ini juga diuraikan tentang definisi yang mencakup citra digital, kompresi, encoding dan decoding, teori-teori umum kompresi data, serta algoritma arithmetic coding. Setiap isi dari setiap sub-bab memiliki hubungan satu sama lain, maka itu untuk lebih jelaskan dapat dilihat di bawah ini : 2.1 Citra Digital Citra digital adalah hasil penangkapan suatu objek fisik menggunakan peralatan pencitraan digital, dimana setiap bagian dari gambar tersebut direpresentasikan dalam bentuk pixel (picture elements). Suatu citra digital dapat diedit, dimanipulasi, dikirim, dihapus, di-copy atau dimasukkan ke berkas komputer lainnya atau ke halaman web. 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 dalam pita magnetik. Komputer hanya dapat bekerja dengan bilangan numerik yang berhingga, sehingga gambar harus diubah ke dalam bentuk bilangan numerik berhingga (gambar digital) sebelum diproses dalam suatu komputer. Untuk mengubah gambar yang bersifat kontinu menjadi gambar digital diperlukan proses pembuatan kisi-kisi arah horizontal

9 dan vertikal, sehingga diperoleh gambar dalam bentuk array dua dimensi. Proses tersebut dikenal sebagai proses digitalisasi atau sampling. Gambar dapat direpresentasikan dengan array dua dimensi, dimana setiap elemen array dikenal sebagai elemen gambar (pixel). Pembagian suatu gambar menjadi sejumlah pixel dengan ukuran tertentu ini akan menentukan resolusi spatial (derajat kehalusan) yang diperoleh. Semakin kecil ukuran pixelnya, maka akan semakin halus gambar yang diperoleh, karena informasi yang hilang akibat pengelompokan tingkat keabuan pada proses pembuatan kisi-kisi akan semakin kecil. Angka pada gambar digital menggambarkan bagaimana setiap pixel menggambarkan kecerahan (brightness) gambar tersebut pada titik yang bersangkutan. Proses lain yang dilakukan dalam suatui gambar digital adalah proses kuantisasi (quantization). Dalam proses ini tingkat keabuan setiap pixel dinyatakan sebagai suatu harga integer. Batas-batas harga integer atau besarnya daerah tingkat keabuan yang digunakan yang digunakan untuk menyatakan tingkat keabuan pixel akan menentukan resolusi kecerahan dari gambar yang diperoleh. Kalau digunakan 3 bit untuk menyimpan harga integer tersebut, maka akan diperoleh sebanyak 8 tingkat keabuan. Seluruh tahapan konversi di atas dikenal sebagai konversi analog ke digital, yang biasanya akan menyimpan hasil suatu proses pada memori gambar. Sebaliknya, sebagai hasil suatu proses pengolahan gambar digital, kadang-kadang perlu mengeluarkan gambar dari memori gambar ke bentuk peragaan pada monitor televisi atau ke bentuk cetakan foto. Proses konversi balikan ini dikenal sebagai konversi digital ke analog.

10 2.1.1 Format File Citra-citra digital sebaiknya disimpan dalam tiga jenis format utama, dengan tipe format dan level resolusi yang berbeda-beda. Berikut ini beberapa jenis format yang dipergunakan: a. TIFF (Tagged Image File Format), merupakan format penyimpanan yang tidak mengkompresi citra digital dan oleh karenanya tidak menanggalkan atau kehilangan informasi dari penangkapan digital asli. Biasanya digunakan untuk citra-citra digital master. TIFF merupakan format file yang disukai karena dirancang untuk semua platform dan dapat ditempatkan di berbagai tempat. Program pengeditan citra digital yang dibuat pada sepuluh tahun terakhir dapat membuka TIFF sehingga format ini dapat bertahan dalam jangka waktu yang lama. b. BMP (Windows Bitmap), biasanya digunakan oleh aplikasi dan sistem operasi Microsoft Windows. c. JPEG (Joint Photographic Experts Group), merupakan format yang dikompresi dan menanggalkan beberapa informasi pixel sehingga citra digital dapat disimpan dalam ukuran simpan yang lebih sedikit. Seringkali digunakan untuk citra-citra digital akses dan thumbnail yang akan dipresentasikan melalui web. d. GIF (Graphic Image File Format) merupakan format yang dikompresi dan menanggalkan beberapa informasi piksel sehingga citra digital dapat disimpan dalam ukuran simpan yang lebih sedikit. Seringkali digunakan untuk citra-citra digital akses dan thumbnail yang akan dipresentasikan melalui web. Sangat tepat untuk citra-citra digital dengan bidang yang besar dengan satu atau beberapa warna. e. PNG (Portable Network Graphic), merupakan format penyimpanan yang dikompresi namun tidak menanggalkan beberapa informasi pixel. Memiliki warna

11 24-bit namun tidak memungkinkan untuk menyimpan metadata seperti yang dilakukan pada TIFF dan JPEG. Format ini masih relatif baru dan masih belum didukung oleh semua peranti pemandang citra (image viewers). f. JPEG 2000, merupakan format yang tidak berkaitan dengan JPEG umumnya. Menggunakan alogaritma kompresi dengan suatu pilihan untuk tidak menghilangkan informasi pixel. Format ini masih dalam proses pengkajian dan belum banyak tersedia. 2.2 Kompresi Kompresi gambar merupakan proses untuk mengurangi jumlah bit-bit data yang merepresentasikan suatu gambar. Ada dua jenis kompresi gambar yang memberikan hasil yang merupakan replica dari gambar awal (lossless compression) dan kompresi yang merupakan pendekatan terhadap gambar awal (loosy compression). Format yang umum digunakan saat ini adalah JPEG yang umumnya digunakan untuk gambar hasil fotografi dan GIF yang digunakan untuk gambar dengan bentuk geometri yang sederhana. Gambar yang merupakan hasil fotografi memiliki ukuran yang cukup besar karena memiliki gradient warna yang tinggi dan sudut-sudut kompleks dan bersifat loosy. Kompresi gambar memanfaatkan kelebihan atau persepsi manusia terhadap gambar visual. Persepsi manusia tidak terlalu sensitif terhadap gangguan frekuensi tinggi dengan intensitas rendah, namun peka terhadap perubahan warna. Hal ini menyebabkan bit-bit data yang tidak berguna dapat dihilangkan untuk mengurangi ukurannya.

12 2.2.1 Kompresi Lossless dan Lossy Teknik kompresi pada citra ada 2, yaitu lossless dan lossy. Kompresi lossless dan lossy merupakan istilah yang mendeskripsikan apakah seluruh informasi data dari suatu file asli dapat dikembalikan ke seperti semula atau tidak pada proses dekompresi. a. Lossy Compression Kompresi loosy mengurangi suatu file secara permanen dengan menghilangkan informasi tertentum, terutama informasi yang berlebih. Ketika file tersebut didekompres, hanya sebagian informasi dari file asli yang masih ada. Teknik ini mengubah detail dan warna pada file citra menjadi lebih sederhana tanpa terlihat perbedaan yang mencolok dalam pandangan manusia, sehingga ukurannya menjadi lebih kecil. Biasanya digunakan pada citra foto atau image lain yang tidak terlalu memerlukan detail citra, dimana kehilangan bit rate foto tidak berpengaruh pada citra. b. Loseless Compression Dengan kompresi lossless, setiap bit data pada file asli akan tetap setelah file didekompres. Semua informasi dikembalikan secara lengkap, tidak ada satupun informasi citra yang dihilangkan. Biasa digunakan pada citra medis. Metode loseless: Run Length Encoding, Entropy Encoding (Huffman, Arithmetic), dan Adaptive Dictionary Based (LZW).

13 Gambar 2.1 Pembagian Metode Kompresi Data 2.3 Encoding dan Decoding Pada umumnya pengompresan data terdiri dari dua proses yang digunakan dalam program atau peralatan, yaitu : a. Encoding Encoding adalah suatu proses pada software atau hardware dimana program atau peralatan melakukan pengkodean dalam format tertentu. Program atau peralatan yang melakukan proses encoding disebut encoder atau coder. Dalam kompresi data, file-file data yang akan diproses menggunakan program encoding. Bit-bit dalam file aslinya akan di-encode dengan menggunakan algoritma pengompresan yang diinginkan, sehingga ukuran hasil kompresi akan lebih kecil dari ukuran aslinya. b. Decoding Decoding adalah suatu proses pada software atau hardware dimana program atau peralatan melakukan penguraian kode dari file hasil encoding. Program atau peralatan yang melakukan proses decoding disebut decoder. Peralatan yang dapat

14 melakukan proses encoding dan decoding disebut codec. Dalam proses decoding, file hasil dari proses encoding akan dikembalikan ke bentuk aslinya dengan menggunakan algoritma pengompresan. 2.4 Rasio Kompresi Rasio kompresi digunakan untuk menjelaskan perbedaan antara sebuah file dan file hasil kompresinya. Rasio tersebut memberikan indikasi seberapa besar kompresi itu berhasil dicapai untuk suatu file tertentu. Salah satu cara pengekspresian angka rasio kompresi yang digunakan yaitu rasio antara ukuran file dan output, contoh : rasio kompresi 4:1. Cara pengeksspresian lain yang lebih banyak digunakan adalah dengan menuliskannya dengan presentase dari 0% sampai 100%, dimana 100% digunakan sebagai rasio kompresi yang terbaik. ukuran _ citra _ hasil _ kompresi RK = 100% 100% ukuran _ citra _ semula 2.5 Teori-Teori Umum Kompresi Data Beberapa teknik pengompresan data secara lossless yang dapat digunakan pada berbagai tipe data yaitu : a. Huffman Coding Huffman Coding merupakan salah satu teknik pengompresan yang banyak digunakan dan sangat popular. Teori pengkodean ini diciptakan oleh David A. Huffman pada tahun 1952. Huffman Coding yaitu teknik pengompresian data yang menempatkan Variable Length Codes (VLC) ke dalam simbol-simbol, sehingga simbol-simbol yang sering muncul memiliki kode yang paling singkat. Pada

15 pendekompresian simbol-simbol tersebut akan dikembalikan ukuran kode aslinya. Ketika digunakan untuk mengompres text, contohnya, variable lengths codes digunakan sebagai ganti kode-kode ASCII, dan karakter-karakter yang sering muncul, biasanya spasi, e, dan t digunakan sebagai kode-kode terpendek. Dengan cara ini jumlah total bit yang diperlukan untuk mentransmisikan data dapat dipertimbangkan lebih sedikit dibandingkan dengan jumlah bit yang diperlukan jika representasi ukuiran aslinya digunakan. Huffman Coding secara khusus lebih efektif jika data didominasi oleh simbol-simbol yang kecil. b. Lempel-Ziv Coding Lempel-Ziv Coding menggunakan sebuah kamus simbol-simbol yang berurutan. Ketika sebuah urutan tersebut diulang maka akan diganti dengan suatu referensi ke posisinya dalam kamus tersebut. Ada beberapa variasi dari teknik Lempel-Ziv Coding ini dan masing-masing berbeda terutama dalam pengaturan kamus. Teknik kompresi data dari Lempel-Ziv yang paling terkenal yaitu Lempel- Ziv-Welch. c. Run Length Encoding Run Length Encoding adalah suatu teknik kompresi yang menggantikan simbol-simbol yang berurutan tersebut dengan simbol itu sendiri diikuti dengan jumlah perulangan yang terjadi. Sebagai contoh, string 111110000003355 dapat direpresentasikan dengan 15063252. Sudah jelas bahwa teknik kompresi ini sangat berguna untuk simbol-simbol yang berurutan dan berulang, dan dengan demikian kadang-kadang dapat berguna untuk file-file gambar dimana pixel-pixel gambar tersebut mempunyai nilai yang sama, contohnya gambar kartun.

16 d. Relative Encoding Relative Encoding adalah suatu teknik transmisi yang mencoba untuk membuktikan efisiensi dengan mentransmisikan perbedaan antara masing-masing nilai dan predecessor-nya, ke tempat nilai itu sendiri. Dengan demikian, nilai-nilai 15106433003 akan ditransmisikan sebagai 1+4-4-1+6-2-1+0-3+0+3. Akibatnya transmitter memprediksikan bahwa masing-masing nilai sama seperti predecessornya dan data yang ditransmisikan merupakan perbedaan antara nilai hasil prediksi dan nilai sebenarnya. Differential Pulse Code Modulation (DPCM) adalah contoh dari relative encoding ini. Signal tersebut dapat mempunyai satu kemungkina dari tujuh nilai (-3 sampai +3) dan dengan begitu akan membutuhkan 3 bit per sample. Hanya 2 bit yang diperlukan untuk memperlihatkan hubungan antara sample-sample. Pengkodean signal dengan cara ini menghasilkan reduksi 1/3 dalam jumlah bit. e. Arithmetic Coding Walaupun Huffman coding sangat efisien, teknik tersebut hanya optimal jika kemungkinan simbol-simbol adalah 2 n. Arithmetic coding tidak tergantung pada kondisi tersebut dan biasanya lebih baik dibandingkan dengan teknik Huffman coding yang lebih popular. Walaupun demikian arithmetic coding lebih kompleks.

17 Tabel 2.1 Perbandingan Huffman Coding dengan Arithmetic Coding Metode kompresi Arithmetic Huffman Rasio kompresi Rendah (sangat bagus) Tinggi (buruk) Kecepatan kompresi Lambat Cepat Kecepatan dekompresi Lambat Cepat Penyimpanan memori Sangat lambat Lambat Penyusunan pola terkompresi Tidak Ya Mengizinkan akses secara random Tidak Ta 2.6 Algoritma Arithmetic Coding Pada umumnya, algoritma kompresi data melakukan penggantian satu atau lebih simbol input dengan kode tertentu. Berbeda dengan cara tersebut, arithmetic coding menggantikan satu deretan simbol input dengan sebuah bilangan floating point. Semakin panjang dan semakin kompleks pesan yang dikodekan, semakin banyak bit yang diperlukan untuk keperluan tersebut. 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 di-decode sehingga menghasilkan deretan simbol yang dipakai untuk menghasilkan angka tersebut. Untuk menghasilkan angka output tersebut, tiap simbol yang akan diencode diberi satu set nilai probabilitas. Gagasan utama pada arithmetic coding adalah memberikan setiap simbol sebuah range atau interval. Dimulai dengan range [0..1), setiap range dibagi dalam beberapa subrange, dimana ukurannya sebanding dengan probabilitas (kemungkinan yang muncul dari simbol-simbol yang sama). Semakin tinggi probabilitas yang dimiliki oleh suatu

18 simbol, semakin tinggi pula range yang diberikan terhadap simbol tersebut. Tanda [..) berarti bahwa angka yang didalamnya diikutsertakan kecuali angka terakhir. Setelah menentukan range dan probabilitasnya, mulai dapat melakukan proses encoding simbol-simbol, setiap simbol menentukan dimana output angka floating point itu berada. Sebagai contoh, jika terdapat suatu message tawa, maka distribusi probabilitasnya yaitu : Tabel 2.2 Contoh Arithmetic Coding dengan Message tawa Simbol Probability Range a 2 [0.0,0.5) t 1 [0.5,0.75) w 1 [0.75,1.0) Bagian yang paling penting pada proses encoding yaitu simbol pertama. Ketika melakukan encoding dari message baca, simbol yang pertama adalah t. Agar simbol pertama dapat di-decode dengan tepat, hasil dari encode message harus sebuah angka lebih besar atau sama dengan 0.5 dan kurang dari 0.75. Apa yang dilakukan untuk encoding angka ini yaitu tetap menjaga agar angka ini jatuh diantara range tersebut. Jadi setelah simbol pertama di-encode, range terendah adalah 0.5 dan range tertinggi adalah 0.75. Setelah simbol pertama di-encode, sudah dapat diketahui range untuk output number yang dibatasi oleh low number dan high number. Apa yang terjadi selama proses encoding yaitu bahwa setiap simbol baru untuk di-encode lebih lanjut akan membatasi range dari output angka. Simbol selanjutnya untuk di-encode yaitu a, memiliki range 0.0 hingga 0.5. Jika itu merupakan angka pertama dalam message, maka akan diset low

19 number dan high number langsung pada nilainya. Tetapi a adalah simbol kedua. Jadi simbol a memiliki range yang sama dengan 0.0-0.5 dalam subrange yang baru 0.5-0.75. Ini berarti angka hasil encode yang baru akan jatuh pada bagian yang ke-0 hingga yang ke-50 dari range sebelumnya. Dengan logika ini didapatkan angka range 0.5 hingga 0.625. a. Algoritma Encoding Algoritma untuk menyelesaikan penghitungan output angka dari message tersebut adalah: 1). Set Low number pada angka 0 2). Set High number pada angka 1 3). Lakukan perulangan hingga semua simbol terproses Range = High Low High = Low + Range * Angka range tertinggi dari simbol yang sedang diproses Low = Low + Range * Angka range terendah dari simbol yang sedang diproses Dari hasil encoding keseluruhan untuk message tawa didapatkan: Tabel 2.3 Hasil Encoding untuk Message tawa Simbol Range Low number High number 0 1 t 1 0.5 0.75 a 0.25 0.5 0.625 w 0.125 0.59375 0.625 a 0.3125 0.59375 0.609375

20 Jadi angka terakhir dari low number yaitu 0.59375 merupakan hasil output angka proses encoding dari message tawa. Setelah mengetahui pola encoding tersebut, maka dengan mudah dapat dilihat bagaimana proses decoding bekerja. Dalam proses decoding ini pertama-tama temukan simbol pertama yaitu dengan melihat output angka dari proses encoding itu jatuh pada range simbol mana. Karena output angka 0.59375 jatuh pada range 0.5-0.75, dapat diketahui bahwa simbol pertama adalah t. Kemudian yang harus dilakukan yaitu mengeluarkan t yang telah ter-encode dengan cara membalikkan proses yang menempatkannya. Pertama, dengan mengurangi high number dan low number yang dimiliki simbol t untuk mendapatkan angka rangenya dan angka yang didapat yaitu 0.25. Selanjutnya mengurangi output angka encoding dengan angka range terendah simbol t dan didapatkan angka 0.9375 untuk kemudian membagi angka tersebut dengan range yang sebelumnya pernah didapat. Hasil yang didapat adalah 0.375. langkah selanjutnya dengan memperhitungkan angka tersebut jatuh pada range simbol mana, dan didapatkan simbol berikutnya yaitu a. b. Algoritma Decoding Algoritma untuk proses decoding yaitu : 1). Dapatkan angka encoded (pada variabel Number ) 2). Dapatkan simbol dimana angka encoded ( Number ) berada dalam range-nya 3). Lakukan perulangan hingga semua simbol terproses. Range = angka range tertinggi simbol angka range terendah simbol Number = Number - angka range terendah simbol Number = Number / Range Dari hasil proses decoding untuk message tawa dapat dilihat pada tabel berikut :

21 Tabel 2.4 Hasil Decoding untuk Message tawa Simbol Low Range High Range Range Number t 0.5 0.75 0.25 0.59375 a 0 0.5 0.5 0.375 w 0.75 1 0.25 0.75 a 0 0.5 0.5 0 Ketika tidak ada lagi simbol yang tersisa untuk di-decode, untuk menghentikannya yaitu dapat dengan menyediakan range kecil khusus untuk simbol EOF (End of File). Tetapi dalam hal pengukuran encoding tidak dibutuhkan dan juga sebagian besar kompresor tahu kapan harus berhenti. Proses encoding pada metode arithmetic ini merupakan cara penyempitan range angka suatu simbol dengan simbol yang baru. Range baru tersebut sebanding dengan probabilitas yang diberikan pada simbol tersebut. Proses decoding adalah prosedur kebalikannya, dimana range dikembangkan dalam perbandingan terhadap probabilitas dari setiap simbol ketika diekstrak. 2.7 Dasar Perancangan Perangkat Lunak Menurut Mahyuzir, perancangan merupakan proses penerapan bermacam-macam teknik dan prinsip dengan tujuan mendefinisikan peralatan, proses atau sistem secara rinci. Perancangan dilakukan pada tahap awal. Tujuan perancangan adalah menghasilkan model yang akan dibuat. Perancangan perangkat lunak mengalami perubahan jika didapatkan metode yang baru, analisis yang lebih baik dan penyusunan pengertian yang lebih luas (Licyana Suryani, 2006).

22 2.7.1 Fase Pengembangan dan Perancangan Perangkat Lunak Menurut Mahyuzir, fase pengembangan perangkat lunak terdiri dari tiga langkah yang jelas, yaitu (Licyana Suryani, 2006): a. Perancangan Metodologi perancangan terdiri dari: 1). Perancangan data yang terfokus pada pendefinisian struktur data. 2). Perancangan arsitektur yang mendefinisikan hubungan antara elemen yang utama dari struktur program. 3). Perancangan prosedural yang merupakan transformasi elemen dari struktur program ke dalam deskripsi prosedural perangkat lunak. b. Membuat source code c. Uji coba Setelah melalui tiga langkah di atas, maka dilakukan perpaduan perangkat lunak dan validasi. Rekayasa piranti lunak menurut Fritz Bauer adalah penetapan dan pemakaian prinsip-prinsip rekayasa dalam rangka mendapatkan piranti lunak yang ekonomis yaitu terpercaya dan bekerja efisien pada mesin (komputer) (Hendra Prasetyo, 2009). Rekayasa piranti lunak menurut Pressman adalah suatu pembentukan dan penggunaan prinsip-prinsip rekayasa dengan tujuan menghasilkan suatu perangkat lunak yang ekonomis dan dapat diandalkan serta dapat bekerja secara efisien pada mesin yang sesungguhnya. Pada dasarnya rekayasa piranti lunak meliputi tiga elemen kunci yaitu (Eka Janitra, 2009):

23 a. Methods (metode) Mengenai bagaimana membangun suatu perangkat lunak, di mana metode terdiri dari beberapa tugas yaitu perencanaan proyek dan estimasi, analisis kebutuhan perangkat lunak, perancangan struktur data, arsitektur program, prosedur algoritma, pengkodean, testing dan pemeliharaan. b. Tools (alat bantu) Tools menyediakan dukungan baik secara otomatis maupun semi otomatis untuk metode. Tools diintegrasikan dengan tujuan informasi yang dihasilkan oleh suatu tools dapat digunakan oleh tools lainnya. c. Procedures (prosedur) Procedures merupakan perekat antara metode. Tools dan procedures juga memungkinkan pembangunan perangkat lunak secara rasional dan berkala. 2.7.2 Classic Life Cycle Dalam membuat suatu program aplikasi terdapat beberapa paradigma atau model proses, satu di antaranya adalah classic life cycle atau yang biasa dikenal dengan waterfall model. Model ini adalah model yang muncul pertama kali yaitu sekitar tahun 1970 sehingga sering dianggap kuno, tetapi merupakan model yang paling banyak dipakai di dalam pembuatan program. Model ini disebut dengan waterfall karena tahap demi tahap yang dilalui harus menunggu selesainya tahap sebelumnya dan berjalan berurutan (Yolanda, 2009). Terdapat 6 tahapan dalam model waterfall. Berikut adalah penjelasan dari tahaptahap yang dilakukan di dalam model ini (Yolanda, 2009):

24 a. Analisis dan perancangan sistem Pemodelan ini diawali dengan mencari kebutuhan dari keseluruhan sistem yang akan diaplikasikan ke dalam program aplikasi. Hal ini sangat penting, mengingat program aplikasi harus dapat berinteraksi dengan elemen-elemen yang lain seperti hardware, database, dsb. Tahap ini sering disebut dengan project definition. b. Analisis kebutuhan Proses pengumpulan elemen sistem ditingkatkan dan dipusatkan secara khusus untuk mengerti karakteristik dari program yang akan dibuat. Kebutuhan maupun sistem harus dibicarakan bersama dengan pelanggan. c. Perancangan Proses perancangan menerjemahkan kebutuhan elemen sistem yang direpresentasikan ke dalam sebuah blueprint yang dapat diperkirakan kualitasnya sebelum dilakukan pengkodean. d. Pengkodean Untuk dapat dimengerti oleh komputer, maka desain tadi harus diubah bentuknya menjadi bentuk yang dapat dimengerti oleh komputer, yaitu ke dalam bahasa pemrograman melalui proses pengkodean. Tahap ini merupakan implementasi dari tahap desain yang secara teknis nantinya dikerjakan oleh programmer. e. Pengujian Pengujian dilakukan untuk memastikan hasilnya sesuai dengan kebutuhan yang sudah didefinisikan sebelumnya.

25 f. Pemeliharaan Pemeliharaan suatu program diperlukan karena program yang dibuat tidak selamanya hanya seperti itu. Pengembangan merupakan salah satu bagian dari pemeliharaan. Pengembangan terjadi untuk memperbaiki error kecil yang tidak ditemukan sebelumnya, atau ada penambahan fitur-fitur yang belum ada pada program tersebut. Gambar 2.2 Life Cycle Model Waterfall Model ini menjadi terkenal karena pengaplikasian yang mudah, dan ketika semua kebutuhan sistem dapat didefinisikan secara utuh, eksplisit, dan benar di awal proyek, maka pembuatan program dapat berjalan dengan baik dan tanpa masalah. Tetapi karena model ini melakukan pendekatan secara berurutan, maka ketika suatu tahap terhambat, tahap selanjutnya tidak dapat dikerjakan dengan baik dan hal itu menjadi salah satu kekurangan dari model ini. Kesimpulannya adalah ketika suatu proyek skalanya sedang mengarah kecil cocok menggunakan model ini, akan tetapi bila mengerjakan proyek yang besar, tampaknya akan kesulitan jika menggunakan model waterfall ini (Yolanda, 2009).

26 Fase pengembangan menerapkan 75% atau lebih biaya dalam perekayasaan perangkat lunak. Keputusan yang diambil akan mempengaruhi keberhasilan penerapan dan mengurangi pekerjaan pada fase pemeliharaan. Hal yang terpenting dalam perancangan perangkat lunak adalah kualitas. Perancangan menyediakan gambaran atau model yang dapat dinilai segi kualitasnya. Perancangan perangkat lunak merupakan landasan untuk seluruh fase pengembangan dan pemeliharaan. Tanpa perancangan, akan dihasilkan sistem yang tidak stabil (Licyana Suryani, 2006). 2.7.3 Proses Perancangan Perancangan perangkat lunak adalah suatu proses di mana informasi-informasi yang telah diperoleh diterjemahkan ke dalam model perangkat lunak. Model perangkat lunak memegang peranan penting dalam penulisan program (Licyana Suryani, 2006). Berdasarkan manajemen proyek, perancangan perangkat lunak dikerjakan dalam 2 langkah, yaitu (Licyana Suryani, 2006) a. Perancangan awal Yakni transformasi informasi-informasi ke dalam arsitektur data dan perangkat lunak. b. Perancangan rinci Perancangan ini terfokus pada perbaikan model arsitektur yang memegang peranan penting dalam pembuatan struktur data dan algoritma secara rinci dari perangkat lunak.

27 2.8 Interaksi Manusia dan Komputer Manusia adalah makhluk yang sering berinteraksi dengan manusia lain. Oleh karena itulah maka penggunaan komputer dibuat sesederhana mungkin sehingga manusia dapat berinteraksi dengan komputer semudah berinteraksi dengan manusia lain. Proses penyederhanaan ini dikenal dengan interactive user interface (Yolanda, 2009). Menurut Shneiderman, interaksi manusia dan komputer merupakan disiplin ilmu yang berhubungan dengan perancangan, evaluasi, dan implementasi sistem komputer interaktif untuk digunakan oleh manusia, serta studi fenomena-fenomena besar yang berhubungan dengannya (Ade Arisandi, 2009). Pada interaksi manusia dan komputer ditekankan pada pembuatan antarmuka pemakai (user interface). User interface yang dibuat diusahakan sedemikian rupa sehingga seorang user dapat dengan baik dan nyaman menggunakan aplikasi perangkat lunak dibuat (Ade Arisandi, 2009). Antar muka pemakai (user interface) adalah bagian sistem komputer yang memungkinkan manusia berinteraksi dengan komputer. Tujuan antar muka pemakai adalah agar sistem komputer dapat digunakan untuk menunjuk pada kemampuan yang dimiliki oleh piranti lunak atau program aplikasi yang mudah dioperasikan dan dapat membantu menyelesaikan suatu persoalan dengan hasil yang sesuai dengan keinginan user, sehingga user merasa nyaman mengoperasikan program tersebut (Ade Arisandi, 2009).

28 2.8.1 Program Interaktif Suatu program yang interaktif dan baik harus bersifat user friendly. Ada lima kriteria yang harus dimiliki oleh suatu program sehingga dapat berinteraksi dengan baik dan bersifat user friendly. Lima kriteria tersebut adalah (Yolanda, 2009): a. Memiliki waktu belajar yang relatif singkat. b. Mampu memberikan informasi yang diperlukan dengan cepat. c. Mudah untuk dioperasikan oleh user. d. Kemudahan untuk mengingat program tersebut walaupun telah lama tidak mengoperasikannya. e. Kepuasan pribadi. 2.8.2 Pedoman Merancang User Interface Beberapa pedoman yang dianjurkan dalam merancang suatu program, guna mendapatkan suatu program yang user friendly adalah sebagai berikut (Ade Arisandi, 2009): Untuk merancang sistem interaksi manusia dan komputer yang baik, harus memperhatikan delapan aturan emas (eight golden rules) dalam perancangan antar muka. Eight golden rules tersebut yaitu (Hendra Prasetyo, 2009): a. Strive for consistency Konsistensi dalam perancangan antar muka dan bertahan untuk konsistensi. b. Enable frequent user to use shortcuts Memungkinkan/ memperbolehkan user menggunakan shortcuts secara berkala. c. Over informative feed back Memberikan umpan balik yang informatif.

29 d. Design dialogs to yield closure Pengorganisasian yang baik sehingga user mengetahui kapan awal dan akhir dari suatu action serta merancang dialog untuk menghasilkan keadaan akhir. e. Over simple error handling Memberikan penanganan kesalahan yang sederhana sehingga user mampu mengetahui dan memperbaiki kesalahan dengan mudah. f. Permit easy reversal of actions Mengijinkan pembalikan action dengan mudah. g. Support internal locus of control Mendukung user menguasai sistem yang dibuat sehingga user mampu aktif dalam mengambil langkah selanjutnya bukan hanya merespon pesan yang muncul. h. Short-term memory load Mengurangi beban ingatan jangka pendek kepada user sehingga perancangannya harus sederhana. Waktu respon dalam sistem komputer menurut Scheiderman adalah jumlah detik dari saat user program memulai aktivitas sampai menampilkan hasilnya di layar atau printer. Pemakai lebih menyukai waktu respon yang pendek, waktu respon yang panjang mengganggu, waktu respon yang pendek menyebabkan waktu user berpikir lebih pendek. Waktu respon harus sesuai dengan tugasnya, dan pemakai harus diberi tahu mengenai penundaan yang panjang.

30 2.9 Perancangan Program Aplikasi 2.9.1 Bentuk Program Suatu program dapat dibuat dengan dua cara yaitu secara OOP (Object Oriented Programming) atau secara procedural (Ade Arisandi, 2009). Object Oriented Programming adalah sebuah paradigma pemrograman yang menggunakan objek dan interaksinya untuk mendesain aplikasi dan program komputer. Keunggulan yang membuat OOP semakin banyak digunakan adalah karena sifatnya yang reusable, sehingga sangat cocok untuk membuat aplikasi atau program yang besar. Untuk aplikasi dengan struktur yang sederhana, OOP akan mempersulit pembuatan program karena programmer harus merancang objek satu per satu (Ade Arisandi, 2009). Sedangkan procedural programming atau yang dikenal juga dengan imperative programming adalah pemrograman berdasarkan konsep pemanggilan procedures atau yang sering dikenal sebagai routines, subroutines, methods, dan functions. Setiap procedure mengandung sederetan langkah perhitungan yang harus dijalankan. Procedures dapat dipanggil kapan saja dalam program, termasuk di dalam procedure itu sendiri. Jika dibandingkan dengan OOP, procedural programming diperuntukkan bagi pembuatan program dengan struktur yang sederhana dengan algoritma yang juga sederhana maupun yang rumit (Ade Arisandi, 2009). 2.9.2 Pemrograman Berorientasi Objek Object-oriented mencakup bidang aplikasi yang sangat luas. Para pengguna sistem komputer dan sistem lain yang didasarkan atas teknologi komputer merasakan efek object-oriented dalam bentuk meningkatnya aplikasi software yang mudah

31 digunakan dan servis yang lebih fleksibel, yang muncul dalam berbagai bidang industri, seperti dalam perbankan, telekomunikasi, dan sebagainya. Sedangkan bagi software engineer, object-oriented berpengaruh dalam bahasa pemrograman, metodologi rekayasa, manajemen proyek, hardware, dan sebagainya (Prins Carl Santoso, 2009). Analisis dan perancangan berorientasi objek amat sangat perlu dilakukan dalam pengembangan sistem berorientasi objek. Hanya dengan kemampuan menggunakan bahasa pemrograman berorientasi objek yang andal, kita dapat membangun suatu sistem berorientasi objek, namun sistem aplikasi yang dibangun akan menjadi lebih baik lagi bila langkah awalnya didahului dengan proses analisis dan perancangan berorientasi objek, terutama untuk membangun sistem yang mudah dipelihara (Prins Carl Santoso, 2009). Analisis berorientasi objek adalah metode analisis yang memeriksa requirements (syarat/ keperluan yang harus dipenuhi suatu sistem) dari sudut pandang kelas-kelas dan objek-objek yang ditemui dalam ruang lingkup permasalahan. Sedangkan perancangan berorientasi objek adalah metode untuk mengarahkan arsitektur software yang didasarkan pada manipulasi objek-objek sistem atau subsistem (Prins Carl Santoso, 2009). Pemrograman berorientasi objek merupakan kelanjutan dari proses analisis dan desain berorientasi objek. Dalam pemrograman berorientasi objek ini, komponen yang didesain dalam proses desain kemudian diimplementasikan dengan menggunakan bahasa pemrograman berorientasi objek. Syarat sebuah bahasa pemrograman berorientasi objek adalah bila bahasa pemrograman tersebut memiliki fitur untuk mengimplementasikan keempat konsep berorientasi objek, yaitu abstraksi, encapsulation, polymorphism, dan inheritance. Dikenal beberapa bahasa pemrograman

32 berorientasi objek, seperti C++, Java, Visual Basic, dan sebagainya (Prins Carl Santoso, 2009).