Nota Atualmente não há desenvolvimento acontecendo aqui. Partes deste projeto foram usadas em JPEG XL, que está em desenvolvimento ativo.
PIK é um formato de imagem completo para fotos e internet.
PIK é uma variante modernizada do JPEG com objetivos semelhantes: armazenamento e entrega eficiente de fotos e imagens da web. Ele foi projetado desde o início para decodificação rápida e de alta qualidade .
Recursos que permitem alta qualidade (perceptualmente sem perdas):
Além de codificações totalmente e perceptualmente sem perdas, o PIK atinge um bom equilíbrio entre qualidade/tamanho/velocidade em uma ampla faixa de taxas de bits (0,5 - 3 bpp). O PIK permite a compactação automatizada/não supervisionada porque garante que a qualidade do alvo seja mantida em toda a imagem. Ele prioriza a autenticidade , uma representação fiel do original, em detrimento da estética alcançável através da alucinação de detalhes ou do “melhoramento” (por exemplo, nitidez/saturação) da entrada.
Recursos que permitem decodificação rápida (> 1 GB/s multithread):
Outros recursos:
O codificador de modo responsivo do PIK suporta passagens equivalentes a reduzir a resolução em 4x ou 8x. O formato suporta passagens mais flexíveis, com qualquer nível de detalhe, desde redução de resolução equivalente a 8x até resolução total. A quantidade de detalhes em uma passagem não precisa ser uniforme: áreas da imagem podem ser enviadas com maior detalhe. O impacto do modo responsivo no tamanho da imagem codificada é baixo, em média cerca de 2% para uma imagem responsiva de 3 passagens (8x, 4x, resolução total). Nessa configuração, as duas primeiras passagens ocupam em média 20% do tamanho da imagem cada.
O software atualmente requer uma CPU compatível com AVX2 e FMA, por exemplo, Haswell. A construção atualmente requer clang 6 ou mais recente.
Para construir, as seguintes instruções podem ser usadas:
git submodule update --init
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j8
Isso cria binários cpik
e dpik
em build/
.
O uso básico é o seguinte:
cpik [--distance ] input.png output.pik
O argumento de linha de comando opcional --distance
para cpik é uma distância Butteraugli (consulte http://github.com/google/butteraugli), que indica o maior erro aceitável. Valores maiores resultam em arquivos menores e com qualidade inferior. O valor padrão de 1,0 deve produzir um resultado perceptualmente sem perdas.
Observe que o fluxo de bits ainda está em desenvolvimento e ainda não foi congelado.