Ada 2 faktor utama yang tampaknya mengarah pada artefak digital saat membuat gambar JPEG: Aliasing dan Compression.
Contoh:
Mengubah PNG dengan karakter di atasnya menjadi JPEG atau menempatkan gambar vektor di atas foto, akan menghasilkan pixelisasi di tepinya. Antialiasing umumnya menciptakan semacam blur di sekitar mereka, tetapi jika gambar dikompresi lossy , bagian dari detail juga hilang, oleh karena itu blur dan pikselisasi mungkin menjadi kurang terlihat.
Apakah ini hal yang benar untuk dilakukan? Yaitu karena kompresi lossless menghasilkan gambar yang sangat rinci, artefak yang dihasilkan dari aliasing akan lebih terlihat, sehingga keseimbangan dapat ditemukan dengan menggunakan kompresi yang tepat, meskipun mengurangi kualitas gambar.
Edit
Saya baru saja menyimpan JPEG ini di mspaint (3.46KB):
Berikut JPEG yang sama dengan kompresi maksimum (kualitas terendah, 0,5KB):
Berikut ini JPEG yang sama dengan kompresi 50% (perhatikan perbedaan ukuran, 1.29KB):
Kompresi 50% yang sama tetapi disimpan sebagai "JPG progresif", menyimpan data EXIF dan XMP asli, dan "mencoba menyimpan dengan kualitas JPG asli" (Anda dapat melihat bahwa tidak ada piksel abu-abu di sekitar, 2.96KB):
Dan akhirnya sama seperti sebelumnya dengan chroma subsampling dinonaktifkan (ukuran file yang sama, 2.96KB):
sumber
mozjpeg
kompresor memiliki trik khusus untuk menghasilkan lebih sedikit distorsi pada jenis gambar ini. (dan ini lebih efisien secara umum daripada penulis jpeg biasa juga.) Apakah Anda mencobanya?Jawaban:
Kompresi JPEG melibatkan tiga langkah utama:
Subsampling Chroma . Gambar dikonversi dari RGB ke ruang warna YCbCr, di mana luma atau kecerahan (Y) disimpan secara terpisah dari kroma atau komponen warna, Cb dan Cr. Komponen Y dijaga pada resolusi penuh, tetapi Cb dan Cr downsampled, biasanya setengah resolusi pada setiap sumbu. Ini mengeksploitasi fakta bahwa sistem visual manusia lebih sensitif terhadap detail kecerahan yang lebih baik daripada warna.
Kuantisasi frekuensi. Gambar Y, Cb, dan Cr dikonversi menjadi representasi frekuensi, dengan memecahnya menjadi 8x8 blok dan menerapkan transformasi kosinus diskrit (varian transformasi Fourier) ke setiap blok. Hasilnya adalah matriks angka yang menggambarkan amplitudo frekuensi spasial yang berbeda di blok. Angka-angka ini kemudian dapat dikuantisasi (dibulatkan ke sejumlah bit presisi yang dipilih). Tingkat kuantisasi yang berbeda digunakan untuk frekuensi yang berbeda, mengeksploitasi sensitivitas sistem visual kami yang relatif lebih rendah terhadap frekuensi tinggi. Di sinilah pengaturan kualitas encoder JPEG berperan: kualitas yang lebih rendah menggunakan kuantisasi kasar.
Pengodean entropi . Nilai-nilai DCT yang dikuantisasi dilewatkan melalui sebuah koder entropi, yang tanpa kompres mengkompresi aliran bit dengan menggunakan bit yang lebih sedikit untuk mewakili nilai yang lebih umum, seperti file zip.
Langkah 1 dan 2 adalah yang merugi, dan masing-masing menghasilkan jenis artefak sendiri (meskipun ada beberapa tumpang tindih). Subsampel Chroma cenderung mengaburkan tepi tajam di antara wilayah-wilayah dengan warna berbeda. Ini terutama terlihat dalam seni vektor, di mana bentuk-bentuk berwarna cerah mengambil jaggy jahat di sekitar tepinya. Kuantisasi frekuensi mengaburkan detail halus secara umum, dan juga menciptakan artefak berbentuk blok pada pengaturan kualitas rendah, karena DCT dilakukan berdasarkan blok-demi-blok. Ini terutama terlihat pada teks.
Inilah sebabnya mengapa JPEG biasanya tidak digunakan untuk gambar yang mengandung grafik vektor atau teks — algoritme kompresinya kurang cocok untuk kasus-kasus itu, meskipun mereka bekerja dengan baik untuk foto dan gambar lain dengan tekstur kompleks dan tepi yang tidak terlalu tajam.
sumber