camera 驅動 raw bayer isp

Pure RAW:就是Sensor沒有+ISP的原始圖片;

Process RAW:就是加了ISP的OB 於 Shadding的圖片;

https://blog.csdn.net/lz0499/article/details/105451469

 

Bayer數據,其一般格式爲:
奇數掃描行輸出 RGRG……
偶數掃描行輸出 GBGB……

  根據人眼對彩色的響應帶寬不高的大面積着色特點,每個像素沒有必要同時輸出3種顏色。因此,數據採樣時,

奇數掃描行的第1,2,3,4,…象素分別採樣和輸出R,G,R,G,…數據;

偶數掃描行的第1,2,3,4,…象素分別採樣和輸出G,B,G,B,…數據。

在實際處理時,每個象素的R,G,B信號由象素本身輸出的某一種顏色信號和相鄰象素輸出的其他顏色信號構成。這種採樣方式在基本不降低圖像質量的同時,可以將採樣頻率降低60%以上。

Camera驅動開發知識講解

第一章 Camera基礎

1,Image Sensor類型

a)     YUV Sensor

YUV Sensor輸出的Data格式爲YUV,圖像的效果處理使用Sensor內部的ISP,BB端接收YUV格式的data後只進行格式的轉換,效果方面不進行處理,由於Sensor內部的ISP處理能力有限,且YUV Sensor的數據量比較大(YUV422的格式1個pixel2個byte),一般Size都比較小,常見的YUV sensor都是5M以下

b)    Raw Sensor

Raw Sensor輸出的Data格式爲Raw,圖像的效果處理使用BB端的ISP,BB端接收Raw data後進行一系列的圖像處理(OB,Shading,AWB,Gamma,EE,ANR等),效果方面由BB端控制,需要針對不同的模組進行效果調試,Raw sensor是目前的主流,數據量比YUV Sensor小(RAW10 格式的sensor 1個pixel 10個bit)使用平臺ISP處理,能支持較大的size

 

2,硬件接口

簡單說來,Camera的接口分爲並行和串行兩種方式,而目前我們平臺主要支持的串行方式爲mipi接口,Parallel接口和mipi接口的介紹可以參考下圖

3,常見基本概念

a)       三路電壓

camera包含的三路電壓爲模擬電壓(VCAMA),數字電壓(VCAMD),IO口電壓(VCAMIO)

b)       I2C信號

BB與Sensor端通過I2C來通信(讀寫寄存器),包括SCL(I2C Clock) SDA(I2C Data)信號

c)       mipi幾條lane

mipi data是成對的差分信號,MIPI_RDN和MIPI_RDP,有幾對這樣的pin腳,則說明是幾條lane,同一顆sensor由於register setting不同,輸出的信號有可能是2 lane或者4lane等

d)       parallel高低八位

Parallel接口一般Data有10根pin,分別叫做Data0~Data9,Parallel sensor輸出的data信號是8根pin時,這八根pin接到的是Data0~Data7還是Data2~Data9,需要配置正確,叫做接到高八位或者低八位,接錯了可能產生如下現象

e)       Data Format

Sensor輸出的數據格式,對於YUV Sensor來說,Data Fomat一般有YUYV,YVYU,UYVY等,配置不對可能會導致顏色和亮度錯掉,例如下圖

對於Raw Sensor來說,Data Format就是First Pixel的顏色,分爲R,Gr,Gb,B,配置不對會導致顏色錯誤

f)        MCLK

BB提供給Sensor的外部clock

g)       PCLK

Parallel接口的Sensor輸出的clock,該clock變化一次,data更新一次

h)       mipi 信號

mipi信號包括mipi clock和mipi data,該信號是高速信號,用來傳輸mipi數據包

 

第二章 Camera軟件架構

主要包含三個部分的介紹:

1)Android Camera 架構:Android系統原生架構簡要介紹.

2)Mediatek Android Camera架構: 簡要介紹Mediatek平臺在Android系統基礎上Camera 的架構.

3)Camera data path: 介紹在平臺端Camera的數據流.

1.下圖爲Android Camera 架構

 

 

Camera根據Android 架構從上至下可分爲

    1)Applications: 最上層的應用,編譯後生成Camera  APK;

    2)Application Framework: 主要爲Applications提供API;

    3)JNI: 使Application Framework和Libraries可交互;

    4)Libraries: 包括Camera Framework和Camera Service(camera service和camera client);

    5)HAL: 硬件抽象層, 用來鏈接driver和 Camera Service;

    6)Kernel: image sensor driver的實作.

其中2)~4)的部分基本爲Android原生的架構和code,Mediatek會有一些拓展,而HAL和Kernel層爲Mediatek主要實作的部分,Camera APK是Mediatek基於Android 原生Camera APK修改的應用.

 

2.下圖爲MT6589/82/72/92/88平臺基於Android架構上, ,Camera從application到kernel層詳細的架構.

1)藍色部分主要由Java實現(偏向應用層)、黃色爲JNI實現(C++,銜接Java層和Native層), 綠色由C++實現(通常稱爲Native層),而棗紅色爲C實現(Kernel 層).

2) HAL libraries爲Mediatek在HAL層的實現,主要分Camera HAL和Camera Core兩大部分.Camera HAL銜接Camera Service並響應它的需求,實現各個feature的scenario; 而Camera Core提供平臺一些通用的數據流控制接口.

 

3.最後這部分爲Camera的數據流簡要介紹

說明:

1) TG(Timing Generate):從sensor獲取數據,並送給ISP處理.

2) Platform Data Processor: 包括平臺在後端對圖像數據進行resize、rotate、flip、format convert等處理.它可以同時有兩個buffer輸出.

   當normal preview時,port1輸出給display,port2輸出給face detection或者app preview callback

   當normal capture時,port1輸出大圖給jpeg encoder,port2輸出小圖給回顯和thumbnail encode.

當video record時,port1輸出給display,port2輸出給video encoder.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章