Luminance Noise Reduction for CFA Image Sensor

彩色濾波陣列(CFA, Color Filter Array)是在CCD/CMOS感光元件上層的一個色彩濾波器,最常見的就是Bayer Pattern(或稱 GRGB Filter),在CFA上做 Noise Reduction可以避免雜訊受到 Demosaicing將雜訊暈開。 Image Chroma Noise Reduction in Bayer Pattern有提到在Bayer Pattern裡,可以用求RBG三個 channel裡的 Local Mean得到 Luminance(Y)。

Luminance=0.299*meanR+0.587*meanG+0.114*meanB

我們可以把 Luminance NR目標著重在於 G channel上面,由上個式子就可以看到 G channel對 Luminance的貢獻程度是最高的,因此,在CFA上做Luminance Noise Reduction可以針對 G channel的noise做處理。


Edge Preserving

為了不讓影像細節被NR給模糊,藉由5x5 Mask裡面的R和B channel做Edge Detection,計算出dT

未命名

dB=abs\left( { B }_{ 1 }-{ B }_{ 4 } \right) +abs\left( { B }_{ 4 }-{ B }_{ 5 } \right) +abs\left( { B }_{ 2 }-{ B }_{ 3 } \right) +abs\left( { B }_{ 3 }-{ B }_{ 6 } \right)

dR=abs\left( { R }_{ 4 }-{ R }_{ 2 } \right) +abs\left( { R }_{ 2 }-{ R }_{ 6 } \right) +abs\left( { R }_{ 1 }-{ R }_{ 5 } \right) +abs\left( { R }_{ 5 }-{ R }_{ 3 } \right)

dT=dB+dR

下圖為dTdTWeight的轉移曲線,當dT值越大,所得到的dTWeight也會越大。

未命名3


Luminance Preserving

Luminance Preserving,Luminance越大表示像素的 intensity也越大,所以在計算差值與補償時,統計值都會比亮度較暗的區域來的大,因此必須依據 Luma curve做補償。 Luma curve裡可以看到 Luminance越大 LumaWeight值也會越高,是為了避免在高亮的地方修正太多,使影像模糊。

未命名3


Luminance Noise Correction

在做修正時,我們求得區域的meanG與total weight值TotWeight,Edge Preserving和 Luminance Preserving的 weight相乘,之後與中心像素做混合就可求得filerOutput

meanG=\sum _{ i=0 }^{ 12 }{ { G }_{ i } }

未命名2

TotWeight=dTWeight*LumaWeight

filterOutput=\left( 1-TotWeight \right) *meanG+TotWeight*centerG


Denoise Result

未命名                                                        Bayer Domain比較結果。在Bayer Domain較難看出比較結果,但還是可以隱約看到經過 Luminance NR後的影像整體較為平坦。

經過 Demosaicing後,RGB上的比較結果。可以看到Luminance NR在亮暗部的都有明顯的效果。

未命名2


reference : Noise Reduction for CFA Image Sensors Exploiting HVS Behaviour (2009)

Image Chroma Noise Reduction in Bayer Pattern

在 Color Filter Array(CFA)上做 Noise Reduction主要原因是我們可以直接將雜訊給濾除,避免在 demosaicing時將雜訊給散播開來,而影響後端的 image-processing pipeline。在 Bayer Pattern上每個 Channel只有一個色彩像素( R or G or B),因此無法像RGB color space可以轉換到 YUV or YCbCr色彩空間,將Chroma space和Luminance space給區分開來,個別做雜訊抑制,然而這篇 Patent主要claim點是在於他能夠在Bayer Pattern依然能消除Chroma Noise,而不影響 Pixel本身的 Luminance。

Bayer_Pattern


Chroma Noise Detection 

 Separate into three Channels 

未命名

Center Pixel以 B channel為例,在這9x9的window裡分別算出各個channel的mean值,假設計算出來的B=212、Mean B=34、Mean G=62、Mean R=48,下圖為示意圖。由各channel的Mean值可知這區塊裡的亮度不亮,但中心點B的 intensity又很大,那這點為 noise的機率就很高。

未命名

在patent裡有兩個判斷式做為Pixel是否為noise的依據,

未命名

(1). Center Pixel(B)是否大於meanG和meanR很多?

(2). meanB 是否大於meanG和meanR很多?

當(1)是yes且(2)是no的話,就認定Center Pixel(B)為Noise。


Chroma Corrected Pixel Calculation

Decrease the intensity of noise pixel

未命名

在修正 nosie pixel時,為了避免改變區塊的顏色,所以修正後的結果不會比\max { \left( meanG,meanR \right)}來的小,所以計算signalGap來決定intensity decrease最大程度。

signalGap=pixvalB-\max { \left( meanG,meanR \right)}

我們可以藉由signalGap求得目標值chromaCorrectedPixB。下表為各個channel的dampFactor,在不同 gain下會有不一樣的dampFactor,Gain越大,表示影像受 noise干擾較為嚴重,所以 damp程度就要更多;也可以注意到圖表裡G channel的係數與 B R channels不一樣,主要是由於人眼對綠色的敏感度較高的關係,所以會盡量避免 G channel的修正量過大。

