Примечание. В настоящее время здесь никаких разработок не ведется. Части этого проекта были использованы в формате JPEG XL, который находится в стадии активной разработки.
PIK — это универсальный формат изображений для фотографий и Интернета.
PIK — это модернизированный вариант JPEG с аналогичными целями: эффективное хранение и доставка фотографий и веб-изображений. Он разработан с нуля для высококачественного и быстрого декодирования .
Функции, обеспечивающие высокое качество (без потерь):
В дополнение к кодированию без потерь и без потерь, PIK обеспечивает хороший баланс качества/размера/скорости в широком диапазоне битрейтов (0,5–3 бит/с). PIK обеспечивает автоматическое/неконтролируемое сжатие, поскольку гарантирует сохранение целевого качества по всему изображению. Он отдает приоритет аутентичности , точному воспроизведению оригинала, а не эстетике, достижимой за счет галлюцинации деталей или «улучшения» (например, резкости/насыщения) входных данных.
Функции, обеспечивающие быстрое декодирование (> 1 ГБ/с в многопоточном режиме):
Другие особенности:
Кодер адаптивного режима PIK поддерживает проходы, эквивалентные снижению разрешения в 4 или 8 раз. Формат поддерживает более гибкие проходы с любым уровнем детализации, от эквивалента 8-кратного понижения разрешения до полного разрешения. Количество деталей в проходе не обязательно должно быть одинаковым: области изображения можно отправлять с более высокой детализацией. Влияние адаптивного режима на размер закодированного изображения невелико: в среднем около 2 % для трехпроходного адаптивного изображения (8x, 4x, полное разрешение). В такой конфигурации первые два прохода занимают в среднем по 20% размера изображения каждый.
В настоящее время для программного обеспечения требуется процессор с поддержкой AVX2 и FMA, например Haswell. В настоящее время для сборки требуется clang 6 или новее.
Для сборки можно использовать следующую инструкцию:
git submodule update --init
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j8
Это создаст двоичные файлы cpik
и dpik
в build/
.
Основное использование заключается в следующем:
cpik [--distance <d>] input.png output.pik
Необязательный аргумент командной строки --distance
для cpik представляет собой расстояние Баттераугли (см. http://github.com/google/butteraugli), которое указывает наибольшую допустимую ошибку. Большие значения приводят к уменьшению размера файлов и снижению качества. Значение по умолчанию 1,0 должно давать результат без потерь.
Обратите внимание, что битовый поток все еще находится в стадии разработки и еще не заморожен.