Anda di halaman 1dari 10

MAKALAH ALGORITMA KOMPRESI

DISUSUN OLEH
NAMA : RIDHO IMMAHDI
NIM : 2057201003
Fakultas : Sistem Informasi

MATA KULIAH : SISTEM MULTIMEDIA


Dosen Pembimbing : WAHYU JONI KURNIAWAN M.KOM
ABSTRAK

Teknologi kompresi data adalah proses pengubahan sekumpulan data menjadi


bentuk kode yang lebih rendah dari representasi data yang tidak terkodekan dengan
suatu enkoding tertentu. Kompresi data dilakukan dengan mengkodekan setiap karakter
menjadi pesan kode yang lebih pendek, dengan tujuan untuk menghemat kebutuhan
tempat penyimpanan dan waktu untuk transmisi data. pengkompresian digunakan untuk
mempercepat proses pengiriman dari karakter yang tidak terkodekan menjadi karakter
terkodekan, pada pengkodean tertentu.
Proses penyimpanan, pengiriman data maupun kebutuhan bandwidth sangat penting
karena informasi terkini sebagian besar berasal dari dunia maya yaitu internet. Kompresi
data merupakan suatu cara yang dapat dimanfaatkan untuk mengatasi ukuran suatu file
yang besar sehingga masalah penyimpanan, pengiriman data maupun kebutuhan
bandwidth yang digunakan dapat diatasi. Pemilihan algoritma kompresi sangat
menentukan rasio kompresi. Oleh karena itu, diperlukan perbandingan rasio kompresi
terbaik dari beberapa algoritma kompresi agar mengurangi pemborosan memori serta
efisiensi waktu kompresi. Teknik lossless merupakan teknik kompresi dengan data hasil
kompresi dapat didekompresi lagi dan hasilnya tepat sama seperti data sebelum proses
kompresi.
I. RUN-LENGTH CODING (RLC)

Algoritma Run-Length Encoding (RLE) adalah bentuk kompresi data lossless di mana menjalankan data
(yaitu urutan di mana nilai data yang sama terjadi di banyak elemen data yang berurutan) disimpan sebagai satu
nilai data dan hitungan, bukan seperti data yang asli. Simbol yang berulang berurutan biasanya disebut berjalan
dalam deretan simbol. Oleh karena itu, sumber data yang menarik adalah urutan simbol alfabet. Tujuan dari
algoritma Run-Length Encoding (RLE) adalah untuk mengidentifikasi jalur dan mencatat panjangnya dari masing-
masing run dan simbol di jalankan.

Misalkan rangkaian data berikut (17 byte) harus dikompres ABBBBBBBBBCDEEEEF menggunakan kompresi RLE, data
yang dikompresi hanya membutuhkan 10 byte dan terlihat seperti ini A * 8B C D * 4E F stelah di kompresi. String
data berulang digantikan oleh karakter kontrol (*) diikuti oleh jumlah karakter yang berulang dan karakter berulang
itu sendiri. Karakter kontrol tidak tetap, dapat berbeda dari implementasi ke implementasi.

Langkah-langkah yang dibutuhkan untuk melakukan kompresi Run-Length Encoding adalah sebagai berikut:

1. Periksa nilai saat ini dengan nilai tetangga, apabila nilai saat ini sama dengan nilai tetangga maka gabungkan
nilai tersebut menjadi satu dan tambahkan nilai counter untuk nilai tersebut.
2. Apabila nilai saat ini dengan nilai tetangganya tidak sama maka simpan nilai saat ini dan lanjut pemeriksaan
seperti pada nomor 1.
3. Setelah proses 1 dan 2 telah dilakukan kemudian simpan hasil proses kompresi.

Kesimpulan:

• Run-length encoding (RLE) merupakan metode kompresi data yang sangat sederhana
• Teknik kompresi dengan RLE ini berguna untuk data yang banyak memiliki kesamaan dan data tersebut
berdekatan, misal teks ataupun grafik seperti icon atau gambar garis-garis yang banyak memilki kesamaan
pola

Contoh RLE (Run Length Encoding)

Misalkan, ada seseorang yang alay berteriak :


