你真的理解色彩管理嗎?安卓蘋果色彩管理深度解析

2022-09-26     少數派

原標題:你真的理解色彩管理嗎?安卓蘋果色彩管理深度解析

編注:隨著部分國內 Android 廠商的重視,此前作為 Apple 生態內設備優勢之一的色彩管理也開始慢慢進入普通消費者視野。本文為兩顆皮蛋《護城河》系列視頻的文字稿。

這期視頻 則從顯示鏈路入手,通俗易懂地對色彩管理進行了科普:Windows 的色彩管理有什麼問題,Apple 做對了什麼,Android 此前為什麼做不好?視頻對包括 Windows、Android、iOS 等主流作業系統平台在色彩管理上的解決方案進行了分析,應該也能為你解答上述問題。

Hello 大家好,歡迎收看這期兩顆皮蛋,我是初號。

這期視頻是護城河系列的第三期,我們深入顯示鏈路,來系統性的講講色彩管理。這也是近兩年 Android 一直在講,但大家可能聽得都雲里霧裡的一個功能。所以這期視頻我們會講到什麼是色彩管理、顯示的處理流程還有目前 Android 和 Apple 的差異。

什麼是色彩管理

什麼是色彩管理,簡單一句話講就是「書同文,車同軌」。

比如一個攝影師,一定是希望大家在看到他的照片時,不管用什麼設備、什麼螢幕看,顯示出來的色彩都跟自己修圖的時候看到的一樣;反過來,我也希望看電影的時候,螢幕的顏色跟導演剪片子的時候看到的一樣,最大程度感受到色彩對氛圍和情緒的推動。

這是一個非常樸素的需求。但這個樸素需求的背後,卻是非常複雜的一件事,因為攝影師或者導演不可能知道每個人螢幕顯示顏色的性能究竟如何。大家用的螢幕色域不一樣、顏色的準確性不一樣,如何能統一顯示效果?

這就是色彩管理要解決的問題。在手機螢幕素質越來越高的今天,色彩管理反而越來越難做,道理很簡單,四五年前大家用的螢幕,不管是手機、顯示器還是電視,只能覆蓋 100% 的 sRGB 色域,所有的內容都按這個標準做就行了,也不需要做什麼管理。可是到了今天,不僅是內容生產端對廣色域開始有需求,顯示屏的色域也越做越廣,RGB 的三通道值不能唯一確定顏色了,我們還必須把色域考慮進去,因此對齊標準這件事就格外的重要。

不能規範地使用顏色,可能會讓內容被錯誤地映射。這影響的不僅僅是創作者的本意,看久了也會讓我們的眼睛產生疲勞和不適。

總之,創作者的訴求和硬體規格的升級,都是色彩管理得做好的必要性。

色彩管理的流程

校色

色彩管理大致流程分為校色、識別、映射三步,缺了哪一步都不行。

首先螢幕本身需要校色,它解決的是一致性的問題。讓生產出來的螢幕,有相對一致的色域覆蓋和色差是一切的基礎。不過這一步可以說手機平板做的遠好於大屏設備,不僅因為前者校色的參考點數量更多,在色域覆蓋和色准等關鍵指標上,手機和平板一般也更好。

但光有校色還遠遠不能滿足對色彩的管理,接下來我們聊聊識別。

識別

識別這一步是系統要知道內容,是基於什麼色域、什麼白點、什麼灰階製作的,它相當於一個內容的身份證。

如果是 Photoshop 這樣的作圖軟體,在新建一個文件時我們可以選擇新建廣色域的文件。修完圖保存時,選項中同樣也會提示我們是否嵌入顏色配置文件——這就是在文件里嵌入了標記,學名叫 ICC 配置文件。我們在 Mac 上查看文件信息時,就能在顏色描述文件這一項看到 sRGB 或者 Display P3。系統讀取到這個標記,就知道要怎麼還原色彩才是正確的。

當然這是最規範的情況,現實狀況是,我們日常看到的大把圖片或者視頻,或因為作者沒有色彩管理的意識,或因為經過壓縮,最後沒有這個標記。此時系統一般會把這類內容默認按照 sRGB 來處理,算是個兜底方案。

