1. 程式人生 > >android平臺camera基礎知識總結

android平臺camera基礎知識總結

1、camera型別

    android平臺主要有UVC camera和非UVC camera(並口/MIPI介面)

2、ISP(Image Signal Processor)影視處理
無論數碼相機、攝像機或者攝像手機,其影像資料從前端感應後,皆須經過ASP(Analog Signal Processing)、ADC(Analog-Digital Converter)、前期影像處理(Pre-ISP)與後端影像處理(Post-ISP)四個階段後,影像資料才能最終呈現於終端裝置上


SENSOR分兩種,帶ISP和不帶ISP的。
只有帶ISP的SENSOR才能輸出YUV,通常上有專門的暫存器負責輸出格式設定

判斷它輸出的資料就是YUV格式方法: 
1. 可以觀察上面提到的看PCLK是否變化為2倍等解析度等幀率的RAW DATA
2. 有些暫存器可以固定輸出預先設定的U V值, 設定以後直接看DVP口資料

由於 Sensor 的每個 pixel 只能感光 R 光或者B 光或者 G 光, 因此每個畫素此時存貯的是單色的, 我們稱之為 RAW DATA 資料。 要想將每個畫素的 RAW DATA 資料還原成三基色,就需要 ISP 來處理。

3、解析度

1080P、1080I、720P(i是interlace,隔行的意思,p是Progressive,逐行的意思)。

例如:720P是一種在逐行掃描下達到1280×720的解析度的顯示格式。

4、camera的一些特性

(1)   抓圖解析度達8M畫素(image capture resolution)。
(2)   錄影解析度達720p(video recording resolution)。
(3)   原始影象資料轉儲幀率[email protected](raw dump frame rate)。
(4)   曝光抓圖率[email protected](burst capture rate)。
(5)   影象處理
低畫素補償(poor pix compensation)、鏡頭陰影補償(lens shading compensation)、去馬賽克(demosaic)、色彩削波(color clipping)、區域性對比度增強(local contrast enhancement)、伽瑪校正(gamma correction)、邊緣曾強(edge enhancement)、噪聲消除(noise reduction)、標準色自適應(preference color adaptation)、空間和暫時噪聲消除(spatial and temporal noise reduction)。

(6)   3A統計和校正(statistics and correction)
(7)   閃爍檢測(flicker detection)。

5、sensor的資料格式

YUV格式: 

luma (Y) + chroma (UV) 格式, 一般情況下sensor支援YUV422格式,即資料格式是按Y-U-Y-V次序輸出的。一幅影象包括的基本東西就是二進位制資料,其容量大小實質即為二進位制資料的多少。一幅1920x1080畫素的YUV422的影象,大小是1920X1080X2=4147200(十進位制),也就是3.95M大小。

YUV與畫素的關係:
YUV是利用一個亮度(Y)、兩個色差(U,V)來代替傳統的RGB三原色來壓縮影象。傳統的RGB三原色使用紅綠藍三原色表示一個畫素,每種原色佔用一個位元組(8bit),因此一個畫素用RGB表示則需要8*3=24bit。如果使用YUV表示這個畫素,假設YUV的取樣率為:4:2:0,即每一個畫素對於亮度Y的取樣頻率為1,對於色差U和V,則是每相鄰的兩個畫素各取一個U和V。對於單個的畫素來說,色差U和V的取樣頻率為亮度的一半。如有三個相鄰的畫素,如果用RGB三原色表示,則共需要佔用:8*3*3=72bits;如果採用YUV(4:2:0)表示,則只需要佔用:8*3(Y)+ 8*3*0.5(U)+8*3*0.5(V)= 36bits。只需原來一半的空間,就可以表示原來的影象,資料率壓縮了一倍,而影象的效果基本沒發生變化。

一張圖片,Y,U,V各有8Bit,RGB也是每個分量值都是8位,RGB是全部取樣,YUV422取樣就是 每個畫素點都對Y取樣,UV是依次進行取樣。Yu,yv,yv,yv    y=100%,u=50%,v=50%

YUV420取樣就是yu,y,yu,y,yv,y,yv,y換句話說 YUV420,就是4的畫素值,y=100%,u/v=25%,即四個畫素公用一個u,一個v.

假如有一幅640×480的圖片,用yuv422來表示,那麼,取樣方式就是每個畫素取樣Y訊號,U,V訊號隔一個取樣,這樣算下來,就有640×480個Y,640×240個U,640×240個V,一幅640×480大小的YUV圖片佔的總位元組數為640×480×2個位元組,每畫素2個位元組,也就是16位。

在記憶體種中這樣排列:Y0U0Y1V0 Y2U1Y3V1...

