참고 현재 여기서는 개발이 진행되지 않습니다. 이 프로젝트의 일부는 현재 개발 중인 JPEG XL에 사용되었습니다.
PIK는 사진과 인터넷을 위한 다재다능한 이미지 형식입니다.
PIK는 사진과 웹 이미지의 효율적인 저장 및 전달이라는 유사한 목표를 가진 JPEG의 현대화된 변형입니다. 이는 처음부터 높은 품질 과 빠른 디코딩을 위해 설계되었습니다.
고품질(지각적 무손실)을 가능하게 하는 기능:
완전하고 인지적으로 무손실 인코딩 외에도 PIK는 광범위한 비트 전송률(0.5 - 3bpp)에서 품질/크기/속도의 적절한 균형을 달성합니다. PIK는 전체 이미지에 대해 목표 품질이 유지되도록 보장하므로 자동/비감독 압축이 가능합니다. 세부 사항을 환각시키거나 입력을 '강화'(예: 선명하게 하기/포화시키기)하여 달성할 수 있는 미학보다 원본의 충실한 표현인 진정성을 우선시합니다.
빠른 디코딩을 가능하게 하는 기능(> 1GB/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은 인지적으로 무손실 결과를 산출해야 합니다.
비트스트림은 아직 개발 중이며 아직 고정되지 않았습니다.