Kompresi data

Kompresi data atau pemampatan data (bahasa Inggris: data compression) adalah sebuah cara dalam ilmu komputer untuk memadatkan data sehingga hanya memerlukan ruangan penyimpanan lebih kecil sehingga lebih efisien dalam menyimpannya atau mempersingkat waktu pertukaran data tersebut. Ada terdapat dua jenis pemampatan data, yaitu pemampatan tanpa kehilangan (bahasa Inggris: lossless data compression) dan pemampatan kehilangan (bahasa Inggris: lossy data compression).

Pemampatan data tanpa kehilangan

Teknik ini mampu memadatkan data dan mengembalikannya sama persis seperti semula. Tidak ada informasi yang hilang atau harus dikurangi dalam proses untuk mengurangi ukuran besar data. Biasanya algoritme pemadatan data jenis ini menggunakan prinsip kelebihan statistik (statistical redundancy) supaya data bisa disimpan dengan lebih ringkas. Karena kebanyakan data yang dipakai sehari-hari memiliki bagian yang berulang atau berlebihan (redundant data), pemampatan tanpa kehilangan bisa terjadi.
Contoh mudahnya, apabila berkas gambar berukuran 256x256 berwarna polos (setiap pixel berwarna sama) dan tiap pixelnya berukuran 4 byte, tanpa pemadatan, berkas harus disimpan berukuran 4 kali 256x256, sama dengan 262144 byte. Namun, dengan pemadatan, maka data yang perlu disimpan hanyalah data satu warna tersebut dan informasi bahwa seluruh pixel gambar memiliki satu warna yang sama. Jadi, data yang perlu disimpan hanyalah 4 byte tambah beberapa byte untuk menandakan pengulangan pixel yang sama. Ingatlah ini hanya contoh yang simpel.
Pemadatan tanpa kehilangan memiliki batas rendah di mana berkas tidak bisa dipadatkan lebih jauh lagi. Teorem Shannon menunjukkan bahwa pemadatan data tidak bisa menghasilkan kadar kode yang lebih rendah daripada entropi Shannon berkas, tanpa menyebabkan kehilangan informasi. Maka, apabila suatu berkas sudah dipadatkan (misalnya, berkas gambar disimpan di berkas .zip), berkas .zip tersebut tidak bisa lagi dipadatkan.
Contoh algoritme adalah misalnya Lempel-Ziv (LZ77), Lempel-Ziv-Welch (LZW, LZW84), BZIP, BZIP2, Lempel-Ziv-Markov (LZMA) dan PAQ.

Pemampatan data berkehilangan

Dengan teknik ini, kehilangan data yang kecil masih dapat diterima. Dengan menghilangkan data yang tidak penting dapat menghemat ruang penyimpanan. skema kompresi data lossy dirancang oleh penelitian tentang bagaimana orang melihat data tersebut. Sebagai contoh, mata manusia lebih sensitif terhadap variasi halus dalam pencahayaan daripada untuk variasi warna. Dengan algoritme tertentu, detail berkas dipangkas supaya ukuran data bisa dikecilkan. Contohnya, pemadatan data dengan format berkas gambar JPEG bisa menyimpan data yang banyak, tetapi juga mampu memangkaskan bagian-bagian visual yang kurang penting demi menghemati memori simpan. Berkas MP3 bisa menyimpan data lagu yang bersuara lebih jernih, tetapi juga bisa mengurangi mutu suara jika ukuran data harus dikurangi.
Contoh algoritme adalah MP3, JPEG, Ogg dan MPEG-2.

Teori

Latar belakang teoretis dari kompresi disediakan oleh teori informasi (yang berhubungan dekat dengan teori informasi algoritmik) untuk pemampatan data tanpa kehilangan dan teori distorsi laju untuk pemampatan data berkehilangan. Daerah-daerah studi ini pada dasarnya dibuat oleh Claude Shannon, yang mempublikasikan makalah dasar pada topik ini di akhir 1940-an dan awal 1950-an. Konsep dari pemampatan data juga terhubung secara mendalam dengan statistika inferensi.

