Mampatan tanpa kehilangan (lossless) mengecilkan fail dan membolehkan anda membina semula asal dengan tepat. Mampatan dengan kehilangan (lossy) mengecilkannya lebih lagi dengan membuang sebahagian data secara kekal, jadi asalnya tidak boleh dipulihkan. Soalan meminta anda mentakrif setiap satu, memilih satu untuk sesuatu situasi dan menjustifikasi pilihan itu.
Pelajaran ini menyambung saiz audio bersampel kerana pemampatan wujud untuk mengurangkan saiz besar yang baru anda kira.
Apakah beza antara kedua-dua jenis ini?
Kaedah tanpa kehilangan mencari corak dan menyimpannya dengan lebih cekap. Tiada apa yang dibuang. Fail teks, fail atur cara dan data yang mesti kekal tepat memerlukan kaedah ini.
Kaedah dengan kehilangan membuang butiran yang kurang mungkin disedari manusia. Foto dalam bentuk JPEG dan audio dalam bentuk MP3 ialah contoh harian. Kualiti menurun sedikit, dan semakin banyak anda memampat, semakin banyak yang hilang.
| Ciri | Tanpa kehilangan | Dengan kehilangan |
|---|---|---|
| Asal boleh dipulihkan | Ya | Tidak |
| Pengurangan saiz fail | Lebih kecil | Biasanya jauh lebih kecil |
| Kualiti | Tidak berubah | Berkurang |
| Sesuai untuk | Teks, atur cara, imbasan perubatan | Foto, muzik, video untuk tontonan |
Bagaimana pengekodan larian panjang berfungsi?
Pengekodan larian panjang (run-length encoding, RLE) ialah kaedah tanpa kehilangan. Ia menggantikan satu larian nilai yang sama dengan nilai itu dan satu kiraan.
Idea sebagai pseudokod gaya Cambridge, untuk rentetan yang disimpan dalam Data:
Count ← 1
FOR i ← 2 TO LENGTH(Data)
IF MID(Data, i, 1) = MID(Data, i - 1, 1) THEN
Count ← Count + 1
ELSE
OUTPUT MID(Data, i - 1, 1), Count
Count ← 1
ENDIF
NEXT i
OUTPUT MID(Data, LENGTH(Data), 1), Count
Jejak dengan Data = “AAABCC” (6 aksara):
| i | Dibandingkan | Tindakan | Count |
|---|---|---|---|
| mula | 1 | ||
| 2 | A, A | sama, tambah 1 | 2 |
| 3 | A, A | sama, tambah 1 | 3 |
| 4 | B, A | berbeza: output A 3 | 1 |
| 5 | C, B | berbeza: output B 1 | 1 |
| 6 | C, C | sama, tambah 1 | 2 |
| selepas gelung | output C 2 |
Hasil: A3 B1 C2. Anda boleh menjejak gelung seperti ini dalam pelatih jejak pseudokod.
Contoh berlangkah
Satu baris imej hitam putih disimpan sebagai W W W W W W W W B B W W W W (14 piksel, W = putih, B = hitam). Mampatkan dengan RLE dan nyatakan sama ada kaedah itu tanpa kehilangan.
Langkah 1, kumpulkan larian: 8 putih, 2 hitam, 4 putih.
Langkah 2, tulis nilai dan kiraan: W8 B2 W4.
Langkah 3, semak dengan menyahkod: W×8, B×2, W×4 memberi semula 14 piksel asal dengan tepat.
Kesimpulan: 14 nilai menjadi 3 pasangan, iaitu 6 item disimpan. Kerana penyahkodan mengembalikan asal dengan tepat, RLE ialah tanpa kehilangan.
Kesilapan yang perlu diawasi
Kesilapan lazim ialah menganggap pemampatan sentiasa mengecilkan data.
Jawapan salah: “ABCD” dimampatkan menjadi A1B1C1D1, jadi lebih kecil.
Pelajar tidak mengira aksara. A1B1C1D1 mempunyai 8 aksara, lebih daripada 4 aksara asal.
Pembetulan: RLE hanya membantu apabila nilai berulang. Data tanpa larian boleh menjadi lebih besar. Jawapan yang baik menyatakan bahawa penjimatan bergantung pada corak dalam data.
Semak kendiri
Cuba soalan ini, kemudian buka setiap jawapan.
1. Kodkan WWWBBWWWWW dengan pengekodan larian panjang.
Tunjukkan jawapan
Larian: 3 W, 2 B, 5 W. Jawapan: W3 B2 W5. Penyahkodan memberi WWW BB WWWWW, 10 aksara asal.
2. Sebuah hospital menyimpan imbasan yang digunakan untuk diagnosis. Patutkah ia menggunakan mampatan tanpa kehilangan atau dengan kehilangan? Beri satu sebab.
Tunjukkan jawapan
Tanpa kehilangan. Mampatan dengan kehilangan membuang butiran secara kekal, dan butiran yang hilang dalam imej perubatan boleh mengubah diagnosis. Kaedah tanpa kehilangan mengekalkan setiap piksel.
3. Namakan satu sebab perkhidmatan penstriman muzik mungkin memilih mampatan dengan kehilangan.
Tunjukkan jawapan
Fail lossy jauh lebih kecil, jadi muat turun lebih pantas dan menggunakan kurang data, dan kehilangan kualiti sukar disedari oleh kebanyakan pendengar.
Seterusnya
Memilih antara kaedah sebenarnya ialah pertukaran antara saiz dan kualiti, jadi teruskan dengan menerangkan pertukaran kualiti-storan. Kemudian gunakan set latihan untuk soalan campuran.
Jika takrifan sudah mantap tetapi jawapan senario masih longgar, seorang guru boleh melatihnya dalam tuisyen Computer Science dalam talian satu dengan satu.