這篇文章主要提煉于ICCV 2019 Tutorial: Understanding Color and the In-Camera Image Processing Pipeline for Computer Vision。里面深入淺出地講解了很多ISP中的基礎知識,這里主要對顏色相關的部分做一點總結。
假設不成立了
相機經常被簡單地看作是衡量光線的設備light-measuring device,而圖像被看作是輻射量化后的結果。這一假設在HDR,圖像匹配,shape from shading等領域都被認為成立。
但實際上相機尤其是數碼相機對進入相機的光線做了很多處理,都是為了生成更符合人眼審美的圖像visually pleasingphotographs。佳能,索尼的相機在同一參數下得到的照片色彩有不同的風格。而不用說后期的軟件階段的PS,在硬件階段就發生了很多操作(on board photo-finishing):
?
所以HDR一般使用raw數據,因為raw數據是線性的,是和曝光量成正比的,或者通過建模從rgb圖恢復線性rgb。
顏色是波長
牛頓爵士通過色散實驗證明了日光是不同的顏色混合,而現在我們知道不同顏色的光波長不同。
對于人眼來說,人眼細胞分為錐狀細胞cone和桿狀細胞rod,前者負責感應顏色,后者對亮度更敏感,處理暗處的環境。
但是cone只有三種細胞,且這三種細胞的感應曲線不是沖激型的,這意味著同一個細胞對不同波長都有響應。三種感應曲線進一步疊加得到最終人眼的感應曲線。而物體的輻射波長也是有一定帶寬的,這就造成不一樣的波長輸入,比如卷心菜和綠色墨水的輻射,在人眼看來可能是一樣的色彩,稱為metamers。
?
?Spectral power distribution (SPD)用來表示輻射的波長的分布情況。
顏色分解組合
前面的三種顏色刺激就是Tristimulus color theory。在此基礎上,Grassman’s Law進一步表明了任意顏色是三原色的線性加權組合,這三種基本顏色就像是單位正交基一樣,張成了顏色空間。
?
對綠色最敏感
通過“flicker photometry”實驗,發現人眼對綠色很敏感,綠色只需要很低的強度就能被人識別到。實驗把某一波長的光和refernce光以17Hz的頻率交替打在背景板上,逐步加強實驗波長光線的強度,直至人眼感覺不到閃爍。所需強度越小說明對該波長越敏感。可以看到,綠色所需的強度是最小的。
?
。
CIE1931 RGB
既然任意波長的光都可以分解為RGB三原色,那么遍歷各個單色波長,可以得到三原色對應的三個權重參數。
國際照明委員會在1931年采用了700nm的紅,546.1nm的綠,435.8nm的藍作為三原色,邀請了300多名觀察者重新做了顏色匹配實驗,最終得到的實驗數據.
?
需要注意的是有時候只靠融合三原色無法得到和test color相近的顏色,這時需要把顏色分量疊加在test color上,這就相當于RGB的系數是負數,所以最終的權重曲線有負數:
?
CIE1931?XYZ
CIE RGB由于有負數的存在,不方便人理解。但如果重新選取RGB基準色,重新做顏色匹配實驗又未免有點麻煩。CIE做法是基于CIE RGB推出了XYZ,可以認為是將RGB的基向量變換得到了新的基向量XYZ。
?
?這樣就可以得到光譜中每種單色光在XYZ坐標系下的坐標。此時xyz下已經沒有了負數:
?
色品圖和馬蹄圖
rgb的權重歸一化之后就得到了色品坐標:
又因為三個色品坐標和為1,所以可以只考慮r和g的色品坐標,得到一個二維的圖:
?
?和之前一樣,r分量有相當大的一部分落在負數象限。還可以看到實際可取的取值范圍是馬蹄形曲線,如果選擇3個點的連線將馬蹄形包含起來,那么這三個點就可以作為新的基,可以避免權重負數的情況。可以看到,紅色線段就是我們最終的選擇。
首先觀察到XY線段表示的是520~700處r與g的近似線性關系,此時在RGB曲線上可以看到b=0.
顏色匹配包含了亮度的匹配。亮度方程Y=r+4.5907g+0.0601b,因為對綠色敏感,所以g的取值更高。令亮度方程Y=r+4.5907g+0.0601b=0=r+4.5907g+0.0601*(1-r-g),可以得到XZ所在的直線。
最后,選取的為波長503nm出的點相切的直線。最終得到了XYZ。所以就得到了基RGB到XYZ的變換矩陣。
reference:
https://zhuanlan.zhihu.com/p/137639368
聊聊顏色的技術實現(二)—— CIE 1931 XYZ系統 - 簡書
色域馬蹄圖是怎么來的?——CIE 1931 XYZ色彩空間詳解 - 知乎