1、問題背景
在圖像調(diào)試過程隆夯,當發(fā)現(xiàn)一個問題時,很多時候都要通過 dump raw圖像來分析别伏,如果raw圖像上有蹄衷,那就排除了是 ISP的處理導致。
下一步就是排查 sensor 或者鏡頭厘肮,這樣可以有效的幫我們定位問題所在愧口。
但遇到過有些 raw, 用工具打不開或者出圖不對的情況类茂,那可能是因為 raw 的存儲格式不同導致耍属,本文主要對 raw 的格式做下介紹說明托嚣。
2、問題分析
a. 什么是 raw
raw 數(shù)據(jù)是 sensor 輸出的原始數(shù)據(jù)厚骗,常用的一般有raw8, raw10, raw12等示启,分別表示一個像素點有 8bit、10bit领舰、12bit 數(shù)據(jù)夫嗓。
是 sensor 將光信號轉(zhuǎn)化為電信號時的電平高低的原始記錄,單純地沒有進行任何處理的圖像數(shù)據(jù)冲秽,即表現(xiàn)的是 sensor 和鏡頭本征特性的數(shù)據(jù)舍咖。
raw 數(shù)據(jù)在輸出的時候是有一定順序的,主要有四種: GRBG锉桑、RGGB排霉、BGGR、GBRG刨仑,如下圖為BGGR格式:
b. raw 分哪幾種格式郑诺,有什么區(qū)別 ?
raw 一般分為 plain raw 和 mipi raw杉武,主要是存儲方式上的區(qū)別辙诞,如下圖所示是 Plain raw10 的示意圖。
10bit的raw轻抱,單個像素也就是10bit飞涂,需要兩個字節(jié)(16bit)來存儲。
那就會空出 6位用不到祈搜,因為有空余较店,這里就涉及到一個高位/低位對齊的問題,也就是存儲數(shù)據(jù)時容燕,右移6位低位對齊(如下圖1所示)梁呈,
左移6位高位對齊(如下圖2所示)。這個主要看平臺廠商對數(shù)據(jù)處理有什么要求蘸秘,我司用的是高位對齊的數(shù)據(jù)官卡,所以讀取時,要有相應的移位操作才行醋虏。
如下圖所示是 mipi raw10 的示意圖寻咒,以大端存儲方式為例,它是把4個像素放到5個字節(jié)(40bit)中颈嚼,組成一個包去存儲毛秘。
前4字節(jié)依次存放 raw10圖像的前4個像素的后8位,4個像素的前2位依次存放在包的第5個字節(jié)中。
所以從存儲方式來看叫挟,mipi raw 的存儲方式是要比 plain raw 更節(jié)省內(nèi)存艰匙。
c. 怎么正確查看 raw ?
一般raw圖工具打開都會要求配置一下 raw 圖尺寸霞揉、位寬旬薯、bayer格式、MSB/LSB适秩,
但一般工具支持 plain raw 打開的居多,還有些并不支持MSB和LSB的選擇硕舆,所以需要我們對raw 做一下處理秽荞。
如下是mipi raw 轉(zhuǎn) plain raw 、plain raw10 MSB 轉(zhuǎn)LSB 的相關(guān) python 代碼抚官,
分析代碼的處理過程扬跋,也會加深我們關(guān)于raw圖像的理解,
參考資料:
大話成像-數(shù)字成像算法基礎課程