Pertemuan 7

PERTEMUAN 7

COMPRESSION

 

 

 

A.  TUJUAN PEMBELAJARAN

 

Pada pertemuan ini akan dijelaskan mengenai kompresi data. Setelah mempelajari materi ini mahasiswa diharapkan mampu untuk:

1.     Menjelaskan konsep kompresi data

2.     Memahami pemodelan dan pengkodean dalam kompresi data

3.     Memahami jenis kompresi data

4.     Memahami teknik kompresi data .

 

 

B.  URAIAN MATERI

1.     Menjelaskan Konsep Kompresi Data

 

Kompresi data adalah sebuah proses yang mengubah data input menjadi data output dengan ukuran yang lebih kecil. Data dapat berupa karakter dalam file teks, angka yang merupakan contoh bentuk gelombang ucapan atau gambar, atau urutan angka yang dihasilkan oleh proses lain. Alasan kita membutuhkan kompresi data adalah karena semakin banyak informasi yang kita hasilkan dan gunakan dalam bentuk digital terdiri dari angka yang direpresentasikan oleh byte data.

a.   Teknik Kompresi Data

1)     Lossless Compression

 

Teknik kompresi lossless, tidak melibatkan kehilangan informasi. Jika data telah dikompresi tanpa kehilangan, maka data asli dapat dipulihkan dengan tepat dari data yang dikompresi. Kompresi lossless umumnya digunakan untuk aplikasi yang tidak dapat mentolerir perbedaan apa pun antara data asli dan data rekonstruksi.

Kompresi teks adalah area penting untuk kompresi lossless. Sangat penting bahwa rekonstruksi identik dengan teks asli, karena perbedaan yang sangat kecil dapat menghasilkan pernyataan dengan arti yang sangat berbeda. Pertimbangkan kalimat "Jangan kirim uang" dan "Jangan


 

 

kirim uang". Argumen serupa berlaku untuk file komputer dan untuk jenis data tertentu seperti catatan bank.

Jika data dalam bentuk apa pun akan diproses atau "ditingkatkan" nanti untuk menghasilkan lebih banyak informasi, integritasnya harus dijaga. Misalnya, kita mengompresi gambar radiologis menjadi lossy mode dan perbedaan antara rekonstruksi Y dan X asli tidak dapat dideteksi secara visual. Jika gambar ini kemudian disempurnakan, perbedaan yang sebelumnya tidak terdeteksi dapat menyebabkan munculnya arti fakta yang dapat menyesatkan ahli radiologi.

Data yang diperoleh dari satelit seringkali diolah kemudian untuk mendapatkan indikator numerik yang berbeda dari vegetasi, deforestasi, dan lain sebagainya. Jika data yang direkonstruksi tidak identik dengan data asli, pemrosesan dapat menghasilkan “peningkatan” atau perbedaan. Mungkin tidak mungkin untuk kembali dan mendapatkan data yang sama lagi. Oleh karena itu, tidak disarankan untuk membiarkan perbedaan apa pun muncul pada proses kompresi.

2)     Lossy Compression

 

Teknik kompresi lossy melibatkan beberapa kehilangan informasi, dan data yang telah dikompresi menggunakan teknik lossy. Pada umumnya tidak dapat dipulihkan atau direkonstruksi dengan tepat. Sebagai imbalan untuk menerima distorsi ini dalam rekonstruksi, kita dapat memperoleh rasio kompresi yang jauh lebih tinggi daripada yang dimungkinkan dengan kompresi lossless.

b.   Ukuran Kinerja

 

Algoritma kompresi dapat dievaluasi dengan beberapa cara yang berbeda. Kita dapat mengukur kompleksitas relatif dari algoritma memori yang diperlukan untuk mengimplementasikan algoritma, seberapa cepat kinerja algoritma pada mesin tertentu. Jumlah kompresi dan seberapa dekat algoritma tersebut menyerupai rekontruksi aslinya.

Cara yang sangat logis untuk mengukur seberapa baik algoritme kompresi kumpulan data tertentu. Dengan melihat rasio jumlah bit yang diperlukan untuk mewakili data sebelum kompresi dengan jumlah bit yang diperlukan untuk merepresentasikan data setelah kompresi. Rasio ini disebut


 

 

