camera2的一些參數

雖然HAL層負責實現3A算法,但HAL interface定義了一個高層次的狀態機描述,允許HAL層設備和framework層交流3A當前狀態和3A事件的觸發情況。

當設備被打開時,所有3A狀態都應該是STATE_INACTIVE。碼流配置不需重置3A。例如,需要通過調用configure()來修改固定焦點。

要觸發3A行爲,需要爲下一個請求簡單地設置相關觸發器實體,以引導觸發器的啓動。例如,啓動自動聚焦的觸發器需要在一個請求中將ANDROID_CONTROL_AF_TRIGGER設置爲ANDROID_CONTROL_AF_TRIGGER_START。停止自動聚焦需要將ANDROID_CONTROL_AF_TRIGGER設置爲ANDROID_CONTRL_AF_TRIGGER_CANCEL。否則,實體不存在或者被設置爲ANDROID_CONTROL_AF_TRIGGER_IDLE。每個請求對觸發器設置一個非IDLE的值,都會引發一個獨立的觸發器事件。

在頂層,通過設置ANDROID_CONTROL_MODE控制3A。可以選擇沒有3A(ANDROID_CONTROL_MODE_OFF),自動模式(ANDROID_CONTROL_MODE_AUTO)和場景模式(ANDROID_CONTROL_USE_SCENE_MODE)。

·        在OFF模式下,自動聚焦(AF),自動曝光(AE)和自動白平衡(AEB)模式都被關閉。3A事例不會重置捕獲控制中的任何設置。

·        在AUTO模式下,AF,AE和AWB模式運行各自的獨立算法,它們有自己的模式,狀態和觸發器元數據實體,如下段描述。

·        在USE_SCENE_MODE模式下,ANDROID_CONTROL_SCENE_MODE的值決定3A事例的行爲。在除了FACE_PRIORITY的SCENE_MODE中,HAL層必須將ANDROID_CONTROL_AE/AWB/AF_MODE的值重置爲更適合被選擇的SCENE_MODE的模式。例如,HAL層喜歡在SCENE_MODE_NIGHT場景中使用AF的CONTINUOUS_FOCUS模式。當這些場景模式被忽略時,將使用用戶對AE/AWB/AF_MODE的選擇。

·        對SCENE_MODE_FACE_PRIORITY的場景,AE/AWB/AFMODE工作在ANDROID_CONTROL_MODE_AUTO模式下。但是3A算法需要側重對場景中檢測出來的臉進行測光和聚焦。

 

1.        Auto-focus settings and result entries

Main metadata entries:
ANDROID_CONTROL_AF_MODE:控制當前自動聚焦模式的選擇。通過framework層在請求中設置。
AF_MODE_OFF:AF關閉;framework/app直接控制鏡頭的位置。
AF_MODE_AUTO:Single-sweep自動聚焦。只有AF被觸發,鏡頭纔會移動。

AF_MODE_MACRO:Single-sweep微距自動聚焦。只有AF被觸發,鏡頭纔會移動。

AF_MODE_CONTINUOUS_VIDEO:平滑的持續聚焦,用於視頻錄製。觸發則立即在當前位置鎖住焦點。取消而繼續持續聚焦。

AF_MODE_CONTINUOUS_PICTURE:快速持續聚焦,用於靜態圖片的ZSL捕獲。一旦達到掃描目標,觸發則立即鎖住焦點。取消而繼續持續聚焦。

AF_MODE_EDOF:高級的景深聚焦。沒有自動聚焦的瀏覽,觸發和取消沒有意義。通過HAL層控制圖像的聚集。

ANDROID_CONTROL_AF_STATE:描述當前AF算法狀態的動態元數據,HAL層在結果的元數據中報告該信息。

AF_STATE_INACTIVE:不做聚焦,或者算法被重置。鏡頭不移動。這個狀態總是用於MODE_OFF或者MODE_EDOF。當設備剛被打開時,必須處於這個狀態。

AF_STATE_PASSIVE_SCAN:一個持續聚焦的算法正在做掃描。鏡頭正在移動中。

AF_STATE_PASSIVE_FOCUSED:一個持續聚焦的算法認爲已經聚焦成功。鏡頭不在移動。HAL層會自動地離開這個狀態。

AF_STATE_PASSIVE_UNFOCUSED:一個持續聚焦的算法認爲聚焦失敗。鏡頭不在移動。HAL層會自動地離開這個狀態。

AF_STATE_ACTIVE_SCAN:用戶觸發的掃描正在進行中。

AF_STATE_FOCUSED_LOCKED:AF算法認爲聚焦結束。鏡頭不再移動。

