JPEG XL

JPEG XL — не требующий отчислений формат файлов растровой графики, который поддерживает сжатие как с потерями, так и без потерь. Он призван превзойти существующие растровые форматы и, таким образом, стать их универсальной заменой[5].

JPEG XL
Изображение логотипа
Расширение .jxl
MIME-тип image/jxl
Сигнатура FF 0A or 00 00 00 0C 4A 58 4C 20 0D 0A 87 0A
Разработчик
Опубликован 24 декабря 2020[2], 13 октября 2021[3] и 30 марта 2022[4]
Тип формата Графический формат
Расширен из
Стандарт(ы) ISO/IEC 18181
Открытый формат? Да (royalty-free)
Сайт
Логотип Викисклада Медиафайлы на Викискладе

Название

править

Особенности

править
  • Улучшенная функциональность и эффективность по сравнению с традиционными графическими форматами (например, JPEG, GIF и PNG);
  • Размеры изображения могут составлять более миллиарда (230−1) пикселей по каждой стороне[7];
  • До 4100 каналов (полутоновых или RGB), дополнительный альфа-канал и до 4096 «дополнительных» каналов[7];
  • Прогрессивное декодирование (по разрешению и точности);
  • Транскодирование файлов JPEG без дальнейших потерь данных с уменьшением размера примерно на 20 % и возможностью восстанавливать исходный JPG;
    • Файлы JPEG с цветовым пространством CMYK не поддерживаются для перекодирования, но они очень редки[8];
    • Транскодирование в прогрессивный формат JPEG XL поддерживается спецификациями, но ещё не реализовано в эталонном ПО[9];
  • Кодирование без потерь любого канала, включая альфа-канал;
  • Поддержка как фотографических, так и синтетических изображений;
  • Поддержка большого диапазона битрейтов с плавным ухудшением качества: потеря качества не такая резкая, как в старых форматах;
  • Перцепционно оптимизированный эталонный кодер, использующий перцепционное цветовое пространство, адаптивное квантование и консервативные настройки по умолчанию;
  • Поддержка широкой цветовой гаммы и HDR: в JPEG XL встроена поддержка различных цветовых пространств, кривых передачи и высокой яркости экрана;
  • Поддержка анимированного контента;
  • Эффективное кодирование и декодирование без специального оборудования;
    • В частности, JPEG XL примерно так же быстро кодируется и декодируется, как старый JPEG с использованием libjpeg-turbo, и на порядок быстрее кодируется и декодируется по сравнению с HEIC и x265[7]. Кроме того, он распараллеливаемый.
  • Royalty-free формат с эталонной реализацией с открытым исходным кодом[10].

Технические детали

править
 
Схема архитектуры кодека JPEG XL

JPEG XL основан на идеях формата PIK от Google и формата FUIF от Cloudinary (который был, в свою очередь, основан на FLIF)[11].

Формат в основном основан на двух режимах кодирования:

  • VarDCT (дискретное косинусное преобразование (ДКП) с переменным размером блока) — использует тот же алгоритм ДКП, что и JPEG, но блоки вместо ограничения 8x8 имеют различные размеры (от 2x2 до 256x256), неквадратные формы (например, 16x8, 8x32, 32x64) или могут использовать другие преобразования (AFV, Hornuss).
  • Модульный — отвечает, среди прочего, за эффективное кодирование контента без потерь. Этот режим используется для сохранения полей адаптивного квантования, дополнительных каналов (например, альфа-канала, карты глубины, теплового канала, плашечных цветов и т. д.) и коэффициентов децимации (изображение с пониженной частотой дискретизации 1:8) режима VarDCT. Он также допускает сжатие с потерями с помощью модифицированного преобразования Хаара (называемого «squeeze»), которое имеет прогрессивные свойства: качество изображения растёт с увеличением объёма загружаемых данных. Одним из способов постепенной загрузки изображений на основе VarDCT является сохранение коэффициентов децимации VarDCT с модульным «сжатием», благодаря чему оба режима работают в тандеме.

В обоих режимах может помочь раздельное моделирование конкретных особенностей изображения, неизвестных в других кодеках на момент создания формата:[a]

  • сплайны[англ.] для кодирования, например, волос;
  • повторяющиеся «участки», такие как текст, точки или спрайты,
  • синтез шума (поскольку шум трудно кодировать в обоих основных режимах, лучше оценить его значение в кодере, сохранить его, а затем восстановить шум в декодере).