rasio kompresi. Misalkan menyimpan gambar yang terdiri dari larik persegi 256 × 256 piksel membutuhkan 65.536 byte. Gambar dikompresi dan versi terkompresi membutuhkan 16.384 byte. Kami akan mengatakan bahwa rasio kompresinya adalah 4:1. Kita juga dapat merepresentasikan rasio kompresi dengan mengungkapkan pengurangan jumlah data yang diperlukan sebagai persentase dari ukuran data asli. Dalam contoh khusus ini, rasio kompresi yang dihitung dengan cara ini adalah 75%.

 

 

2.     Memahami Pemodelan dan Pengkodean dalam Kompresi Data

 

Meskipun persyaratan rekonstruksi dapat memaksa keputusan apakah skema kompresi menjadi lossy atau lossless. Skema kompresi yang tepat yang kami gunakan akan bergantung pada sejumlah faktor yang berbeda. Beberapa faktor terpenting adalah karakteristik data yang perlu dikompresi. Teknik kompresi yang akan bekerja dengan baik untuk kompresi teks mungkin tidak berfungsi dengan baik untuk mengompresi gambar. Setiap aplikasi menyajikan serangkaian tantangan yang berbeda.

Harus diingat bahwa kompresi data merupakan ilmu eksperimental. Pendekatan yang paling sesuai untuk aplikasi tertentu akan sangat bergantung pada redundansi yang melekat dalam data.

Pengembangan algoritma kompresi data untuk berbagai data dapat dibagi menjadi dua tahap. Fase pertama biasanya disebut sebagai pemodelan. Dalam fase ini, kami mencoba mengekstrak informasi tentang redundansi yang ada dalam data dan mendeskripsikan redundansi tersebut dalam bentuk model. Tahap kedua disebut pengkodean. Deskripsi model dan "deskripsi" tentang perbedaan data dari model dienkode, biasanya menggunakan alfabet biner. Perbedaan antara data dan model sering disebut sebagai residual. Dalam tiga contoh berikut, kita akan melihat tiga cara berbeda untuk memodelkan data. Kami kemudian akan menggunakan model untuk mendapatkan kompresi.

 

 

Tabel 7. Consider the following sequence of numbers {x1, x2, x3, . . . }:

 

9

11

11

11

14

13

15

17

16

17

20

21


 

 

Jika kita mengirim atau menyimpan representasi biner dari angka-angka ini, kita perlu menggunakan 5 bit per sampel. Namun, dengan mengeksploitasi struktur dalam data, kita dapat merepresentasikan urutan tersebut menggunakan bit yang lebih sedikit. Jika kita memplot data ini seperti yang ditunjukkan pada Gambar 1, kita melihat bahwa data tampak jatuh pada garis lurus. Oleh karena itu, model untuk data dapat berupa garis lurus yang diberikan oleh persamaan.

Xn = n+8 n = 1, 2, . . .

 

Struktur deret angka khusus ini dapat dikarakterisasi dengan persamaan. Jadi, ˆx1 = 9, x1 = 9, ˆx2 = 10, x2 = 11, dan seterusnya. Untuk memanfaatkan struktur ini, mari kita periksa Perbedaan antara data dan model. Perbedaan (atau sisa) diberikan oleh urutan.

en = xn − ˆxn : 0 1 0 −1 1 −1 0 1 −1 −1 1 1

 

Urutan sisa hanya terdiri dari tiga angka {−1, 0, 1}. Jika kita menetapkan kode 00 hingga −1, kode 01 hingga 0, dan kode 10 hingga 1, kita perlu menggunakan 2 bit untuk mewakili setiap elemen dari urutan residual. Oleh karena itu, kita dapat memperoleh kompresi dengan mengirimkan atau menyimpan parameter model dan urutan sisa. Pengkodean dapat dilakukan secara tepat jika kompresi yang diperlukan adalah lossless, atau perkiraan jika kompresi dapat menjadi lossy.

Jenis struktur atau redundansi yang ada dalam data ini mengikuti hukum sederhana. Setelah kita mengenali hukum ini, kita dapat menggunakan struktur untuk memprediksi nilai setiap elemen dalam urutan dan kemudian menyandikan sisa. Struktur jenis ini hanyalah salah satu dari sekian jenis struktur.


 

 

 

 


