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
相關文章
- iOS 影象處理 - 影象拼接iOS
- 影象處理之影象增強
- UIImage 影象處理UI
- Python-OpenCV 處理影象(七):影象灰度化處理PythonOpenCV
- Python-OpenCV 處理影象(八):影象二值化處理PythonOpenCV
- 前端影象處理指南前端
- c#影象處理C#
- 數字影象處理DIP
- 柵格影象的處理
- [Python影象處理] 八.影象腐蝕與影象膨脹Python
- [Python影象處理] 六.影象縮放、影象旋轉、影象翻轉與影象平移Python
- MATLAB數字影象處理(二)影象增強Matlab
- C++影象處理 -- 影象黑白調整應用C++
- [Python影象處理] 七.影象閾值化處理及演算法對比Python演算法
- 影象中的畫素處理
- python PIL 影象處理操作Python
- 第十四章 處理影象
- GPU 加速下的影象處理GPU
- [Python影象處理] 一.影象處理基礎知識及OpenCV入門函式PythonOpenCV函式
- [Python影象處理] 三.獲取影象屬性、興趣ROI區域及通道處理Python
- 數字影象處理-第一節
- 影象處理庫GPUImage簡單使用GPUUI
- 數字影象處理目錄列表
- 6 款 Javascript 的影象處理庫JavaScript
- Kinect影象 骨骼點夾角處理
- 使用 canvas 對影象進行處理Canvas
- 神奇的影象處理演算法演算法
- Python-OpenCV 處理影象(三):影象畫素點操作PythonOpenCV
- [Python影象處理] 五.影象融合、加法運算及影象型別轉換Python型別
- Python-OpenCV 處理影象(二):濾鏡和影象運算PythonOpenCV
- 影象處理的濾鏡演算法演算法
- Linux 上的科學影象處理Linux
- matlab影象處理常用命令Matlab
- Python影象處理庫Pillow入門Python
- 影象處理 二維小波變換
- Javascript影象處理之虛擬邊緣JavaScript
- DALSA Coreco - 影象處理軟體(Sapera LT )
- 數字影象處理之二維碼影象提取演算法(一)演算法