前言:
ISP(image signal processing),圖像信號處理芯片,在手機攝像頭和車載攝像頭等領域有著廣泛應用,是圖像信號處理的核心芯片。
ISP pipeline 流程圖如下:
光線經過lens鏡頭,投射到sensor上,經過光電轉換成模擬電信號,再由A/D轉換成數字信號,交給ISP芯片進行一系列的處理,在LENS部分也需要進行鏡頭校正、顏色矯正等一些操作。然后,得到的bayer pattern的image,再經過BLC(black level compensation,黑電平補償)、lens shading( lens shading correction,鏡頭陰影矯正)、BPC(bad pixel correction,去壞點)、CIP( demosaic,去馬賽克插值)、DNS(denoise,去噪)、AWB(自動白平衡)、 color correction(顏色矯正) 、 gamma 矯正、 色彩空間轉換( RGB 轉換 YUV),然后輸出 YUV( 或者 RGB) 格式的數據,再通過 I/O 接口傳輸到 CPU 中處理。
各個模塊功能簡述如下:
Bayer pattern:
?
通常把圖像傳感器表面覆蓋的濾波稱為彩色濾波陣列( Color Filter Arrays, CFA) 。目前最常用的濾鏡陣列是棋盤格式的, 已經有很多種類的, 其中絕大多數的攝像產品采用的是原色貝爾模板彩色濾波陣列( Bayer Pattern CFA) R、 G、 B 分別表示紅色、 綠色和藍色的濾鏡陣列單元, 比較形象地展示了此過程。由于人的視覺對綠色最為敏感, 所以在 Bayer CFA 中 G 分量是 R 和 B 的二倍, 在每個像素點上只能獲取一種色彩分量的信息,然后根據該色彩分量的信息通過插值算法得到全色彩圖像。
BLC(Black level Correction):
物理器件不可能是理想的, 由于雜質、 受熱等其他原因的影響, 即使沒有光照射到pixel, 象素單元也會產生電荷, 這些電荷產生了暗電流。而且, 暗電流與光照產生的電荷很難進行區分。Black Level 是用來定義圖像數據為 0 時對應的信號電平。由于暗電流的影響, 傳感器出來的實際原始數據并不是我們需要的黑平衡( 數據不為0) 。所以,為減少暗電流對圖像信號的影響,可以采用的有效的方法是從已獲得的圖像信號中減去參考暗電流信號。一般情況下, 在傳感器中, 實際像素要比有效像素多,像素區頭幾行作為不感光區,實際上這部分區域也做了 RGB 的 color filter , 用于自動黑電平校正, 其平均值作為校正值, 然后在下面區域的像素都減去此矯正值, 那么就可以將黑電平矯正過來了。做了black level 矯正與沒做black level 矯正對比, 沒做black level矯正的圖片會比較亮。
LSC(Lens Shading Correction)
由于鏡頭本身的物理性質, 造成圖像四周亮度相對中心亮度逐漸降低,圖像光照在透過鏡頭照射到 pixel 上時, 邊角處的焦點夾角大于中心焦點夾角, 造成邊角失光。表現在圖像上的效果就是亮度從圖像中心到四周逐漸衰減, 且離圖像中心越遠亮度越暗。為了補償四周的亮度, 需要進行 Lens Shading 的矯正。Lens Shading 的矯正的方法是根據一定的算法計算每個像素對應的亮度矯正值, 從而補償周邊衰減的亮度。
BPC(Bad Pixel Correction)
一般情況下, RGB 信號應與景物亮度呈線性響應關系, 但由于 Senor 部分 pixel 不良導致輸出的信號不正常, 出現白點或黑點。壞點為全黑環境下輸出圖像中的白點, 高亮環境下輸出圖像中的黑點。壞點修復方法通常有兩種:一種是自動檢測壞點并自動修復, 另一種是建立壞點像素鏈表進行固定位置的壞像素點修復, 這種方式是 OTP 的方式。其實壞點有時候是故意放進去的,為的就是作為一個參考標尺。
DNS:
使用 cmos sensor獲取圖像,光照程度和傳感器問題是生成圖像中大量噪聲的主要因素。同時, 當信號經過ADC 時, 又會引入其他一些噪聲。這些噪聲會使圖像整體變得模糊, 而且丟失很多細節, 所以需要對圖像進行去噪處理,空間去噪傳統的方法有均值濾波、 高斯濾波等。但是, 一般的高斯濾波在進行采樣時主要考慮了像素間的空間距離關系, 并沒有考慮像素值之間的相似程度, 因此這樣得到的模糊結果通常是整張圖片一團模糊。所以, 一般采用非線性去噪算法, 例如雙邊濾波器, 在采樣時不僅考慮像素在空間距離上的關系, 同時加入了像素間的相似程度考慮, 因而可以保持原始圖像的大體分塊, 進而保持邊緣。在實際的應用中,小波去噪比較合適,而且在整個pipeline中的各個分段,都會或多或少的應用到DNS的操作,在ISP的整個過程中特別重要,幾乎存在于其各個部分。
顏色插值
當光線通過 Bayer型 CFA(Color Filter Arrays) 陣列之后, 光線打在傳感器上,分別得到了BGR數據,在這里,BGR的數據采樣比為11,是因為人眼對綠色光(550nm)更為敏感,其中G也稱作亮度信息,BR為色度信息。可以看出,在上面的Bayer圖中,每一個pixel都只有BGR數據中的一個,所以就需要利用CIP插值來補充其他兩個通道的顏色信息。才能形成一幅正常的全彩色image。下圖即為采集到的Bayer pattern格式的圖片實際效果圖,可以看出,整體顯示出暗綠色,這也是綠色分量占了一半的原因造成的。另外附有最近鄰和雙線性插值的效果圖。
AWB(Automatic White Balance)
自動白平衡的基本原理是在任意環境下, 把白色物體還原成白色物體, 也就是通過找到圖像中的白塊, 然后調整R/G/B 的比例, 如下關系:R’= R * R_Gain,G’ = G * G_Gain,B’ = B * B_Gain,R’ = G’= B’ AWB 算法通常包括的步驟如下:(1)色溫統計:根據圖像統計出色溫;(2)計算通道增益:計算出R 和B 通道的增益;(3)進行偏色的矯正:根據給出的增益, 算出偏色圖像的矯正。
其中,灰度世界法和完美反射法等都是比較常用且有效的方法。
Gamma Correction
人眼對外界光源的感光值與輸入光強不是呈線性關系的, 而是呈指數型關系的。在低照度下, 人眼更容易分辨出亮度的變化, 隨著照度的增加, 人眼不易分辨出亮度的變化。而攝像機感光與輸入光強呈線性關系, 為方便人眼辨識圖像, 需要將攝像機采集的圖像進行gamma 矯正。Gamma 矯正是對輸入圖像灰度值進行的非線性操作, 使輸出圖像灰度值與輸入圖像灰度值呈指數關系,這個指數就是 Gamma, 橫坐標是輸入灰度值, 縱坐標是輸出灰度值, 藍色曲線是 gamma 值小于 1 時的輸入輸出關系, 紅色曲線是 gamma 值大于 1 時的輸入輸出關系。可以觀察到, 當 gamma 值小于 1 時(藍色曲線), 圖像的整體亮度值得到提升, 同時低灰度處的對比度得到增加, 更利于分辯低灰度值時的圖像細節。
Color Correction
由于人類眼睛可見光的頻譜響應度和半導體傳感器頻譜響應度之間存在差別,還有透鏡等的影響, 得到的RGB 值顏色會存在偏差, 因此必須對顏色進行校正, 通常的做法是通過一個3x3 的顏色變化矩陣來進行顏色矯正。
色彩空間轉換:
UV 是一種基本色彩空間, 人眼對亮度改變的敏感性遠比對色彩變化大很多, 因此, 對于人眼而言, 亮度分量Y 要比色度分量U、V 重要得多。所以, 可以適當地拋棄部分U、V分量, 達到壓縮數據的目的。Laplacian 算子:YCbCr 其實是YUV 經過縮放和偏移的改動版,Y 表示亮度,Cr、Cb 表示色彩的色差, 分別是紅色和藍色的分量。在YUV 家族中,YCbCr 是在計算機系統中應用最多的成員, 其應用領域很廣泛,JPEG、MPEG 均采用此格式。一般人們所講的YUV 大多是指YCbCr。YCbCr有許多取樣格式,。
?
?
如 4∶4∶4,4∶2∶2, 4∶1∶1和 4∶2∶0。RGB 轉換為YCbCr 的公式如下: r?0.5?0.4178?0.0813?128 b?0.1678?0.33113?0.5?128 0.299?0.587?0.114 C?R?G?B C?R?G?G Y?R?G?B
?
?
色彩空間轉換這個模塊, 是將RGB 轉換為 YUV444, 然后在YUV 色彩空間上進行后續的彩色噪聲去除、 邊緣增強等, 也為后續輸出轉換為jpeg 圖片提供方便。
編輯:黃飛
評論
查看更多