2020年5月11日 星期一

Tone Mapping (色調映射)



色彩是人眼接收到光線後,會對其波長和振幅的不同而產生出來的反應。

根據 International Commission on illumination (國際照明委員會,簡稱 CIE),

提出的 CIE 1931 x,y chromaticity diagram 所示: 


圖片來源 : wikipedia

人眼的可辨識色度(chromaticity)範圍類似一個馬蹄狀。


在計算機領域,通常會將顏色用 RGB 結構來儲存,

其方法是將顏色分成 3個部分(Red、Green、Blue),

並將每個部份的數值限制在 0~255。

RGB 結構可儲存的色度範圍就叫做 sRGB (standard Red Green Blue),

將 sRGB 和 CIE 1931 x,y chromaticity diagram 合併顯示,可以得到下圖:

圖片來源 : wikipedia

由上圖可以得知,sRGB 並沒有辦法涵蓋所有人眼可辨識的色度資訊


因此,為了要能夠涵蓋所有可識別的色度資訊,需要一個更大範圍的資料結構去儲存,

這個結構就稱為 High-dynamic-range (簡稱 HDR),

而只能儲存部分色度資訊的結構,就相對稱為 Low-dynamic-range (簡稱 LDR)。


既然 LDR 不夠完整,那只使用 HDR 作為色度資料資訊不就好了?

很遺憾的是不是所有裝置都支援 HDR。


在圖像處理上,為了將 HDR 的色度資訊能夠映射在 LDR 上,

所研究的演算法就叫做 Tone mapping。


在本篇文章,我並不打算對 Tone mapping 演算法去做分析與研究,

主要目的是要讀者理解 Tone mapping 的目的與接下來實作 Image Based Lighting 的關聯。

為了能夠將  Image Based Lighting 的渲染結果顯示在 LDR 的裝置上,

有需要做 Tone mapping 的轉換。


如果想了解 Tone mapping 演算法,個人推薦 Delta - Blog by 64 這個網誌,

上面有針對每個常見演算法的詳細介紹並附上實作代碼。


沒有留言:

張貼留言