我簡單提一嘴視頻的配置文件:圖片相對簡單是因為圖片製作領域用 D65 白點和 gamma2.2,基本是大家約定俗稱的規範。所以 ICC 配置文件只需要標記色域這一個信息就夠了。但視頻要複雜很多,有基於 RGB 色彩空間的,還有基於 YUV 色彩空間的,搭配前面說到的色域、白點色溫、灰階響應,會有非常多的組合。所以視頻的標記參數不是一個而是三個,這個部分我就不多解釋了,感興趣的朋友們,可以看看 Tao 老師上傳的視頻,我會把連結貼到下面評論里。

接下來就是最後一步,映射。

映射

按理說有了前面兩步打基礎,映射不就是告訴螢幕什麼時候用廣色域,什麼時候不用不就解決了嗎?

但其實映射是真正考驗功力的地方,因為螢幕是不管你同時顯示多少種色域的內容的,螢幕硬體決定了無論支持多少個色域,最後只能選一個色域進行顯示,不存在說左半面螢幕顯示 sRGB 色域,右半面螢幕顯示 P3 色域的情況。

但是硬體做不到的事,軟體可以彌補,這也就是映射的作用。映射算法最終要把不同色域、不同白點、不同灰階的內容統一到一個容器、用一個標準來重新表示。這個容器一般就是相對更大的一個色域。經過這樣一輪計算過後再把數據傳給螢幕,最終螢幕獲取到的信息,就只有每個像素對應的 RGB 值以及螢幕應該處在什麼色域顯示它們了。

而因為 P3 色域是可以把 sRGB 完整包裹進去的,也就是說 sRGB 色域包含的每一個顏色在 P3 里都有唯一對應。比如說 sRGB 的純紅色是 sRGB 的 255,0,0,它等同於 P3 色域中的 234,51,35。

顏色還是那個顏色,但因為容器變了,表示方法就變了。所以只要這個容器本身沒有超過螢幕硬體支持的色域,那所有的內容都可以在這個新容器內被正確的重新表示,那螢幕也就可以正確的顯示所有顏色。

這也就是映射最複雜的地方——如果螢幕不支持廣色域,那超出 sRGB 色域的內容又該怎麼顯示呢?如果不做色彩管理,顯示的結果就一定是錯的嗎?

接下來我用更詳細的例子,帶你看看每個系統色彩管理的實際策略。

各家具體表現

在講具體各家表現之前我們先控制一下變量。

這個圖片相信很多人是比較熟悉了,這是 Google 做的一張廣色域測試圖,這個圖片的顏色配置文件是 Display P3,因為這期視頻實際是用 sRGB 色域來製作的,為了方便大家觀看,對這張圖做了降低飽和度的處理,不過這不影響我說明問題。

這個圖使用了兩種紅色,全都在 sRGB 覆蓋面積之外。如果你的設備支持色彩管理,螢幕也支持廣色域,那麼你就能在圖中看到一個鮮艷的紅色 Android 機器人;如果色彩管理當中任何一個環節出現問題,顯示的效果都會出錯,並且錯得還各不相同,後面我都會用這一張圖做舉例說明。

Windows

我本來還洋洋洒洒寫了兩段關於 Windows 色彩管理的,但我想了想,真的沒有必要,有需要的朋友請另去查教程。

我自己是從來不敢在 Windows 上嘗試色彩管理的。只能說一句:能管理,但是特別複雜。在 Windows 上經常會遇到一個軟體是對的但剩下全錯的情況,十分災難,真的有需求的專業用戶,請遠離 Windows 去試試 Mac。

同時建議普通用戶挑顯示器的時候,選個能覆蓋滿 sRGB 色域的就夠了,廣色域會讓所有東西都變得非常鮮艷,但看得時間長眼睛真的很累,純粹是給自己添堵。

Android

再來是 Android ,一句話總結 Android,有色彩管理,但也不全有,並且每家的表現各不相同。

這裡因為篇幅的關係,我不會雨露均沾。這塊我相對比較懂,原來看競品做色彩管理的時候,主要就三步棋,就能知道他大概做的怎麼樣:

在不同的色彩模式下看測試圖實際效果