Gambar 13. Urutan Nilai Data

 

Gambar 14. Urutan Nilai Data

 

 

a.   THE HUFFMAN CODING ALGORITHM

 

Prosedur Huffman didasarkan pada dua pengamatan mengenai kode prefiks yang optimal:

1)     Dalam kode yang optimal, simbol yang muncul lebih sering (memiliki kemungkinan kemunculan yang lebih tinggi) akan memiliki codeword yang lebih pendek daripada simbol yang lebih jarang muncul.


 

 

2)     Dalam kode yang optimal, dua simbol yang paling jarang muncul akan memiliki panjang yang sama.

Sangat mudah untuk melihat bahwa pengamatan pertama benar. Jika simbol yang muncul lebih sering memiliki codeword yang lebih panjang daripada codeword untuk simbol yang lebih jarang muncul, jumlah rata-rata bit per simbol akan lebih besar daripada jika kondisinya dibalik. Oleh karena itu, kode yang menetapkan codeword yang lebih panjang ke simbol yang muncul lebih sering tidak dapat optimal.

b.   NONBINARY HUFFMAN CODE

 

Prosedur pengkodean biner Huffman dapat dengan mudah diperluas ke kasus non-biner di mana elemen kode berasal dari alfabet m-binary, dan m tidak sama dengan dua. Ingatlah bahwa kami memperoleh algoritma Huffman berdasarkan pengamatan bahwa dalam kode awalan biner yang optimal:

1)     Simbol yang muncul lebih sering (memiliki probabilitas kemunculan yang lebih tinggi) akan memiliki codeword yang lebih pendek daripada simbol yang lebih jarang muncul.

2)     Kedua simbol yang paling jarang muncul akan memiliki panjang yang sama.

c.   ADAPTIVE HUFFMAN CODING

 

Pengkodean Huffman membutuhkan pengetahuan tentang kemungkinan urutan sumber. Jika pengetahuan ini tidak tersedia, pengkodean Huffman menjadi prosedur dua jalur: statistik dikumpulkan pada lintasan pertama, dan sumber dikodekan pada lintasan kedua. Untuk mengubah algoritma ini menjadi one-pass prosedur, Faller dan Gallagher secara independen mengembangkan algoritma adaptif untuk membangun kode Huffman berdasarkan statistik dari simbol yang sudah ditemukan. Ini kemudian diperbaiki oleh Knuth dan Vitter.

Secara teoritis, jika kita ingin mengkodekan simbol (k + 1) -th menggunakan statistik dari simbol k pertama, kita dapat menghitung ulang kode tersebut menggunakan prosedur pengkodean Huffman setiap kali sebuah simbol dikirimkan. Namun, ini tidak akan menjadi pendekatan yang sangat praktis karena banyaknya komputasi yang terlibat.


 

 

d.   GOLOMBS CODE

 

Kode Golomb-Rice milik keluarga kode yang dirancang untuk menyandikan bilangan bulat dengan asumsi bahwa semakin besar bilangan bulat, semakin rendah kemungkinan terjadinya. Kode paling sederhana untuk situasi ini adalah kode unary. Kode unary untuk bilangan bulat positif n hanyalah n 1s diikuti oleh 0. Jadi, kode untuk 4 adalah 11110, dan kode untuk 7 adalah 11111110. Kode unary sama dengan kode Huffman untuk alpabet semi-infinite {1, 2, 3,. . . } dengan model probabilitas. Karena kode Huffman sudah optimal, kode unary juga optimal untuk model probabilitas ini.

P[k] = 1

 

2k

 

 

3.     Memahami Jenis Kompresi Data

 

a.   MEDIA-SPECIFIC COMPRESSION

 

Media specific compression dirancang khusus untuk data media seperti gambar, audio, video, dan sejenisnya. Kemungkinan besar, jenis file dan kompresor ini membentuk sebagian besar konten yang dikirim, diterima, dimanipulasi, disimpan, dan ditampilkan oleh aplikasi Anda kepada pengguna. Pepatah lama, "Sebuah gambar bernilai ribuan kata," benar-benar benar dalam hal kompresi data: gambar 1024 x 1024 RGB adalah 3 MB data. Jika Anda menganggap huruf berenkode ASCII, Anda dapat menampilkan 3.145.728 huruf untuk ukuran yang sama.

