Format pemampatan imej QOI diperkenalkan

Format pemampatan imej ringan dan tanpa kerugian baharu telah diperkenalkan - QOI (Imej Cukup OK), yang membolehkan anda memampatkan imej dengan cepat dalam ruang warna RGB dan RGBA. Apabila membandingkan prestasi dengan format PNG, pelaksanaan rujukan satu benang bagi format QOI dalam bahasa C, yang tidak menggunakan arahan SIMD dan pengoptimuman pemasangan, adalah 20-50 kali lebih pantas dalam kelajuan pengekodan daripada perpustakaan libpng dan stb_image, dan 3 -4 kali lebih cepat dalam kelajuan penyahkodan. Dari segi kecekapan mampatan, QOI hampir dengan libpng dalam kebanyakan ujian (dalam sesetengah ujian ia berada di hadapan sedikit, dan pada yang lain ia lebih rendah), tetapi secara amnya ia ketara mendahului stb_image (keuntungan sehingga 20%).

Pelaksanaan rujukan QOI dalam C hanyalah 300 baris kod. Kod sumber diedarkan di bawah lesen MIT. Selain itu, peminat telah menyediakan pelaksanaan pengekod dan penyahkod dalam bahasa Go, Zig dan Rust. Projek ini sedang dibangunkan oleh Dominic Szablewski, pembangun permainan yang berpengalaman dalam mencipta perpustakaan untuk menyahkod video MPEG1. Menggunakan format QOI, penulis ingin menunjukkan bahawa adalah mungkin untuk mencipta alternatif yang berkesan dan mudah kepada format pengekodan imej moden yang terlalu rumit.

Prestasi QOI adalah bebas daripada resolusi dan sifat imej yang dikodkan (O(n)). Pengekodan dan penyahkodan dilakukan dalam satu laluan - setiap piksel diproses sekali sahaja dan boleh dikodkan dalam salah satu daripada 4 cara, dipilih bergantung pada nilai piksel sebelumnya. Jika piksel seterusnya bertepatan dengan yang sebelumnya, maka pembilang ulangan hanya meningkat. Jika piksel sepadan dengan salah satu nilai dalam penimbal 64 piksel lalu, maka nilai itu digantikan dengan mengimbangi 6 bit kepada piksel lalu. Jika warna piksel sebelumnya sedikit berbeza, perbezaannya ditunjukkan dalam bentuk pendek (pengekodan pendek perbezaan komponen warna yang sesuai dengan 2,4, 5 dan XNUMX bit). Jika pengoptimuman tidak berkenaan, nilai rgba penuh disediakan.

Sumber: opennet.ru

Tambah komen