您現在的位置是:首頁 > 攝影首頁攝影

Android Camera元資料與3A模式

由 ProgramAndroid 發表于 攝影2021-05-25
簡介它在3A(ANDROID_CONTROL_MODE_OFF),正常AUTO模式(ANDROID_CONTROL_MODE_AUTO)和場景模式設定(ANDROID_CONTROL_USE_SCENE_MODE)之間進行選擇:在關閉模式下,各

場景模式怎麼取消

Android Camera元資料與3A模式

和你一起終身學習,這裡是程式設計師 Android

本篇文章主要介紹 Android 開發中的部分知識點,透過閱讀本篇文章,您將收穫以下內容:

一、Camera 元資料支援

二、 Camera 原始感測器資料支援

三、Camera 3A 狀態與模式

一、Camera 元資料支援

為了支援Android框架儲存原始影象檔案,需要有關感測器特性的大量元資料。這包括諸如色彩空間和鏡頭陰影功能之類的資訊。

這些資訊大部分是相機子系統的靜態屬性,因此可以在配置任何輸出管道或提交任何請求之前進行查詢。新的相機API大大擴充套件了該 getCameraInfo()方法提供的資訊,以將該資訊提供給應用程式。

另外,對照相機子系統的手動控制需要來自各種裝置的有關其當前狀態以及用於捕獲給定幀的實際引數的反饋。硬體實際使用的控制元件的實際值(曝光時間,幀持續時間和靈敏度)必須包含在輸出元資料中。這是必不可少的,以便應用程式知道何時進行夾緊或舍入,並且應用程式可以補償用於影象捕獲的實際設定。

例如,如果應用程式在請求中將幀持續時間設定為0,則HAL必須將幀持續時間限制為該請求的實際最小幀持續時間,並在輸出結果元資料中報告該限制的最小持續時間。

因此,如果應用程式需要實現自定義3A例程(例如,正確計量HDR突發訊號),則它需要知道用於捕獲已收到的最新結果集的設定,以更新下一個請求的設定。因此,新的相機API向每個捕獲的幀添加了大量的動態元資料。這包括用於捕獲的請求引數和實際引數,以及其他每幀元資料,例如時間戳和統計資訊生成器輸出。

二、 Camera 原始感測器資料支援

對於大多數設定,期望它們可以在每幀更改,而不會對輸出幀流造成明顯的卡頓或延遲。理想情況下,輸出幀速率應僅由捕獲請求的幀持續時間欄位控制,並且與處理塊配置的任何更改無關。實際上,已知某些特定的控制元件更改緩慢。其中包括相機管線的輸出解析度和輸出格式,以及影響物理裝置的控制元件,例如鏡頭焦距。每個控制元件集的確切要求將在後面詳細介紹。

除了舊API支援的畫素格式外,新API還增加了對原始感測器資料(Bayer RAW)的支援要求,這既適用於高階相機應用程式,又支援原始影象檔案。

三、Camera 3A 狀態與模式

雖然實際的3A演算法取決於HAL的實現,但是HAL介面定義了高階狀態機描述,以允許HAL裝置和框架就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。將觸發條目設定為非空閒值的每個請求將被視為獨立的觸發事件。

在頂層,3A由ANDROID_CONTROL_MODE設定控制。它在3A(ANDROID_CONTROL_MODE_OFF),正常AUTO模式(ANDROID_CONTROL_MODE_AUTO)和場景模式設定(ANDROID_CONTROL_USE_SCENE_MODE)之間進行選擇:

在關閉模式下,各個自動對焦(AF),自動曝光(AE)和自動白平衡(AWB)模式均有效關閉,並且3A例程均不能覆蓋任何捕獲控制元件。

在自動模式下,AF,AE和AWB模式均執行各自獨立的演算法,並具有各自的模式,狀態和觸發元資料條目,如下一節中所列。

在USE_SCENE_MODE中,必須使用ANDROID_CONTROL_SCENE_MODE條目的值來確定3A例程的行為。在除FACE_PRIORITY以外的SCENE_MODEs中,HAL必須覆蓋ANDROID_CONTROL_AE / AWB / AF_MODE的值,以使其成為所選SCENE_MODE的首選模式。例如,HAL可能更喜歡SCENE_MODE_NIGHT使用CONTINUOUS_FOCUS AF模式。對於這些場景模式,必須忽略場景時使用者對AE / AWB / AF_MODE的任何選擇。

對於SCENE_MODE_FACE_PRIORITY,AE / AWB / AFMODE控制元件的工作方式與ANDROID_CONTROL_MODE_AUTO相同,但是3A例程必須偏重於測光並聚焦於場景中檢測到的任何面部。

自動對焦設定和結果輸入

Android Camera元資料與3A模式

主要元資料列表

Android Camera元資料與3A模式

其他元資料列表

自動曝光設定和結果輸入

Android Camera元資料與3A模式

主要元素據列表

Android Camera元資料與3A模式

其他元資料列表

自動白平衡設定和結果輸入

Android Camera元資料與3A模式

白平衡列表

一般狀態機轉換說明

在AF,AE或AWB模式之間切換總是將演算法的狀態重置為INACTIVE。同樣,如果CONTROL_MODE == USE_SCENE_MODE,則在CONTROL_MODE或CONTROL_SCENE_MODE之間進行切換會將所有演算法狀態重置為INACTIVE。

下表是每種模式。

Android Camera元資料與3A模式

Android Camera元資料與3A模式

Android Camera元資料與3A模式

AF_MODE_CONTINOUS_PICTURE

AE和AWB狀態機

AE和AWB狀態機基本相同。AE具有其他FLASH_REQUIRED和PRECAPTURE狀態。因此,對於AWB狀態機,下面的行引用了這兩種狀態。

Android Camera元資料與3A模式

AE /AWB mode

啟用手動控制

在配置裝置3A塊以允許直接應用程式控制時,還涉及一些控制元件。

用於3A控制的HAL模型是針對每個請求,HAL檢查3A控制欄位的狀態。如果啟用了任何3A例程,則該例程將覆蓋與該例程相關的控制變數,然後這些覆蓋值可在該捕獲的結果元資料中使用。因此,例如,如果在請求中啟用了自動曝光,則HAL應該覆蓋請求的曝光,增益和幀持續時間欄位(可能還有閃光欄位,具體取決於AE模式)。相關控制元件列表為:

Android Camera元資料與3A模式

Manual Control 模式