“AAAAAKUUUUU CHAYYYYYAAAAANK KAAAAMUUUUUUUUUUUUUUUUUUUUUUUU !!!!!!”
Pesan diatas akan sangat cocok jika dikompresi menggunakan metode kompresi RLE karena kompresi RLE
menghitung jumlah kemunculan simbol lalu menuliskan simbol tersebut sebanyak satu kali diikuti dengan jumlah
kemunculannya. Data diatas berukuran 66 byte, dan kita akan melakukan kompresi RLE terhadap data tersebut :
- Ubah data dalam bentuk sekuensial
Data teks diatas sudah dalam bentuk sekuensial :
AAAAAKUUUUU CHAYYYYYAAAAANK KAAAAMUUUUUUUUUUUUUUUUUUUUUUUU!!!!!!
- Hitung jumlah kemunculan karakter
(A,6) (K,1) (U,5) (spasi,1) (C,1) (H,1) (A,1) (Y,5) (A,5) (N,1) (K,1) (spasi,1) (K,1) (A,5) (M,1) (U,24)(!,6)
- Tulis hasil kompresi
A6K1U5 1C1H1A1Y5A5N1K1 1K1A5M1U24!6
Setelah proses kompresi, maka data yang dihasilkan akan berukuran 35 byte. Dengan proses
kompresi tersebut, kita telah menghemat tempat penyimpanan sebesar 31 byte (47%)
II. VARIABLE-LENGTH CODING (VLC)

Algoritma Variable Length/Size Code merupakan salah satu algoritma yang digunakan dalam proses

kompresi data.

Algoritma ini pada proses encodingnya bergantung pada probabilitas/peluang kemunculan data. Semakin data

sering muncul (high probability) maka ukuran data akan semkain kecil karena berkurangnya jumlah bits data.

A. Algoritma Shannon-Fano
Algoritma Shannon-Fano coding ditemukan oleh Claude Shannon (bapak teori informasi) dan Robert Fano
pada tahun 1949. Pada saat itu metode ini merupakan metode yang paling baik tetapi hampir tidak pernah
digunakan dan dikembangkan lagi setelah kemunculan algoritma Hufman. Pada dasarnya metode ini menggantikan
setiap simbol dengan sebuah alternatif kode biner yang panjangnya ditentukan berdasarkan probabilitas dari simbol
tersebut Di bidang kompresi data, Shannon-Fano coding adalah teknik untuk membangun sebuah kode awalan
didasarkan pada seperangkat simbol dan probabilitas (diperkirakan atau diukur).

Langkah-langkah percobaan algoritma Shanno Fano:

1. Menentukan jumlah probabilitas huruf,


2. Mengurutkan huruf pada suatu tabel,
3. Meletakan pada baris pertama untuk huruf yang memiliki probabilitas tertinggi,
4. Melakukan pembagian terhadap tabel atas dua kelompok dengan probabilitas yang sama atau
saling mendekati,
5. Memberikan kode nol pada kelompok pertama dan kode satu pada kelompok kedua,
6. Mengulangi langkah empat dan lima sampai tidak ada lagi kemungkinan untuk membagi
kelompok-kelompok tersebut dalam dua sub kelompok lagi.

Contoh Algoritma Shannon-Fano :

Selanjutnya, pada tabel 2.2 mulanya


kelompok dibagi dengan sisi kiri diberi kode
nol dan sisi dengan kode satu. Pemberian
kode dibagi berdasarkan jumlah probabilitas
yang paling mendekati seimbang antara
kelompok kode nol dan satu. kelompok kedua
kembali dibagi dan diberikan kode nol pada
bagian atas dan selebihnya diberikan kode
satu. Begitu seterusnya sehingga tidak ada lagi
kemungkinan membagi kelompok-kelompok
tersebut
Gambar 2.2 merupakan pohon kode Shannon Fano
untuk teks “MUHAMMADREZA”. Tanpa kompresi,
teks “MUHAMMADREZA” memiliki 12 karakter dikali
8 bit sama dengan 96 bit dengan asumsi 1 huruf
membutuhkan alokasi sekitar 8 bit. Tetapi, dengan
kompresi teks “MUHAMMADREZA” menjadi 34 bit.

B. Huffman Coding
Algoritma Huffman adalah salah satu algoritma kompresi tertua yang disusun oleh David Huffman pada
tahun 1952. Algoritma tersebut digunakan untuk membuat kompresi jenis lossy compression, yaitu pemampatan
data dimana tidak satu byte pun hilang sehingga data tersebut utuh dan disimpan sesuai dengan aslinya. Pada
sejarahnya, Huffman sudah tidak dapat membuktikan apapun tentang kode apappun yang efisien, tapi ketika
tugasnya hampir final, ia mendapatkan ide untuk menggunakan pohon binary untuk menyelesaikan masalahnya
mencari kode yang efisien. Pada dasarnya, algoritma Huffman ini bekerja seperti mesin sandi morse, dia membentuk
suatu kode dari suatu karakter. Sehingga karakter tersebut memiliki rangkaian bit yang lebih pendek dibandingkan
sebelumnya.

