Kompresi
| English | Bahasa Indonesia |
|---|---|
| compression/kəmˈpreʃn/ | pemampatan |
| lossless/ˈlɒsləs/ | tanpa kehilangan |
| lossy/ˈlɒsi/ | dengan kehilangan |
| bandwidth/ˈbændwɪdθ/ | lebar pita |
| run-length encoding/rʌn leŋθ enˈkəʊdɪŋ/ | run-length encoding |
| dictionary coding/ˈdɪkʃənəri ˈkəʊdɪŋ/ | pengkodean kamus |
| Huffman coding/ˈhʌfmən ˈkəʊdɪŋ/ | pengkodean Huffman |
| spatial/ˈspeɪʃl/ | spasial |
| temporal/ˈtempərəl/ | temporal |
Tiga huruf yang memungkinkan web berfungsi
- Pada tahun 1987, seorang programmer bernama Phil Katz menulis program kompresi dan membebaskan format file tersebut ke domain publik. Ia menamainya ZIP. Ia berusia 24 tahun.
- Tidak ada yang bekerja di web tanpa ide itu. Satu detik video HD yang belum terkompresi berukuran sekitar 187 MB; film selama dua jam akan menjadi 1,3 terabyte. Mengalirkannya melalui koneksi rumah secara aritmatika mustahil.
- Film yang Anda tonton mungkin seper seribu dari ukuran itu, dan tetap terlihat benar, karena kompresi membuang hal-hal yang mata Anda tidak akan pernah perhatikan.
- Pelajaran ini adalah kompresi: dua keluarga, tiga metode lossless, dan bagaimana menjustifikasi satu untuk file tertentu.
Lossless dan lossy
- Kompresi mengurangi ukuran file, menghemat ruang penyimpanan dan pita lebar transmisi, serta membuat unduhan dan streaming lebih cepat.
- Kompresi lossless (tanpa kehilangan) adalah kompresi di mana data asli dapat dipulihkan tepat. ZIP dan PNG bersifat lossless.
- Kompresi lossy (dengan kehilangan) secara permanen menghilangkan sebagian data, sehingga data asli tidak dapat dipulihkan. JPEG, MP3, dan video streaming bersifat lossy.

Pulihkan tepat, atau mengecilkan jauh lebih banyak
Kompresi tanpa kehilangan berarti:
Kompresi tanpa kehilangan memungkinkan Anda membangun kembali data asli persis — penting untuk teks, program, dan ZIP/PNG.
Pasangkan setiap ide kompresi dengan artinya.
Tanpa kehilangan mempertahankan setiap bit (dibutuhkan untuk teks/kode); dengan kehilangan menukar kualitas dengan ukuran (foto, audio).
Kompresi tanpa kehilangan membangun kembali data asli persis (dibutuhkan untuk teks dan program), sementara kompresi dengan kehilangan secara permanen menghilangkan sebagian data untuk mengecilkan file (digunakan untuk foto dan audio).
Itulah sebabnya program atau ZIP harus tanpa kehilangan, tetapi foto atau lagu dapat menggunakan kompresi dengan kehilangan.
Contoh terpecahkan: bentangkan pilihan
- Sebuah perusahaan mengarsipkan spreadsheet akuntansi mereka. Jenis kompresi apa yang digunakan, dan mengapa? Lossless, karena spreadsheet harus dikembalikan persis; satu nilai yang berubah akan membuat akun menjadi salah.
- Seorang fotografer mengunggah foto liburan ke galeri ponsel. Lossy, karena foto dilihat pada layar kecil di mana detail yang hilang tidak terlihat, dan file yang lebih kecil diunggah lebih cepat serta menggunakan ruang penyimpanan lebih sedikit.
- Sebutkan jenisnya, lalu berikan alasannya dari situasi tersebut. "Lossy lebih kecil" saja bukan merupakan justifikasi.
File mana yang harus dikompresi tanpa kehilangan?
Kode sumber harus dipulihkan persis — satu karakter yang berubah bisa merusaknya — jadi membutuhkan kompresi tanpa kehilangan.
Pengkodean Run-length
- Pengkodean run-length (RLE) mengganti rentang nilai berulang dengan satu nilai dan jumlah: alih-alih delapan piksel putih identik, simpan "8, putih".
- Ini sangat baik untuk data dengan rentang panjang, seperti ikon, diagram, pemindaian hitam-putih, dan area warna datar.
- Ini tidak berguna, dan dapat membuat file lebih besar, pada data berisik seperti foto, di mana hampir tidak ada dua nilai tetangga yang sama.

