На этой странице представлен полный список тестов в рамках набора тестов изображения камеры (ITS), который является частью набора тестов совместимости с Android (CTS) Verifier. Тесты ITS являются функциональными тестами, что означает, что они не измеряют качество изображения, но все заявленные функции камеры работают должным образом. Этот документ позволяет разработчикам и тестировщикам понять, что делают отдельные тесты и как отлаживать сбои тестов.
Тесты сгруппированы по сценам следующим образом:
- scene0 : захват метаданных, дрожание, гироскоп, вибрация
- сцена 1 : экспозиция, чувствительность, экспокоррекция, YUV и JPEG/RAW
- Сцена 2 : Распознавание лиц
- scene3 : Улучшение краев, движение объектива
- scene4 : Соотношение сторон, кадрирование, поле зрения
- сцена 5 : Затенение объектива
- сцена 6 : Масштаб
- sensor_fusion : Смещение времени камеры/гироскопа
Смотрите отдельные разделы для описания каждой сцены.
сцена0
Тесты Scene0 не требуют конкретной информации о сцене. Тем не менее, телефон должен быть неподвижен для проверки гироскопом и вибрацией.
test_burst_capture
Проверяет, может ли весь конвейер захвата соответствовать скорости полноразмерного захвата и процессорному времени.
Протестированные API:
Pass: захватывает серию полноразмерных изображений, и камера работает достаточно быстро, чтобы избежать тайм-аута.
test_capture_result_dump
Проверяет, что результат захвата возвращается из захвата вручную, а затем выводит его.
Протестированные API:
Pass: завершает захват и выводит результаты захвата.
test_gyro_bias
Проверяет, имеет ли гироскоп стабильный выходной сигнал, когда устройство неподвижно. Данные отображаются как среднее значение по 20 точкам данных.
Протестированные API:
Пройдено: дельта показаний гироскопа с течением времени меньше 0,01.
test_gyro_bias_plot.png
test_jitter
Измеряет дрожание временных меток камеры.
Протестированные API:
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
Пройдено: дельта между кадрами составляет не менее 30 мс.
test_jitter_plot.png (Обратите внимание на небольшой диапазон по оси Y. Джиттер на этом графике на самом деле мал.)
test_metadata
Проверяет достоверность записей метаданных. Смотрит на результаты захвата и на объекты характеристик камеры. В этом тесте используются значения экспозиции и усиления auto_capture_request
, поскольку содержимое изображения не имеет значения.
Протестированные API:
-
android.hardware.camera2.CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL
-
android.hardware.camera2.CameraCharacteristics#SCALER_CROPPING_TYPE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_BLACK_LEVEL_PATTERN
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE
-
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
-
android.hardware.camera2.CaptureResult#SENSOR_ROLLING_SHUTTER_SKEW
Пройдено : Аппаратный уровень, rollingShutterSkew
, frameDuration
, timestampSource
, croppingType
, blackLevelPattern
, pixel_pitch
, FOV, гиперфокальное расстояние присутствуют и имеют допустимые значения.
test_param_sensitivity_burst
Проверяет правильность применения параметра android.sensor.sensitivity
в пакетном режиме. Проверяет только выходные метаданные.
Протестированные API:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Пройдено: допустимая погрешность выходных данных составляет менее 0,2%.
test_read_write
Проверяет, записывает ли устройство правильные значения экспозиции и усиления, считывая метаданные захвата.
Протестированные API:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_EXPOSURE_TIME_RANGE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
-
android.hardware.camera2.CaptureResult#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureResult#SENSOR_SENSITIVITY
Pass: значения чтения и записи совпадают для всех снимков.
test_sensor_events
Проверяет, что устройство запрашивает и распечатывает события датчика для устройств, которые рекламируют поддержку слияния датчиков. Ожидаемые датчики — акселерометр, гироскоп и магнитометр. Этот тест работает, только если экран включен, то есть устройство не находится в режиме ожидания.
Протестированные API:
Pass: Получены события для каждого датчика.
test_solid_color_test_pattern
Проверяет правильность создания тестовых шаблонов сплошного цвета для отключения звука камеры. Если поддерживается отключение звука камеры, должны поддерживаться тестовые шаблоны сплошного цвета. Если отключение звука камеры не поддерживается, тестовые шаблоны сплошного цвета проверяются только в том случае, если эта возможность объявлена.
Если изображения RAW поддерживаются, также проверяется назначение цвета. Тестируемые цвета: черный, белый, красный, синий и зеленый. Для камер, не поддерживающих изображения в формате RAW, тестируется только черный цвет.
Протестированные API:
-
android.hardware.camera2.CameraCharacteristic#SENSOR_AVAILABLE_TEST_PATTERN_MODES
-
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_DATA
-
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
Пройдено: поддерживаемые сплошные тестовые шаблоны имеют правильный цвет и низкую дисперсию изображения.
test_test_pattern
Проверяет параметр android.sensor.testPatternMode
для захвата кадров для каждого допустимого тестового шаблона и проверяет правильность создания кадров для сплошных цветов и цветных полос. Этот тест включает в себя следующие шаги:
- Захватывает изображения для всех поддерживаемых тестовых шаблонов.
- Выполняет простую проверку правильности тестового шаблона сплошного цвета и цветных полос.
Протестированные API:
-
android.hardware.camera2.CameraCharacteristic#SENSOR_AVAILABLE_TEST_PATTERN_MODES
-
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
Пройдено: поддерживаемые тестовые шаблоны генерируются правильно.
test_test_patterns_2.jpg
test_tonemap_curve
Проверяет преобразование тестового шаблона из RAW в YUV с линейной тональной картой. Для этого теста требуется android.sensor.testPatternMode = 2
(COLOR_BARS) для создания идеального шаблона изображения для преобразования тональной карты. Гарантирует, что конвейер имеет правильные цветовые выходные данные с линейной тональной картой и идеальным входным изображением (зависит от test_test_patterns
).
Протестированные API:
-
android.hardware.camera2.CaptureRequest#DISTORTION_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#SENSOR_TEST_PATTERN_MODE
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Пройдено: YUV и RAW похожи друг на друга.
test_tonemap_curve_raw_2.jpg
test_tonemap_curve_yuv_2.jpg
test_unified_timestamp
Проверяет, находятся ли события изображения и датчика движения в одном и том же временном интервале.
Протестированные API:
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.Sensor
-
android.hardware.SensorEvent
-
android.hardware.Sensor#TYPE_ACCELEROMETER
-
android.hardware.Sensor#TYPE_GYROSCOPE
Pass: временные метки движения находятся между двумя временными метками изображения.
test_vibration_restriction
Проверяет, работает ли вибрация устройства должным образом.
Протестированные API:
-
android.hardware.Sensor
-
android.hardware.SensorEvent
-
android.hardware.Sensor#TYPE_ACCELEROMETER
-
android.os.Vibrator
-
android.hardware.camera2.CameraDevice#setCameraAudioRestriction
Пройдено: устройство не вибрирует при отключении звука с помощью API ограничения звука камеры.
Сцена 1
Сцена 1 — это серая диаграмма. Серая диаграмма должна покрывать центральные 30% поля зрения камеры. Ожидается, что серая диаграмма вызовет проблемы с 3A (автоматическая экспозиция, автоматический баланс белого, автофокус), поскольку центральная область не имеет особенностей. Однако в запросе захвата указывается вся сцена, которая включает в себя достаточно признаков для сходимости 3A.
Камеры RFoV можно протестировать на испытательном стенде WFoV или RFoV. Если камера RFoV тестируется на испытательном стенде WFoV, диаграмма масштабируется на ⅔, чтобы обеспечить некоторые границы для серой диаграммы в поле зрения, чтобы помочь сходимости 3A.
Сцена 1: Полноразмерная диаграмма (слева). График в масштабе ⅔ (справа).
test_3a
Проверяет сходимость 3A с умеренно сложной целью.
Протестированные API:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
Pass: 3A сходится, и возвращенные значения 3A действительны.
test_ae_af
Тестирует алгоритмы автоматической экспозиции (AE) и автоматической фокусировки (AF) 3A по отдельности.
Протестированные API:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
Пройдено: 3A сходится, и возвращенные значения 3A допустимы.
test_ae_precapture_trigger
Проверяет конечный автомат AE при использовании триггера предварительного захвата. Захватывает пять ручных запросов с отключенным AE. Последний запрос имеет триггер предварительного захвата AE, который следует игнорировать, поскольку AE отключен.
Протестированные API:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
Пройдено: AE сходится.
test_auto_vs_manual
Тесты, в которых снимались автоматические и ручные снимки, выглядят одинаково.
Протестированные API:
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureResult#TONEMAP_CURVE
-
android.hardware.camera2.CaptureResult#TONEMAP_MODE
Пройдено: ручное усиление баланса белого и преобразование, указанные в каждом результате захвата, совпадают с estimate
автоматического баланса белого из алгоритма 3A камеры.
test_auto_vs_manual_auto.jpg
test_auto_vs_manual_wb.jpg
test_auto_vs_manual_manual_wb_tm.jpg
test_black_white
Проверяет, что устройство создает полностью черно-белые изображения. Делает два снимка: первый с очень низким усилением и короткой выдержкой, в результате чего получается черная фотография, а второй — с очень высоким усилением и длинной выдержкой, в результате чего получается белая фотография.
Протестированные API:
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Pass: создает черно-белые изображения.
test_black_white_black.jpg | test_black_white_white.jpg |
test_black_white_plot_means.png
test_burst_sameness_manual
Делает 5 серий из 50 изображений с ручной настройкой захвата и проверяет их идентичность. Этот тест можно использовать для определения наличия спорадических кадров, которые обрабатываются по-разному или содержат артефакты.
Протестированные API:
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR
-
android.hardware.camera2.CameraMetadata#SYNC_MAX_LATENCY_PER_FRAME_CONTROL
Pass: изображения идентичны визуально и в значениях RGB.
Сбой: показывает всплеск или падение средней диаграммы RGB в начале каждого пакета.
- Допуск составляет 3 % для
first_API_level
< 30. - Допуск составляет 2 % для
first_API_level
>= 30.
test_burst_sameness_manual_mean.jpg
test_burst_sameness_manual_plot_means.png
test_capture_result
Проверяет, возвращаются ли действительные данные в объектах CaptureResult
. Делает автоматический, ручной и автоматический захват.
Протестированные API:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_REGIONS
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_REGIONS
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_REGIONS
-
android.hardware.camera2.CaptureRequest#CONTROL_MODE
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
-
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
-
android.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Pass: Метаданные действительны для всех захватов, а ручные настройки не просачиваются во второй автоматический захват. Выводит коррекцию затенения объектива для снимков.
test_capture_result_plot_lsc_auto_ch0.png
test_channel_saturation
Проверяет равномерность насыщения каналов RGB для устранения оттенка в насыщенных областях изображения.
Протестированные API:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_EXPOSURE_TIME_RANGE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Pass: Насыщенные каналы имеют значения RGB [255, 255, 255] с погрешностью менее 1%.
test_channel_saturation.jpg
test_crop_region_raw
Проверяет, что потоки RAW нельзя обрезать.
Протестированные API:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CaptureResult#SCALER_CROP_REGION
-
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
Пройдено: изображения YUV обрезаются по центру, но не изображения RAW.
test_crop_region_raw_comp_raw_crop.jpg
test_crop_region_raw_comp_raw_full.jpg
test_crop_region_raw_comp_yuv_crop.jpg
test_crop_region_raw_yuv_full.jpg
test_crop_regions
Проверяет, что регионы обрезки работают. Делает полное изображение и создает заплатки из 5 различных областей (углы и центр). Берет изображения с набором обрезки для 5 областей. Сравнивает значения патча и кадрированного изображения.
Протестированные API:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
Пройдено: изображение обрезанной области соответствует патчу, соответствующему изображению обрезания.
test_dng_noise_model
Проверяет правильность параметров необработанной модели DNG. На графике показана измеренная дисперсия центрального участка серой карты в необработанных снимках, снятых в диапазоне значений чувствительности, и сравниваются эти значения с дисперсией, ожидаемой для каждой чувствительности с помощью модели шума DNG в камере HAL (на основе параметры O,S, возвращаемые в объектах результатов захвата). Для получения более подробной информации о модели шума DNG загрузите следующий документ о модели шума DNG .
Протестированные API:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
-
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
-
android.hardware.camera2.CaptureResult#SENSOR_NOISE_PROFILE
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Пройдено: параметры необработанной модели DNG верны. Ожидаемые значения RGB совпадают с фактически измеренными значениями RGB.
test_dng_noise_model_plog.png
test_ev_compensation_advanced
Проверяет, применяется ли компенсация значения экспозиции (EV). Тест увеличивает экспозицию на восемь шагов и сравнивает измеренную яркость с ожидаемой яркостью. Ожидаемые значения рассчитываются на основе яркости изображения без применения компенсации EV, и ожидаемое значение достигает насыщения, если расчетные значения превышают диапазон значений фактического изображения. Тест не пройден, если ожидаемые значения и измеренные значения не совпадают или изображения переэкспонированы в течение пяти шагов.
Протестированные API:
Pass: изображения показывают увеличение экспозиции без передержки в течение пяти шагов.
test_ev_compensation_advanced_plot_means.png
test_ev_compensation_basic
Проверяет, что компенсация EV применяется с использованием диапазона, созданного с помощью CONTROL_AE_COMPENSATION_STEP
. При каждом значении компенсации фиксируется восемь кадров.
Протестированные API:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_COMPENSATION_STEP
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
-
android.hardware.camera2.CaptureResult#CONTROL_AE_EXPOSURE_COMPENSATION
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
Pass: фиксирует увеличение яркости при увеличении значения компенсации EV, и восемь кадров, снятых для каждого значения компенсации EV, имеют стабильные значения яркости.
test_ev_compensation_basic.png
test_exposure
Проверяет, достигается ли постоянная экспозиция при изменении ISO и времени экспозиции. Делает серию снимков, в которых значения ISO и время экспозиции подобраны так, чтобы сбалансировать друг друга. Результаты должны иметь одинаковую яркость, но в последовательности изображение должно становиться более шумным. Проверяет, что средние значения пикселей выборки близки друг к другу. Гарантирует, что изображения не привязаны к 0 или 1 (что сделало бы их похожими на плоские линии). Тест также можно запустить с изображениями RAW, установив флаг debug
в файле конфигурации.
Протестированные API:
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Пройдено: изображения имеют одинаковую яркость, но становятся более шумными при более высоком значении ISO. Плоскости RGB являются плоскими, когда значение экспозиции ISO* постоянно в тестируемом пространстве усиления.
test_exposure_plot_means.png
test_exposure_mult=1.00.jpg | test_exposure_mult=64.00.jpg |
test_jpeg
Тесты, которые конвертировали изображения YUV и изображения JPEG устройства, выглядят одинаково. Тест берет центральные 10% изображения, вычисляет значение RGB и проверяет их совпадение.
Протестированные API:
Pass: средняя разница RGB между каждым изображением составляет менее 3%.
test_jpeg_fmt=jpg.jpg | test_jpeg=fmt=yuv.jpg |
test_latching
Проверяет, что настройки (экспозиции и усиления) фиксируются на правом кадре для камер FULL
и LEVEL_3
. Делает серию снимков, используя последовательные запросы, изменяя параметры запроса захвата между снимками. Проверяет, что изображения имеют ожидаемые свойства.
Протестированные API:
Пройдено: изображения [2, 3, 6, 8, 10, 12, 13] имеют повышенный ISO или экспозицию и отображаются с более высокими средними значениями RGB на test_latching_plot_means.png
.
test_latching_i=00.jpg | test_latching_i=01.jpg | test_latching_i=02.jpg | |
test_latching_i=03.jpg | test_latching_i=04.jpg | test_latching_i=05.jpg | |
test_latching_i=06.jpg | test_latching_i=07.jpg | test_latching_i=08.jpg | |
test_latching_i=09.jpg | test_latching_i=10.jpg | test_latching_i=11.jpg | |
test_latching_i=12.jpg |
test_latching_plot_means.png
test_linearity
Проверяет, что обработка устройства может быть преобразована в линейные пиксели. Делает серию снимков с наведением устройства на однородную цель.
Протестированные API:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CaptureRequest#BLACK_LEVEL_LOCK
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Пройдено: значения R, G, B должны увеличиваться линейно с увеличением чувствительности.
test_linearity_plot_means.png
test_locked_burst
Проверяет блокировку 3A и всплеск YUV (с использованием автоматической настройки). Этот тест предназначен для прохождения даже на ограниченных устройствах, которые не имеют MANUAL_SENSOR
или PER_FRAME_CONTROLS
. Тест проверяет согласованность изображения YUV, в то время как проверка частоты кадров выполняется в CTS.
Протестированные API:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
Pass: Захваты выглядят последовательно.
test_locked_burst_frame0.jpg
test_locked_burst_frame1.jpg
test_locked_burst_frame2.jpg
test_multi_camera_match
Проверяет, дают ли несколько камер на устройствах одинаковые значения RGB для серого пятна.
Протестированные API:
-
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
-
android.hardware.camera2.CaptureRequest#LENS_FOCAL_LENGTH
Пройдено: разные камеры выдают одинаковые значения RGB для одного и того же серого пятна.
test_multi_camera+match_yuv_fl=4.38.jpg
test_param_color_correction
Проверяет, что параметры android.colorCorrection.*
применяются при установке. Делает снимки с разными значениями преобразования и усиления и проверяет, что они выглядят соответственно по-разному. Преобразование и коэффициенты усиления выбираются таким образом, чтобы сделать вывод все более красным или синим. Использует линейную тональную карту. Тональное отображение — это метод, используемый при обработке изображений для сопоставления одного набора цветов с другим, чтобы приблизить внешний вид изображений с высоким динамическим диапазоном в среде с более ограниченным динамическим диапазоном.
Протестированные API:
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
Pass: значения R и B повышаются в соответствии с трансформацией.
test_param_color_correction_plot_means.png
*Ось X — это запросы на захват: 0 = единица, 1 = усиление красного цвета, 2 = усиление синего цвета.
test_param_color_correction_req=0.jpg
test_param_color_correctness_req=1.jpg (повышение R)
test_param_color_correction_req=2.jpg (повышение B)
test_param_exposure_time
Проверяет применение параметра android.sensor.exposureTime
.
Протестированные API:
Pass: каждый снимок ярче предыдущего.
test_param_exposure_time_frame0.jpg
test_param_exposure_time_plot.png
test_param_flash_mode
Проверяет применение параметра android.flash.mode
. Вручную устанавливает экспозицию на темную сторону, чтобы было очевидно, сработала вспышка или нет, и использует линейную тональную карту. Сравнивает центр с мозаичным изображением, чтобы увидеть, есть ли большой градиент, созданный для проверки того, сработала ли вспышка.
Протестированные API:
Пройдено: центр фрагмента изображения имеет большой градиент, означающий, что сработала вспышка.
test_param_flash_mode_1.jpg
test_param_flash_mode_1_tile.jpg
test_param_flash_mode_2.jpg
test_param_flash_mode_2_tile.jpg
test_param_noise_reduction
Проверяет правильность применения параметра android.noiseReduction.mode
при его установке. Делает снимки с тускло освещенной камерой. Использует высокое аналоговое усиление, чтобы захваченное изображение было зашумленным. Захватывает три изображения: для отключения шумоподавления, «быстро» и «высококачественно». Также захватывает изображение с низким усилением и выключенным шумоподавлением, и использует его дисперсию в качестве базовой линии. Чем выше SNR (отношение сигнал/шум), тем лучше качество изображения.
Протестированные API:
Пройдено: отношение сигнал-шум варьируется в зависимости от различных режимов шумоподавления и ведет себя так же, как на графике ниже.
test_param_noise_reduction_plot_SNRs.png
0: ВЫКЛ, 1: БЫСТРО, 2: HQ, 3: МИН, 4: ZSL
test_param_noise_reduction_high_gain_nr=0.jpg
test_param_noise_reduction_high_gain_nr=1.jpg
test_param_noise_reduction_high_gain_nr=2.jpg
test_param_noise_reduction_high_gain_nr=3.jpg
test_param_noise_reduction_low_gain.jpg
test_param_sensitivity
Проверяет применение параметра android.sensor.sensitivity
. Тест увеличивает чувствительность в 5 шагов с фиксированной экспозицией для каждого снимка.
Протестированные API:
Pass: RGB означает, что центр на 10% становится ярче с увеличением чувствительности.
test_param_sensitivity_iso=0055.jpg
test_param_sensitivity_iso=1819.jpg
test_param_sensitivity_iso=3583.jpg
test_param_sensitivity_iso=5347.jpg
test_param_sensitivity_iso=7111.jpg
test_param_sensitivity_plot.png
test_param_shading_mode
Проверяет применение параметра android.shading.mode
.
Протестированные API:
-
android.hardware.camera2.CaptureRequest#SHADING_MODE
-
android.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
-
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
Пройдено: режимы затенения переключаются, а карты затенения линз изменяются, как и ожидалось.
test_param_shading_mode_ls_maps_mode_0_loop_0.png
test_param_shading_mode_ls_maps_mode_1_loop_0.png
test_param_shading_mode_ls_maps_mode_2_loop_0.png
test_param_tonemap_mode
Проверяет применение параметра android.tonemap.mode. Применяет разные кривые тональной карты к каждому каналу R, G, B и проверяет, что выходные изображения изменены должным образом. Этот тест состоит из двух тестов, test1 и test2.
Протестированные API:
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Проходить:
- test1: Оба изображения имеют линейную тональную карту, но n=1 имеет более крутой градиент. Канал G (зеленый) ярче для изображения n=1.
- test2: Та же тональная карта, но другой длины. Изображения одинаковые.
test_param_tonemap_mode_n=0.jpg | test_param_tonemap_mode_n=1.jpg |
test_post_raw_sensitivity_boost
Проверяет повышение чувствительности после RAW. Захватывает набор изображений RAW и YUV с разной чувствительностью, публикует комбинацию увеличения чувствительности RAW и проверяет, соответствует ли среднее выходного пикселя параметрам запроса.
Протестированные API:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
-
android.hardware.camera2.CaptureRequest#CONTROL_POST_RAW_SENSITIVITY_BOOST
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Пройдено: изображения RAW становятся темнее по мере увеличения усиления, в то время как яркость изображений YUV остается неизменной.
test_post_raw_sensitivity_boost_raw_s=3583_boost=0100.jpg
test_post_raw_sensitivity_boost_raw_s=1792_boost=0200.jpg
test_post_raw_sensitivity_boost_raw_s=0896_boost=0400.jpg
test_post_raw_sensitivity_boost_raw_s=0448_boost=0800.jpg
test_post_raw_sensitivity_boost_raw_s=0224_boost=1600.jpg
test_post_raw_sensitivity_boost_raw_s=0112_boost=3199.jpg
test_post_raw_sensitivity_boost_raw_plot_means.png
test_post_raw_sensitivity_boost_yuv_s=0112_boost=3199.jpg
test_post_raw_sensitivity_boost_yuv_s=0448_boost=0800.jpg
test_post_raw_sensitivity_boost_yuv_s=0896_boost=0400.jpg
test_post_raw_sensitivity_boost_yuv_s=1792_boost=0200.jpg
test_post_raw_sensitivity_boost_yuv_s=3585_boost=0100.jpg
test_post_raw_sensitivity_boost_yuv_plot_means.png
test_raw_burst_sensitivity
Захватывает набор необработанных изображений с увеличением усиления и измеряет шум. Захватывает только в сыром виде, в пакетном режиме.
Протестированные API:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
-
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
Pass: каждый выстрел шумнее предыдущего, так как усиление увеличивается.
Использует дисперсию центральной ячейки сетки статистики.
test_raw_burst_sensitivity_variance.png
test_raw_exposure
Захватывает набор необработанных изображений с увеличением времени экспозиции и измеряет значения пикселей.
Протестированные API:
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
Пройдено: увеличение ISO (усиление) делает пиксели более чувствительными к свету, поэтому график смещается влево.
test_raw_exposure_s=55.png
(10⁰ — 1 мс, 10¹ — 10 мс, 10⁻¹ — 0,1 мс)
test_raw_exposure_s=132.png
test_raw_exposure_s=209.png
test_raw_exposure_s=286.png
test_raw_exposure_s=363.png
test_raw_exposure_s=440.png
test_raw_sensitivity
Захватывает набор необработанных изображений с повышенной чувствительностью и измеряет шум (дисперсию) в центре 10% изображения. Проверяет, что каждый выстрел шумнее предыдущего.
Протестированные API:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
-
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
Pass: дисперсия увеличивается с каждым выстрелом.
test_raw_sensitivity_variance.png
test_reprocess_noise_reduction
Проверяет, что android.noiseReduction.mode
применяется для повторной обработки запросов. Захватывает повторно обработанные изображения при слабом освещении камеры. Использует высокий аналоговый коэффициент усиления, чтобы изображение было зашумленным. Захватывает три повторно обработанных изображения: для выключения шумоподавления, «быстрого» и «высокого качества». Захватывает повторно обработанное изображение с низким усилением и отключенным шумоподавлением и использует его дисперсию в качестве базовой линии.
Протестированные API:
Pass: FAST >= OFF, HQ >= FAST, HQ >> OFF
Типичный график SNR и NR_MODE
test_tonemap_sequence
Тестирует последовательность снимков с разными кривыми тональной карты. Делает 3 ручных снимка с линейной тональной картой. Делает 3 ручных снимка с тональной картой по умолчанию. Вычисляет дельту между каждой последовательной парой кадров.
Протестированные API:
Pass: есть 3 одинаковых кадра, за которыми следует другой набор из 3 одинаковых кадров.
test_tonemap_sequence_i=0.jpg
test_tonemap_sequence_i=1.jpg
test_tonemap_sequence_i=2.jpg
test_tonemap_sequence_i=3.jpg
test_tonemap_sequence_i=4.jpg
test_tonemap_sequence_i=5.jpg
test_yuv_jpeg_all
Проверяет, работают ли все заявленные размеры и форматы для захвата изображений. Использует ручной запрос с линейной тональной картой, чтобы YUV и JPEG выглядели одинаково при преобразовании модулем its.image. Изображения не сохраняются по умолчанию, но их можно сохранить, включив debug_mode
.
Протестированные API:
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
-
android.graphics.ImageFormat#JPEG
Пройдено: все центры изображений имеют максимальную разницу RMS (среднеквадратичное значение сигнала) в изображениях, преобразованных в RGB, с 3% от изображения YUV с максимальным разрешением.
test_yuv_jpeg_all.png
test_yuv_plus_dng
Проверяет, что заявленные размеры и форматы для захвата изображения работают.
Протестированные API:
Пройдено: тест завершается и возвращает запрошенные изображения.
test_yuv_plus_dng.jpg
test_yuv_plus_jpeg
Тестирует захват одного кадра как в формате YUV, так и в формате JPEG. Использует ручной запрос с линейной тональной картой, чтобы YUV и JPEG выглядели одинаково (при преобразовании модулем its.image
).
Протестированные API:
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
-
android.graphics.ImageFormat#JPEG
Pass: изображения YUV и JPEG похожи и имеют разницу менее 1% RMS (среднеквадратичное значение сигнала).
test_yuv_plus_jpg_jpg.jpg | test_yuv_plus_jpeg_yuv.jpg |
test_yuv_plus_raw
Тестирует захват одного кадра как в формате RAW, так и в формате YUV. Использует ручной запрос с линейной тональной картой, поэтому ожидается, что RAW и YUV будут одинаковыми. Сравнивает центральные 10% значений RGB преобразованных изображений RGB. Логи android.shading.mode
.
Протестированные API:
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_MODE
-
android.hardware.camera2.CaptureRequest#SHADING_MODE
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Пройдено: изображения YUV и JPEG похожи и имеют разницу менее 3,5% RMS (среднеквадратичное значение сигнала).
test_yuv_plus_raw_shading=1_raw.jpg | test_yuv_plus_raw_shading=1_yuv.jpg |
test_yuv_plus_raw10
Тестирует захват одного кадра как в формате RAW10, так и в формате YUV. Использует ручной запрос с линейной тональной картой, поэтому ожидается, что RAW и YUV будут одинаковыми. Сравнивает центральные 10% значений RGB преобразованных изображений RGB. Логи android.shading.mode
.
Протестированные API:
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_MODE
-
android.hardware.camera2.CaptureRequest#SHADING_MODE
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
-
android.hardware.graphics.ImageFormat#RAW10
Пройдено : изображения RAW10 и YUV похожи и имеют разницу менее 3,5% RMS (среднеквадратичное значение сигнала).
test_yuv_plus_raw10_shading=1_raw.jpg | test_yuv_plus_raw10_shading=1_yuv.jpg |
test_yuv_plus_raw12
Тестирует захват одного кадра как в формате RAW12, так и в формате YUV. Использует ручной запрос с линейной тональной картой, поэтому ожидается, что RAW и YUV будут одинаковыми. Сравнивает центральные 10% значений RGB преобразованных изображений RGB. Логи android.shading.mode
.
Протестированные API:
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_MODE
-
android.hardware.camera2.CaptureRequest#SHADING_MODE
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
-
android.hardware.graphics.ImageFormat#RAW12
Пройдено : изображения RAW12 и YUV похожи и имеют разницу менее 3,5% RMS (среднеквадратичное значение сигнала).
test_yuv_plus_raw12_shading=1_raw.jpg | test_yuv_plus_raw12_shading=1_yuv.jpg |
сцена2_а
Scene2_a имеет три лица на сером фоне и в нейтральной одежде. Лица выбираются с широким диапазоном оттенков кожи.
сцена2_а
test_effects
Захватывает кадр для поддерживаемых эффектов камеры и проверяет, правильно ли они генерируются. Тест проверяет только эффекты OFF
и MONO
, но сохраняет изображения для всех поддерживаемых эффектов.
Протестированные API:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_EFFECTS
-
android.hardware.camera2.CaptureRequest#CONTROL_EFFECT_MODE
Pass: захватывает изображение сцены с OFF
эффектами и монохромное изображение с эффектами, установленными на MONO
.
test_effects_MONO.jpg
test_faces
Проверяет распознавание лиц. Изображение сохраняется, но информация о рамке и ориентирах занесена в таблицу test_faces_stdout.txt
.
Протестированные API:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: Обнаруживает хотя бы одно лицо на изображении.
test_format_combos
Тестирует различные комбинации выходных форматов.
Протестированные API:
android.hardware.camera2.CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP
android.hardware.camera2.params.StreamConfigurationMap#getOutputSizes()
android.hardware.camera2.CameraCaptureSession#captureBurst()
Pass: Все комбинации успешно захвачены.
test_jpeg_quality
Проверяет качество сжатия JPEG камеры. Пошаговое качество JPEG с помощью android.jpeg.quality
и обеспечение правильного изменения таблиц квантования.
Протестированные API:
Pass: Матрица квантования уменьшается с увеличением качества. (Матрица представляет коэффициент деления.)
Средняя яркость/цветность матрицы DQT задней камеры Pixel 4 в сравнении с качеством JPEG
Неудачный тестовый пример
Обратите внимание, что для изображений очень низкого качества (jpeg.quality < 50) увеличение сжатия в матрице квантования отсутствует.
test_num_faces
Проверяет распознавание лиц.
Протестированные API:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: Находит три лица.
test_num_faces_fd_mode_1.jpg
сцена2_b
test_auto_per_frame_control
Проверяет свойства PER_FRAME_CONTROL
для запросов автоматического захвата.
Протестированные API:
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
-
android.hardware.camera2.CaptureResult#CONTROL_AWB_STATE
-
android.hardware.camera2.CaptureRequest#CONTROL_POST_RAW_SENSITIVITY_BOOST
-
android.hardware.camera2.CaptureRequest#LENS_FOCUS_DISTANCE
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
-
android.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
-
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Пройдено : присутствуют все свойства PER_FRAME_CONTROL
.
test_auto_per_frame_control_frame_1.jpg
test_auto_per_frame_control_frame_10.jpg
test_auto_per_frame_control_frame_29.jpg
test_auto_per_frame_control_plot.png
test_num_faces
Проверяет распознавание лиц с повышенным разнообразием оттенков кожи в сценах с лицами.
Протестированные API:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: Находит 3 лица.
test_num_faces_fd_mode_1.jpg
scene2_c
test_num_faces
Проверяет распознавание лиц с повышенным разнообразием оттенков кожи в сценах с лицами.
Протестированные API:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: Находит 3 лица.
test_num_faces_fd_mode_1.jpg
test_jpeg_capture_perf_class
Тестирует задержку захвата JPEG для класса производительности S, как указано в разделе 2.2.7.2 Камера в CDD.
Пройдено : ДОЛЖНА быть задержка захвата JPEG камеры2 < 1000 мс для разрешения 1080p, измеренная CTS Camera PerformanceTest в условиях освещения ITS (3000K) для обеих основных камер.
test_camera_launch_perf_class
Проверяет задержку запуска камеры для класса производительности S, как указано в разделе 2.2.7.2 Камера в CDD.
Пройдено : ДОЛЖНА быть задержка запуска камеры 2 (от открытой камеры до первого кадра предварительного просмотра) < 600 мс, измеренная тестом производительности камеры CTS в условиях освещения ITS (3000K) для обеих основных камер.
сцена2_d
test_num_faces
Проверяет распознавание лиц с повышенным разнообразием оттенков кожи в сценах с лицами.
Протестированные API:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: Находит 3 лица.
scene2_e
test_continuous_picture
50 кадров с разрешением VGA захватываются с первой настройкой запроса захвата android.control.afMode = 4 (CONTINUOUS_PICTURE).
Протестированные API:
android.hardware.camera2.CaptureRequest#CONTROL_CAPTURE_INTENT
android.hardware.camera2.CaptureResult#CONTROL_POST_RAW_SENSITIVITY_BOOST
Pass: Система 3A останавливается в конце 50-кадрового захвата.
test_num_faces
Проверяет распознавание лиц с повышенным разнообразием оттенков кожи в сценах с лицами.
Протестированные API:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: Находит 3 лица.
сцена 3
Сцена 3 использует диаграмму ISO12233, и в большинстве тестов используется метод извлечения диаграмм для поиска диаграммы в сцене. По этой причине большинство сохраненных изображений не имеют границ, как изображения для сцен 1, 2 или 4, а только диаграмма.
test_3a_consistency
Тесты на согласованность 3A.
Протестированные API:
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureRequest#LENS_FOCUS_DISTANCE
-
android.hardware.camera2.CaptureResult#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureResult#SENSOR_SENSITIVITY
Pass: 3A сходится по экспозиции, усилению, awb (автоматический баланс белого) и fd (фокусное расстояние) трижды в пределах допуска.
test_edge_enhancement
Проверяет правильность применения параметра android.edge.mode
. Захватывает необработанные изображения для каждого режима края и возвращает резкость выходного изображения и метаданные результата захвата. Обрабатывает запрос захвата с заданным режимом края, чувствительностью, временем экспозиции, фокусным расстоянием и параметром выходной поверхности.
Pass: быстрый режим не более четкий, чем режим HQ (высокое качество).
Протестированные API:
Затронутые параметры камеры:
-
EDGE_MODE
test_edge_enhancement_edge=0.jpg
test_edge_enhancement_edge=1.jpg (быстрый режим)
test_edge_enhancement_edge=2.jpg (режим высокого качества)
test_flip_mirror
Проверяет правильность ориентации изображения в соответствии с разделом CDD 7.5.2 «Фронтальная камера» [C-1-5] .
Зеркальные, перевернутые или повернутые изображения можно определить по ромбовидному элементу рядом с центром.
Пройдено: изображение не переворачивается, не зеркально отражается и не поворачивается.
test_flip_mirror_scene_patch.jpg
test_lens_movement_reporting
Проверяет, правильно ли сообщается о флаге движения объектива. Делает серию из 24 изображений с первыми 12 кадрами на оптимальном расстоянии фокусировки (по данным 3A) и последними 12 кадрами на минимальном расстоянии фокусировки. Вокруг кадра 12 объектив перемещается, что приводит к падению резкости. Резкость в конечном итоге стабилизируется по мере того, как объектив перемещается в конечное положение. The lens movement flag should be asserted in all frames where the sharpness is intermediate to sharpness in the first 10 frames with the lens stationary at optimum focal distance, and the final 10 frames where the lens is stationary in the minimum focal distance. The exact frame the lens moves isn't important: what is checked is that the movement flag is asserted when the lens is moving.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCE
-
android.hardware.camera2.CaptureResult#LENS_STATE
-
android.hardware.camera2.CaptureResult#LENS_FOCUS_DISTANCE
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.camera2.CaptureRequest#LENS_FOCUS_DISTANCE
Pass: Lens movement flag is True
in the frame with sharpness change.
test_lens_position
Tests if the focus position is properly reported for moving lenses.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_HYPERFOCAL_DISTANCE
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCE
-
android.hardware.camera2.CaptureResult#LENS_STATE
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
Pass: Correct focus positions are reported.
test_reprocess_edge_enhancement
Returns sharpness of the output images and the capture result metadata. Processes a capture request with a given edge mode, sensitivity, exposure time, focus distance, output surface parameter, and reprocess format.
APIs tested:
-
android.hardware.camera2.CaptureRequest#EDGE_MODE
-
android.hardware.camera2.CaptureRequest#REPROCESS_EFFECTIVE_EXPOSURE_FACTOR
Pass: Sharpness for the different edge modes is correct.
scene4
Scene4 consists of a black circle on a white background inside a square.
scene4
test_aspect_ratio_and_crop
Takes pictures of a circle inside of a square over all formats. Verifies that the aspect ratio of the circle doesn't change, the cropped images keep the circle in center, and the circle size doesn't change for a constant format or with different resolution (field of view check).
APIs tested:
-
android.hardware.camera2.CaptureResult#LENS_DISTORTION
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
-
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
Pass: Images aren't stretched, the center of images don't differ by more than 3%, and the maximum possible FOV (field of view) is preserved.
test_multi_camera_alignment
Tests the multi camera system parameters related to camera spacing. Using the multi-camera physical sub-cameras, takes a picture with one of the physical cameras. Finds the circle center. Projects the circle center to the world coordinates for each camera. Compares the difference between the cameras' circle centers in world coordinates. Reprojects the world coordinate back to pixel coordinates and compares against originals as a validity check. Compares the circle sizes checking if the focal lengths of the cameras are different.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
-
android.hardware.camera2.CameraCharacteristics#LENS_DISTORTION
-
android.hardware.camera2.CameraCharacteristics#LENS_INTRINSIC_CALIBRATION
-
android.hardware.camera2.CameraCharacteristics#LENS_POSE_ROTATION
-
android.hardware.camera2.CameraCharacteristics#LENS_POSE_TRANSLATION
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
-
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
-
android.hardware.camera2.CaptureRequest#DISTORTION_CORRECTION_MODE
Pass: Focal lengths and circles sizes are consistent.
scene5/diffuser
test_lens_shading_and_color_uniformity
Tests that the lens shading correction is applied appropriately, and color of a monochrome uniform scene is evenly distributed. Performs this test on a YUV frame with auto 3A. Lens shading is evaluated based on the y channel. Measures the average y value for each sample block specified, and determines pass or fail by comparing with the center y value. The color uniformity test is evaluated in r/g and b/g space.
APIs tested:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
Pass: At the specified radius of the image, the variance of r/g and b/g value must be less than 20% to pass the test.
scene6
Scene6 is a grid of small circles with a square in one corner to indicate orientation. The small circles are needed to test zoom function over a large range.
scene6
test_zoom
Tests the camera zoom behavior. Takes captures over the zoom range and checks if the circles get bigger as the camera zooms in.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Pass: Relative size of captured circle is accurate against requested zoom ratio to ensure camera is zooming correctly.
test_zoom to find the contour of the circle closest to the center.
scene_change
test_scene_change
The scene change makes use of the tablet displaying a face scene and then turns the tablet on and off to create a scene change. The scene reuses scene2_e, but is in a separate scene because of the required tablet control. Additionally, for manual testing, the scene change can be accomplished by waving your hand in front of the camera.
APIs tested:
Pass: The android.control.afSceneChange
flag is asserted with a scene change.
sensor_fusion
Sensor fusion tests require specific phone movement in front of a checkerboard pattern. The sensor_fusion
tests can be automated with the Sensor Fusion Box .
Image of checkerboard
test_multi_camera_frame_sync
Tests that frame timestamps captured by logical camera are within 10 ms by computing angles of squares within the checkerboard to determine the timestamp.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE
-
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
-
android.hardware.camera2.params.OutputConfiguration#setPhysicalCameraId()
Pass: Angle between images from each camera doesn't change appreciably as phone is rotated.
test_sensor_fusion
Tests the timestamp difference between the camera and the gyroscope for AR and VR applications. Phone is rotated 90 degrees 10 times in front of the checkerboard pattern. Motion is about 2 s round trip. This test is skipped if no gyroscope is included or if the REALTIME
parameter is not enabled.
The test_sensor_fusion
test generates a number of plots. The two most important plots for debugging are:
test_sensor_fusion_gyro_events
: Shows the gyroscope events for the phone during the test. Movement in the x and y direction implies the phone isn't securely mounted on the mounting plate, reducing the probability of the test passing. The number of cycles in the plot depends on the write speed for saving frames.test_sensor_fusion_gyro_events
test_sensor_fusion_plot_rotations
: Shows the alignment of the gyroscope and camera events. This plot must show matching movement between camera and gyroscope to +/-1 ms.test_sensor_fusion_plot_rotations
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#LENS_FACING
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
-
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
-
android.hardware.camera2.CaptureRequest#SENSOR_TIMESTAMP
-
android.hardware.camera2.CaptureResult#SENSOR_ROLLING_SHUTTER_SKEW
Pass: Camera and gyroscope timestamps' offset is less than 1 ms as per CDD section 7.3.9 High Fidelity Sensors [C-2-14] .