第一個畫素的YUV值為:Y0 U0 V0
第二個畫素的YUV值為: Y1 U0 V0
第三個畫素的YUV值為: Y2 U1 V1

.....其他以此推類,也就是說每兩個畫素是共用了UV的;在一行上來看,每個畫素的YUV值中Y值被取樣,UV值取樣0後,跳到3,然後5,所以每行上Y有640個,U,V各320個。

RGB格式: 

傳統的紅綠藍格式,比如RGB565,其16-bit資料格式為5-bit R + 6-bit G + 5-bit B。G多一位,原因是人眼對綠色比較敏感。

RAW RGB: 

sensor的每一畫素對應一個彩色濾光片,濾光片按Bayer pattern分佈。將每一個畫素的資料直接輸出,即RAW RGB data,raw檔案都是未經過處理從數碼相機感測器上匯出的原始資訊。Raw RGB 每個畫素只有一種顏色(R、G、B中的一種); RGB 每個畫素都有三種顏色,每一個的值在0~255之間; 在手機攝像頭的測試過程中,由sensor輸出的資料就是Raw data(Raw RGB),經過彩色插值就變成RGB

JPEG: 有些sensor,特別是低解析度的,其自帶JPEG engine,可以直接輸出壓縮後的jpg格式的資料

對於這幾種輸出格式,幾個疑問: 
1、 有些手機基帶晶片只能支援2M以下的YUV sensor,3M以上只能使用JPEG sensor,這裡說明YUV輸出格式對基帶晶片有一定的要求, 那麼到底YUV sensor對基帶晶片有怎樣的要求呢?
2、 如果直接輸出RGB,對於LCD的顯示是最方便的,那麼為何大多數基帶晶片都是要求輸出為YUV格式的資料再進行處理呢?


1 YUV一個畫素佔2B,如果畫素太高在高時鐘下基帶晶片處理不過來,JPEG資料量就要小的多,所以不是YUV對基帶晶片有要求而是基帶晶片對輸出資料速率有要求。
2 RGB565一般用在很低端的基帶晶片上,直接往屏上刷。YUV輸出亮度訊號沒有任何損失,而色偏訊號人眼並不是特別敏感,RGB565輸出格式是R5G3 G3B5會丟掉很多原始資訊,所以YUV影象質量和穩定性要比RGB565好的多
3 RAW資料每個畫素就1B,資料量要少很多,一般5M以上sensor就只輸出RAW資料以保證比較快的輸出速度,後端掛一個DSP來處理輸出的資料。

6、重點講解:RAW格式與YUV格式

RAW格式
RAW的原意就是“未經加工”。RAW影象就是CMOS或者CCD影象感應器將捕捉到的光源訊號轉化為數字訊號的原始資料。
RAW檔案是一種記錄了數碼相機感測器的原始資訊,同時記錄了由相機拍攝所產生的一些原資料(Metadata,如ISO的設定、快門速度、光圈值、白平衡等)的檔案。RAW是未經處理、也未經壓縮的格式,可以把RAW概念化為“原始影象編碼資料”或更形象的稱為“數字底片”。

YUV格式
在現代彩色電視系統中,通常採用三管彩色攝影機或彩色CCD攝影機進行取像,然後把取得的彩色影象訊號經分色、分別放大校正後得到RGB,再經過矩陣變換電路得到亮度訊號Y和兩個色差訊號R-Y(即U)、B-Y(即V),最後傳送端將亮度和色差三個訊號分別進行編碼,用同一通道傳送出去。這種色彩的表示方法就是所謂的YUV色彩空間表示。採用YUV色彩空間的重要性是它的亮度訊號Y和色度訊號U、V是分離的。如果只有 Y訊號分量而沒有U、V訊號分量,那麼這樣表示的影象就是黑白灰度影象。彩色電視採用YUV空間正是為了用亮度訊號Y解決彩色電視機與黑白電視機的相容問題,使黑白電視機也能接收彩色電視訊號。

SOC Sensor 包含Simple ISP 在裡頭,可以數位處理pixle後,給出YUV 格式的影象
ex: OV7725
Bayer Sensor 一般指RAW Data Sensor, 需要外部的DSP/ISP 處理
ex:OV9710/2/5
依方便性而言,SOC Sensor 比較好
若要求影像品質,Bayer Sensor 可以有較多的優化

YUV Sensor
YUV Sensor輸出的格式是YUV,影象的處理效果使用sensor內部的ISP,BB端接收到的YUV格式資料後只能進行格式的轉換,效果方面不進行處理,由於Sensor內部的ISP處理能力有限,而且YUV Sensor的資料量比較大(YUV422格式1個pixel佔據兩個bytes),所以YUV Sensor的size都比較小,常見的YUV sensor都在5MB以下。

