CharLS es una implementación en C++ del estándar JPEG-LS para compresión y descompresión de imágenes sin pérdidas o casi sin pérdidas. JPEG-LS es un estándar de compresión de imágenes de baja complejidad que coincide con las relaciones de compresión JPEG 2000.
JPEG-LS (ISO/IEC 14495-1:1999 / ITU-T.87) es un estándar de compresión de imágenes derivado del algoritmo LOCO de Hewlett Packard. JPEG-LS tiene baja complejidad (lo que significa compresión rápida) y altos índices de compresión, similares a los índices sin pérdidas de JPEG 2000. JPEG-LS es más similar al antiguo Lossless JPEG que al JPEG 2000, pero curiosamente las dos técnicas diferentes dan como resultado características de rendimiento muy diferentes. Wikipedia sobre JPEG sin pérdidas y JPEG-LS: https://en.wikipedia.org/wiki/Lossless_JPEG
Consejo: La UIT ofrece su versión del estándar JPEG-LS (ITU-T.87) disponible gratuitamente para su descarga. El texto es idéntico a la versión ISO.
El objetivo de este proyecto es proporcionar una implementación completa del estándar ISO/IEC 14495-1:1999, "Compresión sin pérdidas y casi sin pérdidas de imágenes fijas de tonos continuos: línea de base". Esta biblioteca está escrita desde cero en C++ portátil. La rama principal usa C++17. La rama 2.x se mantiene en C++14. Esta biblioteca implementa todas las funciones principales de JPEG-LS. Según los resultados de las pruebas preliminares publicados en https://imagecompression.info/gralic, CharLS es aproximadamente el doble de rápido que el código original de HP y supera a JPEG-XR y JPEG 2000 por un factor de 3.
Las siguientes opciones JPEG-LS no son compatibles con la implementación CharLS. La mayoría de estas opciones rara vez se utilizan en la práctica.
Después de publicar el estándar JPEG-LS original ISO 14495-1:1999, ISO lanzó una extensión del estándar JPEG-LS llamada ISO/IEC 14495-2:2003: "Compresión sin pérdidas y casi sin pérdidas de imágenes fijas de tonos continuos: Extensiones". Actualmente CharLS no admite estas extensiones.
El código se compila/prueba periódicamente en Windows y Linux de 64 bits. Además, el código se ha probado con éxito en Linux Intel/AMD de 32/64 bits (slackware, debian, gentoo), sistemas Solaris SPARC, Mac basados en Intel y Windows CE (CPU ARM, emulado), donde los compiladores menos comunes pueden requerir menores ediciones de código. Aprovecha las características del lenguaje C++ (plantillas, rasgos) para crear código optimizado, que generalmente funciona mejor con compiladores recientes.
Dimensión | Versión compatible |
---|---|
Versión C | >= 17 |
Versión C++ | >= 17 |
Chacer | >= 3.16 |
CCG | >= 9.1 |
Sonido metálico | >= 7.0.0 |
MSVC | >= 2019 |
Sonido de manzana | >= 12 |
Con vcpkg en Windows
PS > vcpkg install charls charls:x64 - windows
Con vcpkg en Linux o macOS
~ /$ ./vcpkg install charls
Para otras plataformas, más opciones de instalación, cómo compilar desde el código fuente y más, consulte la documentación.
Una vez que tenga la biblioteca, la carpeta de muestra le proporcionará algunos ejemplos de código para que pueda comenzar.
Este repositorio se proporciona como código fuente y específicamente no ofrece versiones binarias. En su lugar, se recomienda "vivir a la cabeza" (compilar a partir de la última versión o, si es necesario, compilar contra una rama conocida y compatible, conocida como rama de soporte a largo plazo (LTS). Se habilitará la compatibilidad con versiones anteriores del compilador. eliminado gradualmente, 5 años desde el momento en que esté disponible una versión más nueva de ese compilador. Lo mismo se aplica a la versión mínima requerida del lenguaje C++.
Antes de cualquier cambio importante en la API y/o ABI, se creará una rama desde main para congelar esa instantánea como rama LTS.
CharLS está siendo utilizado por el kit de herramientas GDCM DICOM, gracias a Mathieu Malaterre por iniciar CharLS en Linux. Kato Kanryu escribió una versión inicial de las transformaciones de color y el código de formato de salida DIB, para un complemento irfanview que usa CharLS.
El código de este proyecto está disponible a través de una licencia estilo BSD, lo que permite el uso del código en aplicaciones comerciales de código cerrado si lo desea. Todo el código de este proyecto está escrito desde cero y no se basa en otras implementaciones de JPEG-LS. Tenga en cuenta que Hewlett Packard afirma poseer patentes que se aplican a implementaciones JPEG-LS, pero otorga licencias gratuitas para implementaciones JPEG-LS compatibles. Es posible que algunas de estas patentes ya hayan caducado en su país. Lea más en https://hpl.hp.com/loco/ antes de utilizarlo si utiliza este código con fines comerciales.