Cara Kerja Kompresi HEIC: Panduan Teknis
Pahami teknologi kompresi HEIC termasuk coding intra-frame HEVC, blok transform, kuantisasi, dan mengapa format ini menghasilkan file 50% lebih kecil dari JPEG.
Kompresi HEIC menggunakan coding intra-frame HEVC untuk menghasilkan file 50% lebih kecil dari JPEG pada kualitas visual yang setara. Pipeline kompresi memproses gambar melalui coding tree unit, prediction, transform coding, kuantisasi, dan entropy coding. Setiap tahap lebih canggih dibandingkan padanannya di JPEG.
Panduan ini menguraikan setiap tahap pipeline kompresi HEIC. Panduan ini menjelaskan mekanisme teknis spesifik yang membuat HEIC dua kali lebih efisien dari JPEG, format yang dirancang lebih dari 30 tahun lalu.
HEVC: Codec di Balik HEIC
HEIC adalah format kontainer yang didefinisikan oleh standar HEIF (High Efficiency Image Format). Pekerjaan kompresi sebenarnya dilakukan oleh HEVC, yang juga dikenal sebagai H.265. HEVC dikembangkan bersama oleh ITU-T dan ISO/IEC dan diresmikan pada tahun 2013. Format ini awalnya dirancang untuk kompresi video, di mana ia menggantikan H.264/AVC.
Untuk gambar diam, HEVC hanya menggunakan mode coding intra-frame. Codec video mengompresi urutan gambar dengan memanfaatkan kesamaan antara frame berturut-turut (prediksi inter-frame). Gambar diam tidak memiliki frame tetangga. Mode intra-frame HEVC mengompresi setiap gambar secara independen, hanya menggunakan redundansi spasial dalam satu frame tunggal.
Apple mengadopsi coding intra-frame HEVC untuk foto iPhone dimulai dengan iOS 11 pada tahun 2017. Chip A11 Bionic dan setiap prosesor Apple berikutnya menyertakan perangkat keras khusus untuk encoding dan decoding HEVC. Akselerasi perangkat keras ini membuat kompresi HEIC cukup cepat untuk mengambil foto burst tanpa lag.
Coding Tree Unit: Fondasi Utama
JPEG membagi gambar menjadi blok piksel tetap 8x8 yang disebut macroblock. HEVC menggantikan struktur kaku ini dengan coding tree unit (CTU) yang berkisar dari 8x8 hingga 64x64 piksel. Partisi blok fleksibel ini adalah kontributor tunggal terbesar terhadap keunggulan kompresi HEIC.
Cara Kerja CTU
Encoder memulai dengan membagi gambar menjadi grid CTU. Setiap CTU berukuran 64x64 piksel pada ukuran maksimum. Encoder kemudian secara rekursif membagi setiap CTU menjadi coding unit (CU) yang lebih kecil menggunakan struktur quadtree. Sebuah CTU 64x64 terbagi menjadi empat CU 32x32. Setiap CU 32x32 terbagi menjadi empat CU 16x16. Pembagian berlanjut hingga minimum 8x8 piksel.
Encoder memilih kedalaman pembagian berdasarkan konten gambar. Area datar dan seragam seperti langit cerah menggunakan blok besar 64x64 karena hanya ada sedikit detail yang perlu dikodekan. Area berdetail tinggi seperti dedaunan atau teks menggunakan blok lebih kecil 8x8 atau 16x16 untuk menangkap struktur halus secara presisi.
Mengapa Blok Lebih Besar Penting
Blok yang lebih besar mengurangi overhead. Setiap batas blok memerlukan bit header untuk mode prediksi, motion vector, dan koefisien transform. Satu blok 64x64 memiliki satu set data header yang mencakup 4.096 piksel. Area yang setara di JPEG memerlukan 64 blok 8x8 terpisah, masing-masing dengan header sendiri. Itu berarti 64 set data overhead untuk area piksel yang sama. Di area yang halus, penghematan overhead saja sudah menghasilkan pengurangan ukuran file yang signifikan.
Macroblock JPEG Sebagai Perbandingan
JPEG menggunakan struktur tetap dua level. Gambar dibagi menjadi macroblock 16x16. Setiap macroblock berisi empat blok DCT 8x8 untuk luminance dan dua blok 8x8 untuk chrominance (pada subsampling 4:2:0). Tidak ada pembagian adaptif. Area langit biru mendapat perlakuan blok 8x8 yang sama dengan area tekstur rumit. Kekakuan ini membuang bit pada area sederhana dan membatasi presisi pada area yang kompleks.
Mode Prediksi
Sebelum transform coding, encoder memprediksi nilai piksel setiap blok menggunakan piksel tetangga yang sudah dikodekan. Encoder hanya menyimpan residual -- perbedaan antara prediksi dan piksel sebenarnya. Prediksi yang lebih baik menghasilkan residual yang lebih kecil, yang dikompresi menjadi lebih sedikit bit.
HEVC: 35 Mode Prediksi Intra
HEVC menawarkan 35 mode prediksi intra yang berbeda untuk setiap coding unit:
- Mode planar (mode 0): Menghasilkan permukaan halus yang disesuaikan dengan piksel batas atas dan kiri blok. Mode ini unggul untuk gradien yang halus, seperti latar belakang yang tidak fokus dan area langit.
- Mode DC (mode 1): Mengisi seluruh blok dengan satu nilai -- rata-rata piksel batas atas dan kiri. Mode ini menangani area datar dan seragam dengan residual minimal.
- 33 mode angular (mode 2-34): Memproyeksikan piksel batas pada sudut tertentu ke bagian dalam blok. Ke-33 sudut tersebut membentang dari hampir horizontal hingga hampir vertikal dengan interval sekitar 5,6 derajat. Mode angular yang sesuai dengan tepi diagonal, seperti garis atap pada 45 derajat, menghasilkan residual mendekati nol di sepanjang tepi tersebut.
Encoder menguji setiap dari 35 mode dan memilih yang menghasilkan residual terkecil. Untuk blok yang berisi tepi diagonal yang kuat, mode angular yang sejajar dengan tepi tersebut dipilih. Untuk gradien yang halus, mode planar yang menang. Untuk area solid, mode DC yang dipilih.
JPEG: 9 Opsi Prediksi
Spesifikasi baseline JPEG tidak memiliki prediksi spasial sama sekali. DCT beroperasi langsung pada nilai piksel mentah. Mode lossless JPEG mendefinisikan skema prediksi sederhana dengan hanya 7 prediktor berdasarkan piksel yang berdekatan. Bahkan JPEG 2000, varian JPEG paling canggih, hanya menawarkan 9 mode prediksi. Kesenjangan antara 9 dan 35 sangat besar. Lebih banyak opsi prediksi berarti kecocokan yang lebih baik dengan konten gambar nyata, yang berarti residual lebih kecil dan file lebih kecil.
Transform Coding
Setelah prediksi, encoder mentransformasi data residual dari domain spasial ke domain frekuensi. Langkah ini mengkonsentrasikan energi gambar ke sejumlah kecil koefisien, membuat kuantisasi dan entropy coding lebih efisien.
Blok Transform HEVC
HEVC menggunakan Discrete Cosine Transform (DCT) dan Discrete Sine Transform (DST) pada transform unit (TU) yang berkisar dari 4x4 hingga 32x32 piksel. DST 4x4 digunakan khusus untuk blok luma yang diprediksi secara intra, di mana ia memberikan pemadatan energi yang lebih baik daripada DCT. Blok yang lebih besar menggunakan DCT.
Ukuran transform dipilih secara independen dari ukuran coding unit. CU 32x32 dapat menggunakan satu transform 32x32 atau dibagi menjadi empat transform 16x16. Fleksibilitas ini memungkinkan encoder mencocokkan ukuran transform dengan konten frekuensi lokal. Area frekuensi rendah menggunakan transform besar untuk pemadatan energi yang lebih baik. Area frekuensi tinggi menggunakan transform yang lebih kecil untuk menghindari artefak ringing.
Blok Transform JPEG
JPEG menggunakan DCT 8x8 tetap untuk setiap blok tanpa pengecualian. Tidak ada opsi DST, tidak ada fleksibilitas ukuran, dan tidak ada adaptasi terhadap konten lokal. Ukuran 8x8 adalah kompromi: terlalu kecil untuk pemadatan energi optimal di area halus, memadai tetapi tidak ideal untuk area bertekstur. Pendekatan satu ukuran untuk semua ini adalah keterbatasan fundamental dari standar JPEG.
Kuantisasi
Kuantisasi adalah tahap lossy. Encoder membagi setiap koefisien transform dengan parameter kuantisasi (QP), membulatkan hasilnya ke bilangan bulat. Pembagi yang lebih besar menghasilkan bilangan bulat yang lebih kecil (kompresi lebih tinggi, kehilangan kualitas lebih banyak). Pembagi yang lebih kecil mempertahankan lebih banyak presisi (kompresi lebih rendah, kehilangan kualitas lebih sedikit).
Kuantisasi HEVC
HEVC menggunakan rentang QP dari 0 hingga 51. Ukuran langkah kuantisasi berlipat ganda untuk setiap peningkatan 6 pada QP. Pada QP 0, kuantisasi dapat diabaikan. Pada QP 51, kuantisasi sangat agresif. Encoding HEIC default Apple untuk foto iPhone menggunakan nilai QP dalam rentang 22 hingga 28, tergantung pada kompleksitas adegan. Rentang ini menghasilkan pengurangan ukuran sekitar 50% dibandingkan JPEG pada kualitas visual yang setara.
HEVC juga mendukung kuantisasi adaptif dalam satu frame. Encoder memberikan nilai QP berbeda ke CTU berbeda berdasarkan kepentingan visual. Area dengan sensitivitas perseptual tinggi, seperti wajah, menerima nilai QP lebih rendah (kualitas lebih tinggi). Latar belakang datar menerima nilai QP lebih tinggi (kompresi lebih banyak). Adaptasi spasial ini mengalokasikan bit di tempat mata manusia paling memperhatikan.
Kuantisasi JPEG
JPEG menggunakan matriks kuantisasi 8x8 tetap. Standar JPEG menyertakan dua matriks default: satu untuk luminance dan satu untuk chrominance. Slider kualitas di editor gambar menskalakan matriks ini secara seragam. Pengaturan kualitas 75% mengalikan setiap entri dalam matriks dengan faktor yang sama. Tidak ada adaptasi per-blok, tidak ada alokasi bit berbasis konten, dan tidak ada variasi spasial dalam satu gambar.
Entropy Coding: CABAC vs Huffman
Tahap kompresi terakhir mengubah koefisien terkuantisasi menjadi bitstream yang ringkas. Tahap ini bersifat lossless -- tidak ada informasi yang hilang selama entropy coding. Efisiensi entropy coder menentukan seberapa rapat data dikemas.
HEVC Menggunakan CABAC
HEVC menggunakan Context-Adaptive Binary Arithmetic Coding (CABAC). CABAC mengubah setiap elemen sintaks menjadi urutan keputusan biner. Setiap keputusan biner dikodekan menggunakan arithmetic coder yang menyesuaikan model probabilitasnya berdasarkan konteks -- nilai elemen tetangga yang telah dikodekan sebelumnya.
CABAC mencapai kompresi yang mendekati optimum teoritis. Format ini menyesuaikan estimasi probabilitasnya secara terus-menerus, sehingga simbol yang sering muncul secara lokal menggunakan lebih sedikit bit. Untuk konten fotografis tipikal, CABAC menghasilkan bitstream yang 5-15% lebih kecil dari Huffman coding pada data terkuantisasi yang sama.
JPEG Menggunakan Huffman Coding
Baseline JPEG menggunakan Huffman coding, metode entropy coding yang lebih sederhana yang didefinisikan pada tahun 1952. Huffman coding memberikan codeword dengan panjang tetap berdasarkan frekuensi simbol global di seluruh gambar. Format ini tidak beradaptasi dengan pola lokal. Simbol yang jarang secara global tetapi umum di satu area tetap mendapat codeword yang panjang. JPEG memang mendukung arithmetic coding sebagai opsi, tetapi hampir tidak ada perangkat lunak yang mengaktifkannya karena masalah paten dan dukungan decoder yang terbatas.
HEIC vs JPEG: Perbandingan Fitur Kompresi
| Fitur | HEIC (HEVC) | JPEG | | --- | --- | --- | | Rentang ukuran blok | 8x8 hingga 64x64 (adaptif) | Tetap 8x8 | | Partisi blok | Quadtree rekursif | Grid tetap | | Mode prediksi intra | 35 (planar + DC + 33 angular) | Tidak ada (baseline) atau 9 (lossless) | | Jenis transform | DCT + DST | Hanya DCT | | Ukuran transform | 4x4, 8x8, 16x16, 32x32 | Tetap 8x8 | | Kuantisasi | Adaptif per-CTU, QP 0-51 | Matriks tetap, penskalaan seragam | | Entropy coding | CABAC (arithmetic adaptif) | Huffman (codeword tetap) | | Kedalaman warna | Hingga 16-bit per channel | 8-bit per channel | | Mode lossy | Ya | Ya | | Mode lossless | Ya | Terbatas (jarang digunakan) | | Foto 12 MP tipikal | ~1,8 MB | ~3,5 MB | | Keunggulan rasio kompresi | Baseline | ~50% lebih besar pada kualitas sama |
Mengapa HEIC Menghasilkan File 50% Lebih Kecil
Keunggulan ukuran 50% bukan berasal dari satu fitur saja. Ini adalah hasil kumulatif dari peningkatan di setiap tahap pipeline. Setiap peningkatan memberikan kontribusi yang terukur:
- Blok adaptif yang lebih besar menghemat 10-15% overhead. Mengkodekan area langit yang halus sebagai satu blok 64x64 daripada enam puluh empat blok 8x8 menghilangkan 63 set data header blok.
- 35 mode prediksi menghemat 15-20% energi residual. Prediksi angular yang selaras dengan tepi, dikombinasikan dengan mode planar dan DC untuk area datar, menghasilkan prediksi yang lebih akurat dibandingkan pendekatan DCT mentah JPEG.
- Ukuran transform fleksibel menghemat 5-10%. Mencocokkan ukuran transform dengan konten lokal meningkatkan pemadatan energi. Transform besar mengemas konten frekuensi rendah secara efisien. Transform kecil menangani tepi frekuensi tinggi tanpa ringing.
- Kuantisasi adaptif menghemat 5-10%. Mengalokasikan lebih banyak bit ke area yang secara perseptual penting dan lebih sedikit bit ke latar belakang menghasilkan kualitas subjektif yang lebih baik pada bitrate total yang sama.
- CABAC menghemat 5-15% dibandingkan Huffman. Arithmetic coding yang adaptif konteks mengompresi bitstream akhir lebih rapat dibandingkan tabel Huffman tetap.
Digabungkan, keuntungan ini berlipat ganda. Penghematan 15% pada tahap prediksi berarti lebih sedikit bit residual yang masuk ke tahap transform, yang berarti lebih sedikit koefisien yang bertahan dari kuantisasi, yang berarti CABAC memiliki lebih sedikit data untuk dikodekan. Efek pipeline ini saling mengalikan.
Kompresi HEIC Lossy vs Lossless
HEIC mendukung mode kompresi lossy dan lossless. Perbedaannya terletak pada tahap kuantisasi.
Mode Lossy
Kompresi lossy menetapkan QP di atas 0, memperkenalkan error kuantisasi. Ini adalah mode default untuk semua foto iPhone. Encoder Apple menyeimbangkan kualitas terhadap ukuran file, menargetkan rentang QP yang menghasilkan file sekitar 50% lebih kecil dari JPEG yang setara. Pada pengaturan ini, error kuantisasi berada di bawah ambang batas persepsi visual manusia untuk kondisi tampilan standar.
Mode Lossless
Kompresi lossless menetapkan QP ke 0 dan menggunakan jalur coding khusus yang mempertahankan setiap nilai sampel secara persis. Tahap prediction, transform, dan entropy coding tetap beroperasi, tetapi kuantisasi tidak memperkenalkan error. File HEIC lossless lebih besar dari lossy -- biasanya 2-3 kali ukuran HEIC lossy -- tetapi masih 20-30% lebih kecil dari PNG lossless untuk konten fotografis. Penghematan berasal dari prediction dan entropy coding HEVC yang superior.
Apple tidak menggunakan mode lossless untuk foto iPhone standar. Gambar ProRAW pada model iPhone Pro menggunakan pipeline yang berbeda (format DNG). HEIC lossless terutama digunakan dalam alur kerja pencitraan profesional di mana pelestarian sampel yang tepat diperlukan.
Decoding: Bagaimana Gambar HEIC Ditampilkan
Decoding membalikkan pipeline kompresi. Decoder membaca bitstream yang dikodekan CABAC, merekonstruksi koefisien terkuantisasi, menerapkan transform terbalik, menambahkan prediction, dan menghasilkan nilai piksel. Perangkat Apple modern melakukan ini secara perangkat keras. Chip A11 dan yang lebih baru menyertakan decoder HEVC khusus yang memproses gambar 12 MP dalam waktu kurang dari 50 milidetik.
Decoding perangkat lunak lebih lambat tetapi tersedia secara luas. Library seperti libheif dan libde265 mendekode HEIC di platform apa pun. HEICify menggunakan libheif-js untuk mendekode file HEIC langsung di browser melalui WebAssembly, tanpa pemrosesan di sisi server. Piksel yang didekode kemudian dikodekan ulang menjadi JPEG atau PNG untuk kompatibilitas universal.
Implikasi Praktis
Memahami kompresi HEIC menjelaskan beberapa perilaku praktis.
Kualitas HEIC menurun secara gradual. Karena HEVC menyesuaikan ukuran blok dan kuantisasi dengan konten lokal, peningkatan kompresi mempengaruhi latar belakang datar terlebih dahulu dan mempertahankan tepi serta tekstur lebih lama. JPEG menurun secara seragam, menghasilkan artefak blocking yang terlihat di seluruh gambar pada pengaturan kualitas yang lebih rendah.
Mengkodekan ulang HEIC ke JPEG kehilangan efisiensi. Mengonversi foto HEIC 1,8 MB ke JPEG pada kualitas visual yang setara menghasilkan file 3,5 MB. Encoder JPEG tidak dapat mereplikasi struktur blok adaptif HEVC, prediction superior, atau efisiensi CABAC. Informasi visual yang sama membutuhkan lebih banyak byte di bawah algoritma JPEG yang lebih tua.
Round-trip lossless dalam HEIC mempertahankan kualitas secara sempurna. Mendekode dan mengkodekan ulang file HEIC lossless menghasilkan output yang identik bit per bit. Ini tidak berlaku untuk JPEG, di mana setiap siklus encode-decode memperkenalkan error kuantisasi tambahan.
Untuk mengonversi file HEIC ke format yang kompatibel secara luas, konverter HEIC ke JPG HEICify dan konverter HEIC ke PNG memproses semuanya secara lokal di browser Anda. Konversi mendekode data terkompresi HEVC dan mengkodekan ulang dalam format output pilihan Anda dengan kontrol kualitas penuh.
Pertanyaan yang Sering Diajukan
Algoritma kompresi apa yang digunakan HEIC?
HEIC menggunakan kompresi intra-frame HEVC (H.265) dengan coding tree unit, transform coding, dan context-adaptive binary arithmetic coding (CABAC). HEVC diresmikan pada tahun 2013 oleh ITU-T dan ISO/IEC. Format ini hanya menerapkan subset coding intra-frame untuk gambar diam, menggunakan prediksi spasial dalam satu frame tunggal daripada prediksi temporal antar frame video.
Mengapa file HEIC lebih kecil dari JPEG?
HEIC menghasilkan file 50% lebih kecil melalui peningkatan di setiap tahap kompresi. Blok coding yang lebih besar (64x64 vs 8x8) mengurangi overhead. Lebih banyak mode prediksi (35 vs 0 di baseline JPEG) menghasilkan residual yang lebih kecil. Ukuran transform yang fleksibel (4x4 hingga 32x32 vs tetap 8x8) meningkatkan pemadatan energi. Kuantisasi adaptif mengalokasikan bit berdasarkan kepentingan visual. Entropy coding CABAC mengompresi bitstream 5-15% lebih rapat dari Huffman coding.
Apakah kompresi HEIC lossy atau lossless?
HEIC mendukung kompresi lossy dan lossless. Apple menggunakan kompresi lossy secara default untuk foto iPhone, menghasilkan pengurangan ukuran sekitar 50% dibandingkan JPEG. Mode lossless mempertahankan setiap nilai piksel secara persis tetapi menghasilkan file 2-3 kali lebih besar dari HEIC lossy. HEIC lossless masih 20-30% lebih kecil dari PNG lossless untuk foto karena prediction dan entropy coding HEVC yang superior.
Apakah kompresi HEIC mempengaruhi kualitas gambar?
Pada ukuran file yang setara, HEIC menghasilkan kualitas yang terlihat lebih baik dibandingkan JPEG. Ke-35 mode prediksi intra menghasilkan prediksi yang lebih akurat, meninggalkan residual yang lebih kecil. Kuantisasi adaptif mempertahankan kualitas di area yang secara perseptual penting. Hasilnya adalah tepi yang lebih bersih, gradien yang lebih halus, dan lebih sedikit artefak blocking dibandingkan JPEG pada bitrate yang sama. Pada pengaturan kualitas default Apple, artefak kompresi HEIC berada di bawah ambang batas persepsi manusia untuk tampilan standar.
Untuk gambaran umum yang lebih luas tentang format HEIC, baca Apa Itu Format HEIC?. Untuk memahami bagaimana HEIC berhubungan dengan standar induknya, lihat HEIF vs HEIC. Untuk perbandingan praktis fitur HEIC dan JPEG, lihat HEIC vs JPG.
Frequently Asked Questions
Algoritma kompresi apa yang digunakan HEIC?
Mengapa file HEIC lebih kecil dari JPEG?
Apakah kompresi HEIC lossy atau lossless?
Apakah kompresi HEIC mempengaruhi kualitas gambar?
Related Guides
Apakah Mengonversi HEIC ke JPG Menurunkan Kualitas?
Pahami secara pasti berapa banyak kualitas yang hilang saat mengonversi HEIC ke JPG, apa penyebabnya, cara meminimalkannya, dan kapan hal itu berpengaruh pada foto Anda.
HEIC 10-Bit vs 8-Bit Warna: Apa Artinya untuk Foto
Pelajari perbedaan antara kedalaman warna 10-bit dan 8-bit pada file HEIC, bagaimana pengaruhnya terhadap kualitas foto, dan apa yang terjadi saat mengonversi ke format 8-bit seperti JPEG.
HEIC vs JPG: Format Mana yang Harus Anda Gunakan?
Perbandingan mendetail antara format gambar HEIC dan JPG mencakup kompresi, kualitas, ukuran file, kompatibilitas, dan fitur untuk membantu Anda memilih format yang tepat.
HEIF vs HEIC: Apa Perbedaannya?
Pahami hubungan antara format file HEIF dan HEIC -- apa arti masing-masing singkatan, bagaimana keduanya terkait secara teknis, dan mengapa perbedaannya penting.
Apa Itu Format HEIC? Semua yang Perlu Anda Ketahui
Pelajari apa itu HEIC, mengapa Apple menggunakannya, perbandingannya dengan JPG, serta cara termudah untuk membuka atau mengonversi file HEIC di perangkat apa pun.
Ready to Convert Your Images?
Try our free, browser-based converter tools. No uploads required -- your files never leave your device.