JPEG XL

JPEG XL是一種免版稅的位圖文件格式，支持有損和無損壓縮。它旨在超越現有的位圖格式，並成為它們的通用替代。JPEG XL格式規範的主要作者有Jyrki Alakuijala、Jon Sneyers和Luca Versari。

## 名稱

- JPEG指設計了JPEG格式的聯合影像專家小組（Joint Photographic Experts Group）。
- X指2000年以來的多個JPEG標準的名稱：JPEG XT、JPEG XR、JPEG XS。
- L代表「長期」，創建這種格式是為替換舊的JPEG文件格式，並使用足夠長的時間。

## 歷史

2017年，JTC1 / SC29 / WG1 (JPEG) 發起下一代圖像編碼標準（JPEG XL）提案徵集。所有提案在2018年9月前提交，隨後2019年7月形成委員會草案。草案是由谷歌提交的PIK和Cloudinary提交的基於FLIF的FUIF結合而來。

2020年12月25日，伴隨著參考軟體實現libjxl的0.2版本發布，JPEG XL的比特流格式被最終敲定，這意味著未來的版本將保證對此版本的解碼兼容性。此後文件格式與核心編碼系統分別於2021年10月13日和2022年3月30日正式標準化。

## 描述

JPEG XL的提案徵集提及了下一代圖像壓縮標準對大幅提升壓縮效率（60%）的需求。新標準應該有優於HEIC、AVIF、WebP和JPEG 2000這些靜態圖像編碼的表現，同時提供對傳統JPEG格式的無損再壓縮選項。

JPEG XL最高能夠提供對甚高解析度圖像（每邊1兆像素）、4099個32位深通道（包含alpha通道）的靜態或動態圖像及其嵌入預覽的有損壓縮和無損壓縮。它支持針對網路傳輸的漸進式解碼和最小化信頭開銷特性，以及針對圖像編輯和數碼印刷的圖層、CMYK和專色支持。它還針對無縫處理Rec. 2100等廣色域的感知量化器、混合對數伽馬校正和轉換曲線進行了特別設計。

## 特點

主要特點有：

- 更多功能：與傳統圖像格式（例如JPEG、GIF和PNG）相比，有著更佳的效率與更豐富的功能。
- 更大尺度：長寬可超過十億（$2^{30} - 1$）個像素。
- 更多通道：最多4099個通道，包括主通道（單通道的灰度、三通道的RGB或四通道的CMYK）、可選的多達4096個可用於透明度、深度圖、熱成像等的額外通道。
- 多幀支持：支持用於動畫的非零時長幀和類似圖像軟體中圖層的零時長幀，且幀的大小不受圖像畫布大小影響，並支持多種混合模式。
- 獨立圖塊：允許圖像分多圖塊保存，以支持分塊解碼大幅圖像。
- 漸進式解碼：專為支持不同顯示解析度的響應式加載。
- 可逆JPEG轉碼：可實現約20%的數據流壓縮。
- 無損編碼：包括無損alpha編碼。
- 類型感知：可根據圖像內容使用分別為攝影圖像和合成圖像優化的兩種模式。
- 低碼率優化：在低比特率下相較舊格式質量更可接受。
- 感知優化：參考編碼器默認使用感知色彩空間、自適應量化和保守的默認設置。
- 色域支持：內置廣色域、轉移曲線和HDR支持。
- 動畫支持：但編碼真實影片時仍建議使用常規的影片編碼。
- 高效編解碼：無需專用硬體，JPEG XL的編解碼速度即可與使用libjpeg-turbo的JPEG相當，比使用x265的HEIC速度快一個數量級，並可以並行。
- 開源免費：具有使用三條款版BSD許可證的開源參考實現的免版稅格式。

## 技術細節

JPEG XL基於Google的PIK格式和Cloudinary的FUIF格式（基於FLIF）。

JPEG XL主要有兩種編碼模式：

