sswroom
核心会员
核心会员
帖子: 31
注册时间: 2012-08-03 1:42

色空間轉換: 3D LUT vs. Color Profile

現時的色空間轉換方法, 主要分2大類, 3D LUT和Color Profile, 實際上那個方法較好呢?

3D LUT包括Gammaed 3D-LUT和Un-gammaed 3D-LUT。 主要的使用地方有: 顯示卡的色空間轉換, MADVR(?), 電影的製作流程等。
Color Profile是指定義訊源、輸出的色空間, 然後進行Matrix Conversion。 主要的使用地方有: Photoshop, HQMP3HQ等。

以我找到的資料, 它們的分別如下: (不肯定是否正確)
1 3D-LUT的轉換不能還原, Color Profile的方法可以無誤差下還原.
2 3D-LUT通常是用17/33/65 Levels, 精確度較低, Color Profile的方法理論上可以無限精度, 一般情況下為了加速, 通常會降至1024-65536 Levels
3 3D-LUT要用浮點小數乘數, 速度較慢, Color Profile在最優化的情況下, 可以用全整數沒有乘除, 速度較快
4 3D-LUT可以支持修正顏色干擾, 例如紅色去到一定程度會令綠色變強或弱, 3D-LUT可以修正這類情況。但現時大部分的3D LUT也是從Color Profile建立出來, 因此用不到這個功能......
头像
feisty2
帖子: 274
注册时间: 2012-08-05 10:03

Re: 色空間轉換: 3D LUT vs. Color Profile

LUT在实际处理以前要把所有可能结果算出来 处理的时候直接查表调用 这种方法精度当然不行... 高精度计算用这种东西初始化过程直接变成时间黑洞 高精度用的都是实时计算吧 这种没有初始化过程 直接一个像素接一个像素按照表达式现场计算 类似vaporsynth里的Expr 最多可以接受精度高达96位的运算 (三个单精度clip 进行xyz RPN计算)
头像
mawen1250
核心会员
核心会员
帖子: 670
注册时间: 2011-07-24 20:33

Re: 色空間轉換: 3D LUT vs. Color Profile

LUT从实际角度来说有输入精度限制(一般输入24bit就最高了,相当于3D-LUT每通道8bit输入),输出精度则没有限制(64bit double还是128bit quad都没问题)。
而输入精度的问题可以通过插值来弥补,当高精度的输入值没有落在LUT的输入点上时,可以通过相邻点查表结果的插值(简单的就是线性插值)得到最终结果。
sswroom
核心会员
核心会员
帖子: 31
注册时间: 2012-08-03 1:42

Re: 色空間轉換: 3D LUT vs. Color Profile

mawen1250 写了:LUT从实际角度来说有输入精度限制(一般输入24bit就最高了,相当于3D-LUT每通道8bit输入),输出精度则没有限制(64bit double还是128bit quad都没问题)。
而输入精度的问题可以通过插值来弥补,当高精度的输入值没有落在LUT的输入点上时,可以通过相邻点查表结果的插值(简单的就是线性插值)得到最终结果。
插值就是產生誤差的地方, 也是速度慢的其中一個原因....
另一個速度慢的原因是Cache效率不足, LUT的大小最好不要多於Data Cache的1/4, 因為要保留空間作Input/Output的資料, 3D-LUT如果精度提升, 便很容易大於Cache Size。所以現時最高只會用65-Levels 3DLUT

回到 “理论讨论 / Theoratical discussion”