相機的傳感器是將接收到的光信號,轉換成電信號,然後經過模數轉換,將電信號轉換為可以被處理的數字信號。對於ISP來說,一個好的數字信號應該是能夠非常準確的反應出光信號的強弱變化情況。也就是說,數字信號應該和光信號成一個線性變化的關系,圖1.1顯示出某款sensor光信號與輸出的數字信號的關系(圖片轉載自ISP PIPLINE (一) BLC 以及 線性化)。
圖1.1:曝光度與sensor輸出的關系
圖中箭頭為線性關系,細線為實際的曝光關系;從圖中可以看到,整個數據范圍,並不是都很符合線性;中間段比較符合線性關系;在低曝光的地方,會有較為嚴重的偏離,而高曝光段會由於飽和而發生溢出截斷,也就是我們經常觀察到的圖片過曝。這張圖的傳感器應該是比較差的,在手機相機技術大踏步前進的今天,中間段的線性度已經做的非常好瞭,以至於一些旗艦平臺對於中間段的linearization的模塊基本都不用再開啟。
暗電平(Black Level)又會被叫做光學暗電流(Optical Black),sensor廠商一般叫做OB。sensor在無任何光照的條件下,依舊會電流輸出,所以導致在純黑的環境下,采集到的raw數據並不是零,而是有一個基底值。暗電平矯正(Black level correction)的目的就是為瞭扣除這個基底值。一般來說,sensor廠商會在上下兩端預留一些不曝光的行,通過統計這些不曝光的像素,實時計算當前幀的暗電流,然後扣除。即使這麼做已經考慮到每列的暗電平差別;但是處於邊緣的未曝光行,相對於正常曝光區域的像素行,會更加受到PCB layout、電源紋波、模組結構設計等等因素的影響,直接用這個值作為OB值,可能不一定準確。所以sensor廠商,也會根據自己的器件,設計專門的暗電平矯正算法。此時sensor的輸出為:
sensor raw = sensor input - optical black
如果隻是按照上述方式作為模擬信號的輸出,然後經過模數轉換並對信號做數字放大,那麼會發現在接近零的地方,由於信號很弱,暗區的噪聲將信號完全淹沒,放大器將放大噪聲。所以我們會在經過AD轉換之前,對模擬信號墊一個基底值,就是所謂的pedestal,此時sensor的輸出為:
sensor raw = sensor input - optical black + pedestal
對於isp廠商來說,需要矯正的暗電平,其實是這個pedestal;而不是OB,OB其實已經被sensor廠傢給矯正掉瞭。
關於raw域降噪,會在之後的文章中詳細介紹;這裡隻是討論raw域降噪和BLC,這兩個算法的位置關系;是應該把哪個模塊放到前面呢?
raw域的噪聲是比較符合Possion-Gauss分佈的,也就是說,raw域的噪聲水平符合 sigma=k*strength+b 表達的線性關系,像素值越大,噪聲越高,且符合高斯分佈。那麼在接近0附近的噪聲分佈如圖3.1所示
3.1:均值為零的高斯分佈
如果在做降噪之前就已經把BLC給做瞭,那麼一些扣完OB之後小於零的像素點(噪聲),將會直接被截斷為零;也就是說,把噪聲的值放大瞭,這將會導致暗部的噪聲降不下去(因為已經被BLC的操作給截斷瞭)。人眼對暗部是非常敏感的,暗部的信號本來就很弱,而且在isp pipe後面的環節中,會經過awb gain, lsc gain,gamma等放大暗部信號的操作;未被去除的噪聲會不斷的被放大,引發出暗部色偏、暗部噪聲過大、顆粒狀噪聲明顯等畫質問題。
那麼是不是應該在做完降噪之後再去扣除基底值呢?這樣做理論上是沒有問題的,但是實際操作中,也會有一些問題;原因是raw數據比較暗,信號很弱,raw域的降噪稍微做強,很容易把圖像做模糊。所以在實際的isp pipe中,會先扣除一部分基底(扣除瞭,但又沒有完全扣除),然後再過raw域降噪,過完raw域降噪後,再把剩下的基底扣除,至於兩次扣除的比例,就根據項目的畫質需求進行調節。
如果基底扣除不準會出現什麼情況呢?假如暗電平扣多瞭,最後出現的圖像會是什麼樣的表現呢?一般來說,awb gain和lsc gain對於B通道和R通道的補償會大於G通道,所以當BLC模塊扣多瞭,那麼B和R相對於G來說,本應該被放大的量就小瞭;最後就會導致圖像中B分量和R分量減少,圖像整體就會發綠。那麼如果BLC扣除少瞭,圖像整體會往什麼顏色偏呢?
上一篇
下一篇