- VarDCT（variable-blocksize DCT，可變分塊大小離散餘弦變換）模式基於與JPEG相同的離散餘弦變換演算法，但分塊不再限定為8×8，而是允許不同大小（2×2到256×256）、非正方形塊（如16×8、8×32、32×64）乃至其他變換函數（4種「邊角」變種AFV，以及非離散餘弦變換的Hornuss變換）。此模式限於三通道色彩，通常使用LMS色彩空間衍生的XYB色彩空間（但為支持重壓縮傳統JPEG仍支持YCbCr），基於PIK格式的有損模式。
- Modular（模塊化）模式是響應式的，用於高效的無損內容壓縮以及近無損壓縮。它可被VarDCT在內部用於存儲二維數據，即除了交流（高頻）離散餘弦變換係數之外的所有數據，包括直流圖像（1:8抽樣圖像）、自適應量化權值、濾鏡強度。所有附加通道（如透明度 (圖形學)、深度圖、熱成像和專色等）總是使用此模式存儲。此模式基於FUIF，並結合了無損PIK、無損WebP和標準化過程中的其他合作成果。藉助哈爾變換的「擠壓」（squeeze），此模式也支持有損壓縮，並實現漸進式特性：圖像的質量會隨著數據加載過程逐漸改善。

VarDCT模式的圖像可藉由模塊化「擠壓」的獨立「直流幀」存儲的直流係數實現漸進式加載，支持1:16、1:32等抽樣比例。「擠壓」變換也可以用於將alpha通道和VarDCT模式的色彩通道一同漸進式編碼，使兩種模式協同工作。

JPEG XL默認使用視覺無損下仍有較好壓縮效果的設置。

這些模式可由單獨的圖像特徵模型協助：

- 向心卡特姆–羅姆樣條用於編碼頭髮等（參考編碼器暫未實現）。
- 重複的「補丁」，如文字、點和「精靈」。
- 噪聲合成：由於噪聲難以壓縮，將其剝離然後由解碼器重新生成可能更佳。這類似於AV1等現代影片編碼的膠片顆粒合成，儘管JPEG XL噪聲合成的目的不是模仿模擬攝影膠片的顆粒，而是在像素層級建模數字相機在高感光度設置下的光子噪聲。

JPEG XL編碼可以無損地轉碼JPEG最常用的子類型的文件，實現方式是將JPEG的DCT系屬直接拷貝到8×8的VarDCT塊，並藉助JPEG XL更好的熵壓縮演算法實現更小的文件大小。此過程是可逆的，可以從轉換結果中逐位重建原始JPEG圖像，儘管有一些限制條件。

預測是基於逐像素、無輔助資訊的去相關器運作的，包括參數化的自校正加權預測器集合。上下文模型包括特化的靜態模型和強大的元自適應模型，它們考慮局部錯誤，具有信號樹結構和分上下文的預測器選擇。熵編碼基於LZ77，可使用非對稱數字系統或前綴碼（適用於低複雜度的編碼器，或減少短數據流的開銷）。

動畫（多幀）圖像不執行高級幀間預測，儘管有一些基本的幀間編碼工具可用：

- 幀可以小於畫布大小，只更新畫布的一部分。
- 除了替換前序幀外，還支持數種混合模式，如相加或相乘。
- 在後面的幀中使用「補丁」編碼工具最多可以「記住」並引用四幀。

## 軟體

JPEG XL受到了許多科技公司與組織的公開支持，如Facebook、Adobe、Intel與VESA、衛報、Flickr和SmugMug、Shopify、Krita基金會和Serif Europe。

### 編解碼器實現

