轉:ISP算法概述

本篇blog主要爲講述ISP處理流程及其應用場景。


一、概述

ISP(Image Signal Processor), 即圖像信號處理, 主要作用是對前端圖像傳感器輸出的信號做後期處理, 依賴於 ISP 才能在不同的光學條件下都能較好的還原現場細節。

Cmos YUV sensor 的 ISP 處理流程如圖 1 所示:



景物通過 Lens 生成的光學圖像投射到 sensor 表面上, 經過光電轉換爲模擬電信號, 消噪聲後經過 A/D 轉換後變爲數字圖像信號, 再送到數字信號處理芯片( DSP) 中加工處理。所以,從 sensor 端過來的圖像是 Bayer 圖像,經過黑電平補償 ( black level compensation)、鏡頭矯正 ( lens shading correction)、壞像素矯正 ( bad pixel correction)、顏色插值 ( demosaic)、Bayer 噪聲去除、 白平衡( awb) 矯正、 色彩矯正( color correction) 、 gamma 矯正、 色彩空間轉換( RGB 轉換爲 YUV) 、 在 YUV 色彩空間上彩噪去除與邊緣加強、 色彩與對比度加強,中間還要進行自動曝光控制等, 然後輸出 YUV( 或者 RGB) 格式的數據, 再通過 I/O 接口傳輸到 CPU 中處理。

以下對各個模塊的處理算法做簡要概述。


1.Bayer 

圖像在將實際的景物轉換爲圖像數據時, 通常是將傳感器分別接收紅、 綠、 藍三個分量的信息, 然後將紅、 綠、 藍三個分量的信息合成彩色圖像。 該方案需要三塊濾鏡, 這樣價格昂貴,且不好製造, 因爲三塊濾鏡都必須保證每一個像素點都對齊。

通過在黑白 cmos 圖像傳感器的基礎上, 增加彩色濾波結構和彩色信息處理模塊就可以獲得圖像的彩色信息, 再對該彩色信息進行處理, 就可以獲得色彩逼真的彩色圖像。通常把彩色圖像傳感器表面覆蓋的濾波稱爲彩色濾波陣列( Color Filter Arrays, CFA) 。

目前最常用的濾鏡陣列是棋盤格式的, 已經有很多種類的, 其中絕大多數的攝像產品採用的是原色貝爾模板彩色濾波陣列( Bayer Pattern CFA) , 如圖 2 所示, R、 G、 B 分別表示透紅色、 透綠色和透藍色的濾鏡陣列單元, 圖 3 比較形象地展示了此過程。由於人的視覺對綠色最爲敏感, 所以在 Bayer CFA 中 G 分量是 R 和 B 的二倍, 在每個像素點上只能獲取一種色彩分量的信息,然後根據該色彩分量的信息通過插值算法得到全色彩圖像。


2.BLC(Black level Correction)

a.暗電流

物理器件不可能是理想的, 由於雜質、 受熱等其他原因的影響, 即使沒有光照射到象素,
象素單元也會產生電荷, 這些電荷產生了暗電流。 而且, 暗電流與光照產生的電荷很難進行
區分。

b.Black Level

Black Level 是用來定義圖像數據爲 0 時對應的信號電平。由於暗電流的影響, 傳感器出來的實際原始數據並不是我們需要的黑平衡( 數據不爲0) 。 所以,爲減少暗電流對圖像信號的影響,可以採用的有效的方法是從已獲得的圖像信號中減去參考暗電流信號。一般情況下, 在傳感器中, 實際像素要比有效像素多, 如下圖所示, 像素區頭幾行作爲不感光區( 實際上, 這部分區域也做了 RGB 的 color filter) , 用於自動黑電平校正, 其平均值作爲校正值, 然後在下面區域的像素都減去此矯正值, 那麼就可以將黑電平矯正過來了。

下面所列圖是做了black level 矯正與沒做black level 矯正的對比, 很明顯, 左邊沒做black level矯正的圖片會比較亮, 影響圖像的對比度: 

3.LSC(Lens Shading Correction)

由於鏡頭本身的物理性質, 造成圖像四周亮度相對中心亮度逐漸降低, 以及, 如下圖所示, 由於圖像光照在透過鏡頭照射到 pixel 上時, 邊角處的焦點夾角大於中心焦點夾角, 造成邊角失光。 表現在圖像上的效果就是亮度從圖像中心到四周逐漸衰減, 且離圖像中心越遠亮度越暗。 爲了補償四周的亮度, 需要進行 Lens Shading 的矯正。

