CharLS adalah implementasi C++ dari standar JPEG-LS untuk kompresi dan dekompresi gambar lossless dan near-lossless. JPEG-LS adalah standar kompresi gambar dengan kompleksitas rendah yang cocok dengan rasio kompresi JPEG 2000.
JPEG-LS (ISO/IEC 14495-1:1999 / ITU-T.87) adalah standar kompresi gambar yang berasal dari algoritma Hewlett Packard LOCO. JPEG-LS memiliki kompleksitas rendah (artinya kompresi cepat) dan rasio kompresi tinggi, mirip dengan rasio lossless JPEG 2000. JPEG-LS lebih mirip dengan JPEG Lossless lama dibandingkan dengan JPEG 2000, namun yang menarik, kedua teknik yang berbeda ini menghasilkan karakteristik kinerja yang sangat berbeda. Wikipedia tentang JPEG lossless dan JPEG-LS: https://en.wikipedia.org/wiki/Lossless_JPEG
Tip: ITU menyediakan versi standar JPEG-LS (ITU-T.87) secara gratis untuk diunduh. Teksnya identik dengan versi ISO.
Tujuan proyek ini adalah untuk menyediakan penerapan penuh ISO/IEC 14495-1:1999, standar "Kompresi gambar diam nada kontinu: Baseline" yang lossless dan hampir lossless. Pustaka ini ditulis dari awal dalam C++ portabel. Cabang utama menggunakan C++17. Cabang 2.x dipertahankan di C++14. Semua fitur utama JPEG-LS diimplementasikan oleh perpustakaan ini. Menurut hasil pengujian awal yang dipublikasikan di https://imagecompression.info/gralic, CharLS sekitar dua kali lebih cepat dari kode HP asli, dan mengalahkan JPEG-XR dan JPEG 2000 dengan faktor 3.
Opsi JPEG-LS berikut tidak didukung oleh implementasi CharLS. Sebagian besar opsi ini jarang digunakan dalam praktiknya.
Setelah merilis standar awal JPEG-LS ISO 14495-1:1999, ISO merilis perluasan ke standar JPEG-LS yang disebut ISO/IEC 14495-2:2003: "Kompresi gambar diam bernada kontinu tanpa hilang dan hampir tanpa hilang: Ekstensi". Saat ini CharLS tidak mendukung ekstensi ini.
Kode ini dikompilasi/diuji secara berkala pada Windows dan Linux 64 bit. Selain itu, kode ini telah berhasil diuji pada Linux Intel/AMD 32/64 bit (slackware, debian, gentoo), sistem Solaris SPARC, Mac berbasis Intel dan Windows CE (ARM CPU, emulated), dimana kompiler yang kurang umum mungkin memerlukan minor pengeditan kode. Ini memanfaatkan fitur bahasa C++ (templat, sifat) untuk membuat kode yang dioptimalkan, yang umumnya berkinerja terbaik dengan kompiler terbaru.
Dimensi | Versi yang Didukung |
---|---|
Versi C | >= 17 |
Versi C++ | >= 17 |
CMembuat | >= 3.16 |
GCC | >= 9.1 |
Dentang | >= 7.0.0 |
MSVC | >= 2019 |
Dentang Apel | >= 12 |
Dengan vcpkg di Windows
PS > vcpkg install charls charls:x64 - windows
Dengan vcpkg di Linux atau macOS
~ /$ ./vcpkg install charls
Untuk platform lain, opsi pemasangan lainnya, cara membangun dari sumber, dan banyak lagi, lihat dokumentasinya.
Setelah Anda memiliki perpustakaan, folder sampel menyediakan beberapa contoh kode untuk Anda mulai.
Repositori ini disediakan sebagai kode sumber, dan secara khusus tidak menawarkan rilis biner. Sebaliknya, disarankan untuk “live at head” (membangun dari versi terbaru atau, jika perlu, membangun berdasarkan cabang yang dikenal dan didukung, yang dikenal sebagai cabang Dukungan Jangka Panjang (LTS). Dukungan untuk versi kompiler yang lebih lama akan menjadi dihapuskan secara bertahap, 5 tahun sejak versi terbaru dari kompiler tersebut tersedia. Hal yang sama berlaku untuk versi bahasa C++ minimal yang diperlukan.
Sebelum perubahan besar apa pun pada API dan/atau ABI, sebuah cabang akan dibuat dari main untuk membekukan snapshot tersebut sebagai cabang LTS.
CharLS digunakan oleh toolkit GDCM DICOM, terima kasih kepada Mathieu Malaterre yang telah memulai CharLS di Linux. Kato Kanryu menulis versi awal transformasi warna dan kode format keluaran DIB, untuk plugin irfanview menggunakan CharLS.
Kode dalam proyek ini tersedia melalui lisensi gaya BSD, memungkinkan penggunaan kode dalam aplikasi sumber tertutup komersial jika Anda mau. Semua kode dalam proyek ini ditulis dari awal, dan tidak berdasarkan implementasi JPEG-LS lainnya. Ketahuilah bahwa Hewlett Packard mengklaim memiliki paten yang berlaku untuk implementasi JPEG-LS, namun mereka melisensikannya secara gratis untuk implementasi JPEG-LS yang sesuai. Beberapa paten ini mungkin sudah habis masa berlakunya di negara Anda. Baca selengkapnya di https://hpl.hp.com/loco/ sebelum Anda menggunakan ini jika Anda menggunakan kode ini untuk tujuan komersial.