看圖的時候截圖,看截圖的顏色有沒有改變

接下來咱們一起看看華為和小米在色彩管理上的實際表現,這是兩個非常有代表性的品牌,我們來看看他們是怎麼處理這個問題的。

首先第一步,華為從 Mate40 這一代開始,出廠默認都是標準色域,而小米出廠是自適應,把華為桌面的截圖放到小米螢幕上,你就能看到華為標準色域相對是寡淡的,UI 和壁紙都處在 sRGB 的色域之內,小米看上去就要鮮艷很多。

按照我既往的經驗,默認設置基本可以覆蓋 60-70% 的用戶,所以這個選擇就非常關鍵,它會影響你後續的所有動作,但我先按下不表,接著往後看。

來到圖庫,可以看到華為正確的顯示出了圖片中的機器人,且顏色正確,小米是 P3 的純紅色,看不到機器人。

這裡小米出現了什麼問題我可以給大家稍微解釋一下,有點繞,大家仔細聽。

結論是非常反常識的,小米在默認自適應不是沒有做色彩管理,恰恰是做了色彩管理才會變成這樣,但他色彩管理選擇的容器是 sRGB,他讀取到了這個圖片是 P3 色域的,不能完整顯示,所以他把所有顏色拉回 sRGB 色域內,放在了色域的邊界上,相當於超過 sRGB 色域的顏色直接切掉了。

這種映射方法就是我們常說的 Clip 或者叫相對色度映射。在這樣的映射策略下,顏色的飽和度得到了最大程度的保留,但顏色之間的相對關係全部喪失了,所以這個測試圖會變成一個 sRGB 的 255,0,0 的純色圖。然後數據送到螢幕之前,再比較粗暴地把 sRGB 標記去掉改成螢幕的色域。這樣最終顯示到螢幕上,如果螢幕在 P3,那他就是 P3 的純紅,如果螢幕在最廣色域,那它就是最廣色域的純紅。

大家不要說小米不行啊,你可以試試你們的 Android 機,前幾年大家基本都是這麼做的。前面都還好,問題就在最後一步,事實上他要是不往外拉色域,這就是 sRGB 色域下最正確色彩管理方法,之所以要這麼做也很好理解,如果不拉,他就只能顯示 sRGB 色域了,看起來就不夠鮮艷。

其實沒有那麼多人真的在乎色彩管理,更多人可能就單純想要個鮮艷、好看的螢幕,直接把 sRGB 的內容強制拉到廣色域,是最直接、最簡單的方式。

然後就是華為的默認模式,這其實沒什麼好說的,是標準的廣色域色彩管理流程,他識別到了 P3 色域的測試圖之後,就把他正確的映射到了 P3 色域,並且螢幕上其他 sRGB 的顏色,比如圖標和有顏色的按鈕,也正確的重新映射到了 P3 色域,顏色並沒有發生改變。

到第二步截圖,你就能看到我前面不是瞎說,小米的截圖拿到電腦上,色彩描述文件顯示 sRGB,並且測試圖變成了 sRGB 的純紅色,就說明之前螢幕上顯示出來的 P3 的紅色是最後一步拉上去的;而華為這邊用了一個特殊的色彩描述文件,在支持廣色域顯示的 MacBook 上,你也能在截圖中看到紅色的機器人。

其實華為拍的照片也是這個描述文件,我問了下華為的朋友,基本可以認為跟 Display P3 是一個東西,所以華為拍照也做了廣色域。

然後第三步的三方應用和錄屏我放一起說吧,因為這塊大家表現很類似,三方應用適配是老大難的問題,我測試了他們自帶的瀏覽器,這其實都屬於第一方應用適配了,但小米和華為在任何色彩模式下,都沒有色彩管理,或者說沒有支持所有類型 ICC 的色彩管理/

沒錯,ICC 是分了好多版本的,不過這塊跟我要聊的主線關係不大,我也不多解釋了。錄屏呢,包括 iPhone 在內的所有手機一律都是 sRGB SDR 視頻,所以視頻里大家都是 sRGB 的純紅色。這塊我理解是,廣色域的 SDR 視頻其實是個很小眾的東西,沒有誰會做這樣的內容,額外支持他沒有必要,廣色域在視頻領域一般都是綁在 HDR 上面,所以這個地方不做處理,我沒有什麼挑剔的。

