CharLS ist eine C++-Implementierung des JPEG-LS-Standards für die verlustfreie und nahezu verlustfreie Bildkomprimierung und -dekomprimierung. JPEG-LS ist ein Bildkomprimierungsstandard mit geringer Komplexität, der den Komprimierungsverhältnissen von JPEG 2000 entspricht.
JPEG-LS (ISO/IEC 14495-1:1999 / ITU-T.87) ist ein Bildkomprimierungsstandard, der vom Hewlett Packard LOCO-Algorithmus abgeleitet ist. JPEG-LS weist eine geringe Komplexität (d. h. schnelle Komprimierung) und hohe Komprimierungsraten auf, ähnlich den verlustfreien Verhältnissen von JPEG 2000. JPEG-LS ähnelt eher dem alten verlustfreien JPEG als JPEG 2000, aber interessanterweise führen die beiden unterschiedlichen Techniken zu sehr unterschiedlichen Leistungsmerkmalen. Wikipedia zu verlustfreiem JPEG und JPEG-LS: https://en.wikipedia.org/wiki/Lossless_JPEG
Tipp: ITU stellt ihre Version des JPEG-LS-Standards (ITU-T.87) kostenlos zum Download zur Verfügung. Der Text ist identisch mit der ISO-Version.
Das Ziel dieses Projekts besteht darin, eine vollständige Implementierung des Standards ISO/IEC 14495-1:1999 „Verlustfreie und nahezu verlustfreie Komprimierung von Standbildern mit kontinuierlichem Ton: Baseline“ bereitzustellen. Diese Bibliothek wurde von Grund auf in portablem C++ geschrieben. Der Hauptzweig verwendet C++17. Der 2.x-Zweig wird in C++14 verwaltet. Alle gängigen JPEG-LS-Funktionen werden von dieser Bibliothek implementiert. Laut vorläufigen Testergebnissen, die auf https://imagecompression.info/gralic veröffentlicht wurden, ist CharLS etwa doppelt so schnell wie der ursprüngliche HP-Code und übertrifft sowohl JPEG-XR als auch JPEG 2000 um den Faktor 3.
Die folgenden JPEG-LS-Optionen werden von der CharLS-Implementierung nicht unterstützt. Die meisten dieser Optionen werden in der Praxis selten genutzt.
Nach der Veröffentlichung des ursprünglichen Basis-JPEG-LS-Standards ISO 14495-1:1999 veröffentlichte ISO eine Erweiterung des JPEG-LS-Standards namens ISO/IEC 14495-2:2003: „Verlustfreie und nahezu verlustfreie Komprimierung von Standbildern mit kontinuierlichem Ton: Erweiterungen". Derzeit unterstützt CharLS diese Erweiterungen nicht.
Der Code wird regelmäßig unter Windows und 64-Bit-Linux kompiliert/getestet. Darüber hinaus wurde der Code erfolgreich auf Linux Intel/AMD 32/64 Bit (Slackware, Debian, Gentoo), Solaris SPARC-Systemen, Intel-basierten Macs und Windows CE (ARM-CPU, emuliert) getestet, wobei die weniger verbreiteten Compiler möglicherweise Minor erfordern Codeänderungen. Es nutzt C++-Sprachfunktionen (Vorlagen, Merkmale), um optimierten Code zu erstellen, der im Allgemeinen mit neueren Compilern die beste Leistung erbringt.
Dimension | Unterstützte Version |
---|---|
C-Version | >= 17 |
C++-Version | >= 17 |
CMake | >= 3,16 |
GCC | >= 9.1 |
Klirren | >= 7.0.0 |
MSVC | >= 2019 |
Apfelklirren | >= 12 |
Mit vcpkg unter Windows
PS > vcpkg install charls charls:x64 - windows
Mit vcpkg unter Linux oder macOS
~ /$ ./vcpkg install charls
Informationen zu anderen Plattformen, weiteren Installationsoptionen, Informationen zum Erstellen aus dem Quellcode und mehr finden Sie in der Dokumentation.
Sobald Sie über die Bibliothek verfügen, enthält der Beispielordner einige Codebeispiele, die Ihnen den Einstieg erleichtern.
Dieses Repository wird als Quellcode bereitgestellt und bietet ausdrücklich keine Binärversionen an. Stattdessen wird empfohlen, entweder „an der Spitze zu leben“ (mit der neuesten Version von zu erstellen oder, falls erforderlich, gegen einen bekannten, unterstützten Zweig zu bauen, der als Long Term Support (LTS)-Zweig bezeichnet wird. Ältere Compilerversionen werden unterstützt Auslaufen, 5 Jahre nach Verfügbarkeit einer neueren Version dieses Compilers. Das Gleiche gilt für die minimal erforderliche C++-Sprachversion.
Vor einer größeren bahnbrechenden Änderung in der API und/oder ABI wird ein Zweig vom Hauptzweig erstellt, um diesen Snapshot als LTS-Zweig einzufrieren.
CharLS wird vom GDCM DICOM-Toolkit verwendet. Vielen Dank an Mathieu Malaterre, der CharLS unter Linux gestartet hat. Kato Kanryu hat eine erste Version der Farbtransformationen und des DIB-Ausgabeformatcodes für ein Irfanview-Plugin mit CharLS geschrieben.
Der Code in diesem Projekt ist über eine BSD-ähnliche Lizenz verfügbar, sodass Sie den Code bei Bedarf in kommerziellen Closed-Source-Anwendungen verwenden können. Der gesamte Code in diesem Projekt wurde von Grund auf neu geschrieben und basiert nicht auf anderen JPEG-LS-Implementierungen. Beachten Sie, dass Hewlett Packard behauptet, Patente zu besitzen, die für JPEG-LS-Implementierungen gelten, diese jedoch für konforme JPEG-LS-Implementierungen kostenlos lizenzieren. Einige dieser Patente sind in Ihrem Land möglicherweise bereits abgelaufen. Lesen Sie mehr unter https://hpl.hp.com/loco/, bevor Sie diesen verwenden, wenn Sie diesen Code für kommerzielle Zwecke verwenden.