Pengujian Algoritma Huffman

Pada pengujian, akan dilakukan encoding sebuah teks yang berisi 100.000 string, diantaranya
45.000 karakter 'g', 13.000 karakter 'o', 12.000 karakter `p', 16.000 karakter 'h', 9.000 karakter `e', dan
5.000 karakter 'r' dengan menggunakan 3 cara, yaitu dengan menggunakan kode ASCII , kode 3-hit dan
kode Huffman. Setelah itu ketiga kode tersebut akan dibandingkan satu dengan yang lain.

HASIL kode huffman

Jumlah bit yang digunakan dalam pembentukan kode Huffman untuk karakter" g,o,p,h,e,r, "= 45.000 +
39.000 + 36.000 + 48.000 + 36.000 + 20.000 = 224.000 bit.
III. DICTIONARY BASED CODING
A. Algoritma kompresi LZW (Lempel-Ziv-Welch).
Algoritma LZW melakukan kompresi dengan mengunakan kode table 256 hingga 4095 untuk
mengkodekan pasangan byte atau string. Dengan metode ini banyak string yang dapat dikodekan
dengan mengacu pada string yang telah muncul sebelumnya dalam teks

Algoritma kompresi LZW secara lengkap :

1. KAMUS diinisialisasi dengan semua karakter dasar yang ada : {‘A’..’Z’,’a’..’z’,’0’..’9’}.


2. W ⇓ karakter pertama dalam stream karakter.
3. K ⇓ karakter berikutnya dalam stream karakter.
4. Lakukan pengecekan apakah (W+K) terdapat dalam KAMUS
• Jika ya, maka W ⇓ W + K (gabungkan W dan K menjadi string baru).
• Jika tidak, maka : Output sebuah kode untuk menggantikan string W. Tambahkan string
(W+ K) ke dalam dictionary dan berikan nomor/kode berikutnya yang belum digunakan
dalam dictionary untuk string tersebut. W ⇓ K.
• Lakukan pengecekan apakah masih ada karakter berikutnya dalam stream karakter  Jika ya,
maka kembali ke langkah 2.  Jika tidak, maka output kode yang menggantikan string W, lalu
terminasi proses (stop).

B. Algoritma dekompresi LZW (Lempel-Ziv-Welch).


Proses dekompresi data pada algoritma LZW tidak jauh berbeda dengan proses kompresinya.
Pada dekompresi LZW, juga dibuat tabel dictionary dari data input kompresi, sehingga tidak diperlukan
penyertaan tabel dictionary ke dalam data kompresi.

dekompresi LZW :
IV. ARITHMETIC CODING
Algoritma aritmatic coding melakukan penggantian satu deretan simbol input dengan sebuah
bilangan floating point. Semakin panjang dan semakin kompleks pesan yang dikodekan, akan semakin
banyak bit yang diperlukan untuk keperluan tersebut. Output dari pengkodean arithmetic coding adalah
satu angka yang lebih kecil dari angka 1 dan lebih besar atau sama dengan 0. Angka ini secara unik dapat
di decoding sehingga menghasilkan deretan simbol yang dipakai untuk menghasilkan angka tersebut.
Untuk menghasilkan angka output tersebut, tiap simbol yang akan di encoding diberi satu set nilai
probabilitas.

A.Arithmetic Coding Encoder


proses encoding dari algoritma arithmetic coding:

1. Set low = 0,0 (kondisi awal)


2. Set high = 1.0 (kondisi awal)
3. While (simbol input masih ada)
4. Ambil simbol input
5. CR = high – low
6. High = low + CR * high_range (symbol)
7. Low = low + CR* low_range (symbol)
8. End while
9. Cetak low

Proses encoding diilustrasikan pada gambar di atas (h) dan (c), di mana string simbol CAEE$
dikodekan. Awalnya, rendah = 0, tinggi ~ 1,0, dan kisaran = 1,0. Setelah simbol pertama C,
Rangelow(C) = 0.3, Range Mgh(C) = 0.5; sangat rendah = 0 + 1,0 x 0,3 = 0,3, tinggi — 0 + 1,0 x 0,5 = 0,5.
Rentang baru - sekarang dikurangi menjadi 0,2.

