カメラのボケ表現は、被写界深度を浅くし、シーンの一部をボカしてフォーカスされないようにする効果です。モバイル デバイスのカメラでは、2 つのカメラまたは 1 つのカメラのデュアル フォトダイオード(PD)のステレオ ビジョンから取得した奥行きの情報を使用してボケ表現を実現します。
Android プラットフォームでは、Android 11 以降でボケ表現の実装をサポートしており、サードパーティ アプリでこの機能を使用するための API が提供されています。
実装
デバイスでカメラのボケ表現機能を使用できるようにするための手順は次のとおりです。
ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_MAX_SIZES
をアドバタイズする。このタグでは、3 つの整数のタプル配列の形式が使用されており、各タプルでは
{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_AVAILABLE_MODES
にANDROID_CONTROL_USE_EXTENDED_SCENE_MODE
を入力する。
アプリでボケ表現機能をトリガーするには、そのアプリで ANDROID_CONTROL_MODE
が ANDROID_CONTROL_USE_EXTENDED_SCENE_MODE
に設定され、ANDROID_CONTROL_EXTENDED_SCENE_MODE
がサポートされている拡張シーンモードのいずれかに設定されている必要があります。ボケ表現を実装すると、ステレオ計算によりメモリ消費量が増大する可能性があります。
サポートされている拡張シーンモードがフレームごとに適用されず、有効または無効にする際に予期しない遅延が発生する場合は、ANDROID_CONTROL_EXTENDED_SCENE_MODE
を ANDROID_REQUEST_AVAILABLE_SESSION_KEYS
に含めます。同時に、ICameraDeviceSession::isReconfigurationRequired()
メソッドを実装して、再構成を必要としない拡張シーンモードの再構成を回避します。
検証
デバイスでボケ表現機能を検証するには、次の CTS、VTS、CTS 検証ツールのテストを実行します。
CtsCameraTestCases
VtsHalCameraProviderV2_4TargetTest
- CTS 検証ツールの
CameraBokehTest