AF_STATE_NOT_FOCUSED_LOCKED:AF算法沒能完成聚焦。鏡頭不再移動。

ANDROID_CONTROL_AFTRIGGER:控制啓動自動聚集掃描,其意義由所選擇的模式和狀態決定。Framework層在請求中設置該值。

AF_TRIGGER_IDLE:沒有觸發器。

AF_TRIGGER_START:觸發AF掃描。其作用取決於模式和狀態。

AF_TRIGGER_CANCEL:停止當前的AF掃描,重置算法到默認狀態。

其他元數據實體:

ANDROID_CONTROL_AF_REGIONS:控制視角區域的選擇,用於檢測好的聚焦點。用於所有可進行聚焦掃描的AF模式。Framework層在請求中設置該值。

 

2.        Auto-exposure settings and result entries

Main metadata entries:
ANDROID_CONTROL_AE_MODE:控制當前自動曝光模式的選擇。Framework層在請求中設置該值。

AE_MODE_OFF:關閉自動曝光;用戶控制曝光,增益,幀週期和閃光燈。

AE_MODE_ON:標準的自動聚焦,閃光燈關閉。用戶設置閃光燈啓動或者手電筒模式。

AE_MODE_ON_AUTO_FLASH:標準自動曝光,開啓閃光燈。HAL層精確控制捕獲前和捕獲靜態圖片時閃光。用戶可控制閃光燈關閉。

AE_MODE_ON_ALWAYS_FLASH:標準自動曝光,拍照時閃光燈一直開啓。HAL層精確控制捕獲前閃光。用戶可控制閃光燈關閉。

AE_MODE_ON_AUTO_FLASH_REDEYE:標準自動曝光。HAL層精確控制預閃和捕獲靜態圖片時閃光。在前面捕獲序列的最後一幀啓動一次閃光燈,以減少後面圖片中的紅眼現象。用戶可控制閃光燈關閉。

ANDROID_CONTROL_AE_STATE:描述當前AE算法狀態的動態元數據,HAL層在結果的元數據中報告該信息。

AE_STATE_INACTIVE:模式切換後AE初始狀態。當設備剛打開時,AE必須處於這個狀態。

AE_STATE_SEARCHING:AE沒有達到曝光目標,正在調整曝光參數。

AE_STATE_CONVERGED:AE已經找到當前場景的正確的曝光值,曝光參數不再改變。HAL層會自動離開這個狀態,尋找更好的解決方案。

AE_STATE_LOCKED:使用AE_LOCK已經鎖住了AE。曝光值不再改變。

AE_STATE_FLASH_REQUIRED:HAL層已經曝光成功,但爲了獲取更亮的圖片,需要開啓閃光燈。用於ZSL模式。

AE_STATE_PRECAPTURE:HAL在捕獲序列中間進行控制。根據AE模式,這種模式採用啓動閃光燈測光或者瞬間開啓關閉閃光燈預防紅眼。

ANDROID_CONTROL_AE_PRECAPTURE_TRIGGER:在捕獲一張高質量圖像之前,控制啓動一個測光序列。Framework層在請求中設置該值。

PRECAPTURE_TRIGGER_IDLE:沒有觸發器。

PRECAPTURE_TRIGGER_START:啓動一個捕獲序列。HAL層使用後續的請求爲獲取高分辨率圖像決定理想的曝光/白平衡。

Additional metadata entries:
ANDROID_CONTROL_AE_LOCK:控制鎖住AE當前的值。

ANDROID_CONTROL_AE_EXPOSURE_COMPENSATION:控制調整AE算法目標亮度點。

ANDROID_CONTROL_AE_TARGET_FPS_RANGE:控制選擇AE算法的目標幀率區間。AE事例不能使用這個區間之外的幀率值。

ANDROID_CONTROL_AE_REGIONS:控制視角區域的選擇,用於檢測好的曝光值。用於所有除了OOF的AE模式。

 

3.        Auto-whitebalance settings and resultentries

Main metadata entries:
ANDROID_CONTROL_AWB_MODE:控制當前白平衡模式的選擇。

AWB_MODE_OFF:關閉自動白平衡。用戶控制顏色矩陣。

AWB_MODE_AUTO:使能自動白平衡;3A控制顏色轉換,可能會使用比簡單矩陣更復雜的轉換。

AWB_MODE_INCANDESCENT:用於室內白zhi燈的白平衡設置,色溫大概2700K。

AWB_MODE_FLUORESCENT:用於熒光燈的白平衡設置,色溫大概5000K。

