
iMac、MacBook的用戶會發現,用X-Rite的i1 Pro2、i1 Display Pro等器材配合原廠i1Profiler軟體進行螢幕校正後,作業系統的資料夾Finder預覽、圖片瀏覽器等程式內的圖片檔顯示的效果,竟然會和Photoshop略有差異。 細心比較,影像的差異來自於暗部階調不同;以蘋果系統內建程式觀看,會發生暗部少了幾個階掉的現象。
那究竟是什麼原因造成這個問題的,又該如何避免呢?
這篇文章透過上面這個不同程式觀看造成影像差異的例子,實際測試、分析色彩描述檔,並歸納整理出不同的色彩描述檔的差異,最後回頭驗證各種校正軟體之間的相同與相異之處。
本篇文章寫於2021.12.04,使用測試的系統軟體版本如下:Windows 10 (21H1),macOS Monterey (12.0.1),i1Profiler V3.3.0,DisplayCAL 3.8.9.3/ArgyllCMS 2.1.2,Adobe Photoshop 23.0.2
本篇文章討論色彩描述檔案ICC Profile的組成結構,如果只是想知道蘋果電腦上Photoshop與Finder預覽看起來不同的解決辦法,敬請等待下一篇專文,將大致整理市面上的顯示器校正軟體,統整出不同軟體、不同設定間的相同與相異之處,以及實際應用上建議。
校正軟體中描述檔的種類
使用螢幕校正軟體,執行軟體校正後會產生色彩描述檔ICC Profile檔案。這些檔案表面上看起來相同,但深究其組成內容,實際卻大相徑庭 。下面兩張截圖,有用過X-rite i1Profiler與DisplayCAL軟體製作螢幕校正的朋友應該不陌生。
下圖是i1Profiler中文版軟體中,ICC配置檔案設置選擇類型的設定頁面。軟體提供「基於圖表Table-based」和「基於矩陣Matrix-based」兩種。
選擇基於圖表,實際上是製作L*a*b* LUT的描述檔,如果選擇基於矩陣,則是製作matrix + curve/gamma形式的描述檔。
更多資訊請參考X-rite網站:https://www.xrite.com/service-support/advanced_profile_settings

DisplayCAL可選的類型更多,包含XYZ LUT + matrix、XYZ LUT、L*a*b* LUT、curves + matrix、Single curve + matrix、Gamma + matrix、Single gamma + matrix,共七種。
實際上有些是結合兩種型態的描述檔,例如XYZ LUT + matrix,實際上檔案包含LUT、Gamma、Matrix等數個校正單元,目的是為了更好的相容性。更多資訊請參考網站:https://displaycal.net/#settings_profiling