Режимы с потерями обычно используют цветовое пространство XYB, полученное из LMS[13].

JPEG XL также может без потерь повторно кодировать уже существующие файлы JPEG, напрямую копируя коэффициенты блоков DCT JPEG в блоки 8x8 VarDCT в JPEG XL, что делает возможным меньший размер файла за счёт лучшего энтропийного кодирования. Ранее существовал отдельный режим, специализирующийся именно на этом, называемый Brunsli, который был отделён от VarDCT и модульным, но он был отменён, чтобы упростить спецификацию и сделать декодер меньше на 20 %[14].

По умолчанию используется параметр, визуально близкий к значению без потерь, который по-прежнему обеспечивает хорошее сжатие[7].

Анимированные (многокадровые) изображения не выполняют расширенное межкадровое предсказание, хотя доступны некоторые рудиментарные инструменты межкадрового кодирования:

  • фреймы могут быть меньше полного размера холста, оставляя другие пиксели нетронутыми;
  • фреймы поддерживают несколько режимов наложения в дополнение к замене предыдущих фреймов, такие как сложение и умножение[15];
  • можно запомнить до четырех кадров[16] и ссылаться на них в более поздних кадрах[17].

Программное обеспечение

править

Реализация кодека

править
  • JPEG XL Reference Software (libjxl)
    • лицензия: New BSD License (раннее Apache License 2.0)
    • содержит (среди прочего):
      • кодировщик cjxl
      • декодировщик djxl
      • быстрый кодировщик fjxl только с режимом без потерь
      • инструмент для сравнительного анализа скорости и качества кодеков изображений benchmark_xl
      • GIMP и Gtk pixbuf плагин file-jxl
  • J40: Независимый, автономный декодер JPEG XL
    • лицензия: MIT License без указания авторства
    • Библиотека с одним заголовком C99 (без зависимостей)
    • «XL» римскими цифрами обозначает 40, отсюда и название
  • libjxl-tiny: более простая реализация кодера JPEG XL, предназначенная для фотоизображений без альфа-канала
    • лицензия: New BSD License
  • jxlatte: декодер JPEG XL на Java
    • лицензия: MIT License
  • jxl_decode: декодер JPEG XL на языке Python
    • лицензия: MIT License
  • jpeg-xl-encode: PHP-оболочка JPEG XL для кодировщика
    • лицензия: MIT License
  • hydrium: быстрый потоковый кодер JPEG XL со сверхнизким потреблением памяти, написанный на портативном C
    • лицензия: BSD License
  • jxl-oxide: небольшой декодер JPEG XL, полностью написанный на Rust
    • двойная лицензия: MIT License и Apache License 2.0

Официальная поддержка

править
  • ImageMagick[18] — набор инструментов для обработки растровой графики
  • XnView MP[19] — просмотрщик и редактор растровой графики
  • Affinity Photo[20] — редактор растровой графики
  • GIMP[21] — редактор растровой графики; доступен плагин для GIMP 2.10
  • Krita[22] — редактор растровой графики
  • gThumb[23] — бесплатный просмотрщик изображений в Linux
  • IrfanView[24] — бесплатный просмотрщик и редактор изображений для Windows; через официальный плагин
  • ExifTool[25] — редактор метаданных
  • Adobe Lightroom Classic — редактор растровой графики и «проявки» RAW-снимков[26]
  • ImageGlass — просмотрщик и редактор растровой графики
  • Apple Inc.
    • iOS/iPadOS[27] — мобильная ОС версии 17 и новее — общесистемное чтение, включая Files и Photos
    • macOS[27] — ОС, начиная с macOS Sonoma версии 14 и новее — чтение в Finder и Preview
    • visionOS (предполагается)
    • watchOS версии 10 и новее
    • Safari[28] — веб-браузер версии 17 и новее через движок WebKit
  • FFmpeg

Неофициальная поддержка

править

Предварительная поддержка

