1. 程式人生 > 實用技巧 >[轉]camera教程

[轉]camera教程

camera教程

Lens一般由幾片透鏡組成透鏡結構,按材質可分為塑膠透鏡(plastic)或玻璃透鏡(glass),玻璃鏡片比樹脂鏡片貴。塑膠透鏡其實是樹脂鏡片,透光率和感光性等光學指標比不上鍍膜鏡片。
通常攝像頭採用的鏡頭結構有:1P、2P、1G1P、1G2P、2G2P、2G3P、4G、5G等。透鏡越多,成本越高,相對成像效果會更出色(個人理解是光線更均勻、更細緻;對光線的選通更豐富;成像畸變更小,但是會導致鏡頭變長,光通量變小)。

這是攝像頭裡,光學鏡片材質以及數量組成的描述。
攝像頭用的鏡頭構造有:1P、2P、3P、4P、5P、1G1P、1G2P、2G2P、2G3P、 4G、5G 等。數字代表鏡片數量,G代表玻璃材質,效果很好,價格較高,P代表塑料材質,效果一般,價格便宜。比如3G要比3P好,3G2P要比2G2P好。
鏡片越多,成像效果會更出色,成本也會越高。因此一個品質好的攝像頭應該是採用多層玻璃鏡頭。 現在市場上的多數攝像頭產品為了降低成本, 一般會採用廉價的塑膠鏡頭 或一玻一塑鏡頭(即: 1P、2P、1G1P、1G2P 等)
DSP是CCM的重要組成部分,它的作用是將感光晶片獲得的資料及時地快速地傳遞到中央處理器並重新整理感光晶片,因此DSP晶片的好壞,直接影響畫面品質,如:色彩飽和度、清晰度、流暢度等。如果sensor沒有整合DSP,則通過DVP的方式傳輸到baseband晶片中(可以理解為外掛DSP),進入DSP的資料是RAW Data,採集到的原始資料。如果集成了DSP,則RAW Data會經過AWB、color matrix、lens shading、gamma、sharpness、AE和de-noise處理,最終輸出YUV或者RGB格式的資料。
DVP分為三個部分:輸出匯流排;輸入匯流排;電源匯流排;如下圖:

=
image
PWDN

是camera的使能管腳,有兩種配置方式,一種為standby,一種是normal work,設定為standby的時候,一切對camera的操作都是無效的,包括復位。所以在RESET之前,一定要將PWDN管腳設定為normal模式,否則RESET無效。
RESET

是camera的復位管腳,此方式為硬復位模式,camera的各個IO口恢復到出廠預設狀態。只有在XCLK開啟後,將RESET置為低,硬復位才有效,否則復位無效。
XCLK

是camera的工作時鐘管腳,此管腳為BB提供camera的工作時鐘。
IIC

是camera和BB通訊的匯流排通道。
DATA

data為camera的資料管腳。此資料腳可以輸出的格式有YUV、RGB、JPEG等。
VSYNC

為camera的幀同步訊號管腳。一個VYSNC訊號結束表示一幀(即一個畫面)的資料已經輸出完畢。
HSYNC

為camera行同步訊號管腳。一個HSYNC訊號結束表示一行的資料已經輸出完畢。
PCLK

為畫素同步訊號管腳。一個PCLK訊號結束表示一個畫素點的資料已經輸出完畢。
AVDD

AVDD為camera的模擬電壓。
DOVDD

為camera的GPIO口數字電壓。
DVDD

為camera的核工作電壓。
彩色深度(色彩位數)

反映對色彩的識別能力和成像的色彩表現能力,實際就是A/D轉換器的量化精度,是指將訊號分成多少個等級。常用色彩位數(bit)表示。彩色深度越高,獲得的影像色彩就越豔麗動人。現在市場上的攝像頭均已達到24位,有的甚至是32位。
MCLK