Untuk memasukkannya ke dalam konteks, buku terkenal The Hobbit terdiri dari 95.022 kata. Jika Anda mengasumsikan ukuran kata rata-rata 5 huruf, itu berarti kira-kira 475.110 karakter. Anda dapat memasukkan buku itu sekitar 6 kali ke dalam satu gambar 1024 × 1024.

Inilah sebabnya mengapa sebagian besar kompresi media menggunakan algoritma kompresi lossy. Algoritme kompresi lossy adalah jenis transformasi data yang mengurangi kualitas media dalam upaya membuat konten lebih dapat dikompresi. Misalnya, gambar 1024 × 1024, masing-masing menggunakan 8 bit untuk saluran merah, hijau, dan biru menjadi 24 bit per piksel, dan karenanya 3 MB. Namun, jika Anda hanya menggunakan 4 bit per saluran, Anda akan berakhir dengan 12 bit per piksel,


 

 

sehingga total footprint menjadi 1,5 MB, sekaligus mengurangi kualitas warna gambar.

b.   GENERAL-PURPOSE COMPRESSION

 

Kompresi umumnya adalah algoritme seperti DEFLATE, GZIP, BZIP2, LZMA, dan PAQ, yang menggabungkan berbagai transformasi lossless untuk menghasilkan penghematan untuk file nonmedia seperti teks, kode sumber, data serial, dan konten biner lainnya yang tidak akan mentolerir kompresi data lossy. Ada banyak penelitian yang sehat di bidang ini Berhenti dengan Tolak Ukur Kompresi dalam Teks Besar menunjukkan kumpulan kompresi tujuan umum yang semuanya telah ditugaskan untuk mengompresi file teks besar, untuk mengukur bagaimana mereka menumpuk satu sama lain. Dan algoritma baru terus dikembangkan. Upaya Google dalam menyempurnakan algoritme GZIP menghasilkan kelompok kompresi yang disebut Snappy, Zopfli, Gipfeli, dan Brotli, 3 dengan masing-masing berfokus pada kompresi yang lebih baik, persyaratan memori yang lebih rendah, atau dekompresi yang lebih cepat.

Sebagian besar konten Internet yang kita unduh setiap hari telah dikompresi dengan salah satu algoritme berikut. Tumpukan HTTP standar memungkinkan paket data untuk dikodekan dengan GZIP, BZIP, dan sekarang, kompresor Brotli (selama server dan klien mendukungnya), yang berarti laman web, file JavaScript, tweet, dan daftar toko kemungkinan besar muncul di perangkat Anda setelah didekompresi.

 

 

4.     Memahami teknik kompresi data

 

Sebelum beralih ke gangguan kompresi ke setiap bagian aplikasi mewah kita, penting untuk mencatat semua trade-off dan kasus penggunaan yang terlibat. Tidak setiap algoritme cocok untuk setiap kasus penggunaan, dan dalam beberapa kasus, implementasi yang berbeda dari format kompresi yang sama mungkin lebih sesuai dengan kebutuhan kita.

a.   Skenario Penggunaan Kompresi

 

Mari kita mulai diskusi ini dengan menyetel tahapan di mana data dikompresi, disimpan, dan didekompresi. Ini sangat penting untuk memahami dari mana data berasal dan ke mana perginya, karena interaksi penting antara


 

 

pembuat enkode dan dekoder, yang akan kita bicarakan lebih lanjut nanti. Pertama, mari kita lihat empat skenario umum.

b.   Compressed Offline, Decompressed On-Client, Dalam skenario pertama ini, data dikompresi di suatu tempat yang tidak terkait dengan klien, lalu didistribusikan ke klien, tempat data tersebut didekompresi untuk digunakan.

c.   Compressed On-Client, Decompressed In-Cloud, Sebagian besar aplikasi media sosial modern menghasilkan banyak konten di klien dan kemudian mendorongnya ke cloud untuk diproses dan didistribusikan ke sesama pengguna sosial lainnya. Dalam situasi ini, beberapa kompresi ringan biasanya dilakukan pada klien, untuk mengurangi jumlah overhead dalam komunikasi keluar. Misalnya, mengambil paket data sosial, dan membuat serialisasi dengan format serialisasi biner, lalu mengompresi gzip sebelum mengirimnya ke server.

