カメラのボケ表現

カメラのボケ表現は、被写界深度を浅くし、シーンの一部をボカしてフォーカスされないようにする効果です。モバイル デバイスのカメラでは、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_MODESANDROID_CONTROL_USE_EXTENDED_SCENE_MODE を入力する。

アプリでボケ表現機能をトリガーするには、そのアプリで ANDROID_CONTROL_MODEANDROID_CONTROL_USE_EXTENDED_SCENE_MODE に設定され、ANDROID_CONTROL_EXTENDED_SCENE_MODE がサポートされている拡張シーンモードのいずれかに設定されている必要があります。ボケ表現を実装すると、ステレオ計算によりメモリ消費量が増大する可能性があります。

サポートされている拡張シーンモードがフレームごとに適用されず、有効または無効にする際に予期しない遅延が発生する場合は、ANDROID_CONTROL_EXTENDED_SCENE_MODEANDROID_REQUEST_AVAILABLE_SESSION_KEYS に含めます。同時に、ICameraDeviceSession::isReconfigurationRequired() メソッドを実装して、再構成を必要としない拡張シーンモードの再構成を回避します。

検証

デバイスでボケ表現機能を検証するには、次の CTS、VTS、CTS 検証ツールのテストを実行します。

  • CtsCameraTestCases
  • VtsHalCameraProviderV2_4TargetTest
  • CTS 検証ツールの CameraBokehTest