Bayer影象處理
轉自:http://www.cnblogs.com/lin1270/archive/2010/12/01/1893647.html
Bayer是相機內部的原始圖片, 一般字尾名為.raw. 很多軟體都可以檢視, 比如PS.
我們相機拍照下來儲存在儲存卡上的.jpeg或其它格式的圖片, 都是從.raw格式轉化
過來的. .raw格式內部的儲存方式有多種, 但不管如何, 都是前兩行的排列不同. 其
格式可能如下:
G R G R G R G R
B G B G B G B G
G R G R G R G R
B G B G B G B G
橫為2的倍數, 豎為4的倍數, 它們構成了解析度. 如, 上面則代表了 8 * 4 解析度的
Bayer圖.
我們要知道的是, G = 2 * R 及 G = 2 * B, 即綠色值為紅色值或藍色值的兩倍, 因
為人眼對綠色更敏感, 所以綠色的分量更重.
下面說一下從bayer轉換成rgb圖的演算法, RGB圖, 即為三色圖, 一個畫素點就由RGB
三種顏色構成的混合色, 而bayer圖一個畫素就只有一個顏色, 或R或G或B. 因為bayer
一個畫素點只有一種顏色, 需要藉助這個畫素點周圍的顏色對它進行插值(填充)另外的
兩種顏色, 它本身的顏色就不用插了. 一般的演算法是:
對於插入R和B,
Rx = ( R1 + R2 ) / 2; 或-------------取上邊和下邊的平均值, 或是左邊和右邊的平均值
Rx = ( R1 + R2 + R3 + R4 ) / 4;----取四個邊的平均值
B同理. 如:
G B G
R G R
G B G
對於中間的G, 它缺少 R和B, 用上下和左右的平均值進行求值.
對於
B G B
G R G
B G B
這個圖呢, 中間點R, 缺少G和B, G暫時沒討論, 那麼 B, 就是從R的四個B角進行求平均值.
==============================================
如果插入G, 稍有些複雜.
不過一般的演算法與R和B一樣, 複雜的演算法, 其複雜程度也提升一倍, 不過精度更高, 如果對於
視訊監測系統來說, 精度相對來說不必要求太高, 用R或B的解法即可. 下面說複雜的:
對於圖:
R1
G1
R4 G4 R G2 R2
G3
R3
對於中間點R, 它需要插入G和B, B不討論, 主要討論G, 它周圍有四個點G1, G2, G3, G4.
( G1 + G3 ) / 2--------------如果 |R1-R3| < |R2-R4|
G(R) = ( G2 + G4 ) / 2-------------如果 |R1-R3| > |R2-R4|
( G1 + G2 + G3 + G4 ) / 4--如果 |R1-R3| = |R2-R4|
如果周圍出現的畫素點顏色為B, 就應該比較|B1-B3|與|B2-B4|的值.
====================================================
還有關於將RGB格式轉換為YUV格式的演算法, 這裡不想討論了.
這裡要注意的是, bayer每個畫素的值是8位的. 但是有的相機的bayer格式卻有10位, 12位
以及14位, 16位的, 那麼如何將這些高於8位的資料轉換為8位資料呢?. 拿12位資料來說, 有的
人是取高8位或是低8位, 那麼這樣就會出現一個問題, 這張影象會有一個斜度, 不是偏亮就是偏
暗, 或是出現其它亂七八糟的問題, 顏色問題總是不能令人滿意. 這個時候就要去較正它, 無疑是
浪費了時間.
另一種演算法是使用log對映, 據老外說, 這種轉換法具有較高的精度. 拿12位來說, 一般轉換演算法:
f(in) = 2 ^ ( log(in) * 8 / 12 )
轉換圖為:
|8 .
| .
| .
|_______________________12
因為log256 = 8, log4096 = 12, 對了log是以2為底哦.
做得更好一點的演算法, 可能根據提供的曝光等其它因素不同, 而將演算法進行調整, 這樣當一些意外
事件發生時, 產生的圖片也不會失真嚴重.
如有何疑問, 請致信: 414078791@qq.com
相關文章
- 影象處理之影象增強
- [Python影象處理] 八.影象腐蝕與影象膨脹Python
- [Python影象處理] 六.影象縮放、影象旋轉、影象翻轉與影象平移Python
- 數字影象處理DIP
- [Python影象處理] 七.影象閾值化處理及演算法對比Python演算法
- [Python影象處理] 一.影象處理基礎知識及OpenCV入門函式PythonOpenCV函式
- 影象中的畫素處理
- [Python影象處理] 三.獲取影象屬性、興趣ROI區域及通道處理Python
- [Python影象處理] 五.影象融合、加法運算及影象型別轉換Python型別
- 數字影象處理-第一節
- 影象處理庫GPUImage簡單使用GPUUI
- 影象處理的濾鏡演算法演算法
- 實戰 | 用Python做影象處理(一)Python
- Luminar 4 for MacOS影象後期處理軟體Mac
- 【筆記】基於Python的數字影象處理筆記Python
- 影象處理1--傅立葉變換(Fourier Transform )ORM
- 如何在Tensorflow.js中處理MNIST影象資料JS
- [Python影象處理] 九.形態學之影象開運算、閉運算、梯度運算Python梯度
- [Python影象處理] 十.形態學之影象頂帽運算和黑帽運算Python
- [Python影象處理] 四.影象平滑之均值濾波、方框濾波、高斯濾波及中值濾波Python
- 【影象處理】人臉美顏演算法初次嘗試演算法
- 影象識別及處理相關資料集介紹
- 值得珍藏機器視覺10大常用影象處理庫視覺
- WebComponent+WebGl的實時影象處理彈幕播放器Web播放器
- Python基礎教程:Day15-影象和辦公文件處理Python
- 黑洞圖片的背後,是影象處理技術的成熟!
- [Python影象處理] 二.OpenCV+Numpy庫讀取與修改畫素PythonOpenCV
- 影象處理入門:目標檢測和影象檢索綜述
- [Python影象處理] 十一.灰度直方圖概念及OpenCV繪製直方圖Python直方圖OpenCV
- 手把手教你用Taro框架寫一個影象處理類微信小程式框架微信小程式
- [影象處理] Python+OpenCV實現車牌區域識別及Sobel運算元PythonOpenCV
- 多對一處理 和一對多處理的處理
- JSP 異常處理如何處理?JS
- 「乾貨」教你如何用OpenCV快速尋找影象差異處OpenCV
- 模板處理
- 平滑處理
- 字串處理字串
- 事件處理事件
- Python錯誤處理和異常處理(二)Python