JPEG XL – format 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
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].
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) trybu VarDCT. 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 trybem VarDCT odbywa się między innymi właśnie przez zapisanie współczynników DC trybu VarDCT w trybie modularnym stratnym, działając w tandemie.
Oba tryby mogą wspomagać się dodatkowymi narzędziami, nieznanymi w innych kodekach:
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[9].
JPEG XL potrafi również bezstratnie zakodować już istniejące pliki JPEG do bardziej kompaktowej formy, kopiując bezpośrednio współczynniki bloków DCT z 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 od VarDCT i modularnego, 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 algorytmu LZ77 i może wykorzystywać zarówno rANS (wariant przedziałowy Asymetrycznych Systemów Liczbowych), jak i kodowanie 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 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[13] może być oznaczonych do przechowywania „łatek” wykorzystywanych w późniejszych klatkach[14].
Oprogramowanie (stan na listopad 2022)
Oficjalne wsparcie
ImageMagick[15] – narzędzie do przetwarzania grafiki rastrowej
↑JPEG XL reaches Committee Draft. 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.(ang.).
↑JyrkiJ.AlakuijalaJyrkiJ. i inni, JPEG XL next-generation image compression architecture and coding tools, Andrew G.A.G.Tescher, TouradjT.Ebrahimi (red.), „Applications of Digital Image Processing XLII”, SPIE, 2019, DOI: 10.1117/12.2529237, ISBN 978-1-5106-2967-7(ang.).???
libjxl artifacts – skompilowane wersje implementacji referencyjnej na Windows i Linux z procesu CI na 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ż inne oprogramowanie)