1 圖像bayer格式介紹
bayer格式圖片是伊士曼·柯達公司科學家Bryce Bayer發明的,Bryce Bayer所發明的拜耳陣列被廣泛運用數字圖像。
對於彩色圖像,需要采集多種最基本的顏色,如rgb三種顏色,最簡單的方法就是用濾鏡的方法,紅色的濾鏡透過紅色的波長,綠色的濾鏡透過綠色的波長,藍色的濾鏡透過藍色的波長。如果要采集rgb三個基本色,則需要三塊濾鏡,這樣價格昂貴,且不好制造,因為三塊濾鏡都必須保證每一個像素點都對齊。當用bayer格式的時候,很好的解決了這個問題。bayer 格式圖片在一塊濾鏡上設置的不同的顏色,通過分析人眼對顏色的感知發現,人眼對綠色比較敏感,所以一般bayer格式的圖片綠色格式的像素是是r和g像素的和。
另外,Bayer格式是相機內部的原始圖片, 一般后綴名為.raw。很多軟件都可以查看, 比如PS。我們相機拍照下來存儲在存儲卡上的.jpeg或其它格式的圖片, 都是從.raw格式轉化過來的。如下圖,為bayer色彩濾波陣列,由一半的G,1/4的R,1/4的B組成。
2 bayer格式圖像傳感器硬件
圖像傳感器的結構如下所示,每一個感光像素之間都有金屬隔離層,光纖通過顯微鏡頭,在色彩濾波器過濾之后,投射到相應的漏洞式硅的感光元件上。
當Image Sensor往外逐行輸出數據時,像素的序列為GRGRGR.../BGBGBG...(順序RGB)。這樣陣列的Sensor設計,使得RGB傳感器減少到了全色傳感器的1/3,如下所示。
3 bayer格式插值紅藍算法實現
每一個像素僅僅包括了光譜的一部分,必須通過插值來實現每個像素的RGB值。為了從Bayer格式得到每個像素的RGB格式,我們需要通過插值填補缺失的2個色彩。插值的方法有很多(包括領域、線性、3*3等),速度與質量權衡,最好的線性插值補償算法。其中算法如下:
R和B通過線性領域插值,但這有四種不同的分布,如下圖所示:
(a) (b)
(c) (d)
在(a)與(b)中,R和B分別取鄰域的平均值。
在(c)與(d)中,取領域的4個B或R的均值作為中間像素的B值。
4 bayer格式插值綠算法實現
(c) (d)
由於人眼對綠光反應最敏感,對紫光和紅光則反應較弱,因此為了達到更好的畫質,需要對G特殊照顧。在上述(c)與(d)中,擴展開來就是上圖的(e)與(f)中間像素G的取值,者也有一定的算法要求,不同的算法效果上會有差異。經過相關的研究,
(e)中間像素G值的算法如下:
(f)中間像素G值的算法如下:
CMOS攝像頭這部分轉換是在內部用ADC或者ISP完成的,生產商為了降低成本必然會使得圖像失真。當然用外部處理器來實現轉換,如果處理器的速度足夠NB,能夠勝任像素的操作,用上面的算法來進行轉換,皆大歡喜。不過上述算法將直接成倍提高了算法的復雜度,速度上將會有所限制。因此為了速度的提成,可以直接通過來4領域G取均值來中間像素的G值,將會降低一倍的速率,而在性能上差之甚微,算法如下:
如果能夠通過損失圖像的額質量,來達到更快的速度,還可以取G1、G2的均值來實現,但是這樣的做法會導致邊沿以及跳變部分的失真。