AWB_MODE_WARM_FLUORESCENT:用於熒光燈的白平衡設置,色溫大概3000K。

AWB_MODE_DAYLIGHT:用於晴天的白平衡設置,色溫大概5500K。

AWB_MODE_CLOUDY_DAYLIGHT:用於陰天的白平衡設置,色溫大概6500K。

AWB_MODE_TWILIGHT:用於日出/日落的白平衡設置,色溫大概15000K。

AWB_MODE_SHADE:用於陰影處的白平衡設置,色溫大概7500K。

ANDROID_CONTROL_AWB_STATE:描述當前AWB算法狀態的動態元數據,HAL層在結果的元數據中報告該信息。

AWB_STATE_INACTIVE:切換模式後AWB的初始狀態。當設備剛打開時,AWB必須處於這個狀態。

AWB_STATE_SEARCHING:AWB沒有收斂到目標值,在改變顏色調整參數。

AWB_STATE_CONVERGED:AWB爲當前場景已經找到了理想的顏色調整值,這些參數不再改變。HAL層會自動離開該狀態去尋找更好的解決方案。

AWB_STATE_LOCKED:使用AWB_LOCK鎖住了AWB。顏色調整值不再改變。

Additional metadata entries:
ANDROID_CONTROL_AWB_LOCK:控制鎖住當前AWB的值。

ANDROID_CONTROL_AWB_REGIONS:控制視角區域的選擇,用於檢測好的顏色平衡值。只用於自動白平衡模式。

 

4.        General state machine transition notes

在切換AF,AE和AWB的不同模式是總會將算法的狀態重置爲INACTIVE。同樣地,在CONTROL_MODE和CONTROL_SCENE_MODE(CONTROL_MODE == USE_SCENE_MODE)之間切換時,也需要將算法的狀態重置爲INACTIVE。

5.        AF state machines

 

mode = AF_MODE_OFF or AF_MODE_EDOF      
State Transformation cause New state Notes
INACTIVE     AF is disabled
mode = AF_MODE_AUTO or AF_MODE_MACRO      
State Transformation cause New state Notes
INACTIVE AF_TRIGGER ACTIVE_SCAN Start AF sweep      Lens now moving
ACTIVE_SCAN AF sweep done FOCUSED_LOCKED If AF successful Lens now locked
ACTIVE_SCAN AF sweep done NOT_FOCUSED_LOCKED If AF successful      Lens now locked
ACTIVE_SCAN AF_CANCEL INACTIVE Cancel/reset AF      Lens now locked
FOCUSED_LOCKED AF_CANCEL INACTIVE Cancel/reset AF
FOCUSED_LOCKED AF_TRIGGER ACTIVE_SCAN Start new sweep      Lens now moving
NOT_FOCUSED_LOCKED AF_CANCEL INACTIVE Cancel/reset AF
NOT_FOCUSED_LOCKED AF_TRIGGER ACTIVE_SCAN Start new sweep      Lens now moving
All states mode change INACTIVE  
mode = AF_MODE_CONTINUOUS_VIDEO      
State Transformation cause New state Notes
INACTIVE HAL initiates new scan PASSIVE_SCAN Start AF sweep      Lens now moving
INACTIVE AF_TRIGGER NOT_FOCUSED_LOCKED AF state query       Lens now locked
PASSIVE_SCAN HAL completes current scan PASSIVE_FOCUSED End AF scan      Lens now locked
PASSIVE_SCAN AF_TRIGGER FOCUSED_LOCKED Immediate transformation      if focus is good      Lens now locked
PASSIVE_SCAN AF_TRIGGER NOT_FOCUSED_LOCKED Immediate transformation      if focus is bad      Lens now locked
PASSIVE_SCAN AF_CANCEL INACTIVE Reset lens position      Lens now locked
PASSIVE_FOCUSED HAL initiates new scan PASSIVE_SCAN Start AF scan      Lens now moving
PASSIVE_FOCUSED AF_TRIGGER FOCUSED_LOCKED Immediate transformation      if focus is good      Lens now locked
PASSIVE_FOCUSED AF_TRIGGER NOT_FOCUSED_LOCKED Immediate transformation      if focus is bad      Lens now locked
FOCUSED_LOCKED AF_TRIGGER FOCUSED_LOCKED No effect
FOCUSED_LOCKED AF_CANCEL INACTIVE Restart AF scan
NOT_FOCUSED_LOCKED AF_TRIGGER NOT_FOCUSED_LOCKED No effect
NOT_FOCUSED_LOCKED AF_CANCEL INACTIVE Restart AF scan
mode = AF_MODE_CONTINUOUS_PICTURE      
State Transformation cause New state Notes
INACTIVE HAL initiates new scan PASSIVE_SCAN Start AF scan      Lens now moving
INACTIVE AF_TRIGGER NOT_FOCUSED_LOCKED AF state query      Lens now locked
PASSIVE_SCAN HAL completes current scan PASSIVE_FOCUSED End AF scan      Lens now locked
PASSIVE_SCAN AF_TRIGGER FOCUSED_LOCKED Eventual transformation once focus good      Lens now locked
PASSIVE_SCAN AF_TRIGGER NOT_FOCUSED_LOCKED Eventual transformation if cannot focus      Lens now locked
PASSIVE_SCAN AF_CANCEL INACTIVE Reset lens position      Lens now locked
PASSIVE_FOCUSED HAL initiates new scan PASSIVE_SCAN Start AF scan      Lens now moving
PASSIVE_FOCUSED AF_TRIGGER FOCUSED_LOCKED Immediate transformation if focus is good      Lens now locked
PASSIVE_FOCUSED AF_TRIGGER NOT_FOCUSED_LOCKED Immediate transformation if focus is bad      Lens now locked
FOCUSED_LOCKED AF_TRIGGER FOCUSED_LOCKED No effect
FOCUSED_LOCKED AF_CANCEL INACTIVE Restart AF scan
NOT_FOCUSED_LOCKED AF_TRIGGER NOT_FOCUSED_LOCKED No effect
NOT_FOCUSED_LOCKED AF_CANCEL INACTIVE Restart AF scan