接下來我們看看小米和華為非默認色彩模式下的表現:

小米的原色模式跟華為的默認模式是一模一樣的,圖片正確按照廣色域顯示,UI 圖標之類的都重新映射在 P3 色域之內,沒有出現默認模式的過飽和的問題,但是華為的鮮艷模式跟小米的默認不一樣,他竟然在這個模式下,也能正確的顯示出這個機器人。

為什麼華為和小米表現不一樣,我想這個結論說出來,又是非常反常識的,其實是因為他在這個模式下沒有色彩管理,華為在識別的階段不識別任何內容的標記,直接讀取 RGB 值,他就不會有小米 Clip 這一步,這樣顏色相對關係保留住了,最後也經過拉伸色域,你看到的就是跟標準模式一樣的廣色域機器人。

看起來這樣做好像沒什麼問題,但實際上,不管是 sRGB 的純紅色和 P3 的純紅色,在這個模式下都會被強制拉成 P3 的純紅色,除了廣色域的內容以外,其他的顏色還是過飽和的。所以嚴格意義上來說,即使他把測試圖的顏色圖案都還原出來了,他依然不能叫色彩管理。

然後截圖兩邊表現又不一樣了,首先小米在原色模式的截圖,跟自適應模式不一樣,前面截圖顏色描述文件是 sRGB,這裡變成了跟華為類似的標記,所以截圖裡面所有的內容也都是正確的,華為我們剛說了鮮艷模式下 sRGB 的紅色也會被拉到 P3,但是截圖里又變得正常了,你們可以看看我這張截圖,我在實際看這個畫面的時候,背景網頁里那個 sRGB 的紅色跟小窗測試圖,是一模一樣的紅色,但是在截圖裡,他們被很好的區分開了,背景里的紅色重新回到了正確的 sRGB 色域,在非色彩管理模式下截圖依然是正確的。這一點我之前確實是沒想到。

我們到這裡總結一下 Android 的表現,這倆家是很有代表性的,首先他們的鮮艷模式為了照顧主觀的觀感都讓螢幕看起來鮮艷通透,基本都是強制拉伸到 P3 色域,如果做了色彩管理,就跟小米自適應模式表現一樣,如果沒做色彩管理,就跟華為表現一樣。

至於判斷做不做的條件,其實是看相機能不能拍 P3 色域的照片,華為、vivo 這些支持拍 P3 色域照片的產品,鮮艷模式都不會做色彩管理,因為這樣可以保證照片中鮮艷的顏色不會像小米那樣被切掉,保持每個色彩模式下,照片的觀感是很一致的。

你看這是不是又很反常識? 支持拍廣色域照片的,在鮮艷模式下恰恰不能做色彩管理

其次他們倆的標準模式,都做了色彩管理,UI 圖標顏色正常沒有過飽和,廣色域照片可以正確映射。這是顏色顯示最準確的模式,到這如果你理解了我前面說的映射邏輯,其實就能根據現象大致判斷所有 Android 手機的策略,無非就是五種情況,高低飽和的純色,都是在 sRGB 下作了色彩管理,區別是最後有沒有拉到 P3,低飽和機器人,是 sRGB 下沒做色彩管理,高飽和機器人,如果其他顏色也是對的,那就是是正確的映射,如果其他顏色過飽和,那就是沒做色彩管理強制拉到 P3。

最後就是截圖、小窗、三方應用這些全部都要做特殊處理,像華為就想得很細,截圖甚至跟顯示不在一個鏈路做處理。截圖可以說永遠是正確映射的。但三方應用 Android 這邊基本上都是不支持的。

到這我說實在話,如果你沒被繞暈,我只能說你肯定是同行,之前接觸過相關的功能。這些東西我原來跟開發溝通需求的時候都經常被繞暈,真的是超級複雜的一整套解決方案,相機能不能拍廣色域,相冊怎麼顯示,小窗、縮略圖怎麼處理,三方應用怎麼適配,分享廣色域圖片要注意什麼……最要命的是,每一個螢幕的顏色模式都可能要單獨給出一個解決方案,普通用戶是完全不能理解的。

