注意目前这里没有进行任何开发。该项目的部分内容已用于 JPEG XL,该文件正在积极开发中。
PIK 是一种适用于照片和互联网的全面图像格式。
PIK 是 JPEG 的现代化变体,具有相似的目标:高效存储和交付照片和 Web 图像。它是专为高质量和快速解码而设计的。
可实现高品质(感知无损)的功能:
除了完全和感知无损编码之外,PIK 在各种比特率 (0.5 - 3 bpp) 上实现了质量/大小/速度的良好平衡。 PIK 支持自动/无监督压缩,因为它保证整个图像保持目标质量。它优先考虑真实性,即对原作的忠实再现,而不是通过幻觉细节或“增强”(例如锐化/饱和)输入来实现的美学。
支持快速解码的功能(> 1 GB/s 多线程):
其他特点:
PIK 的响应模式编码器支持相当于将分辨率降低 4 倍或 8 倍的通道。该格式支持更灵活的通道,具有从相当于 8 倍下采样到全分辨率的任何细节级别。一次传递中的细节量不需要是均匀的:可以以更高的细节发送图像区域。响应模式对编码图像大小的影响很小,对于 3 遍响应图像(8x、4x、全分辨率),平均影响约为 2%。在这种配置中,前两次平均每次占用图像大小的 20%。
该软件当前需要支持 AVX2 和 FMA 的 CPU,例如 Haswell。目前构建需要 clang 6 或更高版本。
为了构建,可以使用以下指令:
git submodule update --init
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j8
这会在build/
中创建cpik
和dpik
二进制文件。
基本用法如下:
cpik [--distance ] input.png output.pik
cpik 的可选--distance
命令行参数是 Butteraugli 距离(请参阅 http://github.com/google/butteraugli),它指示最大可接受的误差。较大的值会导致文件较小且质量较低。默认值 1.0 应产生感知上无损的结果。
请注意,比特流仍在开发中,尚未冻结。