既然描述檔有不同的種類,那一定會對應不同的功能或使用方式,我們繼續看下去。
色彩描述檔的差異
根據色彩描述檔內部組成份,擁有不同的校正單元,我們可以大致區分成兩大類,分別是基於LUT 查找表,與基於Matrix矩陣(又細分為Curve校正曲線與Gamma參數型)。下面是基礎的特性表格給大家參考。
描述檔種類 | 檔案大小 | 校正精度 | 支援度 | 附註 |
---|---|---|---|---|
XYZ LUT 查找表 | 大 | 高 | 低 | Windows無法安裝為顯示器用 |
L*a*b* LUT 查找表 | 大 | 高 | 中低 | |
matrix 矩陣 + Curve 校正曲線 | 小 | 中~低 | 高 | OSX系統只支援single curve格式 |
matrix 矩陣 + Gamma 伽馬函式 | 最小 | 低 | 高 |
「校正精度」指的是理論上校正能處理的色差大小,「支援度」則指應用軟體、作業系統,實際能使用支援的狀況,例如Adobe Photoshop、illustrator、Lightroom,Capture One等專業軟體,都能支援上述各種類型的描述檔沒問題,但使用蘋果色彩管理模組Apple CMM (Color Management Model)作業系統內建的看圖程式等,則只支援Single Curve、Gamma這些形式。Windows就更特別,首先只有少數微軟原生程式如相片瀏覽器,與少數第三方程式使用Microsoft Windows color System WCS的CMM,才有色彩管理的能力。這部分後面會繼續討論。
上表沒有討論到的是LUT形式雖然更準確精度更高,但多數狀況下可能平滑度(色彩過度、漸層表現)會比curve、gamma形式來的差,不過這點視軟體Profiling方式、程式演算法設計、螢幕品質等等因素而有所影響。
上表中幾點需要留意,第一是蘋果電腦作業系統OSX上有著全系統通用的基本款色彩管理能力,所有正確編寫的應用程式都能使用Apple CMM提供的色彩管理,這一點Windows系統是完全比不上的。因此上表附註中的「支援度」比較,僅是各自作業系統的相對,而非跨平台的討論。
另外無論是curve或gamma類型,都能製作RGB三通道各自擁有不同 或 相同校正參數的格式。如附註所標示,OSX作業系統就不支援多曲線curves的格式。又標準設定下,通常沒有校正軟體會生成R、G、B通道攜帶不同Gamma的Profile,雖然理論上可以但意義不大,本篇後續不另做各種使用或相容性測試。
了解不同軟體、不同設定下可能會產生不同格式的ICC Profile後,更詳細一點說明這些格式是在做什麼用的。
實際上ICC Profile有點像瑞士刀,有不同的工具,各自負責不同的功能;有時結構簡單,有時很複雜。以下我們拆解出每一種不同的組成,依序介紹它們扮演的腳色。
第一類:LUT查找表
第一種類型叫做Looking Up Table,LUT查找表。查找表本身是數學、科學上,時常拿來進行數值轉換的一種資料結構。
當我們要做不同色彩空間之間的色彩數值R、G、B轉換時,理論上可以透過數學算式來計算。但計算耗費計算機電腦的能源,也需要時間,計算結果也容易隨不同的設定條件而有所變動(例如計算精度差異)。
假若我們有一筆數值資料要從資料A集合轉換至B集合上,一筆一筆照A to B的公式算雖然可行,但既然已經確定來源與目的地,而且這兩者是固定的關係的話,那就可以透過預先計算得出數據,然後列表將輸入/輸出每一筆數值規律記錄下。爾後只要查詢輸入A數值的索引號,就能快速得到應該要輸出的B數值,這就是找查表的基本概念。
螢幕上顯示一個靜止的數位影像,本身就擁有上百上千萬的像素。當圖片要顯示在螢幕上,每一個像素的色彩數值就需要做上千萬次的轉換。這種重複性很高的工作,交給查找表LUT處理自然是適合的。
一維找查表範例
R、G、B三色的輸入與輸出數值各自擁有一套對照表,最後再合成RGB三個數值成為像素的RGB色彩值。
改變任一的輸入數值,與另外兩數值輸出結果並不相干。
https://dicomp.arri.de/
三維找查表範例
R、G、B輸入與輸出數值共用一套對照表;三個通道輸出、入密不可分,唯有綜合R+G+B的輸入數值,才能得出一組輸出R’G’B’輸出數值。
https://dicomp.arri.de/
而1D、3D LUT圖示,更常被繪製成下圖的樣子做比較:

回到螢幕校正用的ICC Profile中。
當你選擇製作XYZ或L*a*b* LUT形式的ICC Profile時,目的就是希望製作一個電腦計算色彩的虛擬色彩空間Profile Connection Space,PCS空間(關於PCS的資料可以參考本站文章),到顯示器的三維查找表3D LUT。透過這個3D LUT讓PCS的色彩數值轉換成螢幕正確對應色彩的(R、G、B)數值。
在Profile資料層面,這類LUT成為檔案中標示BToA (PCS to device transforms)的校正資料數據集。以B2A0 這個標籤為例,代表的是當數值從PCS空間中,映射到螢幕裝置的色彩空間時,選擇用感應式渲染意圖轉換perceptual rendering intent transform所需要的LUT查找表資料及(通常螢幕描述檔使用perceptual)。其他LUR像是B2A1,則是relative colorimetric intent transform相對色度轉換,B2A2則是saturation intent transform飽和度轉換。如果有需要反向計算螢幕裝置到PCS的轉換,則是使用A2B的資料集,常用在影視監視器校正上,用來反向計算出軟體層校正LUT使用。

(cLUT=Color Looking Up Table)

如果再向下深究,實際上LUT形式的螢幕校正ICC Profile又會依照版本不同而有所差異。所謂基於LUT 查找表的描述檔,本身並非只使用LUT作為校正單元,為了調整、線性化資料,依然可能使用矩陣matrix與曲線curve等校正單元。

https://www.color.org/specification/ICC1v43_2010-12.pdf
ICC Profile 第2版為例,整體具有(matrix) ⇒ (1d input tables) ⇒ (multi-dimensional lookup table, CLUT) ⇒ (1d output tables)的結構,第4版本則為為 (“B” curves) ⇒ (matrix)⇒ (“M” curves) ⇒(multi-dimensional lookup table, CLUT)⇒ (“A” curves)組成。
實際上,各個組成單元matirx、curve、LUT單元,並不一定要存在(或數值為零/線性),但這部分不是本篇的目的,就不繼續深究。
第二類:matrix矩陣
除了使用LUT查找表以外,另一大類就是基於矩陣matrix的描述檔。
矩陣的作用,在於處理不同色域間的線性映射;透過3×3矩陣單元,能夠將螢幕R、G、B三基色建構成的色域,連結色彩管理系統中Profile connection space, PCS的CIE XYZ做轉換。

