BAB 2
LANDASAN TEORI
2.1
Video Digital
Video adalah teknologi untuk menangkap, merekam, memproses, mentransmisikan dan menata ulang gambar bergerak. Biasanya menggunakan film seluloid, sinyal elektronik, atau media digital [3].
Video digital adalah berkas komputer yang digunakan untuk menyimpan kumpulan berkas digital seperti video, audio, metadata, informasi, pembagian chapter, dan judul sekaligus, yang dapat dimainkan atau digunakan melalui perangkat lunak tertentu pada komputer [7].
Untuk melakukan digitalisasi dan penyimpanan klip video full-motion selama 1 menit ke dalam komputer, harus dilakukan transfer data dalam jumlah banyak dalam waktu yang singkat. Untuk mereproduksi satu frame dari komponen video digital 24 bit, diperlukan data komputer hampir 1 MB; video tidak compressed dengan layar penuh selama 30 detik akan memenuhi hard disk bermuatan gigabyte. Video dengan ukuran penuh dan full-motion memerlukan komputer yang dapat mengirimkan data lebih kurang 30 MB per detik. Kemacetan teknologi yang besar dapat diatasi dengan menggunakan skema Digital video compressed atau codec (coder/decoder). Codec adalah algoritma yang digunakan untuk mengompresi (kode) sebuah video untuk dikirimkan, kemudian didecode secara langsung untuk pemutaran yang cepat. Codec yang berbeda dioptimasi untuk metode pengiriman yang berbeda [6].
Representasi sinyal video meliputi 3 dimensi, yaitu Representasi Visual. Tujuan utamanya adalah agar orang yang melihat merasa berada di scene (lokasi) atau
Universitas Sumatera Utara
7
ikut berpartisipasi dalam kejadian yang ditampilkan. Oleh sebab itu, suatu gambar harus dapat menyampaikan informasi spatial dan temporal dari suatu scene, yang dapat dilakukan dengan cara [7]: 1. Vertical Detail dan Viewing Distance Aspek rasio adalah perbandingan lebar dan tinggi, yaitu 3:4. Tinggi gambar digunakan untuk menentukan jarak pandang dengan menghitung rasio viewing distance (D) dengan tinggi gambar (H) = D/H. Setiap detail image pada video ditampilkan dalam pixel-pixel. 2. Horizontal Detail dan Picture Width Lebar gambar pada TV konvensional = 4/3 x tinggi gambar. 3. Total Detail Content Resolusi vertikal = jumlah elemen pada tinggi gambar, Resolusi horizontal = jumlah elemen pada lebar gambar x aspek rasio. Total pixel = pixel horizontal x pixel vertikal. 4. Perception of Depth Dalam pandangan / penglihatan natural, kedalaman gambar tergantung pada sudut pemisah antara gambar yang diterima oleh kedua mata. Pada layar flat, persepsi kedalam suatu benda berdasarkan subject benda yang tampak. 5. Warna Gambar berwarna dihasilkan dengan mencampur 3 warna printer RGB (Merah, Biru, Hijau). Properti warna pada sistem broadcast : a. Luminance Brightness = jumlah energi yang menstimulasi mata grayscale (hitam/putih), Pada televisi warna luminance tidak diperlukan. b. Chrominance adalah informasi warna. Hue (warna) = warna yang ditangkap mata (frekuensi). Saturation = color strength (vividness) / intensitas warna. Cb = komponen U dan Cr = Komponen V pada sistem YUV. 6. Continuity of Motion Mata manusia melihat gambar sebagai suatu gerakan kontinyu jika gambargambar tersebut kecepatannya lebih besar dari 15 frame/s. Untuk video motion biasanya 30 frame/s, sedangkan movies biasanya 24 frame/s.
Universitas Sumatera Utara
8
7. Flicker Untuk menghindari terjadinya flicker diperlukan kecepatan minimal melakukan refresh 50 cycles/s.
2.2
Format Video Digital
Video Digital terdiri dari urutan frame. Jika frame yang ditampilkan pada layar cukup cepat, kita akan mendapatkan kesan gambar yang bergerak. Alasannya adalah mata kita tidak dapat membedakan frame-frame yang bergerak dengan sangat cepat sebagai frame-frame yang terpisah. Belum ada jumlah standar frame per detik; di Amerika Utara jumlah frame yang umum adalah 25 frame per detik. Namun, untuk menghindari kondisi yang dikenal sebagai berkedip, frame perlu di refresh [5].
Sebuah video digital terdiri dari frame-frame yang mana frame-frame tersebut dikompres menjadi sebuah file komputer yang hanya dapat dijalankan menggunakan sebuah perangkat lunak multimedia player [7].
Berdasarkan bentuk-bentuk kompresan dari file video digital tersebut, banyak bermunculan format-format video digital yang ditawarkan kepada pengguna dengan kelebihan dan kekurangannya masing-masing. Adapun beberapa contoh dari format video digital yang sering dijumpai antara lain : 1. AVI (Audio Video Interleave) AVI merupakan format berkas yang dibuat oleh Microsoft. Sebagian besar camcorder, baik analog maupun digital, menjadikan format ini sebagai format baku saat capture video. Format AVI memiliki berbagai pilihan metode compressor-decompressor (codec), antara lain: Cinepak, Indeo, Microsoft Video 1, Clear Video (IVI), dan lainnya. Setiap berkas AVI dapat menggunakan codec yang berbeda-beda. Akibatnya, jika pengguna ingin menjalankan suatu berkas AVI pada komputer sementara codec yang digunakan berkas AVI itu belum terinstal pada komputer, maka berkas tersebut tidak akan dapat dijalankan [4]. 2. MPEG (Motion Picture Expert Group) MPEG merupakan file terkompresi lossy yang biasanya digunakan untuk format VCD dengan audio berformat MP3. MPEG terdiri dari beberapa bagian :
Universitas Sumatera Utara
9
a. Synchronization and multiplexing of video and audio. b. Compression codec for non-interlaced video signals. c. Compression codec for perceptual coding of audio signals. MP1 or MPEG-1 Part 3 Layer 1 (MPEG-1 Audio Layer 1) MP2 or MPEG-1 Part 3 Layer 2 (MPEG-1 Audio Layer 2) MP3 or MPEG-1 Part 3 Layer 3 (MPEG-1 Audio Layer 3) d. Procedures for testing conformance. e. Reference for testing conformace. f. Reference software. MPEG-1 beresolusi 352 x 240 dan hanya mensupport progressive scan video. MPEG-2 digunakan untuk broadcast, siaran untuk direct-satelit dan cable tv. MPEG-2 support interlaced format. MPEG-2 digunakan dalam/pada HDTV dan DVD vidoe disc. MPEG-4 digunakan untuk streaming, CD distribution, videophone dan broadcast television. MPEG-4 mendukung digital rights management [10].
MPEG-4 adalah suatu metode untuk melakukan kompresi video. pada prinsipnya, sebuah gambar bergerak adalah sekumpulan frame yang mengalir dengan cepat, di mana setiap frame adalah gambar. dengan kata lain, sebuah frame adalah kombinasi pixel-pixel, dan sebuah video adalah kombinasi fisik dari frame-frame yang dikirim secara bergantian. Kompresi video berati memampatan tiap frame dalam
ruang dan pemampatan secara fisik dari
sekumpulan frame [5].
3. RMVB (Real Media Variable Bitrate) RMVB adalah sebuah format video digital yang dibuat oleh Real Networks, Inc, yang memiliki kecepatan bit variabel perpanjangan dari multimedia container Real Media format. RMVB biasanya digunakan untuk konten multimedia yang tersimpan secara lokal. File menggunakan format ini memiliki ekstensi file . RMVB. Kelebihan dari format RMVB adalah RMVB meninggalkan Bit Rate dan menggunakan Variable Bit Rate untuk kompres data video. File RMVB telah menjadi format populer untuk video digital karena mereka memiliki ukuran file yang lebih kecil dan kecepatan bit yang lebih rendah dengan kualitas yang lebih baik dibandingkan dengan AVI [10].
Universitas Sumatera Utara
10
4. MKV (Matroska Video) MKV adalah salah satu format video yang mungkin sering dijumpai di internet. MKV merupakan alternatif format video selain beberapa format video Digital seperti AVI, MPEG, 3GP, RMVB dimana masing-masing memiliki sifat dan kualitas yang berlainan. Format MKV biasanya digunakan untuk video dengan kualitas tinggi yang tidak semua PC mampu memutarnya dengan baik. Sebuah file video digital dalam format MKV memiliki beberapa bagian, yaitu : a. Video b. Audio c. Subtitle Semua bagian ini terpisah, namun menjadi satu bagian didalam format MKV. Bagian-bagian ini nantinya akan digabungkan menggunakan sebuah codec MKV sehingga video Digital dalam format MKV ini dapat dibaca dan dijalankan menggunakan perangkat lunak multimedia player [10]. 5. WMV (Windows Media Video) WMV adalah adalah format file video terkompresi yang dikembangkan oleh Microsoft. WMV, awalnya dirancang untuk aplikasi Internet Streaming, sebagai pesaing untuk RealVideo. File video Digital dengan format WMV (*.wmv) menggunakan format pembawa ASF milik Microsoft. Berkas ini dapat dijalankan oleh perangkat lunak multimedia player seperti Windows Media Player, MPlayer, VLC media player atau Media Player Classic. Beberapa player pihak ketiga juga ada untuk berbagai platform seperti Linux yang menggunakan implementasi FFMPEG untuk codec WMV [10]. 6. FLV FLV (Flash Video) adalah video dengan format flash movie yang digunakan di Internet. FLV biasanya menjadi format standar yang digunakan oleh Youtube, Google Video, Reuters.com, Yahoo!Video, MySpace, dan lain-lain. File video Digital dengan format FLV biasanya ukurannya jauh lebih kecil daripada video Digital yang menggunakan format MPEG atau AVI. Namun tentu saja kualitas dan resolusi video digital dengan format FLV lebih rendah daripada jenis video digital lainnya. Untuk memutar file dengan format FLV maka dibutuhkan sebuah codec khusus. Hal ini terjadi karena format FLV tidak bisa dimainkan
Universitas Sumatera Utara
11
dengan pemutar musik seperti Winamp, Windows Media Player, dll. Berbeda dengan format MPEG, AVI, Mp3, dan lain-lain, bisa dengan mudah dimainkan dengan pemutar musik tersebut [10].
2.3
Kompresi Data
Kompresi berarti memampatkan atau mengecilkan ukuran. Sedangkan kompresi data adalah proses mengkodekan informasi menggunakan bit atau information-bearing unit yang lain yang lebih rendah daripada representasi data yang tidak terkodekan dengan suatu sistem encoding tertentu. Contoh kompresi sederhana yang biasa dilakukan misalnya adalah menyingkat kata-kata yang sering digunakan tapi sudah memiliki konvensi umum, misalnya : kata “yang” dikompres menjadi kata “yg’’ [1].
Pengiriman data hasil kompresi dapat dilakukan jika pihak pengirim atau yang melakukan kompresi dan pihak penerima memiliki aturan yang sama dalam hal kompresi data. Pihak pengirim harus menggunakan algoritma kompresi data yang sudah baku dan pihak penerima juga menggunakan teknik dekompresi data yang sama dengan pengirim sehingga data yang diterima dapat dibaca/di-decode kembali dengan benar [1].
Kompresi data menjadi sangat penting karena memperkecil kebutuhan penyimpanan data, mempercepat
pengiriman data, memperkecil kebutuhan
bandwidth. Teknik kompresi bisa dilakukan terhadap data teks/biner, gambar (JPEG, PNG, TIFF), audio (MP3, AAC, RMA, WMA), dan video (MPEG, H261, H263) [1]. Contoh kebutuhan data selama 1 detik pada layar resolusi 640 x 480 [1] : 1.
Data Teks 1 karakter = 2 bytes (termasuk karakter ASCII Extended) Setiap karakter ditampilkan dalam 8x8 pixels Jumlah karakter yang dapat ditampilkan per halaman =
640 x 480 8x8
= 4800
karakter. Kebutuhan tempat penyimpanan per halaman = 4.800×2 byte = 9.600 byte = 9.375 Kbyte
Universitas Sumatera Utara
12
2.
Data Grafik Vektor 1 still image membutuhkan 500 baris, setiap 1 baris direpresentasikan dalam posisi horisontal, vertikal, dan field atribut sebesar 8-bit, Sumbu Horizontal direpresentasikan dengan log2 640 = 10 bits , Sumbu Vertikal direpresentasikan dengan log2 480 = 9 bits,Bits per line = 9 bits + 10 bits + 8 bits = 27 bits Storage required per screen page = 500 × 27 = 1687,5 byte = 1,65 Kbyte 8
3.
Color Display Jenis : 256, 4.096, 16.384, 65.536, 16.777.216 warna Masing-masing warna pixel memakan tempat 1 byte Misal 640 x 480 x 256 warna x 1 byte = 307.200 byte = 300 Kbyte.
2.3.1
Jenis-Jenis Kompresi Data
Jenis-jenis kompresi data dapat dibedakan atas [1] : 1. Jenis Kompresi Data Berdasarkan Mode Penerimaan Data oleh Manusia Jenis kompresi data ini dapat dibedakan atas : a. Dialoque Mode, yaitu proses penerimaan data di mana pengirim dan penerima seakan berdialog (real
time), seperti pada contoh
video
conference. Di mana kompresi data harus berada dalam batas penglihatan dan pendengaran manusia. Waktu tunda (delay) tidak boleh lebih dari 150 ms, di mana
50
ms
untuk
proses
kompresi
dan
dekompresi,
100
ms
mentransmisikan data dalam jaringan. b. Retrieval Mode, yaitu proses penerimaan data tidak dilakukan secara real time. Pada jenis ini dapat dilakukan fast forward dan fast rewind di client atau dapat dilakukan random access terhadap data dan dapat bersifat interaktif. 2. Jenis kompresi berdasarkan output dapat dibedakan atas [5] : a. Lossy Compression Kompresi Lossless memiliki batasan pada jumlah kompresi. Namun, dalam beberapa situasi, kita bisa mengorbankan akurasi untuk meningkatkan tingkat kompresi. Meskipun kita tidak mampu kehilangan informasi dalam kompresi teks, kita bisa membelinya ketika kita mengompresi gambar, video, dan
Universitas Sumatera Utara
13
audio. Misalnya, penglihatan manusia tidak dapat mendeteksi beberapa distorsi kecil yang dapat hasil dari kompresi lossy dari suatu gambar. b. Lossless compression Dalam Lossless compresion, integritas data sangat terjaga karena algoritma kompresi dan dekompresi invers tepat satu sama lain: tidak ada bagian dari data yang hilang dalam proses. Metode kompresi lossless biasanya digunakan ketika kita tidak ingin kehilangan data apapun. Misalnya, kita tidak boleh kehilangan data ketika kita kompres file teks atau program aplikasi. Kompresi lossless juga diterapkan sebagai langkah terakhir dalam beberapa prosedur kompresi lossy untuk mengurangi ukuran data. Empat contoh metode kompresi lossless dalam bagian ini: run length coding, dictiinary coding, Huffman coding, dan arithmatic coding.
2.3.2 Kriteria dan Klasifikasi Teknik Kompresi Data
Adapun kriteria utama dari sebuah sistem yang bisa digunakan untuk kompresi data adalah sebagai berikut [1]: 1. Kualitas data hasil enkoding harus bisa membuat ukuran file lebih kecil dari file sumber, serta data tidak rusak untuk kompresi lossy. 2. Kecepatan, ratio, dan efisiensi proses kompresi dan dekompresi. 3. Ketepatan proses dekompresi data harus bisa membuat data hasil dekompresi tetap sama dengan data sebelum dikompres (kompresi loseless).
Sedangkan klasifikasi teknik kompresi data adalah sebagai berikut [1]: 1. Entropy Encoding Teknik kompresi ini memiliki ciri-ciri sebagai berikut : a. Bersifat loseless b. Tekniknya tidak berdasarkan media dengan spesifikasi dan karakteristik tertentu namun berdasarkan urutan data. c. Statistical encoding, tidak memperhatikan semantik data. d. Misalnya : Run-length coding, Huffman coding, Arithmetic coding 2. Source Coding Teknik kompresi ini memiliki ciri-ciri sebagai berikut :
Universitas Sumatera Utara
14
a. Bersifat lossy b. Berkaitan dengan data semantik (arti data) dan media. c. Misalnya : Prediction (DPCM, DM), Transformation (FFT, DCT), Layered Coding (Bit position, subsampling, sub-band coding), Vector Quantization. 3. Hybrid Coding Teknik kompresi ini memiliki ciri-ciri sebagai berikut : a. Gabungan antara lossy + loseless b. Misalnya JPEG, MPEG, H.261, DVI
2.3.3
Aplikasi Kompresi
Aplikasi kompresi data sudah banyak dijual dipasaran dalam berbagai bentuk format file. Adapun beberapa format file yang bisa digunakan untuk kompresi file, antara lain: 1. ZIP File Format Oleh Phil Katz untuk program PKZIP kemudian dikembangkan untuk WinZip, WinRAR,
7-Zip.
File hasil
kompresi
berekstensi
*.zip
dan
MIME
application/zip. Format ini dapat menggabungkan dan mengkompresi beberapa file sekaligus menggunakan bermacam-macam algoritma, namun paling umum menggunakan Katz’s Deflate Algorithm. Adapun beberapa method Zip yang sering digunakan adalah shrinking yang merupakan metode variasi dari LZW, reducing merupakan metode yang mengkombinasikan metode same byte sequence based dan probability based encoding imploding yang menggunakan metode byte sequence based dan Shannon-Fano encoding, deflate yang menggunakan LZW, Bzip2 dan lain-lain. AplikasiWinZip dibuat oleh Nico-Mak Computing [1]. 2. RAR (bagian, 3.20) Diciptakan oleh Eugene Roshal. RAR memiliki dua mode kompresi, umum dan khusus. Modus umum menggunakan algoritma berbasis LZSS mirip dengan Deflate ZIP. Ukuran menggeser kamus dalam RAR dapat bervariasi dari 64 Kb sampai 4 MB (dengan 4 MB nilai default) dan minimum match length adalah 2. Literals, offsets, dan match length yang dikompresi lebih lanjut dengan Huffman coder. Sebuah fitur penting atau RAR adalah kode error-control yang meningkatkan kehandalan arsip RAR ketika sedang dikirim atau disimpan [11].
Universitas Sumatera Utara
15
2.3.4 Rasio Kompresi
Menurut David Salomon (2007), tingkat pengurangan data yang dicapai sebagai hasil dari proses kompresi disebut rasio kompresi. Rasio ini merupakan perbandingan antara panjang data string asli dengan panjang data string yang sudah dikompresi, seperti dituliskan dalam persamaan berikut: 𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅𝑅 =
𝑢𝑢𝑢𝑢𝑢𝑢𝑢𝑢𝑢𝑢𝑢𝑢 𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓 𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎 𝑢𝑢𝑢𝑢𝑢𝑢𝑢𝑢𝑢𝑢𝑢𝑢 𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓 𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡
Jika dinyatakan dalam persentasemaka dituliskan dalam persamaan berikut: 𝑃𝑃 = ( 1 −
𝑢𝑢𝑢𝑢𝑢𝑢𝑢𝑢𝑢𝑢𝑢𝑢 𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓 𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡 ) × 100% 𝑢𝑢𝑢𝑢𝑢𝑢𝑢𝑢𝑢𝑢𝑢𝑢 𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓 𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎
Yang berarti ukuran file berkurang sebesar P (dalam persentase) dari ukuran semula. Semakin tinggi rasio tingkat suatu teknik kompresi data maka semakin efektif teknik kompresi tersebut [11].
2.4
Algoritma Huffman
Algoritma Huffman, yang dibuat oleh seorang mahasiswa MIT bernama David Huffman pada tahun 1952, merupakan salah satu metode paling lama dan paling terkenal dalam pemampatan teks. Algoritma Huffman menggunakan prinsip pengkodean yang mirip dengan kode Morse, yaitu tiap karakter (simbol) dikodekan hanya dengan rangkaian beberapa bit, dimana karakter yang sering muncul dikodekan dengan rangkaian bit yang pendek dan karakter yang jarang muncul dikodekan.dengan rangkaian bit yang lebih panjang. Berdasarkan tipe peta kode yang digunakan untuk mengubah pesan awal (isi data yang diinputkan) menjadi sekumpulan codeword, algoritma Huffman termasuk kedalam kelas algoritma yang menggunakan metode statik [8].
Pada awalnya David Huffman hanya meng-encoding karakter dengan hanya menggunakan pohon biner biasa, namun setelah itu David Huffman menemukan bahwa penggunaan algoritma greedy dapat membentuk kode prefiks yang optimal. Penggunaan algoritma greedy pada algoritma Huffman adalah pada saat pemilihan dua pohon dengan
Universitas Sumatera Utara
16
frekuensi terkecil dalam membuat pohon Huffman. Algoritma greedy ini digunakan pada pembentukan pohon Huffman agar meminimumkan total cost yang dibutuhkan. Cost yang digunakan untuk menggabungkan dua buah pohon pada akar setara dengan jumlah frekuensi dua buah pohon yang digabungkan, oleh karena itu total cost pembentukan pohon Huffman adalah jumlah total seluruh penggabungan. penggabungan dua buah pohon dilakukan setiap langkah dan algoritma Huffman selalu memilih dua buah pohon yang mempunyai frekuensi terkecil untuk meminimumkan total cost [13].
2.4.1 Pohon Huffman
Menurut Forouzan (2013), untuk menggunakan Huffman coding, pertama kita perlu membuat pohon Huffman. Pohon Huffman adalah pohon yang daun pohonnya adalah simbol. Dilakukan dengan cara simbol yang paling sering muncul adalah yang paling dekat dengan akar pohon (dengan jumlah minimum node ke akar) dan simbol lebih sedikit muncul adalah yang terjauh dari akar. Gambar 2.1 menunjukkan proses pembentukan pohon Huffman.
20
10
10
30 30
20
30 30
30
30
Gambar 2.1 Huffman Tree 1.
Kita menempatkan seluruh set karakter berturut-turut. Masing-masing karakter sekarang menjadi simpul pada tingkat terendah dari pohon.
2.
Memilih dua node dengan frekuensi terkecil kemudian, digabungkan untuk membentuk sebuah node baru, sehingga pohon dua tingkat sederhana. Frekuensi dari node baru adalah frekuensi gabungan dari dua node asli. Node ini, satu tingkat dari daun, memenuhi syarat untuk kombinasi dengan node lain.
Universitas Sumatera Utara
17
3.
Kita ulangi langkah dua sampai semua node, pada setiap tingkat, digabungkan menjadi satu pohon.
4.
Setelah pohon dibuat, kami menetapkan nilai bit untuk masing-masing cabang. Karena pohon Huffman adalah pohon biner, setiap node memiliki maksimum dua anak [5].
2.4.2 Coding Table
Menurut Forouzan (2013) setelah pohon telah dibuat, kita dapat membuat tabel yang menunjukkan bagaimana masing-masing karakter dapat di-encode dan decode. kode untuk setiap karakter dapat ditemukan dengan memulai pada akar dan mengikuti cabang yang mengarah pada karakter itu. Kode itu sendiri adalah nilai bit masingmasing di jalan cabang, diambil secara berurutan. Tabel 2.1 menunjukkan karakter kode untuk contoh sederhana berikut. Tabel 2.1 Coding Table Simbol
Code
A
00
B
010
C
011
D
10
E
11
Perhatikan poin-poin tentang kode. pertama, karakter dengan frekuensi yang lebih tinggi menerima kode pendek (A, D dan E) daripada karakter dengan frekuensi yang lebih rendah (B dan C). Bandingkan ini dengan kode yang menetapkan panjang bit sama dengan masing-masing karakter. Kedua, dalam sistem coding, tidak ada kode yang menjadi awalan dari kode lain. Kode 2-bit, 00,10 dan 11, bukan prefiks dari setiap dua kode lain (010 dan 011). Dengan kata lain, kita tidak memiliki kode 3-bit awal dengan 00,10, atau 11. Nilai ini membuat kode Huffman menjadi Instantaneous code [5].
Universitas Sumatera Utara
18
2.4.3 Encoding dan Decoding
Gambar 2.2 menunjukkan bagaimana kita bisa encode dan decode di Huffman coding.
Gambar 2.2 Encoding dan Decoding di Huffman Coding
Dalam Huffman coding, tidak ada kode yang menjadi awalan dari kode lain. Ini berarti bahwa kita tidak perlu memasukkan pembatas untuk memisahkan kode untuk satu karakter dari kode yang berikutnya. Huffman coding juga memungkinkan seketika saat di-decoding, ketika decoder memiliki dua bit 00, segera dapat memecahkan kode itu sebagai karakter A, ia tidak perlu melihat lebih banyak bit. Salah satu kelemahan dari Huffman coding adalah bahwa kedua encoder dan decoder perlu menggunakan tabel pengkodean yang sama. Dengan kata lain, pohon Huffman tidak dapat dibuat secara dinamis seperti kamus di LZW coding, Namun, jika encoder dan decoder menggunakan set simbol yang sama sepanjang waktu, pohon dapat dibuat dan dibagi sekali. Jika tidak, tabel perlu dibuat oleh encoder dan diberikan kepada penerima [5].
2.5
Alat Bantu Perancangan Perangkat Lunak
Alat bantu yang digunakan dalam perancangan perangkat lunak ini adalah sebagai berikut.
Universitas Sumatera Utara
19
2.5.1
Flowchart
Flowcharting adalah suatu teknik untuk menyusun rencana program yang telah diperkenalkan dan telah dipergunakan oleh kalangan pemrogram komputer sebelum algoritma menjadi populer. Flowchart adalah untaian simbol gambar (chart) yang menunjukkan aliran (flow) dari proses terhadap data [12].
Ada dua kategori simbol flowchart menurut Dr. Suarga (2012), yaitu program flowchart dan sistem flowchart, yakni: 1. Program flowchart, yaitu simbol-simbol flowchart yang digunakan untuk menggambarkan logik dari pemrosesan terhadap data. Adapun simbol-simbol Program flowchart seperti pada Tabel 2.2. Tabel 2.2 Simbol Program Flowchart No
Simbol
Keterangan
1
Terminator, mulai atau selesai
2
Proses, menyatakan proses terhadap data
3
Input/Output, menerima atau menampilkan output
4
Seleksi/Pilihan, memilih aliran berdasarkan syarat
5
Predefined-Data, definisi awal dari variabel atau data
6
Predefined-Process, lambang fungsi atau subprogram
7
Connector, penghubung
Universitas Sumatera Utara
20
2. Sistem Flowchart, merupakan simbol-simbol peralatan sistem komputer yang digunakan untuk menyatakan proses pengolahan data. Tabel 2.3 Simbol Sistem Flowchart No
Simbol
Keterangan
1
Manual input, Keyboard
2
Printer
3
File/Storage
4
Display, monitor
5
Magnetic Tape
6
Magnetic Disk
7
Sorting
8
Extract
9
Merge
2.5.2
Algoritma
Beberapa definisi algoritma [12]: 1. Teknik penyusunan langkah-langkah penyelesaian masalah dalam bentuk kalimat dengan jumlah kata terbatas tetapi tersusun secara logis dan sistematis. 2. Suatu prosedur yang jelas untuk menyelesaikan suatu persoalan dengan menggunakan langkah-langkah tertentu dan terbatas jumlahnya. 3. Susunan langkah yang pasti, yang bila diikuti maka akan mentransformasi data input menjadi output yang berupa informasi.
Universitas Sumatera Utara
21
Ciri Algoritma, yaitu [12]: 1. Algoritma mempunyai awal dan akhir, suatu algoritma harus berhentu setelah mengerjakan serangkaian tugas. Dengan kata lain, suatu algoritma memiliki langkah yang terbatas. 2. Setiap langkah harus didefinisikan dengan tepat, sehingga tidak memiliki arti ganda. 3. Memiliki masukan (input) atau kondisi awal. 4. Memiliki keluaran (output) atau kondisi akhir. 5. Algoritma harus efektif, bila diikuti benar-benar maka akan menyelesaikan persoalan. Sifat Algoritma, yaitu [12]: 1. Input: Suatu algoritma memiliki input atau kondisi awal sebelum dilaksanakan, bisa berupa nilai peubah yang diambil dari himpunan khusus. 2. Output: Suatu algoritma akan menghasilkan output setelah dilaksanakan, atau algoritma akan mengubah kondisi awal menjadi kondisi akhir, dimana nilai output diperoleh dari nilai input yang telah diproses melalui algoritma. 3. Defineteness: Langkah-langkah yang dituliskan dalam algoritma terdefinisi dengan jelas sehingga mudah dilaksakan oleh pengguna algoritma. 4. Finiteness: Suatu algoritma harus memberi kondisi akhir atau output setelah sejumlah langkah yang terbatas jumlahnya dilakukan terhadap setiap kondisi awal atau input yang diberikan. 5. Effectivenes: setiap langkah dalam algoritma bisa dilaksanakan dalam suatu selang waktu tertentu sehingga pada akhirnya didapatkan solusi sesuai yang diharapkan. 6. Generality: Langkah-langkah algoritma berlaku untuk setiap himpunan input yang sesuai dengan persoalan yang diberikan, tidak hanya untuk himpunan tertentu.
Universitas Sumatera Utara
22
2.6
Microsoft Visual Basic 6.0
Microsoft Visual Basic 6.0 (VB 6.0) merupakan salah satu aplikasi pemrograman visual yang dibuat Microsoft. Adapun beberapa kemampuan atau manfaat dari Visual Basic diantaranya [2] : 1. Untuk membuat program aplikasi berbasiskan windows. 2. Untuk membuat objek-objek pembantu program, seperti Control Active X, file Help, Aplikasi Internet dan sebagainya. 3. Menguji program (debugging) dan menghasilkan program akhir berakhiran “EXE” yang bersifat execuTabel atau dapat langsung dijalankan.
Keistimewaan utama dari Visual Basic adalah [2] : 1. Menggunakan platform pembuatan program yang diberi nama Developer Studio, yang memiliki tampilan seperti C++ dan Visual J++. 2. Memiliki kompiler handal yang dapat menghasilkan File ExecuTabel yang lebih cepat dan efisien. 3. Memiliki tambahan sarana wizard yang baru. Tambahan kontrol-kontrol baru dan lebih canggih serta peningkatan kaidah struktur bahasa visual basic. 4. Kemampuan membuat Active X dan fasilitas internet yang lebih banyak. 5. Sarana akses yang lebih cepat dan andal untuk membuat aplikasi database yang berkemampuan tinggi. 6. Visual Basic 6.0 memiliki beberapa versi baru edisi yang disesuaikan dengan kebutuhan pemakainya.
Dalam program berbasiskan OOP (Object Oriented Programming), sebuah program dibagi menjadi bagian-bagian kecil yang disebut dengan objek. Setiap objek memiliki entiti yang terpisah dengan entiti-entiti lain dalam lingkungannya. Objekobjek yang terpisah ini dapat diolah sendiri-sendiri, dan setiap objek memiliki sekumpulan sifat dan metode yang melakukan fungsi tertentu sesuai dengan yang telah kita programkan kepadanya [2].
Universitas Sumatera Utara
23
Adapun objek-objek yang dipergunakan dalam program ini adalah [2] : 1. Project Project adalah sekumpulan modul. Jadi project merupakan aplikasi itu sendiri. Project disimpan dalam file yang berakhiran VBP. Jika akan melaksanakan pembuatan program aplikasi, akan terdapat jendela project yang berisi semua file yang dibutuhkan menjalankan program aplikasi Visual Basic 6.0. Gambar jendela project untuk pembuatan dan penyimpanan form dapat dilihat pada Gambar 2.3.
Gambar 2.3 Jendela Project
2. Form Form adalah jendela yang dipakai untuk membuat user interface/tampilan. Secara otomatis akan tersedia form yang baru jika membuat suatu program aplikasi yang baru, dengan nama Form1. Jendela form seperti terlihat pada Gambar 2.4.
Gambar 2.4 Jendela Form
3. Toolbox Toolbox adalah kumpulan dari object yang digunakan untuk membuat user interface (tampilan) serta control bagi program aplikasi. Berikut ini adalah
Universitas Sumatera Utara
24
gambar toolbox yang ada pada Visual Basic 6.0, sebagaimana terlihat pada Gambar 2.5.
Gambar 2.5 Jendela Toolbox
4.
Properties Properties berisikan daftar struktur setting properti yang digunakan pada sebuah object terpilih. Kotak drop-down pada bagian atas jendela berisi daftar semua object pada form yang aktif. Ada tab tampilan, yaitu alphabetic (urut abjad) dan categorized (urut berdasarkan kelompok). Dibagian bawah kotak terdapat properti dari objek. Tampilan properties dapat dilihat pada Gambar 2.6.
Gambar 2.6 Jendela Properties
5. Kode Program Kode program adalah serangkaian tulisan perintah yang akan dilaksanakan jika suatu objek dijalankan. Kode program ini akan mengontrol dan menentukan jalannya suatu objek. 6. Event Event adalah peristiwa atau kejadian yang diterima suatu objek, misalnya klik, seret, tunjuk, dan lain sebagainya. Perhatikan contoh dibawah ini :
Universitas Sumatera Utara
25
Private sub Command_Click ( ) .................... End sub
Kode program di atas menunjuikan penunjukan penggunaan event Click pada objek Command, maka baris-baris kode program yang ada dibawanya akan dilaksanakan. 7. Metode (Methods) Metode adalah serangkaian perintah yang sudah tersedia pada suatu objek yang dapat diminta untuk mengerjakan tugas khusus. Contoh penggunaan metode adalah: Private Sub From_Active ( ) Form1.Print ”” End Sub Kode program di atas menunjukan penggunaan metode Print (mencetak) pada objek Form1 untuk mencetak tulisan “Microsoft Visual Basic 6.0”. 8. Modules Modules dapat disejajarkan dengan form, tetapi modules tidak mengandung objek. Module berisikan prosedur umum, deklarasi variabel dan definisi konstanta yang digunakan oleh aplikasi.
Universitas Sumatera Utara