JPEG XL

Z Wikipedii, wolnej encyklopedii
Przejdź do nawigacji Przejdź do wyszukiwania
JPEG XL
Rozszerzenia pliku .jxl
Typ MIME image/jxl[1]
Producent Joint Photographic Experts Group
Typ kompresja grafiki rastrowej
Otwarty format? tak
Strona internetowa

JPEG XLformat graficzny obsługujący zarówno kompresję stratną, jak i bezstratną. Zaprojektowano go z myślą, by był lepszy od istniejących formatów rastrowych, a tym samym stał się ich uniwersalnym zamiennikiem[2].

Historia[edytuj | edytuj kod]

W 2017 roku komitet JTC1/SC29/WG1 (JPEG) ogłosił możliwość składania propozycji (Call for Proposals) na kandydatów na JPEG XL[3].

Format został zamrożony 24 grudnia 2020 r., co oznacza, że obecnie zakodowane pliki będzie można zdekodować w przyszłości[4].

Funkcje[edytuj | edytuj kod]

Najważniejszymi funkcjami są[5][6]:

  • ulepszona funkcjonalność i efektywność w porównaniu do tradycyjnych formatów graficznych (m.in. JPEG, GIF oraz PNG),
  • dekodowanie progresywne,
  • odwracalne kodowanie plików JPEG oszczędzające ~20% rozmiaru,
  • bezstratne kodowanie (w tym kanału alfa),
  • wsparcie zarówno dla fotografii, jak i sztucznych obrazów,
  • łagodny spadek jakości obrazu dla coraz niższych ustawień kodowania,
  • referencyjny koder zoptymalizowany pod percepcję ludzką,
  • wsparcie dla szerokiego zakresu kolorów oraz HDR,
  • wsparcie dla animowanych obrazów,
  • wydajne kodowanie i dekodowanie bez używania wyspecjalizowanego sprzętu,
  • bezpłatny format z otwartoźródłową implementacją referencyjną[7].

Informacje techniczne[edytuj | edytuj kod]

JPEG XL został oparty na formacie PIK od Google oraz FUIF od Cloudinary, który z kolei powstał na bazie FLIF[8].

Format ten stosuje różne techniki kodowania. Potrafi on m.in. bezstratnie zakodować już istniejące pliki JPEG do bardziej kompaktowej formy, działając podobnie do kompresorów Lepton czy Brunsli (ten drugi był przez pewien czas częścią nieukończonej specyfikacji JPEG XL, został on jednak porzucony[9]). Z bardziej nowoczesnych narzędzi można wymienić tryb stratny VarDCT, używający bloków DCT w różnych rozmiarach (od 2x2 aż po 256x256), niekoniecznie kwadratowych kształtach (np. 16x8, 8x32, 32x64) oraz innych transformacji (AFV, Hornuss); działa on razem z trybem modularnym zajmującym się kodowaniem bezstratnym / prawie-bezstratnym (opcjonalnie z pomocą transformacji Haaro-podobnej, nazywanej w JPEG XL "squeeze"), który to koduje też dodatkowe kanały (np. alfa, głębokość, temperatura i inne) oraz współczynniki DC (skala 1:8) trybu VarDCT. Oba tryby mogą wspomagać się dodatkowymi narzędziami, takimi jak modelowanie krzywych do kodowania np. włosów, powtarzające się "łatki" mogące być np. literami tekstu albo "duszkami" grafiki pikselowej oraz synteza szumu (jest on trudny do zakodowania w obu trybach, więc lepiej jest oszacować jego wartość w koderze, zapisać ją w pliku i zaaplikować szum ponownie w dekoderze). Stratne ustawienia kodowania z reguły używają przestrzeni barw XYB stworzonej na bazie LMS[10].

Predykcja jest wykonywana przy użyciu dekorelatora piksel po pikselu bez dodatkowych informacji, używając sparametryzowanego, samokorygującego, ważonego zestawu predyktorów. Modelowanie kontekstowe obejmuje wyspecjalizowane modele statyczne i potężne modele metadaptacyjne, które uwzględniają błąd lokalny, z sygnalizowaną strukturą drzewa i wyborem predyktorów w zależności od kontekstu. Kodowanie entropijne używa algorytmu LZ77 i może wykorzystywać zarówno ANS, jak i kodowanie Huffmana (dla prostszych koderów lub w celu zmniejszenia narzutu danych w małych plikach)[potrzebny przypis].

Domyślnie JPEG XL używa ustawień, które pomimo dobrej kompresji wciąż zapewniają jakość obrazu niemal nieodróżnialną od oryginału[11].