Raw Sensor
Raw Sensor輸出的格式為Raw,影象的處理效果使用BB端的ISP,BB端接受到Raw data進行一系列的影象處理(OB, Shading, AWB, Gamma, EE, ANR等),效果方面是由BB進行控制,需要針對不同的模組進行效果除錯,Raw sensor是目前的主流,資料量比YUV Sensor小(RAW10格式的sensor 1個pixel佔用10bit),使用平臺ISP處理,能支援較大的size

YUV  sensor 又叫soc senor , 和 RAW  sensor 的區別為 ISP  是在 模組內部,還是BB 上;
YUV是一種壓縮後的影象資料格式,包含很多具體的格式型別,包含很多具體的格式型別,攝像頭對應的是YCBCr( 8bits,4:2:2,Interpolated color)

Camera的raw data一般都是YUV420的格式,資料的特點是:
 YUV 4:2:0取樣,每四個Y共用一組UV分量
YUV420格式:

先Y,後V,中間是U。其中的Y是w * h,U和V是w/2 * (h/2)  w:width  h:hight
如果w = 4,h = 2,則:
yyyy
yyyy
uu
vv
記憶體則是:yyyyyyyyuuvv
需要佔用的記憶體:w*h(Y佔用記憶體大小) + w * h/4(U佔用記憶體大小) + w * h/4(V佔用記憶體大小)   = w*h * 3 / 2

所以YUV420 資料在記憶體中的長度是 width * hight * 3 / 2,

YUV420包括:YUV420p和YUV420SP兩種格式
假設一個解析度為8X4的YUV影象,它們的格式如下圖:


以640x480_420.yuv為例,正確的儲存格式為一大片Y,跟著一大片U,最後是一大片V:
-------------------------640x480 point
Y(0,0) Y(0,1)... Y(0,639)
...
Y(479,0) Y(479,1)... Y(479,639)
-------------------------640x480 point

