Боке камеры

Боке камеры – это эффект малой глубины резкости, создаваемый путем размытия частей сцены, чтобы они не были в фокусе. На камерах мобильных устройств боке достигается за счет информации о глубине, полученной от стереовидения с двух камер или от двойных фотодиодов (PD) одной камеры.

Начиная с Android 11, платформа Android поддерживает реализацию боке и предоставляет 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".

Чтобы приложение могло активировать функцию боке, оно должно задать для параметра 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 Verifier:

  • CtsCameraTestCases
  • VtsHalCameraProviderV2_4TargetTest
  • CameraBokehTest в CTS Verifier