JPEG XL
![]() | |
![]() | |
Rozszerzenia pliku |
|
---|---|
Typ MIME |
|
Producent |
Joint Photographic Experts Group |
Typ | |
Otwarty format? |
tak |
Strona internetowa |
JPEG XL–format graficznyobsługujący zarównokompresję stratną,jak ibezstratną.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]:
- większy zestaw funkcji i lepsza efektywność kompresji w porównaniu do tradycyjnych formatów graficznych (m.in.JPEG,GIForazPNG),
- dekodowanie progresywne (polepszanie się jakości wizualnej w miarę ładowania kolejnych fragmentów pliku),
- odwracalne kodowanie plików JPEG oszczędzające ≈20% rozmiaru,
- bezstratne kodowanie (w tymkanału alfa),
- algorytmy kompresji przystosowane zarówno do fotografii, jak i sztucznych obrazów,
- referencyjnykoderzoptymalizowany pod percepcję ludzką,
- obsługawysokiej głębi bitowejorazobrazów HDR,
- wsparcie dla animowanych obrazów,
- wydajne kodowanie i dekodowanie bez używania wyspecjalizowanego sprzętu,
- format otwarty,wolny od tantiemzotwartoźródłowąimplementacjąreferencyjną[7].
Informacje techniczne
[edytuj|edytuj kod]JPEG XL został oparty na formacie PIK odGoogleoraz FUIF odCloudinary ,który z kolei powstał na bazieFLIF[8].
Format ten opiera się na dwóch głównych trybach kodowania:
- VarDCT– używa tego samego algorytmu DCT, co klasyczny JPEG, ale bloki, zamiast być ograniczone do 8×8, występują w różnych rozmiarach (od 2×2 aż po 256×256) oraz kształtach (np. 16×8, 8×32, 32×64), a także mogą używać innych rodzajów transformacji (AFV, Hornuss).
- Modular– jest odpowiedzialny m.in. za wydajne, bezstratne kodowanie treści. To z jego pomocą zapisywane są dodatkowe kanały (np. alfa, głębokość, temperatura i inne) oraz współczynniki DC (skala 1:8) trybuVarDCT.Możliwa jest w nim również stratna kompresja, dokonywana z pomocątransformacji Haaro-podobnej,nazywanej w JPEG XL „squeeze”.Ma ona progresywne właściwości: w miarę doczytywania danych widać coraz więcej detali. Progresywne ładowanie obrazów zapisanych trybemVarDCTodbywa się między innymi właśnie przez zapisanie współczynników DC trybuVarDCTw trybiemodularnymstratnym, działając w tandemie.
Oba tryby mogą wspomagać się dodatkowymi narzędziami, nieznanymi w innych kodekach:
- modelowanie krzywychdo kodowania np. włosów,
- powtarzające się „łatki” mogące być np. literami tekstu albo„duszkami”grafiki pikselowej,
- 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 barwXYB stworzonej na bazieLMS[9].
JPEG XL potrafi również bezstratnie zakodować już istniejące pliki JPEG do bardziej kompaktowej formy, kopiując bezpośrednio współczynniki blokówDCTz JPEG-a do bloków VarDCT w JPEG XL, zawdzięczając mniejszy rozmiar lepszemu kodowaniu entropijnemu. Kiedyś za bezstratną kompresję plików JPEG był odpowiedzialny Brunsli, odrębny tryb odVarDCTimodularnego,został on jednak porzucony na rzecz uproszczenia specyfikacji i zmniejszenia rozmiaru dekodera o 20%[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 algorytmuLZ77i może wykorzystywać zarówno rANS (wariant przedziałowyAsymetrycznych Systemów Liczbowych), jak ikodowanie Huffmana(dla prostszych koderów lub w celu zmniejszenia narzutu danych w małych plikach)[potrzebny przypis].
Domyślnie implementacja referencyjna 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 jakH.264czyVP9), 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[13]może być oznaczonych do przechowywania „łatek” wykorzystywanych w późniejszych klatkach[14].
Oprogramowanie (stan na listopad 2022)
[edytuj|edytuj kod]Oficjalne wsparcie
[edytuj|edytuj kod]- ImageMagick[15]– narzędzie do przetwarzania grafiki rastrowej
- XnView MP[16]– przeglądarka iedytor grafikirastrowej
- MConverter[17]– konwerter plików online
- Squoosh[18]– konwerter formatów graficznych działający w całości w przeglądarce na bazieWebAssembly
- gThumb[19]– przeglądarka obrazów naLinuxa
- ImageGlass[20]– przeglądarka obrazów na Windowsa
- Affinity Photo[21]– edytor grafiki rastrowej
Nieoficjalne wsparcie
[edytuj|edytuj kod]- Microsoft Windows[22]– za pomocą wtyczkiWIC,np. do wyświetlania w Galerii systemu Windows,Eksploratorze Windowsetc.
- macOS[23]– za pomocą aplikacji orazwtyczkido funkcji Quick Look
- aplikacje naQt/KDE[24]– za pomocą wtyczki
- GIMP[25]– za pomocą wtyczki możliwej do skompilowania w implementacji referencyjnej
Wsparcie testowe
[edytuj|edytuj kod]- Chromium[26]–przeglądarka internetowa;wsparcie formatu oznaczono do usunięcia w listopadzie 2022[27]
- Firefox[28]– przeglądarka internetowa
Przypisy
[edytuj|edytuj kod]- ↑Provisional Standard Media Type Registry.IANA, 2021-01-28. [dostęp 2021-03-17].(ang.).
- ↑Can JPEG XL Become the Next Free and Open Image Format? - Slashdot.slashdot.org. [dostęp 2021-03-19].(ang.).
- ↑Next-Generation Image Compression (JPEG XL) Final Call for Proposals.2018-04-23. [dostęp 2021-03-17].(ang.).
- ↑v0.2 JPEG XL Reference Software.2020-12-24. [dostęp 2021-03-17].(ang.).
- ↑JPEG XL reaches Committee Draft.2019-08-03. [dostęp 2021-03-17]. [zarchiwizowane ztego adresu(2019-08-03)]. Cytat:
The current contributors have committed to releasing it publicly under a royalty-free and open source license.
(ang.). - ↑Jyrki Alakuijala, Jon Sneyers, Luca Versari, Jan Wassenberg:JPEG White Paper: JPEG XL Image Coding System.2021-01. [dostęp 2021-03-17].(ang.).
- ↑JPEG XL Reference Software.[dostęp 2021-03-17].(ang.).
- ↑FLIF - Free Lossless Image Format.2021-02-09. [dostęp 2021-04-06].(ang.).
- ↑JyrkiAlakuijalai inni,JPEG XL next-generation image compression architecture and coding tools,Andrew G.Tescher,TouradjEbrahimi(red.), „Applications of Digital Image Processing XLII”, SPIE,2019,DOI:10.1117/12.2529237,ISBN978-1-5106-2967-7(ang.).
- ↑JPEG XL vs. AVIF - Page 2.encode.su. [dostęp 2021-03-19].(ang.).
- ↑Jon Sneyers:How JPEG XL Compares to Other Image Codecs.2020-05-26. [dostęp 2021-03-17].(ang.).
- ↑lib/jxl/frame_header.h · 131953af · jpeg / JPEG XL Reference Software · GitLab.2020-11-10. [dostęp 2021-05-17].(ang.).
- ↑lib/jxl/common.h · 44778c69 · jpeg / JPEG XL Reference Software · GitLab.2021-05-21. [dostęp 2021-05-22].(ang.).
- ↑lib/jxl/frame_header.h · 131953af · jpeg / JPEG XL Reference Software · GitLab.2020-11-10. [dostęp 2021-05-17].(ang.).
- ↑ImageMagick - Image Formats.imagemagick.org. [dostęp 2021-03-19].(ang.).
- ↑0001845: JPEG XL - MantisBT.xnview.com. [dostęp 2021-03-19].
- ↑MConverter: Free, Easy-to-Use Online File Converter ⚡.[dostęp 2021-04-06]. Cytat:
We can also convert to and from new, more efficient image formats, such as AVIF and JPEG XL.
(ang.). - ↑Squoosh.[dostęp 2021-04-06].(ang.).
- ↑gThumb Image Viewer 3.11.3 Adds JPEG XL (.jxl) Support [Ubuntu PPA] | UbuntuHandbook.ubuntuhandbook.org, 2021-04-15. [dostęp 2021-05-17].(ang.).
- ↑Announcing ImageGlass 8.1 - Home | ImageGlass.imageglass.org, 2021-04-17. [dostęp 2021-05-17].(ang.).
- ↑Version 2 of Affinity apps: What’s new?[online], Affinity[dostęp 2022-11-09](ang.).
- ↑GitHub - mirillis/jpegxl-wic: JPEG XL Windows Imaging Component implementation.[dostęp 2021-04-06].(ang.).
- ↑GitHub - yllan/JXLook: JPEG-XL viewer on macOS.[dostęp 2021-04-06].(ang.).
- ↑GitHub - novomesk/qt-jpegxl-image-plugin: Qt plug-in to allow Qt and KDE based applications to read/write JXL images..[dostęp 2021-04-06].(ang.).
- ↑plugins/gimp/CMakeLists.txt · ff093712 · jpeg / JPEG XL Reference Software · GitLab.2019-12-27. [dostęp 2021-05-17].(ang.).
- ↑1178058 - chromium - An open-source project to help move the web forward. - Monorail.chromium.org. [dostęp 2021-03-19].(ang.).
- ↑1178058 - chromium - An open-source project to help move the web forward. - Monorail[online], bugs.chromium.org[dostęp 2022-11-23].
- ↑1539075 - (JPEG-XL) Implement support for Next-Generation Image Compression (JPEG XL).mozilla.org. [dostęp 2021-03-19].(ang.).
Linki zewnętrzne
[edytuj|edytuj kod]- Oficjalna strona
- Implementacja referencyjna
- libjxl artifacts– skompilowane wersje implementacji referencyjnej na Windows i Linux z procesuCIna GitHubie, utrzymywane przez jednego z deweloperów JPEG XL
- Windows Bin Builds– konwertery na bazie implementacji referencyjnej, skompilowane na Windows przez osobę trzecią (strona zawiera też inneoprogramowanie)
- Strona społeczności JPEG XL