相機散景是一種淺景深效果,它是通過模糊場景的一部分以使其不清晰而創建的。在移動設備上的相機上,使用從兩個相機的立體視覺或從單個相機的雙光電二極管(PD)獲得的深度信息來實現散景。
從Android 11開始,Android平台支持bokeh實現,並提供API以使該功能可用於第三方應用程序。
實作
要使設備上的相機散景功能可用,請執行以下操作:
廣告
ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_MAX_SIZES
:此標記的格式為三整數元組數組,每個元組的格式為
{mode, maxWidth, maxHeight}
。除了{ANDROID_CONTROL_EXTENDED_SCENE_MODE_DISABLED, 0, 0}
,攝像機HAL還必須列出ANDROID_CONTROL_EXTENDED_SCENE_MODE_BOKEH_STILL_CAPTURE
和ANDROID_CONTROL_EXTENDED_SCENE_MODE_BOKEH_CONTINUOUS
模式中的一個或兩個,並列出其最大流大小。刊登廣告
ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_ZOOM_RATIO_RANGES
:此標籤的格式為
{minZoomRatio, maxZoomRatio}
數組,其中包含啟用的擴展場景模式的所有縮放比例範圍,其順序與ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_MAX_SIZES
中的順序相同。縮放範圍為[1.0, 1.0]
表示不支持縮放。填充
ANDROID_CONTROL_USE_EXTENDED_SCENE_MODE
在ANDROID_CONTROL_AVAILABLE_MODES
。
要使應用觸發bokeh功能,該應用必須將ANDROID_CONTROL_MODE
設置為ANDROID_CONTROL_USE_EXTENDED_SCENE_MODE
和ANDROID_CONTROL_EXTENDED_SCENE_MODE
設置為受支持的擴展場景模式之一。注意,由於立體聲計算,實現bokeh可能會導致額外的內存消耗。
如果支持的擴展的場景模式不能每幀和在意外的延遲的結果被應用使能時/禁用,包括ANDROID_CONTROL_EXTENDED_SCENE_MODE
在ANDROID_REQUEST_AVAILABLE_SESSION_KEYS
。同時,實現ICameraDeviceSession::isReconfigurationRequired()
方法,以避免對不需要重新配置的擴展場景模式進行重新配置。
驗證方式
要驗證設備上的bokeh功能,請運行以下CTS,VTS和CTS驗證程序測試:
-
CtsCameraTestCases
-
VtsHalCameraProviderV2_4TargetTest
- CTS驗證程序中的
CameraBokehTest