攝像頭要 工作,必須要有個時鐘進行同步,這個時鐘就是MCLK,必須要有,否則攝像頭就是一個死物,這個時鐘由主控晶片提供,確切的說是有主控晶片的控制器提供,下面會提到。
根據亮度/照度指數進行除錯的AEC除錯引數都可以使用該策略,使用該策略,可以靈活地通過觸發點分割亮度區域的數量,每個區域都將分配到引數除錯值。在照度指數處於兩個區域之間時,所有引數將通過插值計算得出。
例如featureA包含param1、param2、param3和param4四個引數。在這四個引數內,需要根據亮度\照度指數來除錯param1和param2。可根據偏好定義除錯區數量,但是不應該超過除錯區預定義的最大區域數量,將兩個必須根據照度指數/場景亮度進行除錯的引數組合到一個子結構中,該子結構定義為主除錯結構中的一個數組。將另外兩個無需基於區域進行除錯的引數直接插入主除錯結構。
AEC演算法依賴於攝像頭感測器特定的曝光表,借其以瞭解如何配置該感測器從而控制感光度,曝光表從指數0開始,該指數對應幀率不變情況下可能的最低感光度。此設定適用於非常明亮的光源條件下。該曝光表以幀率不變情況下可能的最高感光度指數結束。通常將這一最大指數設定為感測器的全畫幅曝光時間和允許的最大增益。曝光表指數每增大一級,感光度將隨之變化3%。
400 lux 光源條件的照度指數“lux_idx_under_400”
Trigger[0].start = lux_idx_under_400-100
Trigger[0].end = lux_idx_under_400-60
Trigger[1].start = lux_idx_under_400 + 90
Trigger[1].end = lux_idx_under_400 + 160
/* AWB Reference Points /
{
/
D65 AWB Reference Point /
{
0.383700f, /
R/G ratio /
0.781200f, /
B/G ratio /
},
/
Shade AWB Reference Point /
{
0.341800f, /
R/G ratio /
0.832900f, /
B/G ratio /
},
/
A AWB Reference Point /
{
0.696800f, /
R/G ratio /
0.436700f, /
B/G ratio /
},
/
TL84 AWB Reference Point /
{
0.524900f, /
R/G ratio /
0.508300f, /
B/G ratio */
},

AWB 基礎除錯程式碼跟換點。
image.png

拖動滑塊調整相應的指數,室內指數與室外指數只差必須大於80,避免AWB突然變化。
/* Indoor Color Correction /
{
/
D65 /
{
1, /
Enable /
/
D65 /
{
1.645500f, -0.721500f, 0.076100f,
-0.157900f, 1.317100f, -0.159300f,
0.086700f, -0.699900f, 1.613100f,
0, 0, 0,
0
},
},
/
D50 /
{
1, /
Enable /
/
D50 */
{
1.727600f-0.1, -0.764600f+0.05, 0.037000f+0.05,
-0.186600f+0.05, 1.293300f-0.1, -0.106700f+0.05,
0.040800f+0.05, -0.813000f+0.05, 1.772200f-0.1,
0, 0, 0,
0
},

在3A檔案的3370行是color correction gamma除錯模組引數更改位置。
ABF除錯

bright light 使用1000Lux tl84MCC色卡。
normal light 使用200luxtl84MCC色卡。
lowlight 使用10lux及1000lux*Tl84MCC色卡。
對於lowlight除錯,chromatix會通過1000luxMCC色卡RAW圖片計算應用於lowlight圖片的gain值。

image.png

ABF 可在降噪的同時不鈍化邊緣。
小波降噪

需要TL84條件下拍攝的1000-10lux的raw圖。

對於region 5和6,Chromatix6會通過1000 lux
MCC色卡Raw圖片來計算應用於Lowlight影象的gain值
在AEC除錯開始,應該使用chromatix工具執行以下步驟:
1.黑電平 2.線性度 3.鏡頭衰減 4.gamma校正。在isp tuning選項卡上點選edit chromatix data。在header選項卡上選擇VFE Blocks > Luma Adaptation > Luma Adaptation Enable,並驗證該值是否為 0(禁用)。

亮區

在AEC Fine Tuning選項卡上,開啟 bright region tuning面板。清除enable複選框。
在3A標頭檔案裡搜尋 AEC Bright Region */關鍵詞就是亮區的更改點。
暗區

在 AEC Fine Tuning選項卡上,開啟 dark region tuning。取消選中enable複選框。
平面場景檢測

在AEC Fine Tuning選項卡上,點選 Edit Header。在3A選項卡上,選擇AEC>Flat Region>Flat Scene Detection,並驗證該值是否為0。
極限色檢測和亮度調整

在AEC Fine Tuning 選項卡上,開啟 EXtreme Color Tuning 面板。
取消選中enable 複選框。
直方圖AEC亮度調整在AEC Fine Tuning選項卡上,開啟Histogram Metering Tunning 面板。取消選中 enable複選框。除錯過程中使用的所有影象必須由待除錯的裝置進行拍攝。
基於多區域的通用AEC除錯

基於多區域的通用AEC除錯將在chromatix 0x308標頭檔案中引入,該除錯策略用於包括以下功能在內的許多AEC功能。
1.亮區目標、亮區、暗區、直方圖目標調整、極限色
任何根據亮度/照度指數進行除錯的AEC除錯引數都可使用策略,使用該策略,可以靈活的通過觸發點分割亮度區域的數量,每個區域都將分配到引數除錯值,在照度指數處於兩個區域之前時,所有引數將通過插值計算得出。

