• Tidak ada hasil yang ditemukan

BAB 2 LANDASAN TEORI

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB 2 LANDASAN TEORI"

Copied!
31
0
0

Teks penuh

(1)

BAB 2

LANDASAN TEORI

2.1 Pengolahan Citra Digital

Citra digital dapat didefinisikan sebagai fungsi dua variabel yaitu f(x,y), dimana x dan y adalah koordinat spasial dan nilai f(x,y) adalah intensitas citra pada koordinat tersebut. Teknologi dasar untuk menciptakan dan menampilkan warna pada citra digital berdasarkan pada penelitian bahwa sebuah warna merupakan kombinasi dari tiga warna dasar, yaitu merah, hijau, dan biru atau RGB (Suhendra, 2008: 1).

Pengolahan citra adalah kegiatan untuk memperbaiki kualitas citra agar mudah diinterpretasi oleh manusia/ mesin (komputer). Inputannya adalah citra dan keluarannya juga citra tapi dengan kualitas lebih baik daripada citra masukan sesuai dengan kebutuhan terhadap citra itu sendiri, misalnya citra warnanya kurang tajam, kabur (blurring), mengandung noise (misal bintik-bintik putih) dan lain-lain, sehingga perlu ada pemrosesan untuk memperbaiki citra karena citra tersebut menjadi sulit diinterpretasikan karena informasi yang disampaikan menjadi berkurang.

Tingkat ketajaman/ resolusi warna pada citra digital tergantung pada jumlah bit yang digunakan oleh komputer untuk merepresentasikan setiap piksel tersebut. Tipe yang sering digunakan untuk merepresentasikan citra adalah 8-bit citra yang terdiri dari 256 warna (0 untuk hitam-255 untuk putih), tetapi dengan kemajuan teknologi perangkat keras grafik, kemampuan tampilan citra di komputer meningkat hingga 32 bit (232 warna).

Citra digital merupakan suatu matriks dimana indeks baris dan kolomnya menyatakan suatu titik pada citra tersebut dan elemen matriksnya (yang disebut sebagai elemen gambar/piksel/pixel/picture element/pels) menyatakan tingkat keabuan/ warna pada titik tersebut. Citra digital dinyatakan dengan matriks berukuran

(2)

Gambar 2.1 Matriks citra digital N x M

Gambar 2.2 Ilustrasi sistem koordinat piksel

Menurut Wijaya dan Prijono (2007: 30), pengolahan citra digital dapat dilakukan dengan berbagai cara, adapun beberapa operasi dalam pengolahan citra antara lain:

1. Perbaikan citra (image restoration)

2. Peningkatan kualitas citra (image enhancement) 3. Registrasi citra (image registration)

4. Pemampatan data citra (image data compression) 5. Pemilahan citra (image segmentation)

Dalam Tugas Akhir ini, pengolahan citra digital difokuskan pada teknik kompresi citra, yaitu citra berwarna RGB format BMP.

(3)

2.2 Format Citra Bitmap (BMP)

Citra disimpan di dalam file dengan format tertentu. Format citra yang baku di lingkungan sistem operasi Microsoft Windows dan IBM OS/2 adalah file bitmap (BMP). Saat ini format BMP memang kalah populer dibandingkan format JPG atau GIF. Hal ini karena file citra BMP pada umumnya tidak dikompresi, sehingga ukuran filenya relatif lebih besar daripada file JPG maupun GIF. Hal ini juga menyebabkan format BMP sudah jarang digunakan.

Meskipun format BMP tidak mangkus dari segi ukuran berkas, namun format BMP memiliki kelebihan dari segi kualitas gambar. Citra dalam format BMP lebih bagus daripada citra dalam format yang lainnya, karena citra dalam format BMP umumnya tidak dimampatkan sehingga tidak ada informasi yang hilang. Terjemahan bebas bitmap adalah pemetaan bit, artinya nilai intensitas piksel di dalam citra dipetakan kesejumlah bit tertentu. Peta bit yang umum adalah 8, artinya setiap piksel panjangnya 8 bit. Delapan bit ini merepresentasikan nilai intensitas piksel. Dengan demikian ada sebanyak 28 = 256 derajat keabuan, mulai dari 0-255.

Citra dalam format BMP ada tiga macam: citra biner, citra berwarna, dan citra hitam-putih (grayscale). Citra biner hanya mempunyai dua nilai keabuan, yaitu nilai 0 dan 1. Oleh karena itu, 1 bit sudah cukup merepresentasikan nilai piksel. Citra berwarna adalah citra yang lebih umum. Warna yang terlihat pada citra bitmap merupakan kombinasi dari tiga warna dasar, yaitu mereh, hijau, dan biru. Setiap piksel disusun oleh tiga komponen warna: R (red), G (green), dan B (blue). Kombinasi dari ketiga warna RGB tersebut menghasilkan warna yang khas untuk piksel yang bersangkutan.

Pada citra 256 warna setiap piksel panjangnya 8 bit, tetapi komponen warna RGBnya disimpan di dalam tabel RGB yang disebut palet. 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

(4)

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 mempunyai satu kanal warna. Citra hitam putih umumnya adalah 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 224 = 16.777.216 kombinasi warna.

2.3 Model Citra RGB