Pembelajaran Mesin

Ada hubungan dekat antara pembelajaran mesin dan kompresi: sebuah sistem yang memprediksikan probabilitas posterior dari sebuah deret, dengan diketahuinya seluruh sejarah yang bisa digunakan untuk kompresi data optimal (dengan menggunakan koding aritmatik pada distribusi hasil) saat sebuah kompresor optimal bisa digunakan untuk membuat prediksi (dengan mencari simbol dengan kompresi terbaik, dari sejarah yang diketahui). Persamaan ini sering digunakan sebagain alasan untuk menggunakan kompresi data sebagai patokan untuk "kepintaran umum."

Audio

Kompresi data audio berpotensi mengurangi transmisi bandwidth dan penggunaan ruangan. Terdapat dua cara kompresi data audio: kompresi audio tanpa kehilangan (lossless audio compression) dan kompresi audio berkehilangan (lossy audio compression). kedua algoritme ini mengandalkan 'psychoacoustics' dengan menghilangkan bunyi-bunyi atau suara-suara yang tidak terdengar jelas untuk mengurangi ukuran dari file tersebut.

Kompresi Audio Berkehilangan

Kompresi audio berkehilangan banyak digunakan diberbagai aplikasi, Selain digunakan untuk aplikasi langsung (MP3 dan komputer), audio yang telah dikompres secara digital digunakan disebagian besar DVD, televisi, satelit dan pemancaran radio. Kompresi audio berkehilangan pada umumnya mengompres audio jauh lebih banyak daripada kompresi audio tidak berkehilangan.
Kompresi audio berkehilangan merupakan cara kompresi audio yang lebih sering digunakan. Cara ini memanfaatkan 'psychoacoustics', dimana beberapa data yang tidak dapat dipahami oleh pendengaran manusia dibuang, misalnya potongan suara dengan frekuensi tinggi diluar jangakuan pendengaran manusia. Dengan metode ini, cara kompresi audio berkehilangan dapat mengkompresi lebih besar ketimbang cara kompresi audio tanpa kehilangan (5 - 20 %).
Meski demikian, kualitas dari audio yang dikompres berkurang. Oleh sebab itu, cara ini kurang cocok apabila digunakan dalam aplikasi teknik audio seperti pengeditan suara. Beberapa contoh format yang dihasilkan dari cara kompresi ini antara lain: (Ogg) Vorbis, MP3, dan Windows Media Audio Lossy (WMA Lossy).

Kompresi Audio Tanpa Berkehilangan

Kompresi audio tanpa kehilangan menghasilkan representasi data digital yang saat dibuka menghasilkan duplikat yang mirip dengan yang aslinya. Cara kompresi ini hanya mengurangi kira-kira setengah (50 - 60 %) dari ukuran asli akibat kompleksitas dari bentuk gelombang dan perubahan bentuk suara yang terus-menerus. Beberapa contoh format yang dihasilkan dari cara kompresi ini antara lain: Free Lossless Audio Codec (FLAC), WAVPACK, Apple Lossless Audio Codec (ALAC), MPEG-4 ALS, dan Windows Media Audio 9 Lossless (WMA Lossless).

Video

Kompresi video merupakan coding yang modern yang mengurangi redundansi data dari sebuah video.Kebanyakan algoritme untuk kompresi data di video dan codec menggabungkan ruang kompresi gambar dan kompensasi gerakan sementara. kebanyak kompresi data di video mengunakn teknik kompresi audio secara paralel untuk kompres terpisah, tapi dikombinasikan data stream sebagai satu paket.
Beberapa skema dari kompresi video beroperasi pada kelompok berbentuk persegi piksel tetangga, sering disebut macroblocks. kelompok pixel ini atau blok dari pixel dibandingkan dari satu frame ke yang berikutnya, dan codec kompresi video mengirim hanya perbedaan dalam blok-blok. Sebagian daerah dari video yang memiliki gerakan yang lebih, kompresi harus menyandikan data lebih banyak untuk menjaga dengan jumlah yang lebih besar dari piksel yang berubah.