-------------------------320x240 point
U(0,0) U(0,1)... U(0,319)
...
U((239,0) U((239,1)... U((239,319)
-------------------------320x240 point

-------------------------320x240 point
V(0,0) V(0,1)... V(0,319)
...
V((239,0) V((239,1)... V((239,319)
-------------------------320x240 point

除錯工具:

YUV tools可以分析圖片的YUV資料


相關推薦

android平臺camera基礎知識總結

1、camera型別     android平臺主要有UVC camera和非UVC camera(並口/MIPI介面) 2、ISP(Image Signal Processor)影視處理 無論數碼相機、攝像機或者攝像手機,其影像資料從前端感應後,皆須經過ASP(Anal

Android自定義View基礎知識總結

自定義View關鍵點 1 自定義繪製的方式是重寫繪製方法,其中最常見的是onDraw()方法。 2 繪製的關鍵點是Canvas的使用 (1)Canvas的繪製類方法:drawXXX(xxx),關鍵引數是Paint。 (2)Canvas的輔助類方法:範圍裁切和幾何變換。

Android基礎知識總結

一:多執行緒 1.1:多執行緒的安全問題        多個執行緒共享同一資料,當某一執行緒執行多條語句時,其他執行緒也執行進來,導致資料在某一語句上被多次修改,執行到下一語句時,導致錯誤資料的產生。 1.2:執行緒池的理解        1.2.1:降低資源消耗。通過重

Android入門基礎知識總結之常用控制元件篇

臨近考試,做一下簡單的總結,鞏固一下; 不能面面俱到,舉的都是一些常用的基礎例子; 上一篇:Android入門基礎知識總結之Layout佈局篇 二、常用控制元件篇 本文介紹了TextView,EditText,Button,RadioButton,CheckBo

Android入門基礎知識總結之Layout佈局篇

臨近考試,做一下簡單的總結,鞏固一下; 不能面面俱到,舉的都是一些常用的基礎例子; 下一篇:Android入門基礎知識總結之常用控制元件篇 一、Layout佈局篇 通用屬性還請自行體會,這裡只說了部分特有或常用屬性; 1) LinearLayout(線性佈局

Android面試基礎知識總結(一)

狀態:未完成 Android面試基礎知識總結。 Activity 生命週期 啟動Activity:onCreate->onStart->onResume鎖屏或被其它Activity覆蓋:onPause->onStop解鎖或由被覆蓋狀態再回到前臺:onRes

Android基礎知識總結(一)

1、記憶體溢位和記憶體洩露有什麼區別 記憶體溢位:應用的記憶體已經已經達到系統設定的最大值,進而導致崩潰 記憶體洩露:應用使用資源之後沒有及時釋放,導致應用記憶體中持有了不需要的資源,通常都是由於記憶體洩露導致記憶體溢位。 2、wait()和sleep()

前端基礎知識總結

pla 部分 一個 知識 法則 總結 情況 元素 保存 一、html中alt和title的區別 1.alt是圖片的屬性值,當圖片無法加載的時候,會用alt屬性的值來替換圖片。 2.而title是圖片的標題,當鼠標移動到圖片上時,會顯示圖片的名稱。 [email 

工作中能用到的基礎知識總結(二)

protected 構造函數 blog 繼承鏈 附加 調用 初始化 傳統 -s 簡介 繼承、封裝和多態是面向對象編程的重要特性。要想運用好,就必須熟悉這三種特性,本篇說說我對封裝、繼承和多態相關的知識總結。 知識點 一、訪問修飾符 C#中類及

基礎知識總結之 jdk部分

比較 java_home 二進制 一模一樣 出現 path 解釋 字節碼 編譯 第一次安裝jdk 按照操作走完 會出現 C:\Program Files\Java\jdk1.8.0_91 和 C:\Program Files\Java\jre1.8.0_91 兩個目錄 (

操作系統基礎知識總結(一)

一個 快速 會有 處理死鎖 b2c fcm 死鎖 空間 存儲系統 1. 進程和線程的區別 進程 進程,即正在運行的程序,程序從硬盤載入到內存就變成進程。進程是資源的擁有者,每個進程都擁有著自己的內存空間與多個線程。 線程 線程是指令的執行者,是計算機執行指令的基本單元,一個

正常性入職崗前培訓(非培訓機構的實習生入職培訓)---基礎知識總結

希望 交通 說我 真的 spring 思路 query mvc data- 一:正常性大三實習生入職崗前培訓總結: 也許題目應該叫"那個矯情的大三實習生已經入職實習了": 之前那個矯情的大三生寫的找工作的感受(上次是偏理論性,這次是實踐性出來找工作): 一個忙著找

Android平臺Camera實時濾鏡實現方法探討(十一)--實時美顏濾鏡

.net 兩個 其它 強人 突出 pad eight 地址 模式 上一章完畢了對圖片的磨皮處理。經過簡單算法流程優化,能夠達到非常快的速度。可是不能用於實時美顏。經實驗,若採用僅僅處理Y信號的方案。半徑極限大約是5-10,超過10則明顯感受到卡頓。但對於1920X1

HTML基礎知識總結

博客園 arc 隱藏域 下拉列表框 後臺 羅馬 number control navigator HTML基礎知識總結 轉載文章- 原文地址:http://www.cnblogs.com/46ly/ 經過這段時間的學習,對於html的一些基礎知識有了一定的了解

網絡基礎知識總結

tcp/ip協議 ip地址分類 子網劃分 計算機網絡的基礎,可以簡單的總結為以下條例; Ⅰ.網絡層次的劃分 為了以便在更大範圍內建立計算機網絡,國際標準化組織(ISO)在1978年提出了“開放系統互聯網參考模型”,即著名的OSI(Open System Interconnection)模

Android平臺Camera實時濾鏡實現方法探討(十)--代碼地址以及簡單介紹(20160118更新)

div iss 將在 spa 方法 target 用途 net dsm 簡單做了個相機和圖片編輯模塊,時間原因非常多功能還沒有做。尚有BUG,見諒,將在以後抽時間改動 代碼地址 PS:請點個Star^-^ -----------------------

微信小程序開發基礎知識總結

nodes owa wim remove ide rdd custom value onload 微信小程序在無論在功能、文檔及相關支持方面,都是優於前面幾種微信賬號類型,它提供了很多原生程序才有的接口,使得我們的小程序在很多方面突破H5頁面應用的限制,更加接近原生程序的功

作用域-基礎知識總結------彭記(07)

() 基礎知識 如果 成了 size ron 查找 搜索 log 作用域 1.變量起作用的範圍 -一個變量的作用域就是從這個變量定義開始到這個變量所在的{}結束 2.在js中,只有函數可以創建作用域 -沒有塊級作用域--意味著在if或者for中定義的變量在它們的外部也能夠訪

嚴格模式-基礎知識總結------彭記(015)

sign htm property mode font uncaught ron type 無效 嚴格模式 <script> /*嚴格模式*/ "use strict"; /*如果同時定義多個同名的變量,後面的將前面的覆蓋*/

計算機網絡基礎知識總結

組播 設備驅動 失敗 所有 傳輸過程 reference 自動 網段 次方 轉自:http://www.cnblogs.com/maybe2030/p/4781555.html#top 閱讀目錄 1. 網絡層次劃分 2. OSI七層網絡模型 3. IP地址 4. 子網