Hinweis: Hier finden derzeit keine Entwicklungen statt. Teile dieses Projekts wurden in JPEG XL verwendet, das sich in der aktiven Entwicklung befindet.
PIK ist ein vielseitiges Bildformat für Fotos und das Internet.
PIK ist eine modernisierte Variante von JPEG mit ähnlichen Zielen: effiziente Speicherung und Bereitstellung von Fotos und Webbildern. Es ist von Grund auf auf hohe Qualität und schnelle Dekodierung ausgelegt.
Funktionen, die eine hohe Qualität ermöglichen (wahrnehmungsverlustfrei):
Neben vollständig und wahrnehmungsverlustfreier Kodierung erreicht PIK ein gutes Gleichgewicht zwischen Qualität/Größe/Geschwindigkeit über einen weiten Bereich von Bitraten (0,5–3 bpp). PIK ermöglicht eine automatisierte/unüberwachte Komprimierung, da es garantiert, dass die Zielqualität über das gesamte Bild erhalten bleibt. Es priorisiert Authentizität , eine originalgetreue Darstellung des Originals, über Ästhetik, die durch die Halluzination von Details oder die „Verbesserung“ (z. B. Schärfung/Sättigung) der Eingabe erreicht werden kann.
Funktionen, die eine schnelle Dekodierung ermöglichen (> 1 GB/s Multithreaded):
Weitere Funktionen:
Der Reaktionsmodus-Encoder von PIK unterstützt Durchgänge, die einer Verringerung der Auflösung um das Vierfache oder das Achtfache entsprechen. Das Format unterstützt flexiblere Durchgänge mit jedem Detaillierungsgrad von äquivalentem 8-fachem Downsampling bis hin zur vollen Auflösung. Der Detailgrad in einem Durchgang muss nicht einheitlich sein: Bildbereiche können mit höheren Details gesendet werden. Der Einfluss des Reaktionsmodus auf die Größe des codierten Bildes ist gering und beträgt durchschnittlich etwa 2 % für ein 3-Durchlauf-Reaktionsbild (8x, 4x, volle Auflösung). In einer solchen Konfiguration nehmen die ersten beiden Durchgänge durchschnittlich jeweils 20 % der Bildgröße ein.
Die Software erfordert derzeit eine AVX2- und FMA-fähige CPU, z. B. Haswell. Für den Bau ist derzeit Clang 6 oder neuer erforderlich.
Zum Aufbau können folgende Anleitungen verwendet werden:
git submodule update --init
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j8
Dadurch werden cpik
und dpik
-Binärdateien in build/
erstellt.
Die grundlegende Verwendung ist wie folgt:
cpik [--distance ] input.png output.pik
Das optionale Befehlszeilenargument --distance
für cpik ist eine Butteraugli-Distanz (siehe http://github.com/google/butteraugli), die den größten akzeptablen Fehler angibt. Größere Werte führen zu kleineren Dateien und geringerer Qualität. Der Standardwert 1,0 sollte zu einem wahrnehmungsverlustfreien Ergebnis führen.
Beachten Sie, dass sich der Bitstream noch in der Entwicklung befindet und noch nicht eingefroren ist.