https://www.color.org/specification/ICC1v43_2010-12.pdf
相對於找查表LUT,matrix矩陣可以說是更基礎的形式,基本上所有支援色彩管理系統、軟體都支援矩陣類的描述檔。
但如前面所述矩陣只能做單純的整體色域映射線性縮放,無法更進一步做非線性的校正階調與色彩偏差,此時就需要搭配接下來介紹的curve曲線處理。
校正曲線Curves
「曲線」結構在色彩描述檔內,可能代表多種不同的單元,但這邊特別指「Tone Response Curve,TRC」這個項目。TRC又可分兩種,一種是curveType,一種是parametricCurveType。
curveType
第一種curveType,真實紀錄了顯示器對於輸入/輸出的階調反映變化數據集合,本身就是對於顯示器階調呈現的離散曲線的一維找查表;TRC資料建立的目的,不是要直接校正輸出色彩數值,而是先記錄下螢幕階調變化,實際使用時再透夠過反向補償,達到正向的校正顯示效果。
下圖就是一個具備matrix矩陣/TRC曲線的描述檔基本結構,常用在螢幕校正描述檔中。
左側是電腦中色管系統計算使用的PCS空間(關於PCS的資料可以參考本站文章),數據先經過矩陣處理,將XYZ色彩空間做線性變換到螢幕RGB色彩空間上,接著帶入TRC的反函數TRC-1做補償,最後輸出給螢幕端,完成一個系統到螢幕的色彩輸出。

實際上curveType資料,可以是如上圖R、G、B各自擁有不同的Curve資料,或是擁有相同Curve資料的方式。蘋果電腦OSX的Apple CMM只支援一條curve的Profile類型,如果製作成三條,會導致校正後顯示不正常通常比較明顯的狀況是是中性灰色偏。實際上描述檔裡,這些資料標示為rTRC、gTRC、bTRC。

這個範例中,檔案記錄了256筆資料,圖形曲線是軟體根據資料集,實際描點出來的。
parametricCurveType
第二種則是parametricCurveType參數型,直接標記特定的參數例如常見的Power function冪函數,gamma 2.2。參數型的描述檔,之所以能成立的原因,在於多數顯示器基本上廠商製作時就是以特定冪函數作為設定值,最常見的數值有1.8、2.2、2.4。在理想狀況下,如果顯示器階調特性偏離這些數值不多,那的確色彩描述檔只需要記下這個特性的一個數值,即能作為代表。實際上parametricCurveType參數型除了冪函數外,還有定義例如sRGB等特定的函數。理論上公式也是能夠擴充的。

https://www.color.org/specification/ICC1v43_2010-12.pdf
但顯而易見的是,如果顯示器偏離預定的階調方程式,偏離越多,校正的效果就越差,色差越大。因此這一類的色彩描述檔,是較上一個curveType更基礎的類型,好處是能夠更進一步縮小描述檔檔案體積。

這個範例中,實際檔案只記錄gamma 2.4的標示,圖形曲線是軟體繪製,並非實際描點出來的。
Video Card Gamma Table
理論上除了上述LUT、TRC等校正單元外,還有一個也是螢幕校正軟體可以使用,拿來直接對顯示卡輸出訊號做校正的單元,叫做顯示卡伽瑪表Video Card Gamma Table,VCGT。它與TRC有點類似,也是一個一維的找查表LUT,通常紀錄RGB三通道的校正曲線。
與TRC相同,這個一維的LUT(也稱為顯示卡校正曲線)只能處理RGB灰階平衡與改變階調變化,無法做色域大小的映射/縮放。
不過VCGT還是和TRC有兩大不同之處;首先,它不像TRC,全名Tone Response Curve階調反映曲線,理論上比較像是「被動」的儲存/標示顯示器的階調變化。VCGT直接作用在輸出端,直接改變輸出訊號,直接R、G、B數值做更改。
第二,是它實際被應用的地方,不是在軟體中的色彩管理模組CMM上;當描述檔內部有VCGT資料時,它會透過程序載入到顯示卡GPU的一個特殊區域。據悉一般來說能儲存RGB各通道16~10bit精度的LUT資料表。(不過常見的顯示輸出通常只有8bit精度)
因此這個VCGT可以說是一個很特別的存在,首先它位於主機系統上的顯示鍊結最末端,它又是最能直接影響輸出訊號的變化(往後就是透過HDMI、DisplayPort等線材,連接顯示器了)。有一些校正軟體並不會利用VCGT來做螢幕校正,可能保持線性資料。
這個VCGT資料集如果存在,會被以標籤”vcgt”儲存在描述檔內。
如何判斷描述檔種類
有了以上的種類概念,那要怎麼判斷既有的描述檔,是哪一個種類的呢?
最簡單的方式,是可以先由檔案大小來判斷;多數10kb以下的ICC Profile,都是matrix矩陣 + parametricCurveType曲線參數的類別。1MB以上的,多半是LUT、LUT+matrix混合形式的描述檔。介於10~1MB中間,就比較難說,有些檔案雖然形式相同,但儲存資料的取樣數目差異很大。
真正要判別種類的方式,Windows系統可以下載ICC Profile Inspector這個程式,在ICC官網上就有提供下載:https://www.color.org/profileinspector.xalter

