3D LUT --色彩校正的利器

3D LUT --色彩校正的利器

來自專欄 All in Camera18 人贊了文章

3D LUT

是在電影和顯示工業里廣泛使用的技術,最近幾年被引入到很多ISP的設計中。在電影工業中,由於播放設備的不同,經常需要在不同色彩空間之間做映射,3D LUT 的一個功能就是被用來做色彩空間映射。在顯示工業里,很多顯卡或者電視都內置3D LUT色彩轉換功能。

3D LUT的原理很簡單,RGB 3個1D LUT組成3D LUT,輸入的RGB三個通道顏色值按照3D LUT的三個查找表做映射,得到轉換後的顏色。

如上圖所示,3D LUT是一個立方體,不同的設計有不同的節點數,以及節點的bitdepth,比較典型的33x33x33的節點數,節點之間的輸入會根據相鄰兩點的插值算出輸出。

在ISP以往的設計中,無論是CCM還是memory color enhancement,這些色彩運算都在2D 色域上進行的。如下圖:

而實際色彩空間是3維的,如下圖

在2D色域進行的色彩映射只能是把色彩的gammut擴展,而gammut內部的大量顏色,是無法準確轉換的。有了3D LUT,則可以直接精確控制n x n x n 個 節點的顏色。

舉個實際的例子來說明為什麼2D的色彩映射對ISP來說是不夠的。

在基於2D色域校正或者色彩增強的處理中, 把膚色(patch2)校正到傾向的顏色。

基於2D色域的做法是在hue/saturation 模型進行角度(hue)轉動和徑向(saturation)的移動,

如果是在CCM中進行膚色調整這個操作,由於CCM是一個global的矩陣操作,這樣就會影響到其他的顏色。

如果是在YUV域做色彩的映射,有的ISP叫color

enhancement,它可以把指定色彩區間的顏色映射到一個目標顏色上,如果把2映射到2的位置上,如下圖所示。

這種方法的問題是,一方面顏色範圍的選取非常難以把握的,選多了會碰到其他顏色,選少了可能陰影或者高亮位置的膚色就沒有被處理到。如果要處理多人種的膚色,用這種方法工作量也非常大。

而且歸根到底,基於2D色域的操作,都不可避免的碰到不想碰到的顏色。這個根本問題只能依靠3D LUT來解決。

當下比較典型的設計是1D LUT 加 3D LUT的方案,1D LUT 可以先把gray scale 和gamma 調整好,剩下的色彩映射靠3D

LUT來搞定。

這樣的好處是我們可以配合contrast/gamma 的變化,應用不同的3D LUT,保持關鍵色彩的恆定性。

3D LUT 本身的原理比較簡單, 但是3D LUT的tuning 工具是比較難做的,它與2D色域的色彩增強也面臨相似的問題:

顏色範圍的選取非常難以把握的,選多了會碰到其他顏色,選少了可能陰影或者高亮位置的膚色就沒有被處理到。

比較著名的一個3D LUT tuning 工具3D LUT creator在這方面做的比較好。

以膚色調整為例,下圖是目標膚色的照片:用戶需要選取high light, middle tone 和 shadow 三個膚色樣本,

工具會記錄下這三個膚色樣本的HSV值。

在要處理的照片上,同樣選取high light, middle tone 和 shadow 三個膚色樣本。

這個工具會自動計算出來最終的3D LUT,表面上看,用這種方法計算出3D LUT本身並不難,

但是在處理過渡的顏色上,如何避免出現banding等瑕疵實際上是很複雜的,需要顏色工程師深入研究才能解決。

而這才是工具製作者的不傳之秘。


推薦閱讀:

本周大新聞|MWCS上海展來襲,vivo推ToF 3D技術
3D 電影亮度偏暗,影院為了省錢而調暗燈泡?
類似於這種摺紙3d海報是怎麼做出來的?
顯卡性能發展到2015年,是否顯卡的性能發展已經碾壓了遊戲效果的發展?
魔獸世界的裝備外形是如何做到所有種族,性別通吃匹配的?

TAG:調色 | 3D | 計算機視覺 |