未命名

chromaCorrectPixB=\max { \left( meanG,meanR \right) +\left( dampFactorBlue*signalGap \right)}


Chroma Noise Correction 

未命名

有了目標的修正目標值chromaCorrectedPixB後,該要修正多少呢?patent又提出兩個參照的fade量,

(1). signalMeter,signalMeter代表了 Luminance Y的分量,因為他是由三個 channels的 mean值所構成的。

signalMeter=0.299*meanR+0.587*meanG+0.114*meanB

(2). meanB,meanB代表了自己本身channel的平均值,參考自己的平均值來決定下降程度。

得知fade1fade2後,可求得 chroma noise要削弱的程度fadeTot

fadeTot=fade1*fade2

未命名

最後,把fadeTot視為center pixel與chroma correct pixel的weight值,Blend之後就得到修正後的Output了。

filterOutput=\left( 1-fadeTot \right) *originalPix+\left( fadeTot \right) *chromaCorrectedPix


Denoise Result

10

先將 noisy影像轉到 Bayer Pattern上,再經過Chroma Noise Reduction後,最後再demosaicing回來。

未命名

以下是細節比較,不只比較在Bayer domain上的表現,也比較在 RGB domain的結果。

未命名Bayer Domain,可以看到經過 Chroma Noise Reduction後,影像裡藍色的 noise明顯變少。

未命名2回到RGB Domain後更能感受到 Chroma Noise Reduction的效果,主要因為Noise本身會受到demosaicing演算法的影響而使 noise散播開來,因此,在 Bayer Domain下的 Noise Reduction能減少雜訊受到其他 image-processing的影響。

 


reference : patent::Image chroma noise reduction in the bayer domain(Stmicroelectronics S.R.L.)

Noise Reduction and Bayer Pattern Introduction

Noise

雜訊(Noise)是指所有數位訊號(音訊、影像及視訊等)訊號經過傳送或產生的過程中產生的任何不自然結果。

以數位相機再曝光過程中產生的Noise可分為Fixed Pattern Noise、Random Noise和Banding Noise。Random Noise是最難處理的,沒有固定的形態,會隨著影像做波動變化,容易受到ISO值設定影響。未命名                                             [Digital Camera Noise]

若是要分析Noise本身組合成分的話,可分為Chroma Noise和Luminance Noise。在一般雜訊抑制軟體裡,會轉換色彩空間(color space)從RGB到YUV上,分別對Chroma Noise和Luminance Noise做訊號處理。

未命名2                                                                                     [Noise Elements]

下圖為noise在不同亮度下的影響,在不同亮度下我們感知到的noise強度都不一樣,可以看到在亮部的區域幾乎感知不到nosie的存在,是由於訊號(signal)較大的情況下就不容易受到雜訊波動所影響;但在暗部的地方由於訊號(signal)強度相較於亮部較弱的關係,感測到的noise比較強烈,所以在做雜訊抑制上會通常會專注於在暗步的處理。

未命名3                      [Noise in Different Bright]

 

目前有兩種類型的雜訊抑制(Noise Reduction)技術廣泛用於影像視訊上,分別是2D雜訊抑制和3D雜訊抑制。2DNR是在spatial domain上的雜訊抑制,分析影像視訊的個別訊框,用演算法識別,分析出細節與雜訊,然後修正掉雜訊,得到較好的影像品質,但細節與雜訊本來就是無法百分之百被切割的,所以容易有判斷錯誤的情況發生,使得影像變得模糊;3DNR則是在time domain上的雜訊抑制,分析連續影像視訊的差異來抑制random noise,使影像較為平穩且提高影像品質。一般來說,3DNR的雜訊抑制效果比2DNR來的好,但致命缺點是畫面中如果有移動物體,會使得移動物體變得模糊有殘影(Ghost)的現象發生。


Bayer Pattern

有些抑制雜訊演算法會在Bayer Pattern上面實現,是為了讓noise在前端就已經被修正掉,而不會影響ISP後面其他function的 performance。Bayer Pattern是一種顏色濾光陣列(Color Filter Array),由於CCD或CMOS感測器裡的感光二極體不能分辨不同波長的光源,因此我們需要一個色彩濾光陣列,篩選出紅色、綠色以及藍色,然而最常見的CFA就是Bayer Pattern或叫GRGB Filter,如下圖所示,紅色25%,綠色50%,藍色25%,人類眼睛對綠色的敏感度是遠高於其他顏色的,所以綠色所佔的面積較大。如果今天要還原回真實顏色的話,就要利用相鄰的pixel去做解馬賽克(Demosaic)演算法,在每個pixel位置內插出另外兩個channel的顏色,例如A pixel感測顏色是紅色,就要內插出藍色與綠色。

Bayer Pattern


reference : http://www.cambridgeincolour.com/tutorials/