Untuk kejelasan ilustrasi, rentang yang terus menyusut diperbesar di setiap langkah (ditunjukkan
dengan garis putus-putus) pada gambar (b). Setelah simbol kedua A, rendah, tinggi, dan rentang
adalah 0,30, 0,34, dan 0,04. Proses berulang sampai setelah simbol pengakhiran $ diterima. Pada saat
itu rendah dan tinggi berturut-turut adalah 0,33184 dan 0,33220,. Jelas bahwa akhirnya kami memiliki
rentang - Pc x PA x PE x PE x Ps = 0,2 x 0,2 x 0,3 X 0,3 x 0,1 = 0,00036
B. Generating Codeword for Encoder
prosedur Generating Codeword for Encoder

Untuk contoh di atas, rendah — 0,33184, tinggi — 0,3322. Jika kita menetapkan 1 ke bit pecahan biner pertama, itu
akan menjadi 0,1 dalam biner, dan nilai desimalnya(kode) — nilai(0,l) = 0,5 > tinggi. Oleh karena itu, kami
menetapkan 0 untuk bit pertama. Karena nilai(0.0) = 0 < rendah, perulangan while berlanjut.

Menetapkan 1 ke bit kedua membuat kode biner 0,01 dan nilai (0,01) = 0,25, yang kurang dari tinggi, sehingga
diterima. Karena masih benar bahwa nilai (0,0l) < rendah, iterasi berlanjut. Akhirnya, codeword biner yang dihasilkan
adalah 0.01010101, yaitu 2 - 2 + 2 - 4 + 2 - 6 + 2 - 8 = 0.33203125.

Harus ditunjukkan bahwa kami beruntung telah menemukan kata sandi hanya 8 bit untuk mewakili urutan simbol
CAEE$ ini. Dalam kasus ini, log2 1 / PC + log2 1 / PA + log2 1 / PE + log2 1 / Pε + log2 1 / PS = log2 1 / range = log2 1
/ 0,00036, yang menunjukkan bahwa diperlukan 12 bit untuk mengkodekan rangkaian simbol seperti ini.

Dapat dibuktikan bahwa batas atas. Yaitu, dalam kasus terburuk, kata sandi terpendek dalam pengkodean aritmatika
akan membutuhkan k bit untuk mengkodekan urutan simbol, dan

dimana Pi adalah probabilitas untuk simbol i dan range adalah range akhir yang dihasilkan oleh encoder. Rupanya,
ketika panjang pesannya panjang, jangkauannya dengan cepat menjadi sangat kecil, dan karenanya log2 1 /
jangkauan menjadi sangat besar; perbedaan antara log2 1 / rangeand {log21 / range} dapat diabaikan.

Umumnya, Pengkodean Aritmatika mencapai kinerja yang lebih baik daripada pengkodean Huffman, karena yang
pertama memperlakukan seluruh urutan simbol sebagai satu unit, sedangkan yang terakhir memiliki batasan untuk
menetapkan jumlah bit yang tidak terpisahkan untuk setiap simbol. Misalnya, pengkodean Huffman akan
membutuhkan 12 bit untuk CAEE$, menyamai kinerja kasus terburuk dari Pengodean Aritmatika.

Selain itu, pengkodean Huffman tidak selalu dapat mencapai batas atas yang diilustrasikan dalam Persamaan. Dapat
ditunjukkan (lihat Latihan ) bahwa jika alfabet adalah [A, B, C] dan distribusi probabilitas yang diketahui adalah Pa —
0,5, PB = 0,4, Pc = 0,1, maka untuk mengirim BBB, pengkodean Huffman akan membutuhkan 6 bit, yang lebih dari,
sedangkan pengkodean aritmatika hanya membutuhkan 4 bit.
C. Arithmetic Coding Decoder