6.        AE and AWB state machines

AE和AWB的狀態機基本上是完全相同的。AE有額外的FLASH_REQUIRED和PRECAPTURE狀態。所以下面行中涉及這兩個狀態時,AWB狀態機忽略之。

  

mode = AE_MODE_OFF / AWB mode not AUTO      
State Transformation cause New state Notes
INACTIVE     AE/AWB disabled
mode = AE_MODE_ON_* / AWB_MODE_AUTO      
State Transformation cause New state Notes
INACTIVE HAL initiates AE/AWB scan SEARCHING  
INACTIVE AE/AWB_LOCK on LOCKED Values locked
SEARCHING HAL finishes AE/AWB scan CONVERGED Good values, not changing
SEARCHING HAL finishes AE scan FLASH_REQUIRED Converged but too dark without flash
SEARCHING AE/AWB_LOCK on LOCKED Values locked
CONVERGED HAL initiates AE/AWB scan SEARCHING Values locked
CONVERGED AE/AWB_LOCK on LOCKED Values locked
FLASH_REQUIRED HAL initiates AE/AWB scan SEARCHING Values locked
FLASH_REQUIRED AE/AWB_LOCK on LOCKED Values locked
LOCKED AE/AWB_LOCK off SEARCHING Values not good after unlock
LOCKED AE/AWB_LOCK off CONVERGED Values good after unlock
LOCKED AE_LOCK off FLASH_REQUIRED Exposure good, but too dark
All AE states PRECAPTURE_START PRECAPTURE Start precapture sequence
PRECAPTURE Sequence done, AE_LOCK off CONVERGED Ready for high-quality capture
PRECAPTURE Sequence done, AE_LOCK on LOCKED Ready for high-quality capture

7.        Enabling manual control

 

在配置3A模塊中所涉及的一些控制,允許application直接控制。

對於每個請求,HAL層負責3A控制的模塊會檢查3A控制字段的狀態。如果有3A事例使能,這些事例可能會重置該事例相關的控制變量,重置的值會放置於此次捕獲的結果元數據中。例如,如果在一個請求中自動曝光使能,HAL層會重置這個請求中的曝光值,增益和幀週期字段(和潛在的閃光燈字段,依賴於AE模式)。相關控制如下:

 

Control name Unit Notes
android.control.mode enum: OFF, AUTO, USE_SCENE_MODE High-level 3A control. When set to OFF, all 3A control by the HAL is disabled. The application must set the fields for capture parameters itself.      When set to AUTO, the individual algorithm controls in android.control.* are in effect, such as android.control.afMode.      When set to USE_SCENE_MODE, the individual controls in android.control.* are mostly disabled, and the HAL implements one of the scene mode settings (such as ACTION, SUNSET, or PARTY) as it wishes.
android.control.afMode enum OFF means manual control of lens focusing through android.lens.focusDistance.
android.control.aeMode enum OFF means manual control of exposure/gain/frame duration through android.sensor.exposureTime / .sensitivity / .frameDuration
android.control.awbMode enum OFF means manual control of white balance.

 (全文完)

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