d.   Compressed In-Cloud, Decompressed On-Client, Data yang dikompresi di cloud dibagi menjadi dua bucket utama, yang memiliki karakteristik yang sangat berbeda, yaitu:

1)     Dynamic data that is generated by the cloud resource, ketika klien meminta hasil dari beberapa operasi database, atau file server mengirimkan data tata letak dinamis, klien menunggu konten dibuat. Waktu yang dibutuhkan server untuk membuat dan mengompresi data itu sangat penting; jika tidak, klien akan mengalami latensi jaringan.

2)     Large data that’s passed off to the cloud for efficient computing, Pentingnya skenario ini sering kali didorong untuk memastikan minimalisasi bit untuk media yang ada. Misalnya, bayangkan memiliki dua gigabyte file PNG yang perlu dikonversi ke gambar WebP dengan 10 resolusi berbeda, atau 1.200 jam video yang harus dikonversi ke H.264 sebelum ditampilkan.

e.   Compressed On-Client, Decompressed On-Client, Dalam kasus ini, klien menghasilkan data, mengompresnya, dan kemudian mengirimkannya ke klien lain untuk mendekompresi.

 

a.   Kebutuhan Kompresi

 

Seperti yang telah kami tunjukkan saat menjelajahi algoritme yang berbeda, sangat penting untuk memahami bahwa tidak semua algoritme dan format kompresi berlaku untuk semua jenis data. Misalnya, menerapkan


 

 

Huffman ke data gambar tidak akan menghasilkan tingkat penghematan yang dapat dilakukan dengan menerapkan algoritme kompresi image2 lossy.

Mencocokkan algoritme yang tepat dengan jenis data yang tepat sangat penting untuk memaksimalkan hasil kompresi yang Anda inginkan, dengan pengorbanan yang harus Anda lakukan. Dan yang perlu di catat adalah :

1)     Ketahui data anda, bukan hanya jenis datanya, tetapi juga struktur internalnya, dan khususnya, cara penggunaannya.

2)     Ketahui opsi algoritme anda sehingga dapat memilih kompresi yang tepat

3)     Yang terpenting, ketahuilah apa yang anda butuhkan.

b.   Compression Ratio

 

Rasio kompresi, yaitu jumlah konten yang dikompresi, sering kali merupakan faktor terpenting saat mengevaluasi opsi kompresi. Karena tujuan utama dari kompresi adalah untuk menghasilkan bentuk data yang paling tersusun

c.   Compression Performance

 

Kinerja kompresi adalah tentang berapa lama waktu yang dibutuhkan untuk memasukkan data ke dalam bentuk terkompresi. Kinerja kompresi sangat penting dalam lingkungan yang sensitif terhadap latensi, baik klien bertanggung jawab atas kompresi, atau server mengompresi data yang menunggu klien.

Biasanya ada dua metrik evaluasi yang perlu diperhatikan dalam hal ini: kecepatan CPU dan memori. Kecepatan CPU dari sistem encoding penting karena ini menentukan seberapa cepat data dapat dikompresi. Dan jumlah memori yang tersedia menjadi penting jika sangat terbatas, seperti yang terjadi pada perangkat.

 

 

 

C.  SOAL LATIHAN/ TUGAS

 

1.     Jelaskan definsi compression yang Anda ketahui!

2.     Sebutkan dan jelaskan teknik dalam kompresi!

3.     Apa yang dimaksud dengan Huffman coding!

4.     Sebutkan dan jelaskan 4 compression usage skenario!


 

 

D.  REFERENSI

 

Colt McAnlis, Aleks Haecky (2016), Understanding Compression Data Compression for Modern Developers Tersedia di : https://z-lib.org/

Khalid Sayood (2017), Introduction to Data Compression.Tersedia di: https://z-lib.org/

 

Jean-Guillaume Dumas, Jean-Louis Roch, Éric Tannier, Sébastien Varrette (2015), Foundations of Coding Compression, Encryption, Error Correction.Tersedia di

: https://z-lib.org/

Komentar

Postingan populer dari blog ini

Artikel Komputer Grafik

Pertemuan 1

Pertemuan 6