Tag分類
通過對CaptureRequest的分類,我們會發(fā)現(xiàn)request有
- COLOR_ 色彩校正相關(guān)的Tag
- CONTROL_ 控制3A,CropRegin,Zoom相關(guān)的Tag,CONTROLL_主要是控制開關(guān)或者一些模式的選擇
- LENS_ 鏡片屬性相關(guān)的TAG(光圈)
- SCALER_ 邊焦相關(guān)的TAG,主要是響應(yīng)用戶操作設(shè)置的一些區(qū)域值
- SENSOR_ sensor是一種半導(dǎo)體芯片,有兩種類型:CCD 和 CMOS,手機使用的是CMOS, 圖像傳感器相關(guān)的TAG主要負責(zé)選擇sensor的提供的各種處理的模式,一般是提供專業(yè)模式的操作,會覆蓋算法自動的處理
- STATISTICS_ 統(tǒng)計分析相關(guān)功能的Tag,例如面部和運動識別
- TONEMAP_ 色調(diào)相關(guān)的轉(zhuǎn)換Tag
CaptureRequest#black_level_lock
首先理解:黑電平補償 (black level compensation)
BLC(BlackLevel Correction)------黑電平校正
底電流, Black Level
也叫暗電流,意思是說環(huán)境全黑的時候的電流。是用來定義圖像數(shù)據(jù)為 0 時對應(yīng)的信號電平。
由于暗電流的影響, 傳感器出來的實際原始數(shù)據(jù)并不是我們需要的黑平衡( 數(shù)據(jù)不為0) 。 所以,為減少暗電流對圖像信號的影響,可以采用的有效的方法是從已獲得的圖像信號中減去參考暗電流信號。一般情況下, 在傳感器中,實際像素要比有效像素多, 像素區(qū)頭幾行作為不感光區(qū)( 實際上, 這部分區(qū)域也做了 RGB 的 color filter) , 用于自動黑電平校正, 其平均值作為校正值, 然后在下面區(qū)域的像素都減去此矯正值, 那么就可以將黑電平矯正過來了。
通常來說,黑電平補償值會在請求過程中會保持鎖定,除非請求中的其他參數(shù)影響要求黑點平補償值改變才會關(guān)閉鎖定(例如曝光時間 exposure time)
CaptureRequest#color_correction_aberration_mode
色差是由于不同波長的光在離開透鏡后不能聚焦在同一點上
除了再鏡頭設(shè)計時通過采用具有相同色散特性而方向相反的不同光學(xué)材料組成成對的鏡片組等手段來控制色差,在ISP過程中也能處理色差,對于橫向色差,通常在圖像全局上進項校正,將紅綠藍三 個顏色通道調(diào)整到相同的放大倍數(shù),一般通過標定三個顏色平面的增益來修正,為了控制標定表格的存儲空間,通常只標定MxN個關(guān)鍵點,任意位置處的像素增益可以使用相鄰四個標定關(guān)鍵點通過雙線性插值的方法動態(tài)計算得到。這對于固定的光學(xué)鏡頭比較有效,但是對變焦鏡頭則難以適用。
可以在請求中設(shè)置色差校正的模式,通常有以下的模式
- `[OFF] 關(guān)閉校正
- `[FAST] 快速模式,通常API1模式運行的設(shè)備執(zhí)行快速模式
- `[HIGH_QUALITY] 高質(zhì)量模式,這個模式會對降低抓幀的速率
CaptureRequest#COLOR_CORRECTION_MODE
設(shè)置控制選擇如何將圖像數(shù)據(jù)從傳感器色彩(bayer陣列)轉(zhuǎn)換為線性sRGB顏色的模式。
- `[TRANSFORM_MATRIX]
- `[FAST]
- `[HIGH_QUALITY]
CaptureRequest#COLOR_CORRECTION_GAINS
對白平衡模式的bayer色彩進行增益,通常值范圍是1.0~3.0
AWB白平衡基本知識梳理
CaptureRequest#CONTROL_AE_ANTIBANDING_MODE
相機設(shè)備的自動曝光算法的防止出現(xiàn)亮條紋帶補償所需的設(shè)置,主要是應(yīng)對絕對固定照明頻繁的光源,
通常來說,現(xiàn)在的相機設(shè)備都支持自動模式,如果自動模式不可用,可以按照電壓頻率設(shè)置。
- [OFF]
- [50HZ]
- [60HZ]
- [AUTO]
CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION
調(diào)整自動曝光(AE)目標圖像亮度,也就是常說的EV值
在曝光補償值改變的情況下,相機設(shè)備可能需要幾幀才能達到新請求的曝光目標。在那段時間里,CaptureResult#CONTROL_AE_STATE將處于搜索狀態(tài)。一旦達到了新的曝光目標,CaptureResult#CONTROL_AE_STATE將從搜索更改為聚合、鎖定(如果啟用了AE鎖定),或需要閃光燈(如果場景太暗,無法進行靜止捕捉)。
CaptureRequest#CONTROL_AE_LOCK
自動曝光(AE)當(dāng)前是否鎖定為其最新計算值。
當(dāng)設(shè)置為true(打開)時,AE算法將鎖定到其最新參數(shù),并且在鎖定設(shè)置為false(關(guān)閉)之前不會更改曝光設(shè)置。
請注意,即使在AE被鎖定時,如果CaptureRequest#CONTROL_AE_MODE設(shè)置ON_AUTO_FLASH / ON_ALWAYS_FLASH / ON_AUTO_FLASH_REDEYE.,也可能會觸發(fā)閃光燈。
當(dāng)CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION已更改,即使AE鎖已打開,相機設(shè)備仍將調(diào)整其曝光值。
CaptureRequest#CONTROL_AE_MODE
相機設(shè)備自動曝光例行程序所需的模式。這個Tag關(guān)聯(lián)CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER和CaptureRequest.CONTROL_AF_TRIGGER,當(dāng)設(shè)置任何ON_模式之后,應(yīng)用設(shè)置的CaptureRequest#SENSOR_EXPOSURE_TIME(曝光時間), CaptureRequest#SENSOR_SENSITIVITY(ISO感光度),
CaptureRequest#SENSOR_FRAME_DURATION(幀間隔時間)都會被自動曝光程序覆蓋。
這個設(shè)置僅僅在CaptureRequest#CONTROL_MODE為AUTO模式下才有效。
CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER
相機設(shè)備在處理該請求時是否會觸發(fā)預(yù)拍攝測光序列。
通常設(shè)置為空閑,或者根本不會設(shè)置請求中。當(dāng)包含并設(shè)置為START時,相機設(shè)備將觸發(fā)自動曝光(AE)預(yù)曝光測光序列。
在啟動高質(zhì)量靜態(tài)捕捉之前,應(yīng)觸發(fā)預(yù)捕捉序列,以便做出最終測光決定,并在啟用閃光燈時觸發(fā)預(yù)捕捉閃光脈沖,以估計場景亮度和所需的最終捕捉閃光功率
- [IDLE]
- [START]
- [CANCEL]
CaptureRequest#CONTROL_AE_REGIONS
用于自動曝光調(diào)整的計量區(qū)域列表。通過計量區(qū)域的程序計算AE的補償策略。
最大的支持數(shù)量由CameraCharacteristics#CONTROL_MAX_REGIONS_AE屬性說明,如果是0,則這個Tag不可用,否則這個屬性一直存在。
CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
自動曝光例行程序可以調(diào)整捕獲幀速率以保持良好曝光的范圍。
這個tag僅在自動曝光模式可用,其他設(shè)置CaptureRequest#SENSOR_EXPOSURE_TIME和CaptureRequest#SENSOR_FRAME_DURATION的手動場景不可用
CaptureRequest#CONTROL_AF_MODE
控制自動對焦(AF)當(dāng)前是否啟用,以及設(shè)置什么自動對焦模式。
CaptureRequest#CONTROL_AF_REGIONS
AF對焦設(shè)置的關(guān)注區(qū)域列表,支持的最大個數(shù)由CameraCharacteristics#CONTROL_MAX_REGIONS_AF決定
CaptureRequest#CONTROL_AF_TRIGGER
設(shè)置是否為當(dāng)前的request請求觸發(fā)AF(自動對焦),通常這個值設(shè)置是IDLE狀態(tài),或者在請求中不下發(fā)這個tag
當(dāng)包含并設(shè)置為START時,相機設(shè)備將觸發(fā)自動對焦算法。如果禁用自動對焦,則此觸發(fā)器無效。
當(dāng)設(shè)置為CANCEL時,相機設(shè)備將取消任何活動觸發(fā)器,并返回其初始AF狀態(tài)。
可以通過CaptureResult#CONTROL_AF_STATE獲取AF的狀態(tài),從而了解在不同的AF Mode下 trigger到底引發(fā)了AF什么狀態(tài)變化。
CaptureRequest#CONTROL_AWB_LOCK
自動白平衡(AWB)當(dāng)前是否鎖定為其最新計算值。
功能層面上和CaptureRequest#CONTROL_AE_LOCK類似,都是用于鎖定當(dāng)前的請求最新的計算值。
當(dāng)設(shè)置為true(打開)時,AWB算法將鎖定到其最新參數(shù),并且在鎖定設(shè)置為false(關(guān)閉)之前不會更改顏色平衡設(shè)置。
這里有一個問題,就是請求是在隊列排隊中處理,因此一個Lock請求真正被處理的時候,并不是對應(yīng)返回的最新的CaptureResult的設(shè)置,并且在CaptureResult返回的時候,AWB還未被鎖定, 因此AWB還在不同的更新設(shè)置。
如果應(yīng)用在自動切換的手動的時候為了防止AWB變化引起的閃爍,可以通過
1、開啟AWB自動模式
2、下發(fā)lock awb請求
3、等待第一次lock awb的結(jié)果返回(CaptureResult?hl=en#CONTROL_AWB_LOCK)
4、從result中拷貝所有的設(shè)置到request中,設(shè)置manual模式(CONTROL_AF_MODE_OFF)
5、提交請求,運行manual手動模式