相機影像品質

色差與彩度差算法分析

2023 年 5 月 相機影像品質 影像處理 色彩科學

ImatestiQ-Analyzer 等專業影像品質分析軟體,能以客觀、一致且完整的方式評估相機影像品質。然而,我們在實務工作中發現,不同軟體計算色差與彩度差時採用的演算法並不相同。為了建立高效率的自動化影像分析流程,我們透過大量實驗反推各套軟體實際採用的彩度差異演算法。本文將說明兩種演算法的實作方式、核心差異,以及各自的優點與限制。

1. 簡介

ColorChecker® Classic 是由 24 個經過科學校準的色塊組成,涵蓋自然色、彩色、三原色與灰階色。拍攝測試影像時,只要將 ColorChecker 放入畫面,就能以色卡的標準色彩量測值作為參考,將相機輸出與標準值比較,進而評估相機的色彩還原準確度與一致性。

2. ColorChecker 的用途

  1. 提供色彩還原與自動白平衡的相機校準標準。
  2. 透過 ΔE* 與 ΔC* 量化影像的色彩差異。
編號色彩sRGBCIE L*a*b*
色塊名稱色樣RGBL*a*b*
1深膚色115826837.98613.55514.059
2淺膚色19415013065.71118.1317.81
3藍天9812215749.927-4.88-21.925
4葉綠871086743.119-13.09521.905
5藍花13312817755.1128.844-25.399
6藍綠10318917070.719-33.397-0.199
7橘色2141264462.66136.06757.096
8紫藍809116640.0210.41-45.964
9中度紅193909951.12448.23916.248
10紫色946010830.32522.976-21.587
11黃綠1571886472.532-23.70957.255
12橙黃2241634671.94119.36367.857
13藍色566115028.77814.179-50.297
14綠色701487355.261-38.34231.37
15紅色175546042.10153.37828.19
16黃色2311993181.7334.03979.819
17洋紅1878614951.93549.986-14.574
18青色813316151.038-28.631-28.638
19白色24324324296.539-0.4251.186
20中性灰 820020020081.257-0.638-0.335
21中性灰 6.516016016066.766-0.734-0.504
22中性灰 512212212150.867-0.153-0.27
23中性灰 3.585858535.656-0.421-1.231
24黑色52525220.461-0.079-0.973

表 1:ColorChecker® Classic 在 D50 光源下的 CIELAB 參考值。

3. 色差與彩度差異

利用 ColorChecker 計算影像的色差與彩度差異,可以量化相機的色彩還原準確度。

CIE Lab 色彩空間的設計目標是近似感知均勻,因此廣泛應用於色差計算。在 Lab 空間中,L* 表示明度,a* 表示綠色到紅色的色彩軸,b* 則表示藍色到黃色的色彩軸。

3.1 CIE 1976 標準

總色差 ΔE* 是兩個 Lab 座標之間的歐氏距離:

$$ ΔE_{ab}^* = \sqrt{(L_2^* - L_1^*)^2 + (a_2^* - a_1^*)^2 + (b_2^* - b_1^*)^2} $$

傳統 CIELAB 彩度差異的定義,是兩個彩度座標之間的有號差值

$$ \Delta C_{ab}^*=C_{ab,2}^*-C_{ab,1}^* =\sqrt{a_2^{*2}+b_2^{*2}}-\sqrt{a_1^{*2}+b_1^{*2}} $$

其中 $C_{ab,i}^*=\sqrt{a_i^{*2}+b_i^{*2}}$。本文將色彩 1 定義為參考值,色彩 2 定義為相機量測值。因此,$\Delta C_{ab}^*<0$ 表示相機彩度低於參考值,$\Delta C_{ab}^*>0$ 則表示彩度高於參考值。若交換參考值與量測值,符號也會隨之反轉。

另一個常用的量是排除明度後的色彩平面距離

$$ D_{ab}=\sqrt{(\Delta a^*)^2+(\Delta b^*)^2} =\sqrt{(\Delta E_{ab}^*)^2-(\Delta L^*)^2} $$

$D_{ab}$ 與 $\Delta C_{ab}^*$ 並不是同一種統計量。前者是 $a^*b^*$ 平面中的非負歐氏範數,後者則是兩個徑向彩度座標的有號差值。兩者具有以下精確關係:

$$ (\Delta a^*)^2+(\Delta b^*)^2 =(\Delta C_{ab}^*)^2+(\Delta H_{ab}^*)^2, $$

$$ \Delta H_{ab}^*=2\sqrt{C_1^*C_2^*}\sin\left(\frac{\Delta h_{ab}}{2}\right). $$

因此,$|\Delta C_{ab}^*|\leq D_{ab}$。這項差異的本質不只是直角座標與極座標的不同,而是範數有號徑向座標差值之間的差別。

3.2 CIEDE2000 標準

CIEDE2000 重新設計 ΔE* 公式,以改善色彩空間感知不均勻的問題,主要包含三項改進:

  1. 將色差分解為明度、彩度與色相相關分量
  2. 使用隨色彩位置改變的加權因子,平衡各分量的感知影響;
  3. 加入旋轉項,修正藍色區域中彩度與色相的交互作用。

