ISP演算法:深入聊聊lens shading

搞顏色的小黃發表於2021-04-14

一、簡介

關於什麼是成像中的lens shading這裡直接引用一句英文的definition:“The term shading describes the light fall-off or color variation from the sensor center to the corners that do not originate from the captured scene”。是的,lens shading一般是分為light fall-off和color variation,一般我們稱為luma shading(光學上稱為vignetting)和color shading。為了更直接直觀的表述,如下圖所示,相信我們很容易就能區分兩種shading。

我們再看一張,可以發現lens shading對成像效果的影響還是非常大的,是不可容忍的。

成因分析:

一切成像的最終效果與人眼的差異其實我們都可以從軟硬體兩個角度來找到成因。luma shading的形成原因可以簡單的由凸透鏡成像來解釋,如下圖所示,成像中心的聚焦光線要比四周多,因此亮度也要大於四周。此外,機械裝配過程中的一些誤差也可能導致一定程度的luma shading。不過luma shading的校正是較為容易的,一般是中心到四周按照cos4θ的規律變化的。

 而對於color shading而言,情況就複雜的多。首先,我們來看看手機鏡頭的組成,手機鏡頭主要包括了鏡頭固定物(Lens Holder)、鏡頭(Lens)、紅外截止濾波片(IR-cut filter)、影像感測器(Image Sensor)和印製電路板(PCB),其中IR-cut filter和image sensor是引起color shading的主要原因。

紅外截止濾波片位於鏡頭和影像感測器之間,目的是為了消除投射到Sensor上不必要的光線,防止Sensor產生偽色/波紋,從而提高色彩還原性。Sensor可以感知人眼感知不到的紅外光和紫外光,因此需要使用濾波片進行濾除,否則會導致紅綠藍畫素點的亮度值與人眼觀察到的亮度值存在較大的差異。那麼紅外截止濾波片是怎麼帶來color shading的呢?如下左側圖,108和110分別IR-cut filter和sensor,從該圖可以發現光線在不同的入射角度下經過IR-cut filter後的情況是不一樣的:入射角度越大,入射光線的光譜波長朝著較短的方向變化(這也就是意味著小sensor的廣角鏡頭color shading更為嚴重)。這種不一致性表現在右圖上可以發現:三種不同入射角度下通過IR-cut filter後的紅色分量是不一樣的,因此就帶來了中心與四周的顏色不一致。

瞭解完IR-cut filter,這裡我們再來看看sensor對color shading的影響。sensor的結構如下圖所示,主要有微透鏡、濾色片和感光片。為了使感光面積不受感光片的開口面積影響,一般會在其上方增加一層微透鏡(Micro Lens),用於收集光線,提高感光度。但微透鏡的主光線角CRA(Chief ray angle)值與鏡頭的CRA值一般是不匹配的,因此也會導致嚴重的偏色問題。這種情況有的文獻也稱為Pixel crosstalk color shading。

二、校正

說了這麼多lens shading的成因和給成像效果帶來的巨大影響,那麼怎麼去有效地校正呢?從全球各大公司(如蘋果、高通、三星、ARM等)公佈的文獻資料來看,大致實施的校正方法可分為以下幾種:

①基於徑向的shading correct演算法

這種校正演算法比較簡單粗暴,其理論依據就是以影像中心位置為base,按照畫素點到中心點距離大小進行不同比例的補償(上面有講到,中心到四周按照cos4θ的規律變化的),換言之就是直接擬合了一條補償函式,距離是自變數。這種方法實現起來雖然簡單,針對shading對稱性比較好的情況(圓心恰好在中心點)很有效,但是如果對於鏡頭裝得傾斜了,或者存在區域性不良的情況就不好用了。

②基於網格的shading correction演算法

這種演算法實現將影像分成n x m個網格,每個網格的四角都有一個校正係數,然後把這個nxm個格子的校正係數存起來。需要說明的是,這些校正係數可以通過拍攝一張平坦影像來進行標定。在演算法執行時,根據每個畫素的座標,就可以知道這個畫素落在哪個網格里,那麼就可以在該網格內部運用插值演算法(或者cos4θ、logN)來模擬衰減曲線,就可以計算出每個畫素的校正值。

③dynamic shading correction

上述兩種演算法在面對一些複雜混光場景的case都會出現補償不足的缺點,很難有效地cover所有的應用場景。於是就出現了這種基於場景來動態調整的shading correction演算法,該演算法目前可查的資料不多,具體的實現方案我也沒有不是很瞭解,但是大致的原理是通過濾波後的影像進行重建影像,這裡貼上知乎@張興的回答。歡迎對這部分內容感興趣或者比較瞭解的大佬評論交流!

 

 

 

 

參考資料:

https://www.image-engineering.de/library/image-quality/factors/1073-shading

https://zhuanlan.zhihu.com/p/47207354

https://blog.csdn.net/yxyx13120297/article/details/85206426

 

相關文章