править
  • Firefox[33] — веб-браузер; в тестировании. Поддержка включается через экспериментальные настройки в Firefox Nightly[34] или через аддон[35] в основной версии.
  • Chromium[36] — веб-браузер; был в тестировании с 1 апреля 2021. 9 декабря 2022 поддержка была удалена[37], однако, пользователи продолжают настаивать на включении поддержки нового формата[38].
  • Edge — веб-браузер; экспериментальная поддержка осуществлялась в версиях 91-109, начиная с версии 110 была удалена.[39]

История

править

В 2017 году JTC1/SC29/WG1 (JPEG) объявила конкурс предложений по JPEG XL — стандарту кодирования изображений следующего поколения[40].

Формат файла (битовый поток) был заморожен 25 декабря 2020 года[41] и официально стандартизирован 13 октября 2021 года. Любой файл, соответствующий этому стандарту, гарантированно может быть декодирован во всех будущих версиях.

Статус стандартизации

править
Общепринятое название Часть Дата первого публичного выпуска (Первое издание) ISO/IEC Number Formal Title
JPEG XL Часть 1 30 марта 2022 ISO/IEC FDIS 18181-1 Система кодирования изображений JPEG XL. Часть 1. Базовая система кодирования
Часть 2 13 октября 2021 ISO/IEC 18181-2 Система кодирования изображений JPEG XL. Часть 2. Формат файла
Часть 3 3 октября 2022 ISO/IEC DIS 18181-3 Система кодирования изображений JPEG XL. Часть 3. Тестирование на соответствие
Часть 4 5 августа 2022 ISO/IEC DIS 18181-4 Система кодирования изображений JPEG XL. Часть 4. Эталонное ПО

Примечания

править

Комментарии

править
  1. Noise synthesis is an exception, as it's also featured in AVIF created before JPEG XL.[12]

Источники

