關於什麼是成像中的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對成像效果的影響仍是很是大的,是不可容忍的。函數
成因分析:.net
一切成像的最終效果與人眼的差別其實咱們均可以從軟硬件兩個角度來找到成因。luma shading的造成緣由能夠簡單的由凸透鏡成像來解釋,以下圖所示,成像中心的聚焦光線要比四周多,所以亮度也要大於四周。此外,機械裝配過程當中的一些偏差也可能致使必定程度的luma shading。不過luma shading的校訂是較爲容易的,通常是中心到四周按照cos4θ的規律變化的。3d
而對於color shading而言,狀況就複雜的多。首先,咱們來看看手機鏡頭的組成,手機鏡頭主要包括了鏡頭固定物(Lens Holder)、鏡頭(Lens)、紅外截止濾波片(IR-cut filter)、圖像傳感器(Image Sensor)和印製電路板(PCB),其中IR-cut filter和image sensor是引發color shading的主要緣由。blog
紅外截止濾波片位於鏡頭和圖像傳感器之間,目的是爲了消除投射到Sensor上沒必要要的光線,防止Sensor產生僞色/波紋,從而提升色彩還原性。Sensor能夠感知人眼感知不到的紅外光和紫外光,所以須要使用濾波片進行濾除,不然會致使紅綠藍像素點的亮度值與人眼觀察到的亮度值存在較大的差別。那麼紅外截止濾波片是怎麼帶來color shading的呢?以下左側圖,108和110分別IR-cut filter和sensor,從該圖能夠發現光線在不一樣的入射角度下通過IR-cut filter後的狀況是不同的:入射角度越大,入射光線的光譜波長朝着較短的方向變化(這也就是意味着小sensor的廣角鏡頭color shading更爲嚴重)。這種不一致性表如今右圖上能夠發現:三種不一樣入射角度下經過IR-cut filter後的紅色份量是不同的,所以就帶來了中心與四周的顏色不一致。get
瞭解完IR-cut filter,這裏咱們再來看看sensor對color shading的影響。sensor的結構以下圖所示,主要有微透鏡、濾色片和感光片。爲了使感光面積不受感光片的開口面積影響,通常會在其上方增長一層微透鏡(Micro Lens),用於收集光線,提升感光度。但微透鏡的主光線角CRA(Chief ray angle)值與鏡頭的CRA值通常是不匹配的,所以也會致使嚴重的偏色問題。這種狀況有的文獻也稱爲Pixel crosstalk color shading。it
說了這麼多lens shading的成因和給成像效果帶來的巨大影響,那麼怎麼去有效地校訂呢?從全球各大公司(如蘋果、高通、三星、ARM等)公佈的文獻資料來看,大體實施的校訂方法可分爲如下幾種:io
①基於徑向的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