- JPEG XL參考軟體（libjxl）
- 三條款版BSD許可證（曾為Apache許可證2.0）
- 包含組件
- 編解碼庫`libjxl`
- 編碼器`cjxl`
- 解碼器`djxl`
- 快速無損編碼器`fjxl`
- 圖像編碼質量基準測試工具`benchmark_xl`
- GIMP和Gtk pixbuf插件`file-jxl`
- J40：獨立、自包含的JPEG XL解碼器
- MIT許可證，無署名
- C99單頭文件庫（無依賴）
- 名字來源於羅馬數字「XL」（即40）
- libjxl-tiny：簡化的JPEG XL編碼器實現，針對無透明度的攝影圖像
- 三條款版BSD許可證
- jxlatte：Java JPEG XL解碼器
- MIT許可證
- pyjxl：Python JPEG XL解碼器
- MIT許可證
- jpeg-xl-encode：PHP JPEG XL編碼器
- MIT許可證
- jxl-oxide：使用Rust編寫的小型JPEG XL解碼器。
- 雙重許可：MIT許可證和Apache許可證2.0
- jxl-rs：使用Rust編寫的JPEG XL解碼器。
- BSD-3-Clause許可證

### 官方支持

- 網頁圖像轉換器 Squoosh
- 數字相機圖像導入導出工具Adobe Camera Raw
- 位圖編輯器Affinity Photo
- 位圖編輯器Chasys Draw IES
- 元數據編輯器ExifTool
- 多媒體框架FFmpeg
- 位圖編輯器GIMP
- 圖像查看器、照片管理應用gThumb
- 位圖處理工具包ImageMagick
- 圖像查看編輯器IrfanView
- Linux發行版KaOS
- 位圖編輯器Krita
- Qt和KDE應用
- 位圖查看編輯器XnView MP
- 網路瀏覽器Pale Moon
- Microsoft Windows：通過 微軟商店安裝擴展。

### 非官方支持

- Microsoft Windows：通過第三方Windows圖像處理組件插件，即用於在照片查看器、文件資源管理器等中查看。
- macOS：通過獨立應用程式和Quick Look插件。
- GTK和GNOME圖像查看應用（Eye of GNOME、GNOME Files等）：通過GDK pixbuf插件。

### 初步支持

- Chromium：網頁瀏覽器，處於測試中。在145.0.7632.0版本中恢復支持。可以通過 `enable-jxl-image-format` 標誌開啟。
- Firefox：網頁瀏覽器，處於測試中。自版本149開始在穩定版提供支持。可以通過`image.jxl.enabled`標誌開啟（Firefox 90開始在Nightly開發版本中生效）。

## 標準化狀態

通用名稱｜部分｜首次公開發布日期（第一版）｜ISO/IEC編號｜正式名稱

JPEG XL｜第1部分｜2022年3月30日｜ISO/IEC 18181-1｜JPEG XL圖像編碼系統－第1部分：核心編碼系統

第2部分｜2021年10月13日｜ISO/IEC 18181-2｜JPEG XL圖像編碼系統－第2部分：文件格式

第3部分｜2022年10月3日｜ISO/IEC 18181-3｜JPEG XL圖像編碼系統－第3部分：一致性測試

第4部分｜2022年8月5日｜ISO/IEC 18181-4｜JPEG XL圖像編碼系統－第4部分：參考軟體

## 基本資料

- 擴展名：.jxl
- mime：image/jxl
- 統一類型標識：public.jpeg-xl
- magic：`FF 0A`或`00 00 00 0C 4A 58 4C 20 0D 0A 87 0A`
- 開發者：聯合圖像專家小組、谷歌、Cloudinary
- 類型：有損或無損柵格圖像格式
- 擴展自：PIK (圖像格式)、FLIF–FUIF、ISO-BMFF
- 標準：ISO/IEC 18181
- 啟用：是（免版稅）
- 網站：https://jpeg.org/jpegxl（官方網站）、https://jpegxl.info（社區網站）
- 日語原文：JPEG XL參考軟體（libjxl）
- 發行日期：2019年12月27日
- 軟體版本週期：0.11.2
- 軟體版本週期：2026年2月10日
- 程式語言：C++
- 作業系統：Unix-like、Windows、Haiku
- 許可協議：三條款版BSD許可證（曾為Apache許可證2.0）