那 Android 聊完,接下來我們聊聊 Apple 的方案,最後我會給你講一講為啥 Android 的色彩管理會做的這麼擰巴,作為 iOS 護城河的視頻,我可能用了 3/4 的篇幅講競品,但其實前面的糟心都是為了襯托 Apple 的優雅。

Apple

如果一句話簡單理解 Apple 的色彩管理,那就是 Android 的標準模式——但是做到了極致。

Apple 從一開始就沒有顏色模式給你選擇,沒有什麼鮮艷或者生動模式,因為這個東西壓根就是錯的,Apple 要的不是好看,而是正確。每個設計圖、每張照片,他們在生產者的螢幕上長什麼樣,他們在你的手機或者電腦上,就應該是什麼樣。至於說鮮艷不鮮艷、好不好看,那是做這個內容的創作者應該考慮的事,不管他是艷了還是淡了,都用不著顯示這一頭添油加醋,顯示屏要做的唯一一件事就是正確的顯示出來。

這是 Apple 的做事邏輯,他可能不討喜,但他是正確的。這也是 Android 和 Apple 產品上最本質的區別。反映到實際行動上,Apple 的色彩管理是全自動的,不論你螢幕上同時有多少種色域的內容,他都能正確地顯示出來。

我們還是按照三步走看看 Apple,圖庫正常、截圖正常、瀏覽器里也正常,甚至把測試圖發到微信也都是正常的。並且你手中的每一台支持廣色域的 Apple 設備都是正常的。

事實上要說實際體驗的話,其實就這麼幾句話已經說完了,並且他不是今天或者今年才變成這樣,2016 年 Apple 已經把這套框架搭好用在 iPad Pro 上了,它確實足夠簡單,這樣的簡單不僅僅是方便用戶理解,也方便開發者適配,開發者不需要管各種情況顏色顯示是否一致,不需要管色域的映射,你只需要管一件事:你的應用是不是需要廣色域。

我用小號上傳了 WWDC 2016 年的一節公開課,有中文字幕,連結在文末。感興趣的朋友可以看看 Apple 幫開發者解決了多少問題。

我就舉一個我最驚訝的點:

公開課里 Apple 對開發者們說,如果你不需要廣色域,那你什麼都不用改,原本應用里所有的顏色在廣色域螢幕上依然會正確的顯示,但如果你的內容需要廣色域,並且擔心在老設備上顯示的效果,在 Xcode 裡面你可以只使用新的廣色域的素材和資源,而 Apple 可以自動映射好一套效果大致接近的 sRGB 素材,並且在 App Store 分發時會區分用戶機型,分發不一樣的素材,如果用戶的設備支持廣色域,就會分發廣色域的資源,如果是不支持,那就會分發 sRGB 的資源,你不需要把所有素材都打包在一起,這樣可以最大化的減少你應用的大小。

老實說我第一次看到的時候我真的人傻了,我們在 2019 年還在琢磨怎麼能推動開發者適配的時候,人家在 3 年前就替開發者想好了怎麼無痛兼容舊機型了,我自打那以後深刻的理解了一句話:完成度摳到極致就是降維打擊。Apple 厲害的從來不是創新,而是把點子落實到紙面的完成度,聊到這我又想起 SE3 那期視頻說的,給 LCD 機型做 local HDR 顯示,是從一開始就想好了怎麼兼容所有設備。

聽完我這個例子,你還覺得他們真的只是懶得去掉嗎?

總結

事實上你可以看到 Apple 的疊代思路是非常清晰的,我們先拋開 Mac 不談,至少 Apple 的手機在不支持廣色域顯示之前,其實是沒有色彩管理的,所有內容都在 sRGB 色域顯示,螢幕的色域也一直是 sRGB。而一旦廣色域螢幕落地 iPad Pro,色彩管理和配套的開發者課程也隨之而來,再然後 iPhone 7 可以拍廣色域的照片,完成了從拍攝到顯示的完整閉環。