Setiap baris menjadi jumlah dan warna
Pengkodean panjang rentang bekerja terbaik pada data yang memiliki:
RLE mengganti rentang nilai identik dengan hitungan + nilai, sehingga sangat efektif pada area datar dan tidak berguna pada data bising.
Contoh terpecahkan: kodekan baris dengan RLE
- Sebuah baris dari gambar hitam-putih 8-piksel berbunyi: putih putih putih hitam hitam putih putih putih. Kodekan dengan RLE.
- Tiga putih, dua hitam, tiga putih, jadi
3W 2B 3W, atau sebagai pasangan,(3, 0) (2, 1) (3, 0)jika putih adalah 0. - Delapan nilai menjadi tiga pasangan. Sekarang kodekan
W B W B W B W B. Delapan rentang bernilai satu:1W 1B 1W 1B 1W 1B 1W 1B, yang menyimpan lebih banyak daripada aslinya. Itulah alasan mengapa RLE tidak digunakan pada foto.
Pengkodean panjang rentang (metode tanpa kehilangan)
Pengkodean panjang rentang mengganti rentang nilai berulang dengan satu nilai ditambah hitungan. Ini tanpa kehilangan — aslinya dibangun kembali persis — tetapi hanya mengecilkan data yang memiliki rentang panjang.
Enkoda baris piksel W W W B B W W W dengan pengkodean panjang rentang, menggunakan format 3W 2B 3W.
Tiga putih, dua hitam, tiga putih. Delapan nilai menjadi tiga pasangan, tetapi baris bergantian akan menjadi delapan pasangan dan membesar.
Pengkodean panjang rentang selalu membuat file lebih kecil.
Pada data tanpa rentang, seperti foto atau pola bergantian, setiap rentang memiliki panjang satu dan enkodasi menyimpan lebih banyak daripada aslinya.
Pengkodean kamus dan pengkodean Huffman
- Pengkodean kamus, digunakan oleh ZIP dan PNG, membangun kamus dari urutan byte berulang dan menggantikan setiap kemunculannya dengan indeks pendek. Ini cocok untuk teks dan kode program, di mana kata dan pola muncul kembali.
- Pengkodean Huffman memberikan kode pendek untuk simbol umum dan kode panjang untuk yang langka, sehingga panjang kode rata-rata turun. Dalam "BANANA", A paling umum dan mendapatkan kode terpendek.
- Keduanya lossless: decoder membangun kembali byte asli byte demi byte.
Pengkodean Huffman mengurangi ukuran dengan:
Huffman assigns kode terpendek ke simbol paling sering, menurunkan panjang kode rata-rata.
Cocokkan setiap metode tanpa rugi dengan cara kerjanya.
Ketiganya adalah tanpa rugi: decoder membangun kembali byte asli byte demi byte.
Metode lossy
- Gambar (JPEG): detail halus dan perbedaan warna yang mata barely notice dibuang.
- Suara (MP3, AAC): nada yang didengar kita buruk dibuang, bersama dengan suara pelan yang tertutup oleh suara lebih keras pada saat yang sama.
- Video: kompresi spasial bekerja di dalam setiap bingkai, seperti JPEG, dan kompresi temporal menyimpan sebagian besar bingkai hanya sebagai perbedaan dari bingkai sebelumnya, karena bingkai berturut-turut hampir identik.
Kompresi temporal video bekerja dengan:
Kompresi temporal menyimpan bagaimana setiap bingkai berbeda dari sebelumnya, karena sebagian besar gambar tetap sama di antara bingkai. (Kompresi spasial menangani detail dalam bingkai.)
Contoh terpecahkan: bagaimana setiap jenis file dikompresi
- File teks: pengkodean kamus dan Huffman mengubah kata berulang dan karakter umum menjadi kode pendek. Harus tetap lossless, karena satu karakter yang berubah mengubah makna.
- Gambar bitmap: RLE untuk rentang piksel identik dalam ikon dan diagram; JPEG lossy untuk foto; atau kurangi kedalaman warna atau resolusi, yang juga lossy.
- Grafik vektor: daftar gambar sudah kecil. Hapus objek gambar yang tidak diperlukan, simpan koordinat ke lebih sedikit tempat desimal, atau terapkan metode lossless seperti ZIP pada file.
- File suara: MP3 atau AAC lossy menghapus apa yang telinga tidak dengar; menurunkan laju sampling atau resolusi juga lossy; format lossless mempertahankan setiap sampel dan mengecilkan jauh lebih sedikit.
Bagaimana file grafik vektor dapat dibuat lebih kecil? Pilih semua yang berlaku.
File vektor adalah daftar gambar, bukan piksel, sehingga tidak memiliki kedalaman warna. Kedalaman warna milik bitmap.
Mengapa streaming harus lossy
- Video mentah HD adalah gigabyte per menit, dan koneksi rumah membawa beberapa megabit per detik.
- Kompresi lossless pada video mencapai mungkin faktor dua, jauh dari cukup, sehingga gambar akan terus berhenti untuk buffering.
- Kompresi lossy mencapai faktor seratus atau lebih dengan membuang detail yang penonton tidak perhatikan pada kecepatan normal. Alasannya menyebutkan bandwidth dan laju data, bukan hanya "lebih kecil".
Mengapa streaming video waktu nyata menggunakan kompresi rugi?
Video HD mentah adalah gigabytes per menit; hanya kompresi rugi yang mengecilkannya cukup untuk streaming waktu nyata tanpa macet.
⟦⟧ Nilai yang sering terlewat
- Lossless berarti asli dipulihkan tepat; lossy berarti tidak dapat. "Lossy mengurangi kualitas" melewatkan fakta bahwa data hilang selamanya.
- RLE dapat membuat file berisik lebih besar. Jelaskan di mana itu berfungsi dan di mana tidak.
- Kompresi video adalah spasial dan temporal; temporal menyimpan perbedaan antar bingkai.
- Jawaban "justify" mengaitkan metode dengan penggunaan file: ketepatan untuk akun dan gambar medis, ukuran untuk streaming dan galeri ponsel.
Anda telah memahaminya
- kompresi menghemat penyimpanan dan bandwidth; lossless memulihkan asli tepat, lossy menghilangkan data permanen
- metode lossless: RLE (nilai dan jumlah, baik pada rentang, buruk pada kebisingan), pengkodean kamus (urutan berulang ke indeks pendek), pengkodean Huffman (kode pendek untuk simbol umum)
- metode lossy membuang apa yang mata atau telinga lewat; video menambahkan spasial dalam bingkai dan temporal antar bingkai
- justify dari penggunaan: data presisi berarti lossless, bandwidth terbatas untuk streaming berarti lossy