CharLS est une implémentation C++ de la norme JPEG-LS pour la compression et la décompression d'images sans et presque sans perte. JPEG-LS est une norme de compression d'image de faible complexité qui correspond aux taux de compression JPEG 2000.
JPEG-LS (ISO/IEC 14495-1:1999 / ITU-T.87) est une norme de compression d'image dérivée de l'algorithme Hewlett Packard LOCO. JPEG-LS a une faible complexité (ce qui signifie une compression rapide) et des taux de compression élevés, similaires aux taux sans perte JPEG 2000. JPEG-LS ressemble plus à l'ancien JPEG sans perte qu'au JPEG 2000, mais il est intéressant de noter que les deux techniques différentes aboutissent à des caractéristiques de performances très différentes. Wikipédia sur les formats JPEG et JPEG-LS sans perte : https://en.wikipedia.org/wiki/Lossless_JPEG
Astuce : l'UIT met sa version de la norme JPEG-LS (ITU-T.87) à disposition gratuitement en téléchargement. Le texte est identique à la version ISO.
L'objectif de ce projet est de fournir une mise en œuvre complète de la norme ISO/IEC 14495-1:1999, « Compression sans perte et quasiment sans perte d'images fixes à tons continus : ligne de base ». Cette bibliothèque est écrite à partir de zéro en C++ portable. La branche principale utilise C++17. La branche 2.x est maintenue en C++14. Toutes les fonctionnalités JPEG-LS grand public sont implémentées par cette bibliothèque. Selon les résultats des tests préliminaires publiés sur https://imagecompression.info/gralic, CharLS est environ deux fois plus rapide que le code HP d'origine et bat JPEG-XR et JPEG 2000 d'un facteur 3.
Les options JPEG-LS suivantes ne sont pas prises en charge par l'implémentation CharLS. La plupart de ces options sont rarement utilisées en pratique.
Après avoir publié la norme de base JPEG-LS d'origine ISO 14495-1:1999, l'ISO a publié une extension de la norme JPEG-LS appelée ISO/IEC 14495-2:2003 : « Compression sans perte et quasiment sans perte d'images fixes en tons continus : Rallonges". Actuellement, CharLS ne prend pas en charge ces extensions.
Le code est régulièrement compilé/testé sous Windows et Linux 64 bits. De plus, le code a été testé avec succès sur Linux Intel/AMD 32/64 bits (slackware, debian, gentoo), les systèmes Solaris SPARC, les Mac basés sur Intel et Windows CE (CPU ARM, émulé), où les compilateurs les moins courants peuvent nécessiter des modifications mineures. modifications de code. Il exploite les fonctionnalités du langage C++ (modèles, traits) pour créer du code optimisé, qui fonctionne généralement mieux avec les compilateurs récents.
Dimension | Version prise en charge |
---|---|
Version C | >= 17 |
Version C++ | >= 17 |
CMake | >= 3,16 |
CCG | >= 9,1 |
Bruit | >= 7.0.0 |
MSVC | >= 2019 |
Clang de pomme | >= 12 |
Avec vcpkg sous Windows
PS > vcpkg install charls charls:x64 - windows
Avec vcpkg sous Linux ou macOS
~ /$ ./vcpkg install charls
Pour d'autres plates-formes, plus d'options d'installation, comment construire à partir des sources, et plus encore, consultez la documentation.
Une fois que vous disposez de la bibliothèque, le dossier d’exemples fournit des exemples de code pour vous aider à démarrer.
Ce référentiel est fourni sous forme de code source et n'offre spécifiquement pas de versions binaires. Au lieu de cela, il est encouragé soit à « vivre en tête » (construire à partir de la dernière version de ou, si nécessaire, à construire sur une branche connue et prise en charge, connue sous le nom de branche LTS (Long Term Support). La prise en charge des anciennes versions du compilateur sera progressivement supprimé, 5 ans à partir du moment où une version plus récente de ce compilateur est devenue disponible. Il en va de même pour la version minimale requise du langage C++.
Avant tout changement majeur dans l'API et/ou l'ABI, une branche sera créée à partir de main pour geler cet instantané en tant que branche LTS.
CharLS est utilisé par la boîte à outils GDCM DICOM, merci à Mathieu Malaterre d'avoir démarré CharLS sous Linux. Kato Kanryu a écrit une version initiale des transformations de couleurs et du code du format de sortie DIB, pour un plugin irfanview utilisant CharLS.
Le code de ce projet est disponible via une licence de style BSD, permettant l'utilisation du code dans des applications commerciales fermées si vous le souhaitez. Tout le code de ce projet est écrit à partir de zéro et n'est pas basé sur d'autres implémentations JPEG-LS. Sachez que Hewlett Packard prétend détenir des brevets qui s'appliquent aux implémentations JPEG-LS, mais ils l'octroient gratuitement des licences pour les implémentations JPEG-LS conformes. Certains de ces brevets ont peut-être déjà expiré dans votre pays. En savoir plus sur https://hpl.hp.com/loco/ avant de l'utiliser si vous utilisez ce code à des fins commerciales.