Pada umumnya, representasi citra digital membutuhkan kapasitas ruang penyimpanan yang besar. Citra RGB merupakan citra true color yang mendefinisikan warna merah, hijau dan biru untuk setiap pikselnya (RGB), walaupun belum ada standar yang ditetapkan secara umum untuk citra RGB, tetapi TV dan industri video memiliki standar data warna RGB yang mengikuti rekomendasi ITU-R BT.709 untuk High Definition TV (HDTV), monitor juga dibangun dengan mengikuti rekomendasi tersebut. Dalam model RGB, warna pada setiap piksel ditentukan dari kombinasi warna merah, hijau dan biru. Format file citra menyimpan citra RGB menggunakan 1 byte (8 bit) untuk menampilkan masing-masing warna primer, yang memiliki rentang [0, 255] atau [1, 256], jadi warna RGB memiliki 3 byte (3 x 8 bit = 24 bit) untuk menggambarkan tiap-tiap piksel, dengan demikian terdapat 2563 = 16.777.216 warna berbeda yang bisa direpresentasikan pada citra RGB.

Tabel 2.1 Contoh warna 24 bit

R G B Warna 255 255 255 white 0 0 128 navy blue 0 0 255 blue1 0 255 0 green 255 250 250 snow 248 248 255 ghost white 255 239 213 papaya whip 255 228 225 misty rose

(5)

2.4 Pohon

Pohon (tree) membentuk salah satu subklas dari graf yang paling banyak digunakan. Dalam ilmu komputer, pohon berguna dalam mengatur dan mengaitkan data dalam suatu basis data.

Definisi 2.1 Sebuah pohon T (tree T) adalah sebuah graf sederhana yang memenuhi: jika v dan w adalah verteks atau node di T, maka terdapat sebuah lintasan sederhana tunggal dari v ke w (Johnsonbaught, Richard, 1998: 75).

Definisi 2.2 Sebuah pohon berakar adalah pohon dimana sebuah node tertentu dirancang seperti akar (Johnsonbaught, Richard, 1998: 75).

2.5 Pohon Biner (Binary Tree)

Definisi 2.3 Pohon biner (binary tree) adalah pohon berakar yang setiap nodenya mempunyai paling banyak dua anak dan masing-masing anak dari sebuah node disebut sebagai anak kiri (left child) dan anak kanan (right child) (Jong, Jek Siang, 2002: 283).

Definisi 2.4 Pohon biner penuh (full binary tree) adalah pohon biner yang setiap nodenya (kecuali daun) mempunyai tepat dua anak (Jong, Jek Siang, 2002: 283).

Pohon biner dapat digunakan untuk menyatakan ekspresi aljabar maupun pencarian dan pengurutan data.

Definisi 2.5 Misalkan T adalah pohon biner dan v є V(T) adalah suatu titik cabang dalam T. Sub pohon kiri (left sub tree) v adalah pohon biner yang:

1. Titik-titiknya adalah anak kiri v dan semua turunannya.

2. Garis-garisnya adalah garis-garis dalam E(T) yang menghubungkan titik-titik subpohon kiri v.

(6)

Gambar 2.3 Pohon Biner

Gambar diatas merupakan pohon biner dengan dua subpohon, yaitu subpohon kiri v dengan w sebagai akar dan subpohon kanan v dengan x sebagai akar.

2.6 Teori Informasi dan Entropi

Kompresi data citra memanfaatkan teori informasi karena kompresi menitikberatkan pada masalah redudansi. informasi yang redundan pada kumpulan data citra menimbulkan bit-bit tambahan pada pengkodean, jika informasi tambahan itu bisa diambil maka data yang diperlukan tersebut bisa direduksi.

Teori informasi memanfaatkan terminologi entropi sebagai tolak ukur seberapa besar informasi yang dikodekan pada sebuah citra. Entropi merupakan suatu ukuran informasi yang dikandung oleh suatu citra dan digunakan sebagai ukuran untuk mengukur kemampuan kompresi dari citra. Entropi memiliki persamaan matematis sebagai berikut:

m

H (X) = - ∑ pi log2 pi i=1

m = jumlah simbol

pi = probabilitas simbol ke-i

w

v x

(7)

Contoh:

Untuk sumber biner, set probabilitasnya adalah: P = {p1, p2} = {p1, 1-p1}

H(p1,p2) = -p1lgp1 – p2lgp2

= -p1lgp1 – (1 – p1)lg(1 – p1) = H(p1)

Gambar 2.4 Entropy Contoh konsep entropy pada Shannon-Fano Coding:

S = {A, B, C, D, E}

P = {0.35, 0.17, 0.17, 0.16, 0.15}

Pengkodean Shannon-Fano:

1. Bagi S kedalam s1 dan s2 (pilih yang memberikan perbedaan p(s1) dan p(s2

2. s ) terkecil 1 = (A,B)  p(s1 3. s ) = p(A) + p(B) = 0,52 2 = (C,D,E)  p(s2 4. Panggil ShannonFano() ) = p(C) + p(D) + p(E) = 0,48

Panjang code rata-rata:

(8)

Semakin kecil nilai entropi yang dihasilkan maka kemampuan kompresi lebih baik. entropi juga didefinisikan sebagai limit kemampuan kompresi citra yang tidak dapat dilampau oleh algoritma manapun. jika nilai entropi dan jumlah simbol diketahui maka sebuah citra dapat diprediksi berapa besar ukuran terkompresinya, sehingga dapat diprediksi pula rasio kompresinya dengan menggunakan persamaan matematis berikut ini:

ukuran terkompresi = w x h x t x m x entropi : 8 + (m x j) w: lebar citra digital

h: tinggi citra digital

t: menyatakan jumlah plane yang digunakan pada saat kompresi, bernilai 3 jika menggunakan tipe per plane, karena plane R, G, B digunakan secara terpisah dan bernilai 1 jika menggunakan tipe kompresi per piksel karena plane R, G, B digunakan secara satu kesatuan menjadi sebuah plane.

m: jumlah simbol

j: menyatakan ukuran codebook setiap barisnya, jumlah baris sama dengan jumlah simbol.

2.7 Kompresi Citra

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 mubazir atau redudan.

Contohnya: citra langit biru dengan beberapa awan putih yang memiliki banyak intensitas dan region yang sama.

Kompresi citra bertujuan meminimalkan kebutuhan memori untuk merepresentasikan citra digital dengan mengurangi duplikasi data di dalam citra

(9)

sehingga memori yang dibutuhkan menjadi lebih sedikit daripada representasi citra semula (Munir, 2004: 160).

Tipe kompresi citra, yaitu bagaimana data digital di proses sebelum digunakan untuk proses kompresi, tipe kompresi yang digunakan untuk proses kompresi ini adalah:

1. Tipe per plane

Tipe per plane memperlakukan data citra digital yang terdiri dari tiga plane yaitu Red, Green dan Blue dijadikan sebuah matrik satu dimensi dengan panjang matrik sepanjang hasil perkalian dari panjang dan lebar citra digital. Sehingga masing-masing data digital di setiap plane nya akan dipetakan satu per satu ke dalam matriks tersebut. Setiap matriks diisi nilai antara 0-255, diilustrasikan sbb:

Gambar 2.5 Ilustrasi tipe per plane 2. Tipe per piksel

Tipe per piksel memperlakukan data citra digital yang terdiri atas tiga buah plane, yaitu red, green dan blue dijadikan sebuah matriks satu dimensi dengan panjang matriks sepanjang hasil perkalian dari tinggi dan lebar citra. Sehingga masing-masing data citra digital di setiap plane nya akan dijadikan sebuah nilai dengan persamaan matematis sebagai berikut:

RGB = (B x 65536) + (G x 256) + R B G R w h R G B … R w x h G B

(10)

Kemudian nilai RGB yang dihasilkan dimasukkan kedalam matriks tersebut. Setiap matriks diisi nilai antara 0-16777215, ilustrasinya sebagai berikut:

Gambar 2.6 Ilustrasi tipe per piksel Manfaat kompresi citra adalah:

1. Waktu pengiriman data pada saluran komunikasi data lebih singkat.

Contoh: pengiriman gambar dari fax, videoconferencing, handphone, download dari internet, pengiriman data medis, pengiriman dari satelit, dan sebagainya. 2. Membutuhkan ruang memori dalam storage lebih sedikit daripada representasi

citra yang tidak dikompresi.

Metode kompresi yang diharapkan dari sebuah kompresi citra adalah: 1. Proses kompresi dan dekompresinya cepat.

Proses kompresi adalah citra dalam representasi tidak mampat dikodekan dengan representsi yang meminimumkan kebutuhan memori. Citra terkompresi disimpan dalam file dengan format tertentu misalnya JPEG (Joint Photographic Expert Group). Proses dekompresi adalah citra yang sudah dikompresi dikembalikan lagi (decoding) menjadi representasi yang tidak mampat. Diperlukan jika citra tersebut dikembalikan ke layar/ disimpan dalam format tidak mampat yaitu format bitmap (BMP).

2. Memori yang dibutuhkan seminimal mungkin

Ada metode yang berhasil melakukan kompresi dengan persentase besar, ada yang kecil. Ukuran memori hasil kompresi juga bergantung pada citra itu sendiri, yaitu citra yang mengandung banyak elemen duplikasi biasanya berhasil dikompresi

B G R w h RGB RGB … RGB RGB w x h

(11)

dengan memori yang lebih sedikit. Contoh: citra langit biru tanpa awan dibandingkan dengan citra pemandangan alam (mengandung banyak objek).

3. Kualitas citra hasil kompresi harus bagus (fidelity)

Informasi yang hilang akibat kompresi seharusnya seminimal mungkin sehingga kualitas hasil kompresi bagus. Tetapi biasanya kualitas kompresi bagus bila proses kompresi menghasilkan pengurangan memori yang tidak begitu besar, demikian sebaliknya.

Dalam kompresi citra terdapat standar pengukuran error (galat) kompresi yaitu: 1. MSE (Mean Square Error), yaitu sigma dari jumlah error antara citra hasil

kompresi dan citra asli.

M N

MSE = 1 ∑ ∑ [I(x, y) – I’(x, y)]2

MN y=1 x=1

Dimana: I(x,y) adalah nilai pixel di citra asli.

I’(x,y) adalah nilai pixel pada citra hasil kompresi. M, N adalah dimensi citra.

2. PSNR (Peak Signal to Noise Ratio), yaitu untuk mengukur kualitas hasil kompresi.

PSNR = 20 * log10 (b/sqrt (MSE))

Nilai b merupakan nilai maksimum dari piksel citra yang digunakan, karena Tugas Akhir ini menggunakan citra bitmap 24 bit maka nilai b adalah 224-1 atau 16777215. Nilai MSE yang semakin rendah akan semakin baik, sedangkan semakin besar nilai PSNR, semakin bagus kualitas kompresi. PSNR memiliki satuan decibel (dB).

Contoh: Pada kompresi jenis lossless citra di rekonstruksi seperti citra aslinya tanpa kehilangan informasi, misalnya terdapat potongan citra 3 x 3 sebagai berikut:

(12)

M N

MSE = 1 ∑ ∑ [I(x, y) – I’(x, y)]2 MN y=1 x=1 MSE = 1/6( 2-2 + 8-8 + 3-3 + 2-2 + 1-1 + 1-1 + 2-2 + 2-2 + 2-2 ) = 0 2 PSNR = 20 * log10 (b/sqrt (MSE)) = 20 log 10 / √ 0 = infinite

4. Proses transfer dan penyimpanannya mudah.

Kompresi citra sebaiknya dapat meminimalkan waktu pengiriman citra pada saluran komunikasi.

Metode kompresi diklasifikasikan ke dalam dua metode, yaitu (Munir, 2004: 169): 1. Metode Lossless

Metode lossless merupakan teknik kompresi yang menghasilkan hasil dekompresi tepat sama seperti data semula. Tidak ada informasi yang hilang akibat kompresi. Tetapi rasio kompresinya sangat rendah, misalnya pada data teks, gambar seperti GIF dan PNG. Contoh metode ini adalah Shannon-Fano coding, Huffman coding, Arithmetic coding dan lain sebagainya.

Rasio kompresi = ( ukuran citra asli – ukuran citra terkompresi ukuran citra asli

x 100 % )

2. Metode Lossy

Metode lossy merupakan teknik kompresi yang menghasilkan hasil dekompresi yang hampir sama dengan data semula. Ada informasi yang hilang akibat kompresi,

2 8 2 1 1 3 3 2 2 2 1 1 2 2 2 2 8 2

(13)

tetapi dapat ditolerir oleh persepsi mata. Misalnya pada gambar dan MP3. Kelebihan teknik ini adalah rasio kompresi yang tinggi dibanding metode lossless.

Ada beberapa pendekatan yang digunakan untuk kompresi citra: 1. Pendekatan statistik (statistical compression)

2. Pendekatan ruang (spatial compression)

3. Pendekatan kuantisasi (quantizing compression) 4. Pendekatan fraktal (fractal compression)

5. Pendekatan transformasi wavelet (wavelet compression)

Gambar 2.7 Metode kompresi berdasarkan hasilnya

Pada Tugas Akhir ini kompresi citra akan menggunakan pendekatan statistik dengan membandingkan kinerja dua algoritma kompresi yaitu algoritma kompresi Shannon-Fano dan algoritma Huffman.

2.8 Algoritma Huffman

Pada tahun 1951, David A. Huffman dalam kelas Informasi Teori di MIT diberikan pilihan untuk membuat sebuah term paper atau mengikuti ujian akhir. Pada saat itu

pilihan term paper yang diberikan profesor Robert M. Fano adalah tentang

menemukan kode biner yang paling efisien. Tidak dapat membuktikan kode apapun yang paling efisien, Huffman hampir menyerah dan mulai belajar untuk mengikut i

(14)

ini adalah yang paling efisien. Apa yang dilakukan Huffman melampaui profesornya sendiri, yang bekerja sama dengan pencipta bidang teori informasi Claude Shannon mengembangkan kode yang mirip. Huffman menghindari kesalahan besar dari kode Shannon-Fano yang kurang optimal dengan membangun pohon binernya dari bawah ke atas dan bukan dari atas ke bawah. Makalah berjudul “A Method for the Construction of Minimum Redundancy Codes” tersebut lalu dipublikasikan oleh Huffman pada tahun 1952 dalam sebuah jurnal profesional untuk Institute of Radio Engineers.

Algoritma Huffman adalah salah satu algoritma kompresi teks tertua yang disusun oleh David Huffman pada tahun 1952. Algoritma tersebut digunakan untuk membuat kompresi jenis lossless compression, yaitu kompresi data dimana tidak satu byte pun hilang sehingga data tersebut utuh dan disimpan sesuai dengan aslinya. Prinsip kerja algoritma Huffman adalah mengkodekan setiap karakter kedalam representasi bit. Representasi bit untuk setiap karakter berbeda satu sama lain berdasarkan frekuensi kemunculan karakter. Semakin sering karakter tersebut muncul, maka semakin pendek panjang representasi bitnya. Sebaliknya bila semakin jarang frekuensi suatu karakter untuk muncul, maka semakin panjang representasi bit untuk karakter tersebut.

Algoritma Huffman pada citra adalah sebagai berikut:

1. Hitung frekuensi kemunculan masing-masing simbol pada citra.

2. Urutkan frekuensi kemunculan simbol citra dari yang terkecil ke yang terbesar, masing-masing simbol dapat direpresentasikan sebagai sebuah node.

3. Gabungkan dua node yang mempunyai frekuensi kemunculan simbol terkecil, kemudian jumlahkan kedua frekuensi kemunculan sehingga membentuk parent node.

4. Masukkan node parent ke dalam kumpulan node dan urutkan berdasarkan

frekuensi kemunculan simbol, dari yang terkecil ke yang terbesar.

5. Hapus node dengan frekuensi kemunculan terkecil yang telah digabungkan dari kumpulan node.

(15)

7. Beri label pada setiap sisi pohon biner, sisi kiri dilabeli dengan 0 dan sisi kanan dilabeli dengan 1.

8. Telusuri pohon biner dari akar ke daun. Barisan label-label pada sisi pohon dari akar ke daun menyatakan kode Huffman untuk simbol yang bersesuaian.

Misalnya terdapat data citra digital dalam bentuk matriks seperti gambar dibawah ini: 255 0 50 255 25 25 25 50 50 180 180 180 50 50 120 255 255 25 120 120 50 255 255 50 255 255 180 25 255 255 255 255 180 25 255 255 Gambar 2.8 Potongan data citra digital

Langkah-langkah pembentukan pohon Huffman:

1. Hitung frekuensi kemunculan masing-masing simbol pada citra.

Dari potongan data citra tersebut diperoleh tabel distribusi frekuensi sebagai berikut:

Tabel 2.2 Tabel distribusi frekuensi Huffman

Simbol Frekuensi Total bit

120 3 3 x 1 byte = 3 50 6 6 x 1 byte = 6 180 6 6 x 1 byte = 6 25 7 7 x 1 byte = 7 255 14 14 x 1 byte = 14 Total 36 byte

2. Urutkan frekuensi kemunculan simbol dari yang terkecil ke yang terbesar, masing-masing simbol dapat direpresentasikan sebagai sebuah node.

(16)

3. Gabungkan dua node yang mempunyai frekuensi kemunculan simbol terkecil, kemudian jumlahkan kedua frekuensi kemunculan sehingga membentuk parent node.

4. Masukkan node parent ke dalam kumpulan node dan urutkan berdasarkan

frekuensi kemunculan simbol, dari yang terkecil ke yang terbesar.

5. Hapus node dengan frekuensi kemunculan terkecil yang telah digabungkan dari kumpulan node.

Langkah 4 dan 5 adalah sebagai berikut:

6. Ulangi lagkah 1-5 sampai semua simbol habis dibangkitkan.

13 9 3 14 6 6 7 7 14 9 3 6 6 7 9 3 14 6 6

(17)

7. Beri label pada setiap sisi pohon biner, sisi kiri dilabeli dengan 0 dan sisi kanan dilabeli dengan 1.

8. Telusuri pohon biner dari akar ke daun. Barisan label-label pada sisi pohon dari akar ke daun menyatakan kode Huffman untuk simbol yang bersesuaian

14 13 9 3 6 6 7 22 36 255 25 180 50 120 0 1 0 1 0 1 0 1 13 9 3 14 6 6 7 22

(18)

Maka dari pohon Huffman di atas diperoleh kode Huffman sebagai berikut:

Tabel 2.3 Codebook Huffman

simbol frekuensi Kode

120 3 000

50 6 001

180 6 010

25 7 011

255 14 1

Dari tabel di atas dapat dilihat bahwa simbol yang sering muncul dikodekan dengan kode yang lebih pendek, demikian juga sebaliknya. Setelah itu dilakukan substitusi dari simbol-simbol potongan citra digital pada Gambar 2.5 dengan kode Huffman yang terdapat pada Tabel 2.3, sehingga diperoleh data biner sebagai berikut:

101000110110110110010010100100100010010001 1011000000001110111101001111110111101001111 Gambar 2.9 Data biner hasil substitusi kode Huffman

Data biner hasil substitusi kode Huffman memiliki ukuran 85 bit setara 10,625 byte, sedangkan tanpa kompresi dibutuhkan 36 bytes, diperoleh dari total frekuensi kemunculan simbol dikalikan dengan 1 byte. Sehingga Algoritma Huffman dapat mereduksi penggunaan memori sebanyak 25,375 bytes. Dengan rasio kompresinya yaitu (100 – 10,625/36 x 100%) = 70,486 %.

2.9 Algoritma Shannon-Fano

Algoritma Shannon-Fano merupakan algoritma pertama yang diperkenalkan untuk kompresi sinyal digital pada papernya yang berjudul “A Mathematical Theory of Communication” pada tahun 1948. Shannon dan Fano terus menerus mengembangkan algoritma ini yang menghasilkan kode biner (binary codeword) untuk setiap karakter yang terdapat pada data dengan redudansi minimum.

(19)

Algoritma Shannon-Fano didasarkan pada variable-length code yang berarti beberapa 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.

Algoritma Shannon-Fano merupakan salah satu algoritma kompresi yang sangat baik dalam pengkompresian teks. Pada prinsipnya algoritma ini menggunakan pendekatan top down dalam penyusunan binary tree. Metode ini sangat efisien untuk mengkompresi file text yang berukuran besar.

Algoritma Kompresi Shannon-Fano pada citra adalah sebagai berikut: 1. Hitung frekuensi kemunculan masing-masing simbol pada citra.

2. Urutkan frekuensi kemunculan simbol dari simbol yang terbesar ke yang terkecil, masing-masing simbol dapat direpresentasikan sebagai sebuah node.

3. Bagi menjadi dua buah node dengan jumlah frekuensi kemunculan simbol yang sama atau hampir sama. Beri label pada setiap sisi pohon biner, sisi kiri dilabeli dengan 0 dan sisi kanan dilabeli dengan 1.

4. Lakukan langkah 3 sampai node tidak dapat dibagi lagi.

5. Telusuri pohon biner dari akar ke daun. Barisan label-label pada sisi pohon dari akar ke daun menyatakan kode Shannon-Fano untuk simbol yang bersesuaian. Langkah-langkah pembentukan pohon Shannon-Fano:

1. Hitung frekuensi kemunculan masing-masing simbol pada citra. Tabel 2.4 Tabel distribusi frekuensi Shannon-Fano

Simbol Frekuensi Total bit

255 14 14 x 1 byte = 14 25 7 7 x 1 byte = 7 180 6 6 x 1 byte = 6 50 6 6 x 1 byte = 6 120 3 3x 1 byte = 3 Total 36 byte

(20)

2. Urutkan frekuensi kemunculan simbol dari simbol yang terbesar ke yang terkecil.

3. Jumlahkan seluruh frekuensi kemunculan simbol dan masukkan dalam sebuah

node.

4. Bagi menjadi dua buah node dengan jumlah frekuensi kemunculan simbol yang sama besar atau hampir sama. Beri label pada setiap sisi pohon biner, sisi kiri dilabeli dengan 0 dan sisi kanan dilabeli dengan 1.

5. Lakukan langkah 3 sampai node tidak dapat dibagi lagi.

21 15 36 0 1 14 7 6 6 3 36

(21)

6. Telusuri pohon biner dari akar ke daun. Barisan label-label pada sisi pohon dari akar ke daun menyatakan kode Shannon-Fano untuk simbol yang bersesuaian Dari pohon Shannon-Fano di atas diperoleh kode Shannon-Fano sebagai berikut:

Tabel 2.5 Codebook Shannon-Fano

simbol frekuensi kode

255 14 00

25 7 01

180 6 10

50 6 110

120 3 111

Dari tabel di atas dapat dilihat bahwa simbol yang sering muncul dikodekan dengan kode yang lebih pendek, demikian juga sebaliknya. Setelah itu dilakukan substitusi dari simbol-simbol potongan citra digital pada Gambar 2.5 dengan kode Shannon-Fano yang terdapat pada Tabel 2.5, sehingga diperoleh data biner sebagai berikut:

0010110000101011101101010110110111000001 111111110000001000010010000000010010000

Gambar 2.10 Data biner hasil substitusi kode Shannon-Fano

14 21 7 15 6 36 9 6 3 0 0 1 0 1 1 1 0

(22)

Data biner hasil substitusi kode Shannon-Fano memiliki ukuran 79 bit setara 9,875 byte, sedangkan tanpa kompresi dibutuhkan 36 bytes, sehingga Algoritma Shannon-Fano dapat mereduksi penggunaan memori sebanyak 26,125 byte. Sehingga rasio kompresinya adalah (100 – 9,875/36 x 100 % ) = 72,569 %.

2.10 Kompleksitas Algoritma

Sebuah algoritma tidak saja harus benar, tetapi juga harus mangkus (efisien). Algoritma yang bagus adalah algoritma yang mangkus. Kemangkusan algoritma diukur dari berapa jumlah waktu dan ruang (space) memori yang dibutuhkan untuk menjalankannya. Algoritma yang mangkus ialah algoritma yang meminimumkan kebutuhan waktu dan ruang. Kebutuhan waktu dan ruang suatu algoritma bergantung pada ukuran masukan (n), yang menyatakan jumlah data yang diproses. Kemangkusan algoritma dapat digunakan untuk menilai algoritma yang terbaik.

Ada dua macam kompleksitas algoritma, yaitu kompleksitas waktu dan kompleksitas ruang. Kompleksitas waktu, T(n), diukur dari jumlah tahapan komputasi yang dibutuhkan untuk menjalankan algoritma sebagai fungsi dari ukuran masukan n. Kompleksitas ruang, S(n), diukur dari memori yang digunakan oleh struktur data yang terdapat di dalam algoritma sebagai fungsi dari ukuran masukan n. Dengan menggunakan besaran kompleksitas waktu/ ruang algoritma, kita dapat menentukan laju peningkatan waktu (ruang) yang diperlukan algoritma dengan meningkatnya ukuran masukan n.

2.10.1 Kompleksitas Waktu

Dalam praktek, kompleksitas waktu dihitung berdasarkan jumlah operasi abstrak yang mendasari suatu algoritma, dan memisahkan analisanya dari implementasi.

Kompleksitas waktu dibedakan atas tiga macam:

1. Tmax(n) : kompleksitas waktu untuk kasus terburuk (worst case),yaitu berdasarkan kebutuhan waktu maksimum.

(23)

2. Tmin

3. T

(n) : kompleksitas waktu untuk kasus terbaik (best case), yaitu berdasarkan kebutuhan waktu minimum.

avg(n): kompleksitas waktu untuk kasus rata-rata (average case), yaitu berdasarkan kebutuhan waktu secara rata-rata

2.10.2 Kompleksitas Waktu Asimptotik

Tinjau T(n) = 2n2 + 6n + 1

Tabel 2.6 Perbandingan pertumbuhan T(n) dengan n2 N T(n) = 2n2 + 6n + 1 n2 10 100 1000 10.000 261 2061 2.006.001 1.000.060.001 100 1000 1.000.000 1.000.000.000

1. Untuk n yang besar, pertumbuhan T(n) sebanding dengan n2. Pada kasus ini, T(n) tumbuh seperti n2 tumbuh.

2. T(n) tumbuh seperti n2 tumbuh saat n bertambah. Kita katakan bahwa T(n) berorde n2 dan kita tuliskan

T(n) = O(n2)

3. Notasi “O” disebut notasi “O-Besar” (Big-O) yang merupakan notasi

kompleksitas waktu asimptotik.

DEFINISI. T(n) = O(f(n)) (dibaca “T(n) adalah O(f(n)” yang artinya T(n) berorde paling besar f(n) ) bila terdapat konstanta C dan n0 sedemikian sehingga

(24)

f(n) adalah batas atas (upper bound) dari T(n) untuk n yang besar.

TEOREMA. Bila T(n) = am nm + am-1 nm-1 + ... + a1n+ a0 adalah polinom derajat m

maka T(n) = O(nm TEOREMA. Misalkan T ). 1(n) = O(f(n)) dan T2 (a) T (n) = O(g(n)), maka 1(n) + T2 (b) T

(n) = O(f(n)) + O(g(n)) = O(max(f(n), g(n))

1(n)T2

(c) O(cf(n)) = O(f(n)), c adalah konstanta (n) = O(f(n))O(g(n)) = O(f(n)g(n))

(d) f(n) = O(f(n))

Contoh: Misalkan T1(n) = O(n) dan T2(n) = O(n2

(a) T ), maka 1(n) + T2(n) = O(max(n, n2)) = O(n2 (b) T ) 1(n)T2(n) = O(n.n2) = O(n3)

Aturan Untuk Menentukan Kompleksitas Waktu Asimptotik 1. Jika kompleksitas waktu T(n) dari algoritma diketahui, Contoh: a. pada algoritma cari_maksimum

T(n) = n – 1 = O(n)

b. pada algoritma pencarian_beruntun Tmin T (n) = 1 = O(1) max T (n) = n = O(n) avg(n) = (n + 1)/2 = O(n),

c. pada algoritma pencarian_biner, Tmin

T

(n) = 1 = O(1)

(25)

d. pada algoritma selection_sort ) ( 2 ) 1 ( ) ( 2 n O n n n T = − = e. T(n) = (n + 2) log(n2 + 1) + 5n2 = O(n2)

Penjelasannya adalah sebagai berikut: T(n) = (n + 2) log(n2 + 1) + 5n

= f(n)g(n) + h(n),

2

Kita rinci satu per satu: ⇒ f(n) = (n + 2) = O(n) ⇒ g(n) = log(n2 log(n + 1) = O(log n), karena 2 + 1) ≤ log(2n2 ) = log 2 + log n2

= log 2 + 2 log n ≤ 3 log n untuk n > 2 ⇒ h(n) = 5n2 = O(n2 maka: ) T(n) = (n + 2) log(n2 + 1) + 5n2 = O(n)O(log n) + O(n 2

= O(n log n) + O(n )

2

) = O(max(n log n, n2)) = O(n2)

2. Menghitung O-Besar untuk setiap instruksi di dalam algoritma dengan panduan di bawah ini, kemudian menerapkan teorema O-Besar.

a. Pengisian nilai (assignment), perbandingan, operasi aritmetik, read, write membutuhkan waktu O(1).

b. Pengaksesan elemen larik atau memilih field tertentu dari sebuah record membutuhkan waktu O(1).

Contoh:

(26)

Kompleksitas waktu asimptotik = O(1) + O(1) + O(1) = O(1)

Penjelasan: O(1) + O(1) + O(1) = O(max(1,1)) + O(1)

= O(1) + O(1) = O(max(1,1)) = O(1) c. if C then S1 else S2; membutuhkan waktu

TC + max(TS1,TS2)

Contoh:

read(x); O(1)

if x mod 2 = 0 then O(1) begin x:=x+1; O(1) writeln(x); O(1) end else writeln(x); O(1)

Kompleksitas waktu asimptotik:

= O(1) + O(1) + max(O(1)+O(1), O(1)) = O(1) + max(O(1),O(1))

= O(1) + O(1) = O(1)

d. Kalang for. Kompleksitas waktu kalang for adalah jumlah pengulangan dikali dengan kompleksitas waktu badan (body) kalang.

Contoh:

for i:=1 to n do

jumlah:=jumlah + a[i]; O(1)

Kompleksitas waktu asimptotik = n . O(1) = O(n .1) = O(n)

(27)

Contoh: kalang bersarang

for i:=1 to n do for j:=1 to n do

a[i,j]:=0; O(1)

Kompleksitas waktu asimptotik: nO(n) = O(n.n) = O(n2)

Contoh: kalang bersarang dengan dua buah instruksi

for i:=1 to n do for j:=1 to i do begin a:=a+1; O(1) b:=b-2 O(1) end;

waktu untuk a:=a+1 : O(1)

waktu untuk b:=b-2 : O(1)

total waktu untuk badan kalang = O(1) + O(1) = O(1) kalang terluar dieksekusi sebanyak n kali

kalang terdalam dieksekusi sebanyak i kali, i = 1, 2, …, n jumlah pengulangan seluruhnya = 1 + 2 + … + n = n(n + 1)/2

kompleksitas waktu asimptotik = n(n + 1)/2 .O(1)

= O(n(n + 1)/2) = O(n2)

e. while C do S; dan repeat S until C; Untuk kedua buah kalang, kompleksitas waktunya adalah jumlah pengulangan dikali dengan kompleksitas waktu badan C dan S.

(28)

Contoh: kalang tunggal sebanyak n-1 putaran

i:=2; O(1)

while i <= n do O(1)

begin

jumlah:=jumlah + a[i]; O(1)

i:=i+1; O(1)

end;

Kompleksitas waktu asimptotiknya adalah = O(1) + (n-1) { O(1) + O(1) + O(1) } = O(1) + (n-1) O(1)

= O(1) + O(n-1) = O(1) + O(n) = O(n)

Contoh: kalang yang tidak dapat ditentukan panjangnya: ketemu:=false;

while (p <> Nil) and (not ketemu) do if p^.kunci = x then

ketemu:=true else

p:=p^.lalu { p = Nil or ketemu }

Di sini, pengulangan akan berhenti bila x yang dicari ditemukan di dalam senarai. Jika jumlah elemen senarai adalah n, maka kompleksitas waktu terburuknya adalah O(n) -yaitu kasus x tidak ditemukan.

f. Prosedur dan fungsi. Waktu yang dibutuhkan untuk memindahkan kendali ke rutin yang dipanggil adalah O(1).

(29)

Tabel 2.7 Pengelompokan Algoritma Berdasarkan Notasi O-Besar

Kelompok Algoritma Nama

O(1) O(log n) O(n) O(n log n) O(n2 O(n ) 3 O(2 ) n O(n!) ) konstan logaritmik lanjar n log n kuadratik kubik eksponensial faktorial

Urutan spektrum kompleksitas waktu algoritma adalah :

                        (1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n3)<...< O O( 2n)< O(n!)

algoritma polinomial algoritma eksponensial

Penjelasan masing-masing kelompok algoritma adalah sebagai berikut :

1. O(1)

Kompleksitas O(1) berarti waktu pelaksanaan algoritma adalah tetap, tidak bergantung pada ukuran masukan. Contohnya prosedur tukar di bawah ini:

procedure tukar(var a:integer; var b:integer); var temp:integer; begin temp:=a; a:=b; b:=temp; end;

Di sini jumlah operasi penugasan (assignment) ada tiga buah dan tiap operasi dilakukan satu kali. Jadi, T(n) = 3 = O(1).

(30)

2. O(log n)

Kompleksitas waktu logaritmik berarti laju pertumbuhan waktunya berjalan lebih lambat daripada pertumbuhan n. Algoritma yang termasuk kelompok ini

adalah algoritma yang memecahkan persoalan besar dengan

mentransformasikannya menjadi beberapa persoalan yang lebih kecil yang berukuran sama (misalnya algoritma pencarian_biner). Di sini basis algoritma tidak terlalu penting sebab bila n dinaikkan dua kali semula, misalnya, log n meningkat sebesar sejumlah tetapan.

3. O(n)

Algoritma yang waktu pelaksanaannya lanjar umumnya terdapat pada kasus yang setiap elemen masukannya dikenai proses yang sama, misalnya algoritma pencarian_beruntun. Bila n dijadikan dua kali semula, maka waktu pelaksanaan algoritma juga dua kali semula.

4. O(n log n)

Waktu pelaksanaan yang n log n terdapat pada algoritma yang memecahkan persoalan menjadi beberapa persoalan yang lebih kecil, menyelesaikan tiap persoalan secara independen, dan menggabung solusi masing-masing persoalan. Algoritma yang diselesaikan dengan teknik bagi dan gabung mempunyai kompleksitas asimptotik jenis ini. Bila n = 1000, maka n log n mungkin 20.000. Bila n dijadikan dua kali semual, maka n log n menjadi dua kali semula (tetapi tidak terlalu banyak).

5. O(n2

Algoritma yang waktu pelaksanaannya kuadratik hanya praktis digunakan untuk persoalana yang berukuran kecil. Umumnya algoritma yang termasuk kelompok ini memproses setiap masukan dalam dua buah kalang bersarang, misalnya pada algoritma urut_maks. Bila n = 1000, maka waktu pelaksanaan algoritma adalah 1.000.000. Bila n dinaikkan menjadi dua kali semula, maka waktu pelaksanaan algoritma meningkat menjadi empat kali semula.

(31)

6. O(n3

Seperti halnya algoritma kuadratik, algoritma kubik memproses setiap masukan dalam tiga buah kalang bersarang, misalnya algoritma perkalian matriks. Bila n = 100, maka waktu pelaksanaan algoritma adalah 1.000.000. Bila n dinaikkan menjadi dua kali semula, waktu pelaksanan algoritma meningkat menjadi delapan kali semula.

)

7. O(2n

Algoritma yang tergolong kelompok ini mencari solusi persoalan secara "brute force". Bila n = 20, waktu pelaksanaan algoritma adalah 1.000.000. Bila n dijadikan dua kali semula, waktu pelaksanaan menjadi kuadrat kali semula.

)

8. O(n!)

Seperti halnya pada algoritma eksponensial, algoritma jenis ini memproses setiap masukan dan menghubungkannya dengan n-1 masukan lainnya, misalnya algoritma Persoalan Pedagang Keliling (Travelling Salesperson Problem). Bila n = 5, maka waktu pelaksanaan algoritma adalah 120. Bila n dijadikan dua kali semula, maka waktu pelaksanaan algoritma menjadi faktorial dari 2n.

Gambar

Tabel 2.1 Contoh warna 24 bit
Gambar 2.3 Pohon Biner
Gambar 2.6 Ilustrasi tipe per piksel
Gambar 2.7 Metode kompresi berdasarkan hasilnya
+7

Referensi

Dokumen terkait

[r]

Ruh bersifat substansi ( jauhar ) yang hanya dimiliki manusia, sedang nyawa merupakan sesuatu yang baru ( ‘aradh ) yang juga dimiliki hewan. Jisim manusia memiliki

Segala puji syukur penulis panjatkan kepada Allah SWT atas segala limpahan rahmat dan hidayah-Nya, sehingga penulis dapat menyelesaikan Tugas Akhir Skripsi yang berjudul

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

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

Bacalah berbagai literatur lainnya tentang karakteristik peserta didik SD dan prinsip- prinsip pembelajaran yang mendidik dan tuliskan hal-hal yang sulit dipahami dan tidak dibahas

Berdasarkan ataa data-data yang dldapat»ternyata dari penderlta ureml yang dlperlksa semuanya (100$) me- nunjukkan gangguan toleransi glukosa* Juga tidak ada hu bungan antara

Data mengenai gedung, SDM, anggaran serta layanan perpustakaan diperoleh dari Laporan Tahunan Perpustakaan IPB tahun 2013, sedangkan data koleksi dan prasarana diperoleh dari