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 月形成委員會草案。草案是由 Google 提交的 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 解碼器 [1] （頁面存檔備份，存於網際網路檔案館）
  * 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 許可證

### 官方支援

* 網頁圖像轉換器 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：通過第三方 Windows 圖像處理組件外掛程式，即用於在相片檢視器、檔案檔案總管等中檢視。
* macOS：通過獨立應用程式和 Quick Look 外掛程式。
* GTK 和 GNOME 圖像檢視應用（Eye of GNOME、GNOME Files 等）：通過 GDK pixbuf 外掛程式。

### 初步支援

* Chromium：網頁瀏覽器，自 91 版至 110 版提供測試選項。
* Firefox：網頁瀏覽器，處於測試中，自 Firefox 90 開始可以通過 `image.jxl.enabled` 標誌開啟。

## 標準化狀態

## 注釋

## 參考

## 外部連結

* 官方網站
* GitHub 上的參考實現
  * 構建版本：
    * 每夜構建 （頁面存檔備份，存於網際網路檔案館）
* 社群網站 （頁面存檔備份，存於網際網路檔案館）