CharLS é uma implementação C++ do padrão JPEG-LS para compactação e descompactação de imagens sem e quase sem perdas. JPEG-LS é um padrão de compactação de imagem de baixa complexidade que corresponde às taxas de compactação JPEG 2000.
JPEG-LS (ISO/IEC 14495-1:1999 / ITU-T.87) é um padrão de compactação de imagem derivado do algoritmo LOCO da Hewlett Packard. JPEG-LS tem baixa complexidade (ou seja, compactação rápida) e altas taxas de compactação, semelhantes às taxas sem perdas do JPEG 2000. JPEG-LS é mais semelhante ao antigo JPEG sem perdas do que ao JPEG 2000, mas curiosamente as duas técnicas diferentes resultam em características de desempenho muito diferentes. Wikipedia sobre JPEG sem perdas e JPEG-LS: https://en.wikipedia.org/wiki/Lossless_JPEG
Dica: A ITU disponibiliza gratuitamente sua versão do padrão JPEG-LS (ITU-T.87) para download. O texto é idêntico à versão ISO.
O objetivo deste projeto é fornecer uma implementação completa do padrão ISO/IEC 14495-1:1999, "Compressão sem perdas e quase sem perdas de imagens estáticas de tons contínuos: Linha de base". Esta biblioteca foi escrita do zero em C++ portátil. O branch principal usa C++17. A ramificação 2.x é mantida em C++14. Todos os recursos principais do JPEG-LS são implementados por esta biblioteca. De acordo com os resultados preliminares dos testes publicados em https://imagecompression.info/gralic, o CharLS é cerca de duas vezes mais rápido que o código original da HP e supera o JPEG-XR e o JPEG 2000 por um fator 3.
As seguintes opções de JPEG-LS não são suportadas pela implementação CharLS. A maioria dessas opções raramente é usada na prática.
Depois de lançar o padrão JPEG-LS original ISO 14495-1:1999, a ISO lançou uma extensão para o padrão JPEG-LS chamada ISO/IEC 14495-2:2003: "Compressão sem perdas e quase sem perdas de imagens estáticas de tons contínuos: Extensões". Atualmente CharLS não suporta essas extensões.
O código é compilado/testado regularmente em Windows e Linux de 64 bits. Além disso, o código foi testado com sucesso em Linux Intel/AMD 32/64 bits (slackware, debian, gentoo), sistemas Solaris SPARC, Macs baseados em Intel e Windows CE (CPU ARM, emulado), onde os compiladores menos comuns podem exigir menor edições de código. Ele aproveita os recursos da linguagem C++ (modelos, características) para criar código otimizado, que geralmente tem melhor desempenho com compiladores recentes.
Dimensão | Versão suportada |
---|---|
Versão C | >= 17 |
Versão C++ | >= 17 |
CMake | >= 3,16 |
CCG | >= 9,1 |
Clang | >= 7.0.0 |
MSVC | >= 2019 |
Apple clang | >= 12 |
Com vcpkg no Windows
PS > vcpkg install charls charls:x64 - windows
Com vcpkg no Linux ou macOS
~ /$ ./vcpkg install charls
Para outras plataformas, mais opções de instalação, como compilar a partir do código-fonte e muito mais, dê uma olhada na documentação.
Depois de ter a biblioteca, a pasta de amostra fornece alguns exemplos de código para você começar.
Este repositório é fornecido como código-fonte e, especificamente, não oferece versões binárias. Em vez disso, é incentivado “viver na cabeça” (construir a partir da versão mais recente ou, se necessário, construir em uma ramificação conhecida e suportada, conhecida como ramificação Long Term Support (LTS). O suporte para versões mais antigas do compilador será eliminado gradualmente, 5 anos a partir do momento em que uma versão mais recente desse compilador estiver disponível. O mesmo se aplica à versão mínima necessária da linguagem C++.
Antes de qualquer alteração importante na API e/ou ABI, uma ramificação será criada a partir de main para congelar esse instantâneo como ramificação LTS.
CharLS está sendo usado pelo kit de ferramentas GDCM DICOM, obrigado a Mathieu Malaterre por iniciar o CharLS no Linux. Kato Kanryu escreveu uma versão inicial das transformações de cores e do código do formato de saída DIB, para um plugin irfanview usando CharLS.
O código neste projeto está disponível através de uma licença estilo BSD, permitindo o uso do código em aplicativos comerciais de código fechado, se desejar. Todo o código neste projeto foi escrito do zero e não é baseado em outras implementações de JPEG-LS. Esteja ciente de que a Hewlett Packard reivindica possuir patentes que se aplicam a implementações JPEG-LS, mas a licencia gratuitamente para implementações JPEG-LS compatíveis. Algumas destas patentes podem já ter expirado no seu país. Leia mais em https://hpl.hp.com/loco/ antes de usar se você usar este código para fins comerciais.