Animacje w tym formacie, w przeciwieństwie do formatów typowo filmowych (takich jak H.264 czy VP9), nie używają zaawansowanej kompresji międzyklatkowej, ale (podobnie do GIF) mają do dyspozycji pewne proste narzędzia:

  • klatka może aktualizować tylko część obrazu,
  • obraz może być nie tylko zastąpiony, ale też wmieszany, dodany lub przemnożony[12],
  • aż do 4 klatek[potrzebny przypis] może być oznaczonych do przechowywania "łatek" wykorzystywanych w późniejszych klatkach[13].

Oprogramowanie (stan na kwiecień 2021)[edytuj | edytuj kod]

Obecnie obsługuje[edytuj | edytuj kod]

Proponowane wsparcie[edytuj | edytuj kod]

Przypisy[edytuj | edytuj kod]

  1. Provisional Standard Media Type Registry (ang.). IANA, 2021-01-28. [dostęp 2021-03-17].
  2. Can JPEG XL Become the Next Free and Open Image Format? - Slashdot (ang.). slashdot.org. [dostęp 2021-03-19].
  3. Next-Generation Image Compression (JPEG XL) Final Call for Proposals (ang.). 2018-04-23. [dostęp 2021-03-17].
  4. v0.2 JPEG XL Reference Software (ang.). 2020-12-24. [dostęp 2021-03-17].
  5. JPEG XL reaches Committee Draft (ang.). 2019-08-03. [dostęp 2021-03-17]. [zarchiwizowane z tego adresu (2019-08-03)]. Cytat: The current contributors have committed to releasing it publicly under a royalty-free and open source license.
  6. Jyrki Alakuijala, Jon Sneyers, Luca Versari, Jan Wassenberg: JPEG White Paper: JPEG XL Image Coding System (ang.). 2021-01. [dostęp 2021-03-17].
  7. JPEG XL Reference Software (ang.). [dostęp 2021-03-17].
  8. FLIF - Free Lossless Image Format (ang.). 2021-02-09. [dostęp 2021-04-06].
  9. JPEG XL vs. AVIF - Page 2 (ang.). encode.su. [dostęp 2021-03-19].
  10. Jyrki Alakuijala i inni, JPEG XL next-generation image compression architecture and coding tools, Andrew G. Tescher, Touradj Ebrahimi (red.), „Applications of Digital Image Processing XLII”, SPIE, 2019, DOI10.1117/12.2529237, ISBN 978-1-5106-2967-7 (ang.).???
  11. Jon Sneyers: How JPEG XL Compares to Other Image Codecs (ang.). 2020-05-26. [dostęp 2021-03-17].
  12. lib/jxl/frame_header.h · master · jpeg / JPEG XL Reference Software · GitLab (ang.). 2020-10-29. [dostęp 2021-04-06].
  13. lib/jxl/frame_header.h · master · jpeg / JPEG XL Reference Software · GitLab (ang.). 2020-10-29. [dostęp 2021-04-06].
  14. ImageMagick - Image Formats (ang.). imagemagick.org. [dostęp 2021-03-19].
  15. 0001845: JPEG XL - MantisBT. xnview.com. [dostęp 2021-03-19].
  16. MConverter: Free, Easy-to-Use Online File Converter ⚡ (ang.). [dostęp 2021-04-06]. Cytat: We can also convert to and from new, more efficient image formats, such as AVIF and JPEG XL.
  17. Squoosh (ang.). [dostęp 2021-04-06].
  18. GitHub - novomesk/qt-jpegxl-image-plugin: Qt plug-in to allow Qt and KDE based applications to read/write JXL images. (ang.). [dostęp 2021-04-06].
  19. GitHub - mirillis/jpegxl-wic: JPEG XL Windows Imaging Component implementation (ang.). [dostęp 2021-04-06].
  20. GitHub - yllan/JXLook: JPEG-XL viewer on macOS (ang.). [dostęp 2021-04-06].
  21. 1539075 - (JPEG-XL) Implement support for Next-Generation Image Compression (JPEG XL) (ang.). mozilla.org. [dostęp 2021-03-19].
  22. 1178058 - chromium - An open-source project to help move the web forward. - Monorail (ang.). chromium.org. [dostęp 2021-03-19].
  23. 208235 – Support JPEG XL images (ang.). webkit.org. [dostęp 2021-03-19].
  24. Support for reading/writing JPEG XL images (#4681) · Issues · GNOME / GIMP · GitLab (ang.). gnome.org. [dostęp 2021-03-19].

Linki zewnętrzne[edytuj | edytuj kod]