На этой странице представлен полный список тестов Camera Image Test Suite (ITS), который является частью Android Compatibility Test Suite (CTS) Verifier. Тесты ITS являются функциональными тестами, то есть они не измеряют качество изображения, а все заявленные функции камеры работают так, как и ожидалось. Этот документ позволяет разработчикам и тестировщикам понять, что делают отдельные тесты и как устранять сбои в тестах.
ITS камеры пропускает тесты по требуемым свойствам камеры, уровню API и уровню класса производительности носителя (MPC). Для уровня API ITS использует ro.product.first_api_level
для пропуска тестов, добавленных на определенном уровне API, которые проверяют наличие негативного пользовательского опыта для функциональности на более низких уровнях API. ITS использует ro.vendor.api_level
для пропуска тестов для функций, добавленных на определенном уровне API, которые требуют новых аппаратных возможностей. Если для устройства определен ro.odm.build.media_performance_class
, ITS требует выполнения определенных тестов в зависимости от уровня MPC.
Тесты сгруппированы по сценам следующим образом:
- scene0 : захват метаданных, дрожание, гироскоп, вибрация
- сцена 1 : Экспозиция, чувствительность, компенсация EV, YUV против JPEG/RAW
- сцена2 : Распознавание лиц, тесты, требующие цветных сцен
- сцена3 : усиление контуров, движение линз
- сцена4 : Соотношение сторон, кадрирование, поле зрения
- сцена5 : затенение линз
- сцена6 : Масштаб
- scene7 : Переключатель нескольких камер
- scene8 : измерение в области AE и AWB
- сцена9 : сжатие JPEG
- scene_extensions : Расширения камеры
- scene_tele : переключение телеобъектива
- scene_flash : Автовспышка, минимальная частота кадров
- scene_video : Пропуски кадров
- sensor_fusion : смещение синхронизации камеры/гироскопа
- feature_combination : Комбинации функций
- scene_ip : Соответствие изображения между приложением камеры по умолчанию и JCA
Описание каждой сцены смотрите в отдельных разделах.
сцена0
Тесты Scene0 не требуют конкретной информации о сцене. Однако для гироскопа и вибрационного тестирования телефон должен быть неподвижен.
тест_джиттер
Измеряет дрожание временных меток камеры.
Протестированные API:
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
Пройдено: разница между кадрами составляет не менее 30 мс.
test_jitter_plot.png (Обратите внимание на небольшой диапазон по оси Y. На самом деле джиттер на этом графике невелик.)
тестовые_метаданные
Проверяет правильность записей метаданных. Просматривает результаты захвата и объекты характеристик камеры. Этот тест использует значения экспозиции и усиления 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_request_capture_match
Проверяет, что устройство записывает правильные значения экспозиции и усиления, считывая метаданные захвата.
Протестированные 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
Пройдено: значения метаданных запроса и захвата совпадают для всех снимков.
тестовые_события_датчика
Проверяет, что устройство запрашивает и выводит события датчиков для устройств, которые заявляют о поддержке слияния датчиков. Ожидаемые датчики — акселерометр, гироскоп и магнитометр. Этот тест работает только при включенном экране, то есть устройство не находится в режиме ожидания.
Протестированные API:
Пройдено: получены события для каждого датчика.
тестовый_сплошной_цвет_тестовый_шаблон
Тесты, что тестовые шаблоны сплошного цвета генерируются правильно для отключения камеры. Если отключение камеры поддерживается, тестовые шаблоны сплошного цвета должны поддерживаться. Если отключение камеры не поддерживается, тестовые шаблоны сплошного цвета проверяются только в том случае, если эта возможность заявлена.
Если поддерживаются изображения 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
Пройдено: Поддерживаемые сплошные тестовые шаблоны имеют правильный цвет, а дисперсия в изображении низкая.
тестовый_тестовый_шаблон
Тестирует параметр 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
Пройдено: временные метки движения находятся между двумя временными метками изображения.
ограничение_вибрации_теста
Проверяет, функционирует ли вибрация устройства должным образом.
Протестированные API:
-
android.hardware.Sensor
-
android.hardware.SensorEvent
-
android.hardware.Sensor#TYPE_ACCELEROMETER
-
android.os.Vibrator
-
android.hardware.camera2.CameraDevice#setCameraAudioRestriction
Пройдено: устройство не вибрирует при отключении звука с помощью API ограничения звука камеры.
сцена1_1
scene1 — это серая диаграмма. Серая диаграмма должна покрывать центральные 30% поля зрения камеры. Ожидается, что серая диаграмма будет умеренно бросать вызов 3A (автоматическая экспозиция, автоматический баланс белого, автоматическая фокусировка), поскольку центральная область не имеет особенностей. Однако запрос на захват указывает всю сцену, которая включает достаточно особенностей для сходимости 3A.
Камеры RFoV можно тестировать в WFoV или испытательном стенде RFoV. Если камера RFoV тестируется в испытательном стенде WFoV, диаграмма масштабируется на ⅔, чтобы обеспечить некоторые границы для серой диаграммы в FoV для содействия сходимости 3A. Более подробное описание испытательных стендов камеры см. в разделе Camera ITS-in-a-box .
сцена1: Полноразмерная диаграмма (слева). Уменьшенная в ⅔ раза диаграмма (справа).
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 сходится.
тест_авто_против_ручного
Тесты, в которых были сделаны снимки в автоматическом и ручном режимах, выглядят одинаково.
Протестированные 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
тест_черный_белый
Тестирует, что устройство производит полностью черно-белые изображения. Делает два снимка, первый с крайне низким усилением и короткой выдержкой, что приводит к черному фото, а второй с крайне высоким усилением и длинной выдержкой, что приводит к белому фото.
Протестированные API:
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Пройдено: создает черно-белые изображения. Насыщенные каналы белых изображений имеют значения RGB [255, 255, 255] с погрешностью менее 1% разницы.
![]() | ![]() | |
test_black_white_black.jpg | test_black_white_white.jpg |
test_black_white_plot_means.png
test_burst_capture
Проверяет, что весь конвейер захвата может справиться со скоростью полноразмерного захвата и временем ЦП.
Протестированные API:
Пройдено: делает серию полноразмерных снимков, проверяет наличие пропусков кадров и яркость изображения.
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
Пройдено: Изображения идентичны визуально и по значениям 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_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
тестовые_регионы_урожая
Проверяет, что области обрезки работают. Берет полное изображение и создает участки 5 различных областей (углы и центр). Берет изображения с установленным кадрированием для 5 областей. Сравнивает значения участка и изображения обрезки.
Протестированные API:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
Пройдено: Изображение обрезанной области совпадает с участком, соответствующим обрезанному изображению.
test_ev_compensation
Тесты, в которых применяется компенсация значения экспозиции (EV). Тест состоит из базовой и расширенной частей.
Базовый раздел проверяет, что компенсация EV применяется с использованием диапазона, созданного с помощью CONTROL_AE_COMPENSATION_STEP
. Восемь кадров захватываются при каждом значении компенсации.
Расширенный раздел увеличивает экспозицию на восемь шагов и проверяет измеренную яркость по сравнению с ожидаемой яркостью. Ожидаемые значения рассчитываются на основе яркости изображения без применения компенсации EV, и ожидаемое значение насыщается, если рассчитанные значения превышают фактический диапазон значений изображения. Тест считается не пройденным, если ожидаемые значения и измеренные значения не совпадают или если изображения переэкспонированы в течение пяти шагов.
Протестированные 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_STATE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
-
android.hardware.camera2.CaptureResult#TONEMAP_CURVE
-
android.hardware.camera2.CaptureResult#TONEMAP_MODE
Базовый проход по сечению: изображения демонстрируют увеличение экспозиции без переэкспонирования в течение пяти шагов.
test_ev_compensation_basic.png
Проход расширенного раздела: захватывает увеличение яркости по мере увеличения настройки компенсации EV. Восемь кадров, захваченных для каждой настройки компенсации EV, имеют стабильные значения яркости.
test_ev_compensation_advanced_plot_means.png
test_exposure_x_iso
Тесты, которые показывают, что постоянная экспозиция достигается при изменении 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
по мере увеличения значений множителя усиления (ось x) нормализованные средние значения плоскости RGB (ось y) начинают отклоняться от низких значений множителя усиления.
test_exposure_plot_means.png
![]() | ![]() | |
test_exposure_mult=1.00.jpg | test_exposure_mult=64.00.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
тест_линейности
Тестирует, что обработка устройства может быть инвертирована в линейные пиксели. Захватывает последовательность снимков с устройством, направленным на однородную цель.
Протестированные 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 lock и YUV burst (с использованием автоматической настройки). Этот тест разработан для прохождения даже на ограниченных устройствах, которые не имеют MANUAL_SENSOR
или PER_FRAME_CONTROLS
. Тест проверяет согласованность изображения YUV, в то время как проверка частоты кадров выполняется в CTS.
Протестированные API:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
Пройдено: Захваты выглядят согласованными.
test_locked_burst_frame0.jpg
test_locked_burst_frame1.jpg
test_locked_burst_frame2.jpg
сцена1_2
Сцена 1_2 является функционально идентичной копией сцены 1_1, реализующей структуру подсцены для облегчения длительности сцены 1.
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
Пройдено: значения 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_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_шум_снижения
Проверяет, что параметр android.noiseReduction.mode
применяется правильно, если установлен. Захватывает изображения при тусклом освещении камеры. Использует высокое аналоговое усиление, чтобы гарантировать, что захваченное изображение будет шумным. Захватывает три изображения: для NR off, "быстро" и "высокое качество". Также захватывает изображение с низким усилением и NR off и использует его дисперсию в качестве базовой линии. Чем выше 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
режим_затенения_тестовых_параметров
Проверяет, применяется ли параметр 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.CameraMetadata#TONEMAP_MODE_CONTRAST_MODE
-
android.hardware.camera2.CameraMetadata#TONEMAP_MODE_FAST
-
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_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_reprocess_шум_снижения
Проверяет, применяется ли android.noiseReduction.mode
для запросов на повторную обработку. Захватывает повторно обработанные изображения при тусклом освещении камеры. Использует высокое аналоговое усиление, чтобы гарантировать, что захваченное изображение будет шумным. Захватывает три повторно обработанных изображения для NR off, "fast" и "high quality". Захватывает повторно обработанное изображение с низким усилением и NR off и использует его дисперсию в качестве базовой линии.
Протестированные API:
Проход: БЫСТРО >= ВЫКЛ, HQ >= БЫСТРО, HQ >> ВЫКЛ
Типичный график SNR против NR_MODE
test_tonemap_sequence
Тестирует последовательность снимков с различными кривыми тональной карты. Захватывает 3 ручных снимка с линейной тональной картой. Захватывает 3 ручных снимка с тональной картой по умолчанию. Вычисляет дельту между каждой последовательной парой кадров.
Протестированные API:
Пройдено: за 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 выглядели одинаково после преобразования модулем image_processing_utils
. Изображения не сохраняются по умолчанию, но их можно сохранить, включив 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
тест_yuv_plus_dng
Проверяет работоспособность указанных размеров и форматов захвата изображений.
Протестированные API:
Пройдено: Тест завершен и возвращает запрошенные изображения.
test_yuv_plus_dng.jpg
сцена1_3
Сцена 1_3 является функционально идентичной копией сцены 1_1, реализующей структуру подсцены для облегчения длительности сцены 1.
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_dng_noise_model
Проверяет правильность параметров модели DNG raw. График отображает измеренную дисперсию центрального участка серой карты в необработанных снимках, снятых в диапазоне чувствительности, и сравнивает эти значения с дисперсией, ожидаемой при каждой чувствительности моделью шума 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
Pass: параметры модели DNG raw верны. Ожидаемые значения RGB соответствуют фактическим измеренным значениям RGB.
test_dng_noise_model_plog.png
тест_jpeg
Тесты, которые конвертировали изображения YUV и изображения JPEG устройства, выглядят одинаково. Тест берет центральные 10% изображения и вычисляет значение RGB, а также проверяет, что они совпадают.
Протестированные API:
Пройдено: средняя разница RGB между каждым изображением составляет менее 3%.
![]() | ![]() | |
test_jpeg_fmt=jpg.jpg | test_jpeg=fmt=yuv.jpg |
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
Проход: каждый следующий кадр шумнее предыдущего, так как усиление увеличивается.
Использует дисперсию центральной ячейки сетки статистики.
test_raw_burst_sensitivity_variance.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
Пас: Разница увеличивается с каждым броском.
test_raw_sensitivity_variance.png
test_yuv_plus_jpeg
Тесты захвата одного кадра как выходов YUV и JPEG. Использует ручной запрос с линейной тональной картой, так что YUV и JPEG выглядят одинаково при конвертации модулем image_processing_utils
.
Протестированные API:
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
-
android.graphics.ImageFormat#JPEG
Пройдено: изображения YUV и JPEG похожи и имеют разницу менее 1% RMS (среднеквадратичное значение сигнала).
![]() | ![]() | |
test_yuv_plus_jpg_jpg.jpg | test_yuv_plus_jpeg_yuv.jpg |
test_yuv_plus_raw
Тестирует захват одного кадра как выходов RAW/RAW10/RAW12 и YUV, если поддерживается. Использует ручной запрос с линейной тональной картой, поэтому ожидается, что raw и YUV будут одинаковыми. Сравнивает центральные 10% значения RGB преобразованных изображений RGB. Регистрирует android.shading.mode
.
Протестированные API:
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
-
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
-
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
-
android.hardware.graphics.ImageFormat#RAW12
Пройдено: изображения YUV и RAW схожи и имеют разницу менее 3,5% RMS (среднеквадратичное значение сигнала).
![]() | ![]() | |
test_yuv_plus_raw_shading=1_raw.jpg | test_yuv_plus_raw_shading=1_yuv.jpg |
приоритет_чувствительности_теста
Тестирует CONTROL_AE_PRIORITY_MODE_SENSOR_SENSITIVITY_PRIORITY
при различных настройках ISO, чтобы подтвердить корреляцию между более высоким ISO и повышенным уровнем шума.
Протестированные API:
-
android.hardware.camera2.CameraMetadata#CONTROL_AE_PRIORITY_MODE_SENSOR_SENSITIVITY_PRIORITY
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
-
android.hardware.camera2.CaptureResult#SENSOR_SENSITIVITY
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_PRIORITY_MODE
-
android.hardware.camera2.CaptureResult#CONTROL_AE_PRIORITY_MODE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureResult#CONTROL_AE_MODE
-
android.hardware.camera2.CameraMetadata#CONTROL_AE_MODE_ON
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_PRIORITY_MODES
Пройдено: более высокое значение ISO приводит к повышению уровня шума.
Критерии пропуска теста
Тест test_sensitivity_priority.py
пропускается, если выполняется любой из следующих критериев:
- Устройство имеет первый уровень API (
first_api_level
) 35 или ниже. - Устройство не объявляет
CONTROL_AE_PRIORITY_MODE_SENSOR_SENSITIVITY_PRIORITY
в CONTROL_AE_AVAILABLE_PRIORITY_MODES .
приоритет_времени_экспозиции_теста
Тестирует CONTROL_AE_PRIORITY_MODE_SENSOR_EXPOSURE_TIME_PRIORITY
при различных значениях времени экспозиции, проверяя стабильную яркость в диапазоне, в котором ISO может компенсировать ее.
Протестированные API:
-
android.hardware.camera2.CameraMetadata#CONTROL_AE_PRIORITY_MODE_SENSOR_EXPOSURE_TIME_PRIORITY
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureResult#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_PRIORITY_MODE
-
android.hardware.camera2.CaptureResult#CONTROL_AE_PRIORITY_MODE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CaptureResult#SENSOR_SENSITIVITY
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureResult#CONTROL_AE_MODE
-
android.hardware.camera2.CameraMetadata#CONTROL_AE_MODE_ON
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_PRIORITY_MODES
Пройдено: яркость стабильна (в пределах допуска) на протяжении всего времени экспозиции, если ISO находится в пределах диапазона компенсации.
Критерии пропуска теста
Тест test_exposure_time_priority
пропускается, если выполняется любой из следующих критериев:
- Устройство имеет первый уровень API (
first_api_level
) 35 или ниже. - Устройство не объявляет
CONTROL_AE_PRIORITY_MODE_SENSOR_EXPOSURE_TIME_PRIORITY
в CONTROL_AE_AVAILABLE_PRIORITY_MODES .
сцена2_а
scene2_a имеет три лица с серым фоном и нейтральной одеждой. Лица выбираются с широким диапазоном оттенков кожи. Для оптимальной работы функции распознавания лиц диаграмма должна иметь правильную ориентацию.
сцена2_а
test_autoframeing
Тестирует поведение автокадрирования устройства камеры. Выполняет большое масштабирование, так что ни одно из лиц в сцене не видно, включает режим автокадрирования, устанавливая AUTOFRAMING
в CaptureRequest
в True
, и проверяет, могут ли быть обнаружены все лица в исходной сцене, когда состояние сходится (то есть когда AUTOFRAMING_STATE
в CaptureResult
установлено в AUTOFRAMING_STATE_CONVERGED
).
Протестированные API:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AUTOFRAMING_AVAILABLE
-
android.hardware.camera2.CaptureRequest#CONTROL_AUTOFRAMING
-
android.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMING
-
android.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMING_STATE
Пройдено: все три лица обнаружены.
тест_дисплей_p3
Тесты Отображение захвата P3 в JPEG с использованием API ColorSpaceProfiles
. Тесты того, что захваченный JPEG имеет соответствующий профиль ICC в своем заголовке, и что изображение содержит цвета за пределами гаммы sRGB.
Протестированные API:
-
android.hardware.camera2.params.ColorSpaceProfiles
-
android.hardware.camera2.params.SessionConfiguration#setColorSpace
Пройдено: JPEG содержит профиль Display P3 ICC и цвета за пределами гаммы sRGB.
тестовые_эффекты
Захватывает кадр для поддерживаемых эффектов камеры и проверяет, правильно ли они сгенерированы. Тест проверяет только эффекты OFF
и MONO
, но сохраняет изображения для всех поддерживаемых эффектов.
Протестированные API:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_EFFECTS
-
android.hardware.camera2.CaptureRequest#CONTROL_EFFECT_MODE
Проход: захватывает изображение сцены с OFF
эффектами и монохромное изображение с эффектами, установленными на MONO
.
тестовые_эффекты_МОНО.jpg
test_exposure_keys_consistent
В этом тесте сравнивается средняя яркость захвата с включенной АЭ и захвата с выключенной АЭ, в котором вручную применяются параметры экспозиции (чувствительность, время экспозиции, длительность кадра, повышение чувствительности после обработки), полученные в CaptureResult
захвата с включенной АЭ.
Протестированные API:
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
-
android.hardware.camera2.CaptureRequest#CONTROL_POST_RAW_SENSITIVITY_BOOST
-
android.hardware.camera2.CaptureResult#SENSOR_SENSITIVITY
-
android.hardware.camera2.CaptureResult#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureResult#SENSOR_FRAME_DURATION
-
android.hardware.camera2.CaptureResult#CONTROL_POST_RAW_SENSITIVITY_BOOST
Пройдено: Относительная разница в яркости между двумя снимками составляет менее четырех процентов.
test_format_combos
Тестирует различные комбинации выходных форматов.
Протестированные API:
android.hardware.camera2.CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP
android.hardware.camera2.params.StreamConfigurationMap#getOutputSizes()
android.hardware.camera2.CameraCaptureSession#captureBurst()
Пройдено: Все комбинации успешно захвачены.
test_num_faces
Тестирует распознавание лиц.
Протестированные API:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Пройдено: Находит три лица.
test_num_faces_fd_mode_1.jpg
test_reprocess_uv_swap
Тесты, которые показывают, что повторная обработка YUV не меняет местами плоскости U и V. Это обнаруживается путем вычисления суммы абсолютных разностей (SAD) между повторно обработанным изображением и необработанным захватом. Если замена выходных плоскостей U и V повторно обработанного захвата приводит к увеличению SAD, то предполагается, что выход имеет правильные плоскости U и V.
Протестированные API:
-
android.hardware.camera2.CameraDevice#createCaptureSession
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_YUV_REPROCESSING
-
android.hardware.camera2.CaptureRequest#EDGE_MODE
-
android.hardware.camera2.CaptureResult#NOISE_REDUCTION_MODE
Пройдено: Плоскости U и V не поменяны местами.
test_reprocess_uv_swap.png
сцена2_б
test_preview_num_faces
Тестирование распознавания лиц в предварительном просмотре с увеличенным разнообразием оттенков кожи в сценах с лицами.
Протестированные API:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Пройдено: Находит 3 лица с ориентирами в ограничивающих их рамках.
test_num_faces_fd_mode_1.jpg
test_yuv_jpeg_capture_sameness
Захватывает два изображения, используя самые большие распространенные форматы YUV и JPEG с тем же соотношением сторон, что и самый большой формат JPEG, не превышающим разрешение 1920x1440. Устанавливает jpeg.quality
на 100 и захватывает запрос двойной поверхности. Преобразует оба изображения в массивы RGB и вычисляет трехмерную среднеквадратичную (RMS) разницу между двумя изображениями.
Кроме того, этот тест проверяет, что выходные данные YUV для всех поддерживаемых вариантов использования потока достаточно похожи на выходные данные YUV с вариантом использования STILL_CAPTURE
.
Протестированные API:
-
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASES
-
android.hardware.camera2.CaptureRequest#JPEG_QUALITY
-
android.graphics.ImageFormat#JPEG
Пройдено: изображения YUV и JPEG для варианта использования STILL_CAPTURE
имеют разницу менее 3% RMS (среднеквадратичное значение сигнала); изображения YUV для всех поддерживаемых вариантов использования имеют разницу менее 10% RMS от изображений YUV с вариантом использования STILL_CAPTURE
.
сцена2_c
test_num_faces
Тестирование распознавания лиц с увеличенным разнообразием оттенков кожи в сценах с лицами.
Протестированные API:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Пройдено: Находит 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 в условиях освещения ITS (3000K) для обеих основных камер.
класс_производительности_запуска_камеры_test_camera
Тестирует задержку запуска камеры для класса производительности S, как указано в разделе 2.2.7.2 Камера в CDD.
Пройдено: задержка запуска камеры 2 (открытие камеры до первого кадра предварительного просмотра) ДОЛЖНА быть < 600 мс, согласно измерениям камеры CTS Camera PerformanceTest в условиях освещения ITS (3000K) для обеих основных камер.
test_default_camera_hdr
Тесты показывают, что камера по умолчанию захватывает изображение в режиме Ultra HDR для класса производительности 15, как указано в разделе 2.2.7.2 «Камера» CDD.
Пройдено: для устройства класса производительности 15 пакет камеры по умолчанию ДОЛЖЕН быть Ultra HDR.
сцена2_д
test_preview_num_faces
Тестирование распознавания лиц в предварительном просмотре с увеличенным разнообразием оттенков кожи в сценах с лицами.
Протестированные API:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Пройдено: Находит 3 лица с ориентирами в ограничивающих их рамках.
сцена2_е
тест_непрерывный_рисунок
Захватывается 50 кадров с разрешением VGA, при этом запрос на захват сначала устанавливает android.control.afMode = 4 (CONTINUOUS_PICTURE).
Протестированные API:
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
-
android.hardware.camera2.CaptureResult#CONTROL_AF_STATE
-
android.hardware.camera2.CaptureResult#CONTROL_AWB_STATE
Пройдено: 3A Система стабилизируется к концу захвата 50 кадров.
test_num_faces
Тестирование распознавания лиц с увеличенным разнообразием оттенков кожи в сценах с лицами.
Протестированные API:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Пройдено: Находит 3 лица.
сцена2_ф
scene2_f имеет три лица с белым фоном и белой одеждой. Лица имеют широкий диапазон тонов кожи и высокий контраст с фоном.
сцена2_ф
test_preview_num_faces
Тестирование распознавания лиц с увеличенным разнообразием оттенков кожи в сценах с лицами.
Протестированные API:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Пройдено: Находит 3 лица с ориентирами в ограничивающих их рамках.
test_num_faces_fd_mode_1.jpg
сцена2_г
scene2_g имеет три профиля лица с белым фоном и белой одеждой. Лица имеют широкий диапазон тонов кожи и высокий контраст с фоном.
сцена2_г
test_preview_num_faces
Тесты обнаружения лица с повышенным разнообразием тона кожи в сценах лица.
Протестировано API:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Пропуск: находит 3 лица с достопримечательностями лица в боксах с ограничивающими лицами.
test_preview_num_faces
сцена3
Scene3 использует диаграмму ISO12233, и в большинстве тестов используется метод экстрактора диаграммы, чтобы найти диаграмму на сцене. По этой причине большинство сохраненных изображений не имеют границ, таких как изображения для сцен 1, 2 или 4, но только диаграмма. Диаграмма должна быть в правильной ориентации для поиска диаграммы оптимально.
test_edge_enhancement
Тестирует, что параметр android.edge.mode
применяется правильно. Занимает нерепроцессные изображения для каждого режима края и возвращает резкость выходного изображения и метаданные результата захвата. Обрабатывает запрос на захват с данным режимом края, чувствительностью, времени экспозиции, расстоянием фокусировки и параметром выходной поверхности.
Пропустите: режим HQ
(2) острее, чем режим OFF
(0). FAST
режим (1) острее, чем OFF
режимом. HQ
Mode Sharper или равен FAST
режиму.
Протестировано 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_imu_drift
Тесты, если инерциальная единица измерения (IMU) имеет стабильный выход в течение 30 секунд, в то время как устройство является стационарным и фиксирует предварительный просмотр высокой четкости.
Протестировано API:
-
android.hardware.Sensor
-
android.hardware.SensorEvent
-
android.hardware.Sensor#TYPE_GYROSCOPE
-
android.hardware.Sensor#TYPE_ROTATION_VECTOR
Проходить:
- Дрейф гироскопа составляет менее 0,01 рад во время испытания.
- Разница гироскопии составляет менее 1E-7 рад 2 /с 2 /Гц в течение времени теста.
- Дрейф вектора вращения составляет менее 0,01 рад во время испытания.
- (Еще не обязательно) Дрейф гиропада составляет менее 1 градуса в секунду.
test_imu_drift_gyro_drift.png
test_imu_drift_rotation_vector_drift.png
test_landscape_to_portrait
Испытания, если ландшафт на портретный переопределение правильно функционирует для ландшафтных датчиков.
Протестировано API:
-
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_ROTATE_AND_CROP_MODES
-
android.hardware.camera2.CameraCharacteristics#SENSOR_ORIENTATION
-
android.hardware.camera2.CameraCharacteristics#getCameraCharacteristics
Проход: тест способен найти диаграмму с ожидаемым вращением (0 градусов, когда отключен пейзаж в портрет отключен, при включении 90 градусов).
test_landscape_to_portrait.png
test_lens_movement_reporting
Испытания, если флаг движения объектива правильно сообщается. Занимает всплеск из 24 изображений с первыми 12 кадрами на оптимальном расстоянии фокусировки (как найдено 3А) и последние 12 кадров на минимальном расстоянии фокуса. Вокруг кадра 12 линза движется, вызывая резкость падать. Резкость в конечном итоге стабилизируется, когда объектив перемещается в конечную позицию. Флаг движения линз должен быть утвержден во всех кадрах, где резкость является промежуточной до резкости в первых нескольких кадрах с объективом, стационарным на оптимальном фокусном расстоянии, и в последних нескольких кадрах, где объектив является стационарным на минимальном фокусном расстоянии. Точная кадра, которую движутся линзы, не важна: то, что проверяется, так это то, что флаг движения утверждается, когда объектив движется.
Протестировано API:
-
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
Пропуск: флаг движения объектива True
в кадре с резкостью изменения.
Механизмы провал:
-
lens_moving: True
(android.hardware.camera2.CaptureResult#LENS_STATE
= 1) вtest_log.DEBUG
утверждается только в кадрах, где резкость не меняется. - Рамки с
lens_moving: False
(android.hardware.camera2.CaptureResult#LENS_STATE
= 0) вtest_log.DEBUG
имеет разность резкости по сравнению с первыми несколькими кадрами на оптимальном фокусном расстоянии или последними кадрами на минимальном расстоянии фокусировки.
test_reprocess_edge_enhancement
Тесты, если поддерживаются методы переработки для улучшения краев, работают должным образом. Обрабатывает запрос на захват с данным режимом режима переработки и сравнивает различные режимы для захвата с отключенными режимами переработки режима.
Протестировано API:
-
android.hardware.camera2.CaptureRequest#EDGE_MODE
-
android.hardware.camera2.CaptureRequest#REPROCESS_EFFECTIVE_EXPOSURE_FACTOR
Проход: резкость для различных режимов края верна. HQ
(режим 2) является острее, чем OFF
(режим 0), и улучшение между различными режимами аналогично.
test_reprocess_edge_enhancement_plot.png
сцена4
Scene4 состоит из черного круга на белом фоне внутри квадрата. Тесты в сцене4 могут быть чувствительны к выравниванию, поэтому начиная с 15, вы можете использовать check_alignment.py
в каталоге инструментов, чтобы обеспечить проверку выравнивания DUT и диаграммы.
сцена4
test_30_60fps_preview_fov_match
Проверяет, что 30 кадров в секунду и 60 кадров в секунду предварительного просмотра имеют такой же FOV. Тест снимает два видео, один с 30 кадром в секунду, а другой - 60 кадров в секунду. Репрезентативный кадр выбирается из каждого видео и анализируется, чтобы убедиться, что изменения FOV в двух видео находятся в рамках спецификаций. Испытания о том, что соотношение сторон круга остается постоянным, центр круга остается стабильным, а радиус круга остается постоянным.
Протестировано API:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
-
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureResult#LENS_DISTORTION
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
-
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
Пропустите: изображения не растянуты, центр изображений не отличается более чем на 3%, а максимальное изменение соотношения сторон от 30 кадров в секунду и 60 кадров в секунду не более 7,5%
Механизмы провал:
- Круг из видео 30 кадров в секунду значительно отличается по размеру от 60 -кадтного видео.
- Круг в захваченном изображении искажен в процессе обработки.
- Круг в захваченном изображении обрезан из -за чрезвычайного запроса по захвату соотношения сторон, снижающего высоту или ширину изображения.
- Круг на захваченном изображении имеет отражение в центре и не выглядит полностью заполненным.
test_aspect_ratio_and_crop
Тесты, если изображения искажены или неожиданно обрезаются в трубопроводе изображения. Фотографирует круг по всем форматам. Проверяет круг не искажен, круг не движется от центра изображения, и круг не изменяется неправильно с различными соотношениями сторон или разрешениями.
Протестировано API:
-
android.hardware.camera2.CaptureResult#LENS_DISTORTION
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
-
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
Пропуск: изображения не растянуты, центр изображений не отличается более чем на 3%, и сохранится максимально возможный FOV (поле зрения).
Механизмы провал:
- Камера не выровнена с кругом, отображаемым на планшете в центре захваченной сцены.
- Круг в захваченном изображении искажен в процессе обработки.
- Изображение с более низким разрешением двойное обрезано в трубопроводе изображения, создавая различные FOV между изображениями с высоким и низким разрешением.
- Круг в захваченном изображении обрезан из -за чрезвычайного запроса по захвату соотношения сторон, снижающего высоту или ширину изображения.
- Круг на захваченном изображении имеет отражение в центре и не выглядит полностью заполненным.
test_multi_camera_alenment
Проверяет параметры калибровки камеры, связанные с позиционированием камеры для систем нескольких камеры. Используя многокамерные физические суб-камеры, сфотографируется с одной из физических камер. Находит центр круга. Проецирует Circle Center к миру координаты для каждой камеры. Сравнивает разницу между центрами круга камер в мировых координатах. Воспроизведения мировой координации координат пикселя и сравнение с оригиналами как проверка достоверности. Сравнивает размеры круга, проверяя, различаются ли фокусные расстояния камер.
Протестировано API:
-
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
-
android.hardware.camera2.CameraCharacteristics#LENS_DISTORTION
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
-
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
Проход: Центры кружков и размеры, как и ожидалось, на прогнозируемых изображениях по сравнению с захваченными изображениями, использующими данные калибровки камеры и фокусные расстояния.
Механизмы провал:
-
LENS_INTRINSIC_CALIBRATION
,LENS_POSE_TRANSLATION
илиLENS_POSE_ROTATION
- это проектные значения, а не фактические данные калибровки. - Система камеры не подходит для тестовой настройки. Например, тестирование широкой и сверхуровневой системы камеры с помощью испытательной установки RFOV. Для получения дополнительной информации см. Camera ITS IT-в-коробку FAQ1 .
test_preview_aspect_ratio_and_crop
Подобно тесту TEST_ASPECT_RATIO_AND_CROP для до сих пор захватывает, этот тест проверяет поддерживаемые форматы предварительного просмотра, чтобы гарантировать, что рамки предварительного просмотра не растянуты или не обрезаны ненадлежащим образом. Проверяет, что соотношение сторон не меняется, обрезанные изображения сохраняют круг в центре кадра, а размер круга не изменяется для постоянного формата или с различными разрешениями (проверка поля зрения).
Протестировано API:
-
android.hardware.camera2.CaptureResult#LENS_DISTORTION
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
-
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Пропуск: изображения не растянуты, центр изображений не отличается более чем на 3%, и сохранится максимально возможный FOV (поле зрения).
test_preview_stabilization_fov
Проверяет поддерживаемые размеры предварительного просмотра, чтобы убедиться, что FOV обрезан соответствующим образом. Тест снимает два видео, один со ON
предварительной просмотра, а другой - с OFF
Стабилизация. Репрезентативный кадр выбирается из каждого видео и анализируется, чтобы убедиться, что изменения FOV в двух видео находятся в пределах спецификации.
Протестировано API:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Проход: соотношение сторон округа остается постоянным, центральное местоположение круга остается стабильным, а размер круга не изменяется больше, чем на 20%.
test_video_aspect_ratio_and_crop
Снимает видео с кругом внутри квадрата над всеми форматами видео. Извлекает ключевые кадры, и проверяет соотношение сторон круга не изменяется, обрезанные изображения сохраняют круг в центре, а размер круга не изменяется для постоянного формата или с различным разрешением (проверка поля зрения).
Протестировано API:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.hardware.camera2.CaptureResult#LENS_DISTORTION
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
-
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Pass: видео кадры не растянуты, центр кадров не отличается более чем на 3%, а максимально возможный FOV (поле зрения) сохраняется.
Сцена5
Сцена5 требует равномерно освещенной серой сцены. Это достигается диффузором, помещенным над объективом камеры. Мы рекомендуем следующий диффузор: www.edmundoptics.com/optics/window-diffusers/optical-diffusers/opal-diffusing-glass/46168
.
Чтобы подготовить сцену, прикрепите диффузор перед камерой и укажите камеру на источник освещения около 2000 года. Изображения, снятые для сцены5, требуют диффузного освещения без очевидных функций. Ниже приведен пример изображения:
Сцена5 захват
test_lens_shading_and_color_uniformity
Испытания о том, что коррекция затенения объектива применяется соответствующим образом, и цвет монохромной единой сцены, равномерно распределяется. Выполняет этот тест на кадре YUV с Auto 3A. Затенение линз оценивается на основе канала Y. Измеряют среднее значение y для каждого указанного блока выборки и определяет проход или сбой, сравнивая с центром y. Тест на однородность цвета оценивается в пространстве R/G и B/G.
Протестировано API:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
Пропуск: при указанном радиусе изображения дисперсия значения R/G и B/G должна составлять менее 20% для прохождения теста.
Сцена6
Сцена6 - это сетка уникальных идентифицируемых маркеров ARUCO. Тесты в сцене6 могут быть чувствительны к выравниванию, поэтому, начиная с 15, вы можете использовать check_alignment.py
в каталоге инструментов, чтобы обеспечить проверку выравнивания DUT и диаграммы.
Сцена6
test_in_sensor_zoom
Проверяет поведение функции Zoom Zoom in-Camer, которая создает обрезанные необработанные изображения.
С вариантом использования потока, установленным в CROPPED_RAW
, тест берет два захвата над диапазоном масштабирования, полное полевое изображение (FOV) и обрезанное сырое изображение. Тест преобразует изображения в массивы RGB, снижает полноразмерное обрезанное сырое изображение в размер, сообщаемый SCALER_RAW_CROP_REGION
, и вычисляет разницу средней квадратной (среднеквадратичной) трехмерного корня (среднеквадратичных) между двумя изображениями.
Протестировано API:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.hardware.camera2.CameraMetadata#SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.hardware.camera2.CaptureResult#SCALER_RAW_CROP_REGION
Пропуск: Разница средней квадратной (среднеквадратичной (среднеквадратичной) трехмерного корня между обрезанным сырым изображением и полным изображением сырого FOV меньше, чем пороговое значение, установленное в тесте.
test_zoom
Проверяет поведение камеры от ультравидного объектива до широкого объектива. Принимает захваты через диапазон увеличения и проверяет, становятся ли маркеры ARUCO больше по мере увеличения камеры. Тест также проверяет, изменяется ли положение центрального маркера предсказуемо за каждый захват. Расстояние от центра центрального маркера до центра изображений может либо меняться с постоянной скоростью по отношению к соотношению Zoom до физического переключателя камеры, либо он может монотонно меняться в направлении места одного и того же маркера после физического переключателя камеры. Приложение JetPack Camera ( JCA ) должно быть установлено на устройстве перед тестированием.
Протестировано API:
-
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
Пропуск: Относительный размер захваченного маркера ARUCO является точным по сравнению с запрошенным соотношением масштабирования, чтобы гарантировать, что камера правильно увеличивается, и маркерное расстояние до центра изображений изменяется в соответствии с критериями, указанными в описании теста.
test_zoom, чтобы найти контур маркера ARUCO, ближайший к центру.
test_low_latency_zoom
Проверяет камеру низкого уровня задержки. Принимает захваты через диапазон Zoom с android.control.settingsOverride = 1 (SETTINGS_OVERRIDE_ZOOM)
и проверяет, соответствуют ли маркеры в выходных изображениях соотношениях Zoom в метаданных захвата. Тот же сеанс захвата камеры используется для сходимости 3A и захвата.
Протестировано API:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_SETTINGS_OVERRIDES
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CaptureRequest#CONTROL_SETTINGS_OVERRIDE
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.hardware.camera2.CaptureResult#CONTROL_SETTINGS_OVERRIDE
Пропуск: Относительный размер захваченного маркера является точным по сравнению с метаданными результатами увеличения.
test_preview_video_zoom_match
Проверяет это при записи и масштабировании, предварительный просмотр видео и вывод видео и записывает один и тот же вывод. Рассчитывает размер маркера, ближайший к центру при различных коэффициентах масштабирования, и проверяет, увеличивается ли размер маркера с увеличением коэффициента масштабирования.
Протестировано API:
-
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
Пропуск: относительный размер захваченного маркера является точным против запрошенного соотношения масштабирования в видео и предварительном просмотре.
HD_1280x720_key_frame.png (до увеличения Zoom)
preview_1280x720_key_frame.png (до Zoom)
HD_1280x720_key_frame.png (после Zoom)
preview_1280x720_key_frame.png (после Zoom)
test_preview_zoom
Тесты, что соотношение масштабирования каждой рамки предварительного просмотра соответствует соответствующим метаданным захвату от ультравидного объектива к широкому объективу. Тест берет предварительные кадры над диапазоном масштабирования и находит маркер ARUCO, наиболее близкий к центру. Затем тест проверяет, если позиция центрального маркера предсказуемо изменяется над каждым захватом. Расстояние от центра центрального маркера до центра изображений может либо меняться с постоянной скоростью по отношению к соотношению Zoom до физического переключателя камеры, либо он может монотонно меняться в направлении места одного и того же маркера после физического переключателя камеры.
Протестировано API:
-
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
Пропуск: относительный размер выбранного маркера ARUCO является точным для сообщаемого соотношения Zoom соответствующего результата захвата для всех кадров предварительного просмотра. Относительное расстояние выбранного маркера от центра изображения является точным для сообщаемого соотношения зумного уровня соответствующего результата захвата всех кадров предварительного просмотра.
test_preview_zoom Изображения, показывающие выбранный маркер, ближайший к центру
test_session_characteristics_zoom
Проверяет диапазон соотношения Zoom для всех поддерживаемых конфигураций сеанса, перечисленных в CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION
. Для каждой из этих конфигураций, если CameraDeviceSetup#isSessionConfigurationSupported
включает возврат истина, тест подтверждает, что диапазон соотношений Zoom возвращается в CameraDeviceSetup#getSessionCharacteristics
может быть достигнут.
Протестировано API:
-
android.hardware.camera2.CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION
-
android.hardware.camera2.CameraDevice.CameraDeviceSetup#isSessionConfigurationSupported
-
android.hardware.camera2.CameraDevice.CameraDeviceSetup#getSessionCharacteristics
Пропуск: как с минимальным, так и максимальным соотношением масштабирования можно достичь для каждого поддерживаемого SessionConfiguration
указанного в CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION
.
Сцена7
Сцена7 - это прямоугольная рама, разделенная на четыре равных квадранта, каждый из которых заполнен различным цветом. В центре прямоугольника находится наклонная график краев для проверки резкости. Четыре маркера ARUCO выровнены с четырьмя наружными углами прямоугольника, чтобы помочь в получении точных координат основной рамы прямоугольника при различных соотношениях увеличения.
Сцена7
test_multi_camera_switch
Этот тест проверяет, что во время записи предварительного просмотра при различных отношениях увеличения переключение между линзами Ultrawide (UW) и широкими (W) линзами приводит к аналогичным значениям RGB.
Тест использует различные коэффициенты масштабирования в предопределенном диапазоне для выполнения динамической записи предварительного просмотра и определения точки, в которой изменяется физическая камера. Эта точка отмечает кроссовер от UW до объектива W.
Кадры, захваченные в точке кроссовера, анализируются на автомобильную экспозицию (AE), автоматический баланс белого (AWB) и автофокус (AF).
Проверка AE гарантирует, что изменение LUMA находится в пределах ожидаемого диапазона как для изображений UW, так и для W Lens. Проверка AWB проверяет, что отношения R/G и B/G находятся в пределах порогового значения для изображений UW и W Lens. Проверка AF оценивает значение оценки резкости на основе средней величины градиента между изображениями UW и W Lens.
При проведении этого теста, если эффект муара мешает результатам, используйте планшет с более высоким разрешением из списка камеры его утвержденный список планшетов .
Протестировано API:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.media.CamcorderProfile
-
android.media.MediaRecorder
Пропустите: чтобы пройти тест, проверки AE и AWB должны пройти. Результаты проверки AF используются только в целях ведения журнала. Ниже приведены критерии для каждой проверки:
- Проверка AE: изменение LUMA (значение y) между изображениями UW и W Lens должно составлять менее 4% для всех цветовых патчей, если устройство поддерживает как
ae_regions
, так иawb_regions
. Если поддерживается толькоae_regions
, то только серо -цветовые значения должны соответствовать критериям. - Проверка AWB: разница между значениями R/G и B/G для изображений UW и W Lens должна составлять менее 3% для патча серого цвета и должно составлять менее 10% для других цветных патчей, если устройство поддерживает как
ae_regions
так иawb_regions
. - Проверка AF: резкость изображения для захвата линзы должна быть выше резкости с захватом UW.
Серый пятно, взятое с UW Lens
Серый пятно, взятый с W Lens
Сцена8
Scene8 - это прямоугольная рама, разделенная на четыре равных областях, каждый из которых содержит портрет, снятый с различным воздействием или наложенный с различным цветовым оттенком (синий оттенок, повышенное воздействие, уменьшение воздействия, желтый оттенок). Четыре маркера ARUCO выровнены с четырьмя наружными углами прямоугольника, чтобы получить точные координаты основной рамы прямоугольника.
Сцена8
test_ae_awb_regions
Проверки, что значения RGB и LUMA различаются, когда просмотр записи в различных регионах Auto Expusi (AE) и Auto Balance Balance (AWB).
Тест записывает запись предварительного просмотра восьми секунд, выполняющая измерение AE и AWB на каждом квадранте в течение двух секунд каждая. Затем тест извлекает кадр из записи предварительного просмотра каждого региона и использует извлеченные кадры для выполнения следующих проверок AE и AWB:
- Проверка AE: проверяет, что измерение рамки в области с уменьшенным воздействием имеет повышенное значение LUMA более чем на 1%, чем измерение рамки с увеличением воздействия. Это проверяет, что изображения осветляются при измерении темной области.
- Проверка AWB: проверяет, что отношение от красного к синим (средних значений RGB изображения) в раме с областью синего измерения более чем на 2% выше, чем кадр с помощью области желтого измерения. Это проверяет, что изображения имеют сбалансированное значение RGB при измерении желтой (теплой) или синей (прохладной) области.
Протестировано API:
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_REGIONS
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_REGIONS
-
android.hardware.camera2.CameraCharacteristics#CONTROL_MAX_REGIONS_AE
-
android.hardware.camera2.CameraCharacteristics#CONTROL_MAX_REGIONS_AWB
Проход: AE и AWB проверяют оба прохода.
Область темного измерения рамки с повышенной экспозицией
Более легкая область для измерения рамки с уменьшением воздействия
Механизмы провал:
Точное обнаружение всех четырех маркеров ARUCO имеет важное значение для этого теста. Если первоначальное обнаружение не удается, система пытается пройти второй проход по обнаружению, используя черно -белую версию изображения. Следующее изображение серого представляет вторичный этап обработки.
test_color_correction_mode_cct
Тесты COLOR_CORRECTION_MODE
по различным температурам цветов и оттенки, проверка изменений в соотношении RGB по сравнению с сценой захвата, Scene8 .
Протестировано API:
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
-
android.hardware.camera2.CaptureResult#COLOR_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_COLOR_TEMPERATURE
-
android.hardware.camera2.CaptureResult#COLOR_CORRECTION_COLOR_TEMPERATURE
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_COLOR_TINT
-
android.hardware.camera2.CaptureResult#COLOR_CORRECTION_COLOR_TINT
-
android.hardware.camera2.CameraCharacteristics#COLOR_CORRECTION_COLOR_TEMPERATURE_RANGE
-
android.hardware.camera2.CameraMetadata#COLOR_CORRECTION_MODE_CCT
-
android.hardware.camera2.CameraCharacteristics#COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES
Проход: отношения RGB демонстрируют ожидаемое увеличение или уменьшение по сравнению с выбранными температурами и оттенками.
Тестовые критерии пропуска
Тест test_color_correction_mode_cct
пропускается, если выполняется какой -либо из следующих критериев:
- Устройство имеет первый уровень API (
first_api_level
) 35 или ниже. - Устройство не рекламирует
COLOR_CORRECTION_MODE_CCT
в color_correction_available_aberration_modes .
Сцена9
Scene9 состоит из тысяч случайных и цветных кругов, чтобы создать сцену с очень низкой повторяемостью для стресса алгоритмов сжатия JPEG.
Сцена9
test_jpeg_high_entropy
Тестирует, что сжатие камеры JPEG работает на сцене9 с высокой энтропией, а коэффициент качества JPEG составляет 100%. Коэффициент масштабирования увеличивается, чтобы убедиться, что сцена, отображаемая на планшете, заполняет поле зрения камеры.
Протестировано API:
Pass: файл JPEG сжимается правильно, написан и читайте обратно с диска.
test_jpeg_quality
Тестирует качество сжатия камеры JPEG. Шаг JPEG качества через android.jpeg.quality
и обеспечивает правильное изменение таблиц квантования.
Протестировано API:
Проход: Матрица квантования уменьшается с увеличением качества. (Матрица представляет фактор деления.)
Pixel 4 Задняя камера Luma/Chroma DQT Матрица Средняя по сравнению с качеством JPEG
Неудачный тестовый пример
Обратите внимание, что для очень низких качественных изображений (jpeg.quality <50) нет увеличения сжатия в матрице квантования.
Scene_video
Сцена сцены scene_video
- это видео -сцена. Он состоит из четырех разных цветных кругов, движущихся взад -вперед с разными частотами кадров на белом фоне.
Scene_video
test_preview_frame_drop
Испытания, которые поддерживается запрошенной частотой кадров предварительного просмотра с динамической сценой. Этот тест проходит на всех камерах, которые подвергаются воздействию сторонних приложений.
Протестировано API:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.hardware.camera2.CaptureResult#CONTROL_AE_TARGET_FPS_RANGE
-
android.media.CamcorderProfile
-
android.media.MediaRecorder
Пропуск: частота кадров предварительного просмотра находится на максимуме запрашиваемого диапазона частоты кадров, а среднее изменение между последовательными кадрами меньше, чем относительная допуск, установленная в тесте.
Scene_extensions
Тесты scene_extensions
предназначены для расширений камеры и должны использовать камеру ITS в коробке , поскольку они требуют точного управления средой тестирования. Кроме того, вся утечка света должна контролироваться. Это может потребовать покрытия испытательной установки, DUT и планшета капельной тканью, а также устранение утечки света с переднего экрана DUT.
Scene_hdr
Сцена scene_hdr
состоит из портрета слева и низкоконтрастного QR-кода справа.
Scene_hdr
test_hdr_extension
Проверка расширения HDR . Принимает захваты с включенным расширением и без него, и проверяет, делает ли расширение QR -код более обнаруживаемым.
Протестировано API:
-
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
-
android.hardware.camera2.CameraExtensionSession#capture
Пропуск: расширение HDR уменьшает количество изменений контрастности, необходимых для обнаружения QR -кода или уменьшения градиента по QR -коду.
Scene_low_light
Сцена scene_low_light
состоит из сетки квадратов с различными оттенками серого на черном фоне, а сетка квадратов связана красным контуром. Квадраты расположены в ориентации кривой Гильберта.
Scene_low_light
test_night_extension
Проверка ночи расширения . Принимает захваты с включенным расширением и выполняет следующее:
- Обнаруживает наличие 20 квадратов
- Вычисляет люму, ограниченную каждым квадратом
- Вычисляет среднее значение LUMA первых 6 квадратов в соответствии с ориентацией сетки Hilbert Curve
- Вычисляет разницу в значении LUMA последовательных квадратов (например, Square2 - Square1) до квадратов 5 и 6 (Square6 - Square5), и находит среднее из пяти вычисленных различий.
Для устройств, работающих на Android 16 или выше, запрос на захват включает измеренную область, соответствующую прямоугольнику, ограничивающую сетку квадратов. Это дополнение меняет критерии порогового прохода.
Протестировано API:
-
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
-
android.hardware.camera2.CameraExtensionSession#capture
Проходить:
- Для устройств, работающих на Android 16 или выше, среднее значение LUMA первых 6 квадратов должно быть не менее 80, а средняя разница в значении LUMA последовательных квадратов до квадратов 5 и 6 должна составлять не менее 18,75.
- Для устройств, работающих на 15 и ниже, среднее значение LUMA первых 6 квадратов должно составлять не менее 85, а средняя разница в значении LUMA последовательных квадратов до квадратов 5 и 6 должна составлять не менее 17.
Следующий график яркости показывает, как выглядит результат прохождения тестирования.
test_low_light_boost_extension
Тестирует режим повышения Low Light AE . Если Camera2 поддерживает режим Low Light Boost AE, то этот тест выполняется для Camera2. Если поддерживается расширение камеры ночного режима, а расширение поддерживает режим Low Light Boost AE, то этот тест также выполняется для расширения камеры ночного режима. Этот тест устанавливает режим AE на повышение слабых освещений, берет раму из предварительного просмотра и выполняет следующее:
- Обнаруживает наличие 20 коробок
- Вычисляет Luma, ограниченную каждой коробкой
- Вычисляет среднее значение LUMA первых 6 квадратов в соответствии с ориентацией сетки Hilbert Curve
- Вычисляет разницу в значении LUMA последовательных квадратов (например, Square2 - Square1) до квадратов 5 и 6 (Square6 - Square5), и находит среднее из пяти вычисленных различий.
Для устройств, работающих на Android 16 или выше, запрос на захват включает измеренную область, соответствующую прямоугольнику, ограничивающую сетку квадратов. Это дополнение меняет критерии порогового прохода.
Протестировано API:
-
android.hardware.camera2.CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES
-
android.hardware.camera2.CameraMetadata#CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY
-
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
Проходить:
Для устройств, работающих на Android 16 или выше, среднее значение LUMA первых 6 квадратов должно составлять не менее 54, а средняя разница в значении LUMA последовательных квадратов до квадратов 5 и 6 должна составлять не менее 17.
Для устройств, работающих на 15 и ниже, среднее значение LUMA первых 6 квадратов должно составлять не менее 70, а средняя разница в значении LUMA последовательных квадратов до квадратов 5 и 6 должна составлять не менее 18.
Scene_tele
Ключевым требованием для тестов scene_tele
является то, что расстояние диаграммы должно быть как минимум минимальным расстоянием фокусировки телеобъектива. Поскольку это минимальное расстояние фокуса может отличаться между устройствами, вы должны настроить свою настройку в соответствии с конкретной телеобъективной камерой.
Для получения дополнительной информации о настройке тестового оборудования см. Настройку расширения Tele .
scene6_tele
Сцена scene6_tele
состоит из сетки маркеров Aruco на белом фоне.
Если scene6_tele
захватывают, что смотрится, переэкспонированное в модульной буровой установке , снимите переднюю пластину модульной установки .
Отключите испытательную установку WFOV от расширения и снимите крепление телефона.
Снимите переднюю пластину.
test_zoom_tele
Проверяет поведение камеры от широкого объектива до телеобъектива. Тест идентичен test_zoom , но проверяет поведение камеры от широкого объектива до телеобъектива.
Протестировано API:
-
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
Пропуск: Относительный размер захваченного маркера ARUCO является точным по сравнению с запрошенным соотношением масштабирования, чтобы обеспечить правильное увеличение камеры, а маркер расстояние до центра изображений изменяется в соответствии с критериями, перечисленными в test_zoom .
test_preview_zoom_tele
Проверяет поведение камеры для предварительного просмотра из широкого объектива до телеобъектива. Тест идентичен test_preview_zoom , но проверяет поведение масштабирования камеры для предварительных кадров из широкого объектива до телеобъектива.
Протестировано API:
-
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
Пропуск: Относительный размер захваченного маркера ARUCO является точным по сравнению с запрошенным соотношением масштабирования, чтобы гарантировать, что камера правильно увеличивается, и маркерное расстояние до центра изображений изменяется в соответствии с критериями, указанными в Test_preview_zoom .
сцена7_теле
Scene7_tele идентична сцене7 , но настроена на тестирование телеобъектива. Это прямоугольная рама, разделенная на четыре равных квадранта, каждый из которых заполнен различным цветом. В центре прямоугольника находится наклонная график краев для проверки резкости. Четыре маркера ARUCO выровнены с четырьмя наружными углами прямоугольника, чтобы помочь в получении точных координат основной рамы прямоугольника при различных соотношениях увеличения.
test_multi_camera_switch_tele
Этот тест подтверждает, что во время записи предварительного просмотра при различных отношениях увеличения переключение между широкими (W) и телеобъективными (теле) линзами приводит к аналогичным значениям RGB.
Тест использует различные коэффициенты масштабирования в предопределенном диапазоне для выполнения динамической записи предварительного просмотра и определения точки, в которой изменяется физическая камера. Эта точка отмечает кроссовер от W до телефона.
Кадры, захваченные в точке кроссовера, анализируются на автомобильную экспозицию (AE), автоматический баланс белого (AWB) и автофокус (AF).
Проверка AE гарантирует, что изменение LUMA находится в пределах ожидаемого диапазона как для изображений W, так и для Tele Lens. Проверка AWB проверяет, что отношения R/G и B/G находятся в пределах порогового значения как для изображений W, так и для Tele Lins. Проверка AF оценивает значение оценки резкости на основе средней величины градиента между изображениями W и телезмектором.
Протестировано API:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.media.CamcorderProfile
-
android.media.MediaRecorder
Пропустите: для прохождения теста, проверки AE, AWB и AF должны пройти. Ниже приведены критерии для каждой проверки:
- Проверка AE: изменение LUMA между изображениями W и Tele Lins должно составлять менее 4%.
- Проверка AWB: в цветовом пространстве лаборатории дельта C между R/G и B/G для широкого и телефона не может превышать 10.
- Проверка AF: резкость изображения телефона должна быть выше, чем у линзы W.
Scene_flash
Тесты scene_flash
требуют темной сцены в ящике слияния датчика.
test_auto_flash
Тесты, которые автоматическая флеша запускаются в темной сцене для камер обращаются к задней части и фронта. Для фронтальных камер Auto-Flash использует экран, чтобы осветить сцену, а не физическую вспышку. Тест проверяет, что автоматическая флеша упускается путем проверки того, что центр изображения плитки ярче с включенным автоматическим флашом. Чтобы вызвать автоматическую плату, свет в испытательной установке должен быть выключен. Огни можно отключить автоматически с помощью контроллера Arduino. Сцена должна быть совершенно темной, чтобы тест работал правильно. Приложение JetPack Camera ( JCA ) должно быть установлено на устройстве перед тестированием. Автофлляция для камер, обращенных к задней части, полагается на то, что состояние AE будет вызвано, но автоматическая флэша для фронтальных камер не полагается на AE и всегда запускается.
Протестировано API:
-
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
-
android.hardware.camera2.CaptureRequest#FLASH_MODE
Пропуск: Центр изображения плитки с включенным автоматическим флешом, более яркий, чем оригинальное изображение сцены для всех камер.
test_flash_strength
Тесты, которые управляют прочностью вспышки в SINGLE
режиме, реализованы правильно.
Проверяет, что если устройство поддерживает управление силой вспышки во время использования камеры в SINGLE
режиме, прочность вспышки изменяется с различными запрошенными уровнями прочности. Проверяет, что управление силой вспышки работает с различными AE_MODES
. Например, если режим автоматического эксплуатации ON
или OFF
, уровень прочности вспышки влияет на яркость, и если режим ON_AUTO_FLASH
, уровень прочности вспышки не влияет на яркость. Чтобы провести тест, свет в испытательной установке должен быть выключен. Огни можно отключить автоматически с помощью контроллера Arduino. Сцена должна быть совершенно темной, чтобы тест работал правильно.
Протестировано API:
-
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_DEFAULT_LEVEL
-
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_MAXIMUM_LEVEL
-
android.hardware.camera2.CameraCharacteristics#FLASH_SINGLE_STRENGTH_DEFAULT_LEVEL
-
android.hardware.camera2.CameraCharacteristics#FLASH_SINGLE_STRENGTH_MAX_LEVEL
Проходить:
Когда режим автоматического эксплуатации ON
или OFF
, яркость патчей изображения увеличивается, когда уровень прочности вспышки увеличивается от NO Flash до FLASH_SINGLE_STRENGTH_MAX_LEVEL
. Когда режим автоматического экспозиции ON_AUTO_FLASH
, разница в яркости патчей изображения находится в пределах допуска, поскольку уровень прочности вспышки увеличивается от NO Flash до FLASH_SINGLE_STRENGTH_MAX_LEVEL
.
test_led_snapshot
Проверки, которые светодиодные снимки не насыщают и не протягивают изображение.
Because the capture has a distinctive hotspot due to flash, the test computes the flash image mean of the entire capture and verifies whether the value is within the (68, 102) range. To check if the image is reasonably white-balanced, the test calculates the R/G and B/G ratios and verifies whether the ratios are within 0.95 and 1.05.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#FLASH_MODE
Pass: The R/G and B/G ratios are within 0.95 and 1.05. The flash image mean is within the (68, 102) range.
test_night_mode_indicator
Tests the functionality of the night mode indicator, a feature that indicates whether the camera is operating in low light conditions and will benefit from a Night Mode Camera Extension still capture. This feature is only available on devices that support Night Mode Camera Extensions.
This test checks that the night mode indicator correctly reflects the lighting conditions during camera preview. The test performs the following steps:
- Initialization: The test initializes an
ItsSession
and retrieves camera properties. It also establishes a connection with the lighting controller. - Skip Conditions: The test is skipped if the device doesn't support the required API level or the night mode indicator feature.
- Camera2 Session:
- The test starts a preview capture session using a
Camera2
session. - The light is turned on and a preview frame is captured.
- The test verifies that the night mode indicator is in the
OFF
state. - The light is turned off and a preview frame is captured.
- The test verifies that the night mode indicator is in the
ON
state.
- The test starts a preview capture session using a
- Camera extension session:
- The test repeats the same procedure as for the
Camera2
session, but using aCameraExtension
session with theEXTENSION_NIGHT
extension.
- The test repeats the same procedure as for the
- Cleanup: The test closes
ItsSession
and releases the lighting controller.
APIs tested:
Проходить:
- When the light is on, the night mode indicator should be in the
OFF
state. - When the light is off, the night mode indicator should be in the
ON
state. - Applies for both
Camera2
andCameraExtension
sessions.
test_preview_min_frame_rate
Tests that the preview frame rate decreases correctly in a dark scene. For this test to work correctly, the lights in the test rig must be turned off by the controller or manually by the test operator.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.hardware.camera2.CaptureResult#CONTROL_AE_TARGET_FPS_RANGE
-
android.media.CamcorderProfile
-
android.media.MediaRecorder
Pass: The preview frame rate is at the minimum of the requested frame rate range, and the variation between frames is less than the absolute tolerance set in the test.
test_torch_strength
Tests that flash strength control in TORCH
mode is implemented correctly.
Verifies that if the device supports flash strength control during camera use in TORCH
mode, the torch strength changes with different requested strength levels. Verifies that flash strength control works with different AE_MODES
. For example, if the auto-exposure mode is ON
or OFF
, the flash strength level has an effect on brightness, and if the mode is ON_AUTO_FLASH
, the flash strength level has no effect on brightness. Verifies that the torch strength stays the same throughout the duration of a burst, simulating a video capture session. To conduct the test, lights in the test rig must be turned off. The lights can be turned off automatically with the Arduino controller. The scene must be completely dark for the test to work correctly.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_DEFAULT_LEVEL
-
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_MAXIMUM_LEVEL
-
android.hardware.camera2.CameraCharacteristics#FLASH_TORCH_STRENGTH_DEFAULT_LEVEL
-
android.hardware.camera2.CameraCharacteristics#FLASH_TORCH_STRENGTH_MAX_LEVEL
Проходить:
When the auto-exposure mode is ON
or OFF
, the brightness of the image burst patches increases as the flash strength level increases from no flash to FLASH_TORCH_STRENGTH_MAX_LEVEL
. When the auto-exposure mode is ON_AUTO_FLASH
, the difference in brightness of the image burst patches are within tolerance as the flash strength level increases from no flash to FLASH_TORCH_STRENGTH_MAX_LEVEL
.
sensor_fusion
Sensor fusion tests require specific phone movement in front of a checkerboard pattern and ArUco markers. For optimum results, ensure the test chart is mounted flat. Charts that aren't flat affect the rotation calculations for many of the tests. The chart must fill the back of the sensor fusion box by printing at 17"x17" (43x43 cm). The sensor_fusion
tests can be automated with the Sensor Fusion Box .
Sensor fusion chart
Sensor fusion chart that fills the back of the sensor fusion box
test_lens_intrinsic_calibration
Tests that the optical center of the lens intrinsic changes when the lens moves due to optical image stabilization (OIS). If lens intrinsic samples are supported, tests that the optical center of the lens intrinsic samples changes when the lens moves due to optical image stabilization (OIS).
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#LENS_INTRINSIC_CALIBRATION
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Pass: The optical center of the lens intrinsic changes by one pixel or more. If lens intrinsic samples are supported, the optical centers of the lens intrinsic samples change by one pixel or more.
Example of test_lens_intrinsic_calibration
plot showing changes of principal points in pixels for each frame
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_preview_distortion
Tests that distortion is corrected throughout each preview frame taken at various zoom levels. For each preview frame, the test calculates ideal points based on camera intrinsics and extrinsics. In the example image, ideal points are shown in green; actual points are shown in red. The distortion error is calculated based on the root mean square (RMS) pixel distance between the actual points and ideal points. The green and red highlights on the image are used to visually detect the area of distortion error.
Image of checkerboard with ideal points as green and actual points as red
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
-
android.media.CamcorderProfile
-
android.media.MediaRecorder
Pass: The normalized distortion error of each preview frame is less than the threshold set in the test.
test_preview_stabilization
Tests that stabilized preview video rotates less than gyroscope.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Pass: Max angle rotation over frames is less than 70% of gyroscope rotation.
The following are sample videos with and without stabilization.
Sample video with stabilization
Sample video without stabilization
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 timestamp source 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.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE
-
android.hardware.camera2.CameraMetadata#SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME
-
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] .
Fail mechanisms:
- Offset error: The camera-gyroscope offset isn't correctly calibrated to within +/-1 ms.
- Frame drops: The pipeline isn't fast enough to capture 200 frames consecutively.
- Socket errors:
adb
can't reliably connect to the DUT long enough to execute the test. - The chart isn't mounted flat. The plot
test_sensor_fusion_plot_rotations
has frames where the gyroscope and camera rotation vary considerably as the camera rotates through the parts of the chart that aren't flat. - The camera isn't mounted flat. The plot
test_sensor_fusion_gyro_events
shows movement in the X and Y planes. This failure is more common in front-facing cameras as the rear camera often has a raised bump to the rest of the phone body, creating a tilt when mounting the rear of the phone to the mounting plate.
test_video_stabilization
Tests that stabilized video rotates less than gyroscope.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Pass: Max angle rotation over frames is less than 60% of gyroscope rotation.
The following are sample videos with and without stabilization.
Sample video with stabilization
Sample video without stabilization
test_video_stabilization_jca
Tests that stabilized video captured using the Jetpack Camera App (JCA) rotates less than the gyroscope. The JCA must be installed on the device before testing.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.CamcorderProfile
-
android.media.MediaRecorder
Pass: The maximum angle rotation over frames extracted from video captured using the JCA is less than 70% of gyroscope rotation.
feature_combination
The feature_combination
tests verify that features work correctly when multiple camera features are enabled at the same time. These tests use the same checkerboard image that is used in the sensor fusion scene .
test_feature_combination
Tests all combinations of different stream combinations, video stabilization mode, target FPS range, 10-bit HDR video, and Ultra HDR that are supported by the camera device.
For 16 and higher, the test runs all combinations of supported features, and logs the results into a proto file. Failure assertions are called only for combinations of features for which isSessionConfigurationSupported
returns True
.
APIs tested:
-
android.hardware.camera2.CameraDevice.CameraDeviceSetup#isSessionConfigurationSupported
-
android.hardware.camera2.CameraDevice.CameraDeviceSetup#createCaptureRequest
Pass: For each supported feature combination:
- The preview stream is stabilized if preview stabilization is on.
- The preview frame rate falls within the configured
AE_TARGET_FPS_RANGE
. - The recorded preview stream's color space matches what's set.
- The Ultra HDR capture has a valid gain map.
scene_ip
(Available from Android 16) Scene scene_ip enables image parity checks between the default camera app and the Jetpack camera app (JCA) to identify major differences between captured images. The JCA replicates social media app captures and provides a baseline image that that social media apps then process and refine.
Hardware setup requirements
The following hardware setup is required for scene_ip tests:
- Tests are executed in the Gen2 camera ITS-in-a-box .
- The lighting and servo controllers that are part of the Gen2 rig are used to control the test environment
- A test feature chart is placed inside the Gen2 rig.
Gen2chart_sample.png
Test skip criteria
The scene_ip tests are skipped if any of the following criteria are met:
- The device has a first API level (
first_api_level
) of 35 or lower. - The device isn't a phone device with front and rear primary camera devices (for example, a tablet or TV).
test_default_jca_ip
Takes captures of the test feature chart under controlled lighting conditions using the default camera app and the JCA and performs the following checks:
FoV: Checks that the default camera app and JCA captures have the same FoV. This check uses the center QR Code feature extracted from the captures chart image.
Brightness: Checks that the brightness difference measured between the default camera app and JCA doesn't exceed 10. This check uses the dynamic range patch for brightness measurement.
White balance: Checks that the white balance difference between the default camera app and JCA doesn't exceed 4. This check uses the dynamic range patch for brightness measurement.
Basic section pass: Test passes the FoV, brightness, and white balance checks. In Android 16, this test isn't mandated ( NOT_YET_MANDATED
).