OpenZL: An open source format-aware compression framework 🔥 Горячее
OpenZL — это новый фреймворк для сжатия структурированных данных с открытым исходным кодом, разработанный Meta. Он обеспечивает сжатие без потерь, достигая производительности специализированных компрессоров, но при этом использует единый универсальный декомпрессор. Ключевая идея в том, что данные имеют предсказуемую структуру — колоночную, перечисления, повторяющиеся поля — и OpenZL явно использует это знание, применяя конфигурируемую последовательность преобразований для выявления скрытых закономерностей.
Фреймворк устраняет компромисс между эффективностью формато-специфичных решений и простотой поддержки общего инструмента. В отличие от универсальных методов, которые тратят ресурсы на угадывание структуры, OpenZL заранее знает тип данных и фокусируется только на релевантных трансформациях. Это позволяет экономить вычислительные циклы и улучшать соотношение скорости к степени сжатия. Практический вывод: один бинарный инструмент может заменить множество кастомных компрессоров без потери производительности.
Комментарии (84)
- OpenZL использует SDDL для описания структуры данных, что позволяет применять специализированные методы сжатия, значительно улучшая компрессию по сравнению с общими алгоритмами (zstd, xz).
- Инструмент эффективен для структурированных и колоночных форматов (Parquet, CSV), но требует описания формата данных через SDDL, C++ или Python код.
- Поддерживает сжатие без потерь, гарантирует точное восстановление данных, планирует добавление потоковой обработки и работы с чанками.
- Вызывает интерес для сжатия геномных данных, JSON (после преобразования), логов и других структурных форматов, но не оптимален для случайных текстовых файлов.
- Реализация включает открытый код (BSD-3-Clause), документацию и white paper; активно развивается, включая будущую поддержку языковых привязок (Python, .NET).
How does lossless compression in Fuji RAF files work? (2020)
Fuji RAF использует адаптивный дифференциальный алгоритм сжатия без потерь. Сначала изображение делится на вертикальные полосы (например, 8 для X-T2), что позволяет параллельно обрабатывать данные на многоядерных процессорах. Затем пиксели группируются по цветовым компонентам (R, G, B) через фильтр Байера, поскольку соседние пиксели одного цвета имеют меньшие различия, что улучшает сжатие.
Далее цветовые векторы попарно перемежаются (например, R0 и G0) с особым порядком обработки: сначала чётные позиции, затем нечётные с отставанием в 5 шагов. Для каждого значения вычисляется ожидаемое на основе взвешенного среднего соседних пикселей, а кодируется разница между предсказанием и фактическим значением. Это сокращает энтропию данных, позволяя достичь двукратного уменьшения размера файла без потерь качества.
Комментарии (47)
- Пользователи отмечают проблемы с обработкой RAW-файлов Fuji (RAF) в Lightroom, включая перегрев и "червеобразные" артефакты ("worming").
- Проблема связывается с нестандартной матрицей X-Trans, требующей особого алгоритма дебайеринга, который плохо реализован в Lightroom.
- В качестве решения предлагаются альтернативные программы (Capture One, Darktable, FastRawViewer), лучше справляющиеся с RAF.
- Обсуждаются споры о преимуществах несжатых RAW над сжатыми, где главный аргумент — совместимость (например, с iOS).
- Критикуются производители за создание проприетарных форматов вместо использования стандартного DNG, что усложняет поддержку.