Lens Shading 的矯正的方法是根據一定的算法計算每個像素對應的亮度矯正值, 從而補償周邊衰減的亮度。 

矯正方法有二次項矯正、 四次項矯正。


4.BPC(Bad Pixel Correction)

a.壞點

壞點爲全黑環境下輸出圖像中的白點, 高亮環境下輸出圖像中的黑點。

b.壞點修復方法

一般情況下, RGB 信號應與景物亮度呈線性響應關係, 但由於 Senor 部分 pixel 不良導致輸出的信號不正常, 出現白點或黑點。


壞點修復方法通常有兩種:

一種是自動檢測壞點並自動修復, 另一種是建立壞點像素鏈表進行固定位置的壞像素點修復, 這種方式是 OTP 的方式。

c.壞像素矯正原理

下面以自動檢測壞點修復方法爲例, 闡述壞像素矯正算法原理。


5.顏色插值

當光線通過 Bayer型 CFAColor Filter Arrays) 陣列之後, 單色光線打在傳感器上, 每個像素都爲單色光, 從而理想的Bayer 圖是一個較爲昏暗的馬賽克圖。


6.Bayer Denoise

使用 cmos sensor獲取圖像,光照程度和傳感器問題是生成圖像中大量噪聲的主要因素。同時, 當信號經過ADC 時, 又會引入其他一些噪聲。 這些噪聲會使圖像整體變得模糊, 而且丟失很多細節, 所以需要對圖像進行去噪處理空間去噪傳統的方法有均值濾波、 高斯濾波等。

但是, 一般的高斯濾波在進行採樣時主要考慮了像素間的空間距離關係, 並沒有考慮像素值之間的相似程度, 因此這樣得到的模糊結果通常是整張圖片一團模糊。 所以, 一般採用非線性去噪算法, 例如雙邊濾波器, 在採樣時不僅考慮像素在空間距離上的關係, 同時加入了像素間的相似程度考慮, 因而可以保持原始圖像的大體分塊, 進而保持邊緣。 


7.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)計算通道增益: 計算出通道的增益;

(3)進行偏色的矯正: 根據給出的增益, 算出偏色圖像的矯正。


8.Color Correction

由於人類眼睛可見光的頻譜響應度和半導體傳感器頻譜響應度之間存在差別,還有透鏡等的影響, 得到的RGB 值顏色會存在偏差, 因此必須對顏色進行校正, 通常的做法是通過一個3x3 的顏色變化矩陣來進行顏色矯正。 


9.Gamma Correction

人眼對外界光源的感光值與輸入光強不是呈線性關係的, 而是呈指數型關係的。 在低照度下, 人眼更容易分辨出亮度的變化, 隨着照度的增加, 人眼不易分辨出亮度的變化。 而攝像機感光與輸入光強呈線性關係, 爲方便人眼辨識圖像, 需要將攝像機採集的圖像進行gamma 矯正。

Gamma 矯正是對輸入圖像灰度值進行的非線性操作, 使輸出圖像灰度值與輸入圖像灰度值呈指數關係:

Vout =AVin

這個指數就是 Gamma, 橫座標是輸入灰度值, 縱座標是輸出灰度值, 藍色曲線是 gamma 值小於 1 時的輸入輸出關系, 紅色曲線是 gamma 值大於 1 時的輸入輸出關係。 可以觀察到, 當 gamma 值小於 1 時(藍色曲線), 圖像的整體亮度值得到提升, 同時低灰度處的對比度得到增加, 更利於分辯低灰度值時的圖像細節。


10.
色彩空間轉換

YUV 是一種基本色彩空間, 人眼對亮度改變的敏感性遠比對色彩變化大很多, 因此, 對於人眼而言, 亮度分量要比色度分量UV重要得多。 所以, 可以適當地拋棄部分UV分量, 達到壓縮數據的目的。

Laplacian 算子

YCbCr 其實是YUV 經過縮放和偏移的改動版,表示亮度,CrCb 表示色彩的色差, 分別是紅色和藍色的分量。 在YUV 家族中,YCbCr 是在計算機系統中應用最多的成員, 其應用領域很廣泛,JPEGMPEG 均採用此格式。 一般人們所講的YUV 大多是指YCbCrYCbCr有許多取樣格式,。

如 444422, 411和 420

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 圖片提供方便。


11.Color Denoise

爲了抑制圖像的彩色噪聲, 一般採用低通濾波器進行處理。 例如使用M×N的高斯低通濾波器在色度通道上進行處理。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章