程式使用很簡單,點開左上角「Browse…」後選擇你要檢視的ICC Profile檔案,軟體就會讀取資訊呈現如上圖。左側是一些描述檔基本資料,大小、種類、製作日期等等,右側就是比較詳細的各個內存資訊。Signature顯示的是特定的資料標籤,每一種標籤在描述檔中都有特殊的定義與作用,Offset則是資料結構中的位置,Size則是該筆資料大小。
回到Signature這個欄位。
- 如果是LUT形式的顯示器描述檔,你會看到有「B2A0」這個項目,表示一筆由PCS到設備(顯示器)的轉換資料。
- 如果是matrix形式的描述檔,你會看到「rXYZ」「gXYZ」「bXYZ」這三筆資料,分別儲存XYZ到RGB轉換矩陣的第一、第二與第三列。
- 如果是TRC curve資料,則你會看到「rTRC」「gTRC」「bTRC」三筆資料,儲存測量到的階調曲線資料,或是單純紀錄曲線參數類型。
如果想檢視各項資料,只要滑鼠連點兩下該資料項目,就會另外跳出詳細的內容(如同本篇文章之前的貼圖)。
而如上圖所示,這一個描述檔同時擁有「B2A0」、「rXYZ」、「gXYZ」、「bXYZ」、「rTRC」、「gTRC」、「bTRC」這些數據,表示它既是LUT也是matrix形式的顯示器描述檔。不只DisplayCAL軟體可以製作出這類混合的描述檔,具查某些顯示器廠牌的校正程式,選擇LUT形式的設定下,實際上也製作出包含矩陣的檔案,猜想可能是為了提高應用程式的相容性。
但實際上色彩管理系統運作時,只會在LUT或matrix/curve擇一使用。至於會選用哪一部分來處理色彩轉換很難說,如果想確認可以參考本網站之前分享的文章「判斷程式是否支援LUT ICC Profile」,透過特殊交換RGB的matrix構造,來確認CMM實際使用LUT或是matrix執行色彩管理。

結論
本篇討論顯示器色彩描述檔的種類,初略的介紹各種描述檔校正單元如LUT查找表、矩陣matrix、曲線curves與VCGT顯示卡校正曲線的作用與結構,目的是先建立起對於描述檔的構造差異的基本知識背景。
接下來一篇專文,會實際測試不同的螢幕校正軟體,在不同的設定條件之下,究竟會生成怎樣種類、結構的色彩描述檔,而這些不同的差異,又如何反應在軟體顯示影像上。
如同本文一開頭所示,iMac、MacBook的用戶會發現,用X-Rite的i1 Pro2、i1 Display Pro等器材配合原廠i1Profiler軟體進行螢幕校正後,作業系統的資料夾Finder預覽、圖片瀏覽器等程式內的圖片檔顯示的效果,竟然會和Photoshop略有差異。細心比較,影像的差異來自於暗部階調不同;以蘋果系統內建程式觀看,會發生暗部少了幾個階掉的現象。
造成這個問題的原因,是因為當i1 Profiler製作出matrix+parametricCurve形式的描述檔時,Apple CMM會受到顯示器與描述檔黑位不相等/絕對黑位的問題干擾,造成極暗部crush喪失階調。但只要稍加修正,正確選擇軟體內製作時的gamma參數,就能讓i1 Profiler製作出matrix+curve,實際帶一維曲線資料的描述檔。說也奇怪,這個curve似乎依然可以保持從0點開始紀錄的絕對黑位特性,但Apple CMM的解讀行為卻有所不同,不會讓暗部喪失階調。
更詳細、明確的測試與紀錄,將會在下一篇文章中跟大家分享,感謝耐心閱讀至此。
透過儀器測量,才能知道螢幕是否準確,如有偏差,也需要透過儀器校正、製作專屬的描述檔、3D LUT,才會得最正確的顯示效果。歡迎聯絡色管宅來處理您影片製作與觀看上的問題。

由色管宅替您目前工作的螢幕或影像作業環境進行色彩管理確認,依據您的需求或行業標準提出色彩準確性報告與建議。

由色管宅替您的螢幕進行校正與系統色彩管理確認;包含環境燈光、螢幕選購與設定、應用程式設定,作業系統設定等完整的色彩管理顯示鏈結建議。