Tabel berikut mengilustrasikan proses decoding untuk contoh di atas. Awalnya, nilai — 0,33203125. Karena Range
low(C) = 0.3 < 0.33203125 < 0.5 = Range high(C), simbol keluaran pertama adalah C. Ini menghasilkan nilai -
[0.33203125 - 0.3J / 0.2 = 0.16015625, yang selanjutnya menentukan bahwa simbol kedua adalah A Akhirnya,
nilainya adalah 0,953125, yang berada dalam kisaran terminator $.

Proses decoding dari algoritma arithmetic coding, sebagai berikut :

1. Ambil encoded-symbol (ES)


2. Do
3. Cari range dari symbol yang melingkupi ES
4. Cetak symbol
5. RC = high_range-low_range
6. ES = ES-low_range
7. ES = ES / CR
8. Until symbol habis

V. LOSSLESS IMAGE PROCESSING


Image processing adalah suatu bentuk pengolahan atau pemrosesan sinyal dengan input berupa
gambar (image) dan ditransformasikan menjadi gambar lain sebagai keluarannya dengan teknik tertentu.
Image processing dilakukan untuk memperbaiki kesalahan data sinyal gambar yang terjadi akibat transmisi
dan selama akuisisi sinyal, serta untuk meningkatkan kualitas penampakan gambar agar lebih mudah
diinterpretasi oleh sistem penglihatan manusia baik dengan melakukan manipulasi dan juga
penganalisisan terhadap gambar.

Teknik Lossy kompresi (Lossy compression) adalah suatu metode untuk mengkompresi data dan
men-dekompresinya, data yang diperoleh mungkin berbeda dari yang aslinya tetapi cukup dekat
perbedaaanya. Lossy kompresi ini paling sering digunakan untuk kompres data multimedia (Audio, gambar
diam). Sebaliknya, kompresi lossless diperlukan untuk data teks dan file, seperti catatan bank, artikel teks
dll. Format kompresi lossy mengalami generation loss yaitu jika melakukan berulang kali kompresi dan
dekompresi file akan menyebabkan kehilangan kualitas secara progresif. hal ini berbeda dengan kompresi
data lossless.
A.differential coding of images
Pengkodean yang berbeda memungkinkan representasi sinyal dalam bentuk digital dengan
panjang kata yang kecil dan pada saat yang sama memastikan resolusi yang ditentukan. Penggunaan
perbedaan dan modulasi delta (DM) untuk representasi ekonomis dan pemrosesan gambar yang efisien
membutuhkan pengembangan metode yang ada dan pengerjaan metode pemrosesan sederhana dan
cepat secara real time. Salah satu metode pemrosesan perspektif adalah analisis ekstrem yang tidak jelas
(UEA). Metode kompresi dan rekonstruksi sinyal (dalam mode waktu nyata) dengan penggunaan UEA dan
DM sederhana, ekonomis, dan cepat. Ketergantungan kompresi derajat dan akurasi tertentu dari
rekonstruksi sinyal dengan penggunaan UEA, perbedaan 2-D pertama dan sekunder, secara terpisah dan
bersama-sama, ditunjukkan dalam contoh. Pengaruh batas ketidakjelasan bagi mereka juga ditunjukkan.
Jenis kompresi dan rekonstruksi ini dapat diwujudkan dengan bantuan perangkat ekonomis dan teknologi,
terutama dengan lingkungan komputasi yang homogen.

B. Lossless JPEG
Kompresi lossless mengacu pada kompresi di mana gambar dikurangi tanpa kehilangan kualitas.
Biasanya ini dilakukan dengan menghapus metadata yang tidak perlu dari file JPEG dan PNG. RAW, BMP,
GIF, dan PNG adalah format gambar lossless.

tidak ada algoritma kompresi lossless yang dapat secara efisien mengompresi semua data yang mungkin.
Untuk alasan ini, ada banyak algoritme berbeda yang dirancang dengan mempertimbangkan jenis data
masukan tertentu atau dengan asumsi khusus tentang jenis redundansi apa yang mungkin terdapat pada
data yang tidak dikompresi. Oleh karena itu, rasio kompresi cenderung lebih kuat pada dokumen dan kode
yang dapat dibaca manusia dan mesin dibandingkan dengan data biner entropis (byte acak).

Kompresi lossless digunakan dalam kasus di mana penting bahwa data asli dan yang didekompresi harus
identik, atau di mana penyimpangan dari data asli tidak menguntungkan. Contoh umum adalah program
yang dapat dieksekusi, dokumen teks, dan kode sumber. Beberapa format file gambar, seperti PNG atau
GIF, hanya menggunakan kompresi lossless, sementara yang lain seperti TIFF dan MNG dapat
menggunakan metode lossless atau lossy.

Anda mungkin juga menyukai