/* WLED Trigger /
{
410, / LED Trigger Start Lux Index /
50, / LED Trigger End Lux Index */
},

增大該值可以再更暗的場景中觸發LED閃光燈。減少該值可以在更亮的場景中觸發LED閃光燈。

/* Fast Convergence /
{
0, / Frame Skip /
0.100000f, / Aggressiveness /
/ Reserved */
{
0.200000f, 0.400000f, 1.500000f, 1.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f
}
},

在aggressive欄位中介於0到1之間的值,數值越小,AE速度越快,建議預設值為0.8。
在frame skip欄位輸入相應值,預設值為0,如果跳幀值不為0。禁用local tone mapping 以避免預覽模式中出現亮度閃爍。
跳幀基於感測器曝光作用時序,在之前的影象幀曝光更新尚未統計資料前,如果再次執行曝光更新,則可能出現AEC震盪,將AEC Fast Convergence的值改為1即可以解決該問題。
將攝像頭對準由亮到暗的場景,然後對準由暗到亮的場景,驗證預覽收斂除錯效果。不要除錯reserved引數,而是使用預設值。
除錯室內室外指數

室內和室外指數引數區分室內室外,以及日光直射與陰天/暗光條件
AWB 參考點指的是不同光源的灰色 R/G 和 B/G 比率。灰色的參考點用來為 AWB 計算確定灰區。由於頻譜靈敏度的原因,每個sensor模組的 R/G 和 B/G 比率都不盡相同。需要針對每個sensor模組進行參考點校準。
如果使用基準圖片除錯對 ISP 模組進行初始除錯,基準圖片除錯過程會根據載入到影象庫中的影象自動計算出 AWB 參考點,但是這種方式自動計算出來的參考點沒有抓取log得到參考點準確。

抓取log的方式如下:

adb root

adb remount

adb wait-for-device

adb shell setprop persist.vendor.camera.stats.awb.debug 5

adb logcat | findstr "simple-grey-world"

在燈箱D75、D65、D50、TL84、A、U30、CWF光源下對準灰卡,使得灰卡佔相機整個FOV,抓取參考點

將這些參考點填寫到3A標頭檔案中reference point結構體對應的光源中,noon和custom daylight可以與D50光下咋參考點一致,custom A可以與A光一致,如果需要也可以單獨去抓取這些參考點。
AF理解:
image.png

ISP通過IIC控制驅動晶片。10bit資料位,對應0-1023DAC code值,驅動晶片根據IIC資料,識別對應sink VCM迴路電流,不同電流值,產生不同推力推動鏡頭,0-1023code代表0mA電流——max mA電流,線性關係。
ISP通過控制DAC code值來改變輸出電流值的大小,而ISP就是通過清晰度來判斷給多少DAC值。

image.png

馬達驅動晶片輸出多大的電流都是由後端來控制。當後端平臺給出一點運動指令,馬達就會帶著鏡頭向目的奔去。由於音圈馬達內固定經鏡頭的載體採用彈片固定,所以在到達指定的位置後,由於彈片受力的因素,需要震盪一段時間之後才會穩定。馬達驅動晶片在設計的時候,就引入一個叫做快速穩定的功能。
除錯觸控式AEC

觸控式AEC可根據預覽顯示螢幕的特定觸控區域來修改亮度測光權重,

1, /* ROI Enable /1用0不用
0.700000f, / Weight /均衡選定UI區域的亮度和正常AEC亮度。/
/* Reserved */
{
0.000000f, 1.000000f, 0.500000f, 0.000000f, 0.000000f
}
},

光源權重

光源權重向量的基本假設是:在某些對應的亮度範圍內,光源有很大概率被判定為特定樣本。例如,在曝光指數較低的明亮環境下,光源被判定為A樣本的可能性非常低。而與之相反,在曝光指數較低的日光環境下,光源被判定為D50樣本的可能性卻很高。
除錯極端藍色

極端藍色除錯檢測天空顏色,避免出現天空發紫問題。
0.755861f, /* Ref B BG Tl84 /
1.000000f, /
Threshold To Identify Extreme Blue Stats /
0.200000f, /
Blue Sky Percent /
0.150000f, /
Blue Sky Percent Buffer /
0.100000f, /
Threshold Extreme B Percent For Blue Sky Check */
bule sky percent

增大該值以提高極端藍色統計資料百分比,以便呼叫室外藍天場景所需的防天空發紫功能。
減小該值可降低觸發防天空發紫功能所需達到的極端藍色統計資料數量。
blue sky percent buffer

減小該值可擴大緩衝區
增大該值可縮小緩衝區

作者:清亮2015
連結:https://www.jianshu.com/p/413782f7c53d