править
  1. 1 2 fuif/README.md. GitHub. Дата обращения: 4 апреля 2019. Архивировано 24 апреля 2021 года.
  2. https://gitlab.com/wg1/jpeg-xl/-/tags/v0.2
  3. https://www.iso.org/standard/80617.html
  4. https://www.iso.org/standard/77977.html
  5. Can JPEG XL Become the Next Free and Open Image Format? (англ.). tech.slashdot.org. Дата обращения: 27 января 2022. Архивировано 30 декабря 2021 года.
  6. Support for reading/writing JPEG XL images (#4681) · Issues · GNOME / GIMP (англ.). GitLab. Дата обращения: 27 января 2022. Архивировано 30 декабря 2021 года.
  7. 1 2 3 4 How JPEG XL Compares to Other Image Codecs (англ.). Cloudinary. Дата обращения: 27 января 2022. Архивировано 30 декабря 2021 года.
  8. Jon Sneyers. JPEG XL as PSD transfer/storage alternative (англ.). Reddit (14 декабря 2020). Дата обращения: 27 января 2022. Архивировано 30 декабря 2021 года.
  9. Jon Sneyers. Progressive Transcoding · Issue #92 (англ.). GitHub (3 июня 2021). Дата обращения: 27 января 2022. Архивировано 30 декабря 2021 года.
  10. JPEG / JPEG XL Reference Software (англ.). GitLab. Дата обращения: 27 января 2022. Архивировано 30 декабря 2021 года.
  11. FLIF - Free Lossless Image Format (англ.). Дата обращения: 27 января 2022. Архивировано 21 декабря 2021 года.
  12. Peter de Rivaz,Jack Haughton. AV1 Bitstream & Decoding Process Specification 350–360. Alliance for Open Media (2018). Дата обращения: 15 января 2022. Архивировано 2 мая 2019 года.
  13. Jyrki Alakuijala, Ruud van Asseldonk, Sami Boukortt, Martin Bruse, Iulia-Maria Comía. JPEG XL next-generation image compression architecture and coding tools // Applications of Digital Image Processing XLII. — 2019-09-01. — Т. 11137. — Vol. 11137. — С. 111370K. — P. 20. — ISBN 9781510629677. — doi:10.1117/12.2529237. — Bibcode2019SPIE11137E..0KA.
  14. JPEG XL vs. AVIF (12 октября 2020). Дата обращения: 27 января 2022. Архивировано 15 января 2022 года.
  15. JPEG XL reference implementation // GitHub. — 2021-12-21. Архивировано 30 декабря 2021 года.
  16. JPEG XL reference implementation // GitHub. — 2021-12-03. Архивировано 30 декабря 2021 года.
  17. JPEG XL reference implementation // GitHub. — 2021-12-03. Архивировано 30 декабря 2021 года.
  18. ImageMagick Studio LLC. ImageMagick (англ.). ImageMagick. Дата обращения: 27 января 2022. Архивировано 2 января 2022 года.
  19. JPEG XL - MantisBT. Дата обращения: 27 января 2022. Архивировано 7 ноября 2021 года.
  20. What’s New in Affinity? affinity.serif.com. Дата обращения: 14 июня 2023. Архивировано 14 декабря 2022 года.
  21. Wilber. GIMP - GIMP 2.10.32 Released (англ.). www.gimp.org (14 июня 2022). Дата обращения: 26 февраля 2023. Архивировано 6 января 2023 года.
  22. Krita Foundation, Halla Rempt. Krita 5.1.0 Released! (амер. англ.). Krita (18 августа 2022). Дата обращения: 14 июня 2023. Архивировано 20 января 2023 года.
  23. gThumb Image Viewer 3.11.3 Adds JPEG XL (.jxl) Support [Ubuntu PPA] | UbuntuHandbook (англ.). ubuntuhandbook.org. Дата обращения: 27 января 2022. Архивировано 30 декабря 2021 года.
  24. IrfanView PlugIns. Дата обращения: 27 января 2022. Архивировано 28 декабря 2021 года.
  25. ExifTool by Phil Harvey. exiftool.org. Дата обращения: 27 января 2022. Архивировано 26 января 2022 года.
  26. Вывод HDR (рус.). Adobe. Дата обращения: 17 ноября 2023. Архивировано 17 ноября 2023 года.
  27. 1 2 Explore media formats for the web - WWDC23 - Videos (англ.). Apple Developer. Дата обращения: 14 июня 2023. Архивировано 8 июня 2023 года.
  28. Safari 17 Beta Release Notes (амер. англ.). Apple Developer Documentation. Дата обращения: 14 июня 2023.
  29. qt-jpegxl-image-plugin // GitHub. — 2022-01-07. Архивировано 3 марта 2021 года.
  30. JPEG XL WIC // GitHub. — 2022-01-06. Архивировано 30 декабря 2021 года.
  31. JXLook // GitHub. — 2022-01-26. Архивировано 30 декабря 2021 года.
  32. JPEG XL FileType (01-28-2023) (амер. англ.). paint.net Forum (29 августа 2022). Дата обращения: 14 июня 2023. Архивировано 11 июня 2023 года.
  33. (JPEG-XL) Implement support for JPEG XL (image/jxl) (англ.). Дата обращения: 27 января 2022. Архивировано 4 января 2022 года.
  34. Experimental features in Firefox - Mozilla | MDN (амер. англ.). developer.mozilla.org (7 ноября 2023). Дата обращения: 17 ноября 2023. Архивировано 17 ноября 2023 года.
  35. JPEG XL viewer – Get this Extension for 🦊 Firefox (en-US) (амер. англ.). addons.mozilla.org. Дата обращения: 17 ноября 2023. Архивировано 17 ноября 2023 года.
  36. Chromium - An open-source project to help move the web forward. - Monorail (англ.). Дата обращения: 27 января 2022. Архивировано 30 декабря 2021 года.
  37. Liam Proven. Google drops forthcoming version of JPEG from Chromium (англ.). www.theregister.com. Дата обращения: 14 июня 2023. Архивировано 23 июля 2023 года.
  38. 1451807 - chromium - An open-source project to help move the web forward. - Monorail. bugs.chromium.org. Дата обращения: 17 ноября 2023. Архивировано 17 ноября 2023 года.
  39. 262588213843476 How to permanently enable JPEG XL in Microsoft Edge 91-109 (англ.). Gist. Дата обращения: 17 ноября 2023. Архивировано 17 ноября 2023 года.
  40. JPEG - Next-Generation Image Compression (JPEG XL) Final Call for Proposals. jpeg.org. Дата обращения: 27 января 2022. Архивировано 30 декабря 2021 года.
  41. v0.2 · Tags · JPEG / JPEG XL Reference Software (англ.). GitLab. Дата обращения: 27 января 2022. Архивировано 20 октября 2021 года.

Ссылки

править