Remarque Aucun développement n'est actuellement en cours ici. Certaines parties de ce projet ont été utilisées dans JPEG XL, qui est en cours de développement actif.
PIK est un format d'image complet pour les photos et Internet.
PIK est une variante modernisée du JPEG avec des objectifs similaires : stockage et livraison efficaces de photos et d'images Web. Il est conçu dès le départ pour un décodage rapide et de haute qualité .
Fonctionnalités permettant une haute qualité (perceptuellement sans perte) :
En plus d'encodages entièrement et perceptiblement sans perte, PIK atteint un bon équilibre qualité/taille/vitesse sur une large plage de débits binaires (0,5 à 3 bpp). PIK permet une compression automatisée/non supervisée car il garantit que la qualité cible est maintenue sur toute l'image. Il donne la priorité à l'authenticité , une représentation fidèle de l'original, à l'esthétique réalisable en hallucinant des détails ou en « améliorant » (par exemple en aiguisant/saturant) l'entrée.
Fonctionnalités permettant un décodage rapide (> 1 Go/s multithread) :
Autres fonctionnalités :
L'encodeur en mode réactif de PIK prend en charge des passes équivalentes à une réduction de la résolution de 4x ou 8x. Le format prend en charge des passes plus flexibles, avec n'importe quel niveau de détail allant d'un sous-échantillonnage équivalent à 8x à la pleine résolution. La quantité de détails dans une passe n'a pas besoin d'être uniforme : des zones de l'image peuvent être envoyées avec plus de détails. L'impact du mode réactif sur la taille de l'image codée est faible, s'établissant en moyenne à environ 2 % pour une image réactive en 3 passes (8x, 4x, pleine résolution). Dans une telle configuration, les deux premiers passages occupent chacun en moyenne 20 % de la taille de l’image.
Le logiciel nécessite actuellement un processeur compatible AVX2 et FMA, par exemple Haswell. La construction nécessite actuellement Clang 6 ou plus récent.
Pour construire, les instructions suivantes peuvent être utilisées :
git submodule update --init
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j8
Cela crée des binaires cpik
et dpik
dans build/
.
L'utilisation de base est la suivante :
cpik [--distance ] input.png output.pik
L'argument facultatif de ligne de commande --distance
de cpik est une distance Butteraugli (voir http://github.com/google/butteraugli), qui indique la plus grande erreur acceptable. Des valeurs plus élevées conduisent à des fichiers plus petits et de moindre qualité. La valeur par défaut de 1,0 devrait donner un résultat perceptible sans perte.
Notez que le bitstream est encore en cours de développement et n'est pas encore gelé.