回過頭看,Apple 一步一步走得很踏實。你可以說他慢,但是你不能不承認的是, Apple 每次都是斬釘截鐵的告別舊時代,雙手擁抱新時代,認準一條路。他不會給自己留退路,廣色域是這樣、HDR 是這樣、arm 架構的電腦也是這樣。這不僅僅是自信的表現,也同時向開發者傳遞一種態度: 我是不會搖擺的,你最好跟著我一起

反觀 Android 這邊呢,是典型的硬體先行、軟體填坑,每一家只要用上廣色域的 OLED 沒有不宣傳螢幕鮮艷的,但廣色域的內容遠遠沒有跟上。再加上手機又不能拍廣色域,OLED 色域再廣,如果顯示的色彩跟原來 LCD 一樣,那用戶不得罵娘嗎?所以大家紛紛選擇拉伸色域,充分提現廣色域的優勢,顏色是不是正確在這件事的決策中間,是最先被捨棄的,這樣一年一年,等到大家重新開始意識到色彩管理的重要性時,一回頭髮現包袱已經這麼大了。

這也是為什麼 Android 的色彩管理做的那麼擰巴的原因,因為你不能只做一個正確的、準的模式,還必須要有一個色彩鮮艷的模式,不然用戶會覺得買你 OLED 螢幕的手機幹嘛,但是你把所有顏色都弄成廣色域,那廣色域這個標準又有什麼價值?如果把所有 SDR 的內容都增強到 HDR,那 HDR 這個標準又有什麼價值?我們都知道廣色域和 HDR 是未來,但落到實際在做的事好像不是快速擁抱新標準,而是磨磨蹭蹭、在舊標準里內卷。

因為鮮艷模式的存在,現在已經有 UI設 計師開始主動降低顏色飽和度,以至於不讓顏色太過於飽和了,這難道不是在開倒車嗎?難不成等到螢幕支持 bt2020 色域的那天,Android 還要做一個強制拉伸到 2020 色域的模式嗎?只有鮮艷的才是好看的嗎?

說實話這些問題長久以來一直困擾著我,但是積重難返,這不是一兩個人可以左右的,這裡如果有做車機和 AR/VR 的從業者,看到我這個視頻希望你們一定好好考慮一下。這兩個行業才剛剛開始,沒有 Android 的包袱,現在改變代價沒有那麼大,不要像 Android 一樣,拖到改不動必須要騎牆的那一天。

到這我必須得提一下華為了,前面提到了,華為從 Mate40 開始默認用標準顏色模式,自適應顯示 P3 的內容,默認的分量相信我不用多解釋了,我複述一下他們的產品負責人發在微博上的話,他說這一次 Mate 40 Pro 默認採用的是標準的色彩模式,我相信這也帶了一個好頭,希望它能讓用戶接受第一眼看上去不那麼鮮艷,但是真實的顏色,最終對大家都是好事。

這是非常大膽的決定,他直接挑戰了用戶的固有認知和使用習慣,他在重新告訴用戶什麼是對的、什麼是好的。這從來都不是一個容易的選擇,但他依然願意這麼做。這份勇氣和決心,我真的打心眼裡佩服。

最後,這期其實絮絮叨叨聊的很瑣碎,為了方便大家理解,我也去掉了很多內容,像是製作、拍攝還有分享相關的部分我就都一筆帶過了,色彩管理真的是一門龐大的學科,涵蓋的知識相當廣,這個視頻我不敢說教會了大家什麼,但是希望能幫感興趣的朋友入個門。如果能夠啟發大家對一些事情的思考,那我們真的會特別開心,這期算是繼 iPhone 相機那一期之後又一次挑戰自我的視頻了,希望願意看到這的朋友們能多多三連,這樣的視頻確實不好做。

那在最後的最後我還是想留一個問題給大家,如果現在你們是這個功能的產品經理,你會怎麼選?是做更容易的事、照顧用戶的主觀體驗,還是做困難的事、告訴用戶什麼是正確的?真到了那一天,你有勇氣說服所有人做出這個決定嗎?

原文連結:

https://sspai.com/post/74822?utm_source=wechat&utm_medium=social

作者:兩顆皮蛋

責編:克萊德

/ 更多熱門文章 /

文章來源: https://twgreatdaily.com/zh/b271a6d42514ff730609a48a7a4de272.html