CIE LCh 是 Lab 座標的圓柱表示方式,其中 L*、C* 與 h* 分別表示明度彩度色相角。彩度是色彩點到中性軸的徑向距離,色相則以四象限角度 $h=\operatorname{atan2}(b^*,a^*)$ 計算。CIE94、CMC 與 CIEDE2000 都以這種彩度—色相分解套用感知加權。完整公式與邊界條件可參考 [CIEDE2000 implementation notes]

3.3 產業軟體採用的色差演算法

計算 ΔE* 與 ΔC* 的第一步,是將 RGB 色彩空間轉換到 Lab;過程中必須先經過 XYZ 中介色彩空間。若來源與目標色彩空間的參考白點不同,還必須進行色適應轉換,才能得到正確結果。

在我們的實驗設定中,Lab 的參考白點為 D50,而 RGB-to-XYZ 矩陣以 D65 光源為基準,因此計算時需要套用 D65 至 D50 的色適應轉換。

以下以 M1 表示 RGB-to-XYZ 轉換矩陣,以 M2 表示色適應使用的 Bradford 矩陣

$$ M_1 = \begin{bmatrix} 0.4124564 & 0.3575761 & 0.1804375 \\ 0.2126729 & 0.7151522 & 0.0721750 \\ 0.0193339 & 0.1191920 & 0.9503041 \end{bmatrix} $$

$$ M_2 = \begin{bmatrix} 1.0478112 & 0.0228866 & -0.050127 \\ 0.0295424 & 0.9904844 & -0.017049 \\ -0.009234 & 0.0150436 & 0.7521316 \end{bmatrix} $$

  1. Imatest:sRGB ➝ D65 XYZ(M1) ➝ Lab
  2. iQ-Analyzer:sRGB ➝ D65 XYZ(M1)D50 XYZ(M2) ➝ Lab

實驗結果顯示,Imatest 與 iQ-Analyzer 雖然使用相同的 ΔC 名稱,實際計算出的卻是不同的統計量

Imatest

Imatest 對 ΔC 採用一套應用導向的定義:它計算的是排除明度後的色彩平面距離,而不是傳統 CIELAB 所定義的有號彩度差值。其 CIE 1976 實作為:

$$ \Delta C_{ab,\mathrm{Imatest}}^*=\sqrt{(a_2^*-a_1^*)^2+(b_2^*-b_1^*)^2}. $$

在 CIEDE2000 中,Imatest 移除明度項,保留了彩度項、色相項及兩者的交互作用:

$$ \Delta C_{00,\mathrm{Imatest}}^*= \sqrt{ \left(\frac{\Delta C’}{K_C S_C}\right)^2+ \left(\frac{\Delta H’}{K_H S_H}\right)^2+ R_T\left(\frac{\Delta C’}{K_C S_C}\right) \left(\frac{\Delta H’}{K_H S_H}\right) }. $$

因此,Imatest 計算的是結合彩度與色相誤差的非負量值。Imatest 官方文件也特別說明,這項 ΔC 定義不同於純彩度差異 $\Delta|C^*|$。

iQ-Analyzer

iQ-Analyzer 計算的是兩個彩度座標之間的有號差值:

$$ \Delta C_{ab,\mathrm{iQ}}^*= \sqrt{a_2^{*2}+b_2^{*2}}- \sqrt{a_1^{*2}+b_1^{*2}}. $$

其 CIEDE2000 輸出只保留經感知加權後的有號彩度分量:

$$ \Delta C_{00,\mathrm{iQ}}^*= \frac{\Delta C’}{K_C S_C}. $$

正因為 iQ-Analyzer 計算的是兩個彩度座標的差值,所以結果可能是負值。依照本文採用的「相機量測值減參考值」慣例,負值代表彩度不足,正值代表彩度過高。這個方向資訊可直接用來判斷 saturation gain 或 3D-LUT 的調整方向,而範數無法提供同樣資訊。

這項差異在 CIEDE2000 中仍然很重要。令

$$ x=\frac{\Delta C’}{K_C S_C},\qquad y=\frac{\Delta H’}{K_H S_H}, $$

則 iQ-Analyzer 回報 $x$,Imatest 回報 $\sqrt{x^2+y^2+R_Txy}$。與 CIE 1976 不同,Imatest 的合成量不一定大於 $|x|$。在 CIEDE2000 的藍色旋轉區域($\bar h’\approx275^\circ$)附近,$R_T$ 可能為負,使交互作用項降低合成結果。例如,當 $R_T=-1.73$、$y=0.866x$ 時:

$$ \sqrt{x^2+0.75x^2-1.498x^2}\approx0.50|x|. $$

因此,兩套工具在某些藍色色對上的比較,可能出現違反直覺的結果。是否真的發生,仍應以實際量測的 Lab 數值驗證,而不能只根據色塊名稱推定。

