Cara Kerja Kompresi JPEG
Penjelasan sederhana tentang langkah-langkah di balik kompresi gambar yang efisien
24. January 2025 oleh Bianca Palmer
Pernah bertanya-tanya bagaimana ponsel atau kamera Anda bisa mengambil foto dan dalam sekejap tersimpan sebagai JPEG yang lebih kecil, lebih cepat, dan tetap terlihat tajam? Di balik layar, ada proses canggih yang bekerja, mengecilkan file gambar besar menjadi hanya sebagian kecil dari ukuran aslinya sambil menjaga kualitas tetap tinggi. Namun bagaimana cara kerjanya sebenarnya? Dalam panduan ini, kita melihat lebih detail tentang Kompresi JPEGdan menguraikan setiap langkah dengan bahasa sederhana sehingga Anda dapat memahami cara kerja proses kompresi gambar ini.
Apa itu JPEG?
JPEG (singkatan dari Joint Photographic Experts Group) adalah salah satu format gambar yang paling umum. Ini adalah pilihan utama untuk menyimpan foto digital. Kelebihan utama JPEG adalah kemampuannya mengompres file gambar, sehingga ukurannya jauh lebih kecil tanpa penurunan kualitas yang terlihat.
Sebagai contoh, gambar berkualitas tinggi yang tidak dikompres bisa berukuran 46MB. Setelah dikompres menjadi JPEG, gambar yang sama bisa menyusut hanya menjadi 4,1MB. Namun bagaimana hal ini bisa terjadi sambil tetap menjaga ketajaman gambar?
Jawabannya ada pada compression process, yang memanfaatkan cara kerja mata kita dan membuang data yang tidak diperlukan.
Apa yang Dilakukan JPEG?
Secara sederhana, JPEG menganalisis gambar dan menghapus elemen yang tidak mudah terlihat oleh mata kita. Saat Anda mengompres gambar dengan JPEG, Anda dapat mengatur seberapa besar kompresi yang diterapkan. Dengan menyesuaikan pengaturan "quality", Anda menentukan seberapa banyak ruang yang ingin dihemat. Saat kualitas menurun dari 100% ke 0%, ukuran file juga ikut berkurang.
Saat Anda mengompres lebih jauh, resolusi gambar tetap sama, tetapi Anda mungkin mulai melihat beberapa cacat atau "artifact" muncul. Cacat ini terlihat seperti kotak-kotak kecil dan sering kali sulit dilihat kecuali jika Anda memperbesar gambar. Tujuan JPEG adalah membuat file sekecil mungkin tanpa membuat gambar terlihat buruk bagi mata manusia.
Langkah-langkah Kompresi JPEG
Kompresi JPEG bukan hanya satu proses; ini adalah rangkaian langkah yang dirancang untuk mengurangi ukuran gambar. Berikut lima langkah utama yang membuat JPEG begitu efisien.
Langkah 1: Konversi Ruang Warna
Gambar terdiri dari piksel, dan setiap piksel memiliki komponen merah, hijau, dan biru (RGB) yang digabungkan untuk membentuk warna. JPEG memulai dengan mengonversi nilai RGB ini ke ruang warna yang berbeda:
- Luminance (Kecerahan): Ini adalah tingkat kecerahan suatu piksel dan penting untuk menentukan kontras keseluruhan gambar.
- Chrominance (Warna): Ini adalah informasi warna, termasuk rona (hue) dan saturasi.
Konversi ini memanfaatkan fakta bahwa mata manusia lebih peka terhadap kecerahan (luminance) daripada warna (chrominance). Dengan memisahkan kecerahan dan warna, JPEG memungkinkan pengurangan data secara terarah pada langkah berikutnya sambil menjaga detail visual yang paling penting tetap utuh.
Tidak ada data yang hilang pada langkah ini, tetapi langkah ini mempersiapkan gambar untuk kompresi yang efisien.
Langkah 2: Penurunan Sampel Chrominance/Chroma Subsampling
Chroma Subsampling adalah adalah teknik yang diterapkan setelah konversi ruang warna. Ingat saat kami mengatakan bahwa mata kita tidak terlalu baik dalam melihat warna (chrominance) dibandingkan kecerahan (luminance)?
JPEG memanfaatkan fakta ini dengan mengurangi jumlah data warna. JPEG mengecilkan gambar chrominance biru dan merah dengan merata-ratakan keduanya dalam blok berisi empat piksel. Ini membuat data warna menjadi jauh lebih kecil sambil tetap menjaga luminance (kecerahan) tetap tidak berubah. Pada titik ini, gambar sudah terkompresi secara signifikan.
Langkah 3: Discrete Cosine Transform (DCT)
Discrete Cosine Transform (DCT) adalah teknik matematis yang digunakan untuk mengonversi data gambar dari domain spasial (di mana gambar berupa kisi piksel) ke domain frekuensi. Proses ini membantu mengidentifikasi bagian mana dari gambar yang berisi informasi visual paling penting dan bagian mana yang bisa dibuang.
DCT memecah gambar menjadi blok 8x8 dan mengonversi setiap blok menjadi kumpulan nilai frekuensi. Frekuensi tinggi, yang merepresentasikan perubahan cepat pada nilai piksel seperti tepi atau noise, sering kali kurang terlihat oleh mata manusia dan dapat disederhanakan atau dihapus.
Langkah 4: Kuantisasi
Setelah DCT diterapkan, data frekuensi yang dihasilkan akan melalui kuantisasi. Pada langkah ini, rentang nilai frekuensi dikurangi dengan membaginya dengan sekumpulan konstanta yang disebut tabel kuantisasi. Proses ini pada dasarnya membulatkan nilai frekuensi untuk menyederhanakannya.
Nilai frekuensi yang lebih tinggi dikuantisasi lebih kuat, artinya kehilangan lebih banyak presisi karena nilai tersebut kurang penting terhadap kualitas gambar secara keseluruhan. Langkah keempat ini mengurangi jumlah data yang dibutuhkan untuk merepresentasikan gambar, sehingga ukuran file menjadi lebih kecil. Namun, kuantisasi yang terlalu besar dapat menimbulkan artefak yang terlihat, seperti blok-blok atau gambar menjadi buram, terutama pada tingkat kompresi yang lebih tinggi.
Langkah 5: Run Length dan Huffman Encoding
Setelah kuantisasi, data masih belum cukup ringkas untuk penyimpanan yang efisien. Di sinilah Run Length Encoding (RLE) dan Huffman Encoding digunakan.
Pertama, RLE digunakan untuk menyederhanakan deret panjang data berulang (seperti nol) dengan menyimpan jumlah pengulangannya alih-alih setiap nilai satu per satu. Lalu, Huffman Encoding diterapkan, yaitu teknik yang mengganti nilai yang sering muncul dengan kode bit yang lebih pendek, sehingga ukuran file menjadi lebih kecil lagi.
These two metode encoding ini bekerja sama untuk sangat mengurangi ukuran file tanpa mengorbankan banyak kualitas gambar.
Catatan Tambahan
Meskipun JPEG merupakan format yang sangat efisien, ada beberapa hal penting yang perlu dipertimbangkan:
- Tingkat Kompresi: JPEG memungkinkan pengguna memilih tingkat kompresi, tetapi kompresi yang lebih tinggi mengurangi ukuran file dan dapat menimbulkan artefak yang terlihat seperti tepi buram atau pikselasi. Hal ini terjadi ketika nilai dalam tabel kuantisasi terlalu tinggi, yang menyebabkan lebih banyak nol ditambahkan, membuat file lebih kecil tetapi dengan mengorbankan kualitas gambar.
- Kehilangan Data Frekuensi Tinggi: Kuantisasi mengurangi presisi data frekuensi tinggi (detail seperti tepi yang tajam), itulah sebabnya JPEG sangat baik untuk tekstur yang halus tetapi dapat kesulitan dengan garis tajam dan grafik vektor.
- Tidak Ideal untuk Grafik Vektor: JPEG bukan pilihan terbaik untuk mengompresi grafik vektor, karena dapat menimbulkan artefak yang terlihat pada batas bentuk atau garis.
Terlepas dari keterbatasan ini, JPEG tetap menjadi format gambar yang paling populer, sebagian karena format ini sudah lama digunakan, mudah dipahami, dan bebas royalti. Namun, format yang lebih baru seperti WebP atau HEIF menawarkan tingkat kompresi yang lebih baik tanpa mengorbankan kualitas, sehingga menjadi alternatif yang menarik dalam konteks tertentu.
Kesimpulan
Algoritme kompresi JPEG merupakan pencapaian penting dalam pengelolaan data gambar. Dengan memecah gambar menjadi blok yang lebih kecil, menerapkan transformasi matematis, dan menggunakan teknik encoding yang efisien seperti Run Length dan Huffman Encoding, algoritme ini memungkinkan kita menyimpan gambar berkualitas tinggi dalam ukuran file yang jauh lebih kecil.
Meskipun JPEG memiliki beberapa keterbatasan, terutama pada tingkat kompresi tinggi atau untuk grafik vektor, penggunaan yang luas dan kemampuannya memberikan hasil yang baik untuk gambar fotografis menjadikannya standar yang tetap digunakan hingga kini.