DISUSUN OLEH
NAMA : RIDHO IMMAHDI
NIM : 2057201003
Fakultas : Sistem Informasi
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
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).
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.
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.
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
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.
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 $.
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.