4. 有號彩度差異的優點

  1. 能直接提供調整方向。 在「量測值減參考值」的定義下,負值代表彩度不足,正值代表彩度過高,可直接對應 saturation gain 或 3D-LUT 的調整方向。
  2. 較容易用感知語言解釋。 相較於原始 $a^*$、$b^*$ 座標變化,彩度與色相更容易對應「太鮮豔」、「太淡」或「偏色」等描述。
  3. 可搭配感知分解。 CIE94、CMC 與 CIEDE2000 都會明確分離明度、彩度與色相相關分量,再依色彩位置套用不同權重。
  4. 適合分析系統性偏差。 有號值的平均能揭露全域偏移,標準差或 RMS 則反映誤差分散程度。若 24 個色塊的 $\Delta C$ 都是 $+5$,平均值 $+5$ 會直接指出整體過飽和;若一半為 $+5$、一半為 $-5$,平均為 0、RMS 為 5,則表示誤差隨色塊而異,還需進一步分析它與參考色相的關係。
  5. 能提供實用的診斷線索。 彩度或色相分量偏大,可協助優先檢查 saturation/gamut processing,或 CCM、光譜不匹配與白平衡。但這種對應只能作為診斷線索,不能單憑數值唯一判定是哪一個 ISP 模組造成問題。

5. 有號彩度差異的限制

無法看見純色相旋轉

純色相旋轉可能出現 $\Delta C=0$。例如,$(a_1^*,b_1^*)=(20,0)$ 與 $(a_2^*,b_2^*)=(0,20)$ 的彩度相同,因此 $\Delta C_{ab}^*=0$,但實際上:

$$ \sqrt{(\Delta a^*)^2+(\Delta b^*)^2} =\Delta H_{ab}^*\approx28.3. $$

若只回報有號 ΔC,就可能忽略非常嚴重的色相誤差。

中性軸附近的不穩定性

當 $C^*\rightarrow0$ 時,色相未定義,而且 $\partial h/\partial(a,b)$ 約以 $1/C$ 的速度增大。因此,ColorChecker 中性灰色塊的色相角可能主要反映量測雜訊。彩度座標本身仍有定義,但中性軸附近的色相與有號 $\Delta H$ 必須特別處理。

雜訊造成的量值偏差

在一階近似模型中,若 $a^*$ 與 $b^*$ 含有彼此獨立、各向同性、零均值且標準差為 $\sigma$ 的高斯雜訊,量測到的彩度會服從 Rice 分布,其期望值近似為:

$$ E[\hat C]\approx C_{\mathrm{true}}+\frac{\sigma^2}{2C_{\mathrm{true}}} \quad(C_{\mathrm{true}}\gg\sigma), $$

而當真實彩度趨近於零時:

$$ E[\hat C]\rightarrow\sigma\sqrt{\frac{\pi}{2}} \quad(C_{\mathrm{true}}\rightarrow0). $$

也就是說,雜訊會使量測彩度產生系統性高估,且低彩度色塊受到的影響最明顯。在高 ISO 影像中,這種偏差可能抵銷真實的彩度不足,甚至讓中性色塊出現虛假的正 ΔC。不過,這項分析有其適用條件:RGB 經非線性轉換至 Lab 後,雜訊可能具有相關性、異方差或非高斯特性,因此仍需透過實驗確認。

6. 色彩平面範數的優點與限制

CIE 1976 色彩平面範數 $D_{ab}$ 在所有位置都有明確定義,不會遇到色相角奇異點,而且是 $a^*b^*$ 平面中的真正歐氏度量。在 Lab 空間的加性零均值雜訊模型下,$\Delta a^*$ 與 $\Delta b^*$ 都是線性分量,雜訊傳播也較容易分析。這個範數沒有彩色差異的盲點:只有當 $a^*$ 與 $b^*$ 都完全相同時,結果才會是零。因此,它適合作為單一數值的色彩平面 pass/fail 指標;若明度誤差同樣重要,完整色彩符合性評估仍應使用 ΔE。

它的限制也很明確。非負範數會失去彩度偏差方向,且無法分離彩度與色相相關的誤差。未加權的歐氏範數也不包含 CIE94、CMC 或 CIEDE2000 所採用、隨色彩位置改變的感知修正。此外,CIELAB 只具有近似的感知均勻性,在高彩度與藍紫色區域仍存在已知的非均勻現象。

參考資料

  1. ColorChecker reference table: https://xritephoto.com/documents/literature/en/ColorData-1p_EN.pdf
  2. Imatest Color/Tone Appendix: https://www.imatest.com/docs/colortone_ref/
  3. iQ-Analyzer ColorChecker application: https://www.image-engineering.de/news/product-news/773-the-iq-analyzer-color-bundle
  4. The CIEDE2000 Color-Difference Formula: Implementation Notes, Supplementary Test Data, and Mathematical Observations: https://www.ece.rochester.edu/~gsharma/ciede2000/ciede2000noteCRNA.pdf
  5. ISO/CIE 11664-6:2022, Colorimetry—Part 6: CIEDE2000 Colour-Difference Formula: https://www.cie.co.at/publications/colorimetry-part-6-ciede2000-colour-difference-formula-1