На этой странице представлен полный список тестов в рамках набора тестов изображения камеры (ITS), который является частью набора тестов совместимости Android (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_flash : автоматическая вспышка, минимальная частота кадров.
- Scene_video : Пропадает кадр.
- Sensor_fusion : смещение времени камеры/гироскопа
- Feature_combination : Комбинации функций.
См. отдельные разделы для описания каждой сцены.
сцена0
Тесты сцены 0 не требуют никакой конкретной информации о сцене. Однако для проведения испытаний на гироскоп и вибрацию телефон должен быть неподвижен.
test_jitter
Измеряет дрожание временных меток камеры.
Протестированные API:
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
Пройдено: разница между кадрами составляет не менее 30 мс.
test_jitter_plot.png (Обратите внимание на небольшой диапазон по оси Y. На этом графике джиттер на самом деле небольшой.)
test_metadata
Проверяет достоверность записей метаданных. Просматривает результаты захвата и характеристики объектов камеры. В этом тесте используются значения экспозиции и усиления auto_capture_request
, поскольку содержимое изображения не важно.
Протестированные API:
-
android.hardware.camera2.CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL
-
android.hardware.camera2.CameraCharacteristics#SCALER_CROPPING_TYPE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_BLACK_LEVEL_PATTERN
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE
-
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
-
android.hardware.camera2.CaptureResult#SENSOR_ROLLING_SHUTTER_SKEW
Пройдено: аппаратный уровень, rollingShutterSkew
, теги frameDuration
, timestampSource
, croppingType
, blackLevelPattern
, pixel_pitch
, FoV, гиперфокальное расстояние присутствуют и имеют допустимые значения.
test_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
Пройдено: значения метаданных запроса и захвата совпадают для всех снимков.
test_sensor_events
Тестирует, что устройство запрашивает и распечатывает события датчиков для устройств, рекламирующих поддержку объединения датчиков. Ожидаемые датчики — акселерометр, гироскоп и магнитометр. Этот тест работает только в том случае, если экран включен, то есть устройство не находится в режиме ожидания.
Протестированные API:
Pass: Получены события для каждого датчика.
test_solid_color_test_pattern
Проверяет правильность создания сплошных цветных тестовых шаблонов для отключения звука камеры. Если поддерживается отключение звука камеры, должны поддерживаться сплошные цветные тестовые шаблоны. Если отключение звука камеры не поддерживается, тестовые шаблоны сплошного цвета проверяются только в том случае, если такая возможность заявлена.
Если поддерживаются изображения RAW, также проверяется назначение цветов. Тестируемые цвета: черный, белый, красный, синий и зеленый. Для камер, которые не поддерживают изображения RAW, тестируется только черный цвет.
Протестированные API:
-
android.hardware.camera2.CameraCharacteristic#SENSOR_AVAILABLE_TEST_PATTERN_MODES
-
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_DATA
-
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
Пройдено: поддерживаются сплошные тестовые шаблоны правильного цвета и небольшая дисперсия изображения.
test_test_pattern
Проверяет параметр android.sensor.testPatternMode
для захвата кадров для каждого допустимого тестового шаблона и проверяет, правильно ли генерируются кадры для сплошных цветов и цветных полос. Этот тест включает в себя следующие шаги:
- Захватывает изображения для всех поддерживаемых тестовых шаблонов.
- Выполняет простую проверку правильности тестового шаблона сплошного цвета и цветных полос.
Протестированные API:
-
android.hardware.camera2.CameraCharacteristic#SENSOR_AVAILABLE_TEST_PATTERN_MODES
-
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
Пройдено: поддерживаемые тестовые шаблоны генерируются правильно.
test_test_patterns_2.jpg
test_tonemap_curve
Тестирует преобразование тестового шаблона из RAW в YUV с линейной картой тонов. Для этого теста требуется android.sensor.testPatternMode = 2
(COLOR_BARS) для создания идеального шаблона изображения для преобразования тональной карты. Гарантирует, что конвейер имеет правильные выходные цвета с линейной картой тонов и идеальным входным изображением (зависит от test_test_patterns
).
Протестированные API:
-
android.hardware.camera2.CaptureRequest#DISTORTION_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#SENSOR_TEST_PATTERN_MODE
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Пройдено: YUV и RAW похожи друг на друга.
test_tonemap_curve_raw_2.jpg
test_tonemap_curve_yuv_2.jpg
test_unified_timestamp
Проверяет, находятся ли события изображения и датчика движения в одном временном интервале.
Протестированные API:
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.Sensor
-
android.hardware.SensorEvent
-
android.hardware.Sensor#TYPE_ACCELEROMETER
-
android.hardware.Sensor#TYPE_GYROSCOPE
Пройдено: временные метки движения находятся между двумя временными метками изображения.
test_vibration_restriction
Проверяет, работает ли вибрация устройства должным образом.
Протестированные API:
-
android.hardware.Sensor
-
android.hardware.SensorEvent
-
android.hardware.Sensor#TYPE_ACCELEROMETER
-
android.os.Vibrator
-
android.hardware.camera2.CameraDevice#setCameraAudioRestriction
Пройдено: устройство не вибрирует при отключении звука с помощью API ограничения звука камеры.
сцена 1
сцена1 представляет собой серую диаграмму. Серая диаграмма должна охватывать центральные 30 % поля зрения камеры. Ожидается, что серая диаграмма будет в некоторой степени бросать вызов 3A (автоэкспозиция, автоматический баланс белого, автофокусировка), поскольку в центральной области нет никаких особенностей. Однако запрос на захват определяет всю сцену, которая включает в себя достаточно функций для сходимости 3A.
Камеры RFoV можно тестировать на испытательном стенде WFoV или RFoV. Если камера RFoV тестируется на испытательном стенде WFoV, диаграмма масштабируется на ⅔, чтобы обеспечить некоторые границы серой диаграммы в поле зрения и помочь сходимости 3A. Более подробное описание стендов для тестирования камер см. в разделе 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 сходится.
test_auto_vs_manual
Тесты, в которых были сделаны автоматические и ручные снимки, выглядят одинаково.
Протестированные API:
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureResult#TONEMAP_CURVE
-
android.hardware.camera2.CaptureResult#TONEMAP_MODE
Успешно: усиление и преобразование баланса белого вручную, сообщаемые в каждом результате съемки, совпадают с estimate
автоматического баланса белого по алгоритму 3A камеры.
test_auto_vs_manual_auto.jpg
test_auto_vs_manual_wb.jpg
test_auto_vs_manual_manual_wb_tm.jpg
test_black_white
Проверяет, что устройство создает полностью черно-белые изображения. Делается два снимка: первый с чрезвычайно низким усилением и короткой выдержкой, в результате которого получается черная фотография, а второй с чрезвычайно высоким усилением и длинной выдержкой, в результате чего получается белая фотография.
Протестированные API:
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Pass: Создает черно-белые изображения. Насыщенные каналы белых изображений имеют значения 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_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
Пройдено: метаданные действительны для всех захватов, а ручные настройки не попадают во второй автоматический захват. Выводит на график коррекцию затенения объектива для снимков.
test_capture_result_plot_lsc_auto_ch0.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
test_crop_regions
Тесты на то, что регионы посева работают. Делает полное изображение и создает фрагменты из 5 различных областей (углы и центр). Делает изображения с кадрированием для 5 областей. Сравнивает значения патча и изображения обрезки.
Протестированные API:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
Пройдено: изображение обрезанной области соответствует фрагменту, соответствующему обрезанному изображению.
test_dng_noise_model
Проверяет правильность параметров необработанной модели DNG. График отображает измеренную дисперсию центрального участка серой карты в необработанных снимках, снятых в диапазоне чувствительности, и сравнивает эти значения с дисперсией, ожидаемой при каждой чувствительности моделью шума DNG в камере HAL (на основе параметров O, S, возвращаемых в объектах результата захвата). Для получения более подробной информации о модели шума DNG загрузите следующий документ о модели шума DNG .
Протестированные API:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
-
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
-
android.hardware.camera2.CaptureResult#SENSOR_NOISE_PROFILE
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Пройдено: параметры необработанной модели DNG верны. Ожидаемые значения RGB соответствуют фактически измеренным значениям RGB.
test_dng_noise_model_plog.png
test_ev_compensation_advanced
Проверяет, применяется ли компенсация величины экспозиции (EV). Тест увеличивает экспозицию в восемь этапов и сравнивает измеренную яркость с ожидаемой. Ожидаемые значения рассчитываются на основе яркости изображения без применения компенсации EV, и ожидаемое значение будет насыщаться, если рассчитанные значения превышают диапазон фактических значений изображения. Тест не пройден, если ожидаемые значения и измеренные значения не совпадают или изображения переэкспонированы в течение пяти шагов.
Протестированные API:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
-
android.hardware.camera2.CaptureResult#TONEMAP_CURVE
-
android.hardware.camera2.CaptureResult#TONEMAP_MODE
Пройдено: изображения показывают увеличение экспозиции без переэкспонирования в течение пяти шагов.
test_ev_compensation_advanced_plot_means.png
test_ev_compensation_basic
Проверяет, что компенсация EV применяется с использованием диапазона, созданного с помощью CONTROL_AE_COMPENSATION_STEP
. При каждом значении компенсации захватывается восемь кадров.
Протестированные API:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_COMPENSATION_STEP
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
-
android.hardware.camera2.CaptureResult#CONTROL_AE_EXPOSURE_COMPENSATION
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
Пройдено: фиксируется увеличение яркости с увеличенной настройкой компенсации EV, и восемь кадров, снятых для каждой настройки компенсации EV, имеют стабильные значения яркости.
test_ev_compensation_basic.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_jpeg
Тесты, конвертирующие изображения YUV и изображения устройств в формате JPEG, выглядят одинаково. Тест берет центральные 10% изображения, вычисляет значения RGB и проверяет их совпадение.
Протестированные API:
Пройдено: средняя разница RGB между каждым изображением составляет менее 3%.
![]() | ![]() | |
test_jpeg_fmt=jpg.jpg | test_jpeg=fmt=yuv.jpg |
test_latching
Проверяет, что настройки (экспозиция и усиление) фиксируются на правом кадре для камер FULL
и LEVEL_3
. Делает серию снимков, используя последовательные запросы, изменяя параметры запроса захвата между кадрами. Проверяет, имеют ли изображения ожидаемые свойства.
Протестированные API:
Пройдено: изображения [2, 3, 6, 8, 10, 12, 13] имеют увеличенное значение ISO или экспозицию и отображаются с более высокими средними значениями RGB в test_latching_plot_means.png
.
![]() | ![]() | ![]() | |
test_latching_i=00.jpg | test_latching_i=01.jpg | test_latching_i=02.jpg | |
![]() | ![]() | ![]() | |
test_latching_i=03.jpg | test_latching_i=04.jpg | test_latching_i=05.jpg | |
![]() | ![]() | ![]() | |
test_latching_i=06.jpg | test_latching_i=07.jpg | test_latching_i=08.jpg | |
![]() | ![]() | ![]() | |
test_latching_i=09.jpg | test_latching_i=10.jpg | test_latching_i=11.jpg | |
![]() | |||
test_latching_i=12.jpg |
test_latching_plot_means.png
test_linearity
Тестирует, что обработку устройства можно инвертировать в линейные пиксели. Захватывает последовательность снимков, когда устройство направлено на однородную цель.
Протестированные API:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CaptureRequest#BLACK_LEVEL_LOCK
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Успешно: значения R, G, B должны увеличиваться линейно с увеличением чувствительности.
test_linearity_plot_means.png
test_locked_burst
Тестирует блокировку 3A и пакет YUV (с использованием автоматической настройки). Этот тест предназначен для прохождения даже на ограниченных устройствах, у которых нет MANUAL_SENSOR
или PER_FRAME_CONTROLS
. Тест проверяет согласованность изображения YUV, в то время как проверка частоты кадров выполняется в CTS.
Протестированные API:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
Пройдено: снимки выглядят стабильно.
test_locked_burst_frame0.jpg
test_locked_burst_frame1.jpg
test_locked_burst_frame2.jpg
test_param_color_correction
Проверяет, что параметры android.colorCorrection.*
применяются, если они установлены. Делает снимки с разными значениями преобразования и усиления и проверяет, выглядят ли они соответственно по-разному. Преобразование и коэффициенты усиления выбираются таким образом, чтобы выходной сигнал стал все более красным или синим. Использует линейную карту тонов. Тональное отображение — это метод, используемый при обработке изображений для сопоставления одного набора цветов с другим, чтобы аппроксимировать внешний вид изображений с расширенным динамическим диапазоном в среде с более ограниченным динамическим диапазоном.
Протестированные API:
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
Пройдено: значения 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_noise_reduction
Проверяет правильность применения параметра android.noiseReduction.mode
, если он установлен. Съемка изображений при слабом освещении камеры. Использует высокое аналоговое усиление, чтобы обеспечить зашумленность захваченного изображения. Захватывает три изображения: отключенное шумоподавление, «быстрое» и «высокое качество». Также захватывает изображение с низким усилением и отключенным шумоподавлением и использует его дисперсию в качестве базовой линии. Чем выше SNR (отношение сигнал/шум), тем лучше качество изображения.
Протестированные API:
Pass: SNR варьируется в зависимости от режима шумоподавления и ведет себя так же, как показано на графике ниже.
test_param_noise_reduction_plot_SNRs.png
0: ВЫКЛ, 1: БЫСТРО, 2: HQ, 3: МИН, 4: ZSL
test_param_noise_reduction_high_gain_nr=0.jpg
test_param_noise_reduction_high_gain_nr=1.jpg
test_param_noise_reduction_high_gain_nr=2.jpg
test_param_noise_reduction_high_gain_nr=3.jpg
test_param_noise_reduction_low_gain.jpg
test_param_shading_mode
Проверяет применение параметра android.shading.mode
.
Протестированные API:
-
android.hardware.camera2.CaptureRequest#SHADING_MODE
-
android.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
-
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
Пройдено: режимы затенения переключаются, а карты затенения объектива изменяются, как ожидалось.
test_param_shading_mode_ls_maps_mode_0_loop_0.png
test_param_shading_mode_ls_maps_mode_1_loop_0.png
test_param_shading_mode_ls_maps_mode_2_loop_0.png
test_param_tonemap_mode
Проверяет применение параметра android.tonemap.mode. Применяет разные кривые карты тонов к каждому каналу R, G, B и проверяет, что выходные изображения изменяются должным образом. Этот тест состоит из двух тестов: test1 и test2.
Протестированные API:
-
android.hardware.camera2.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_burst_sensitivity
Захватывает набор необработанных изображений с возрастающим усилением и измеряет шум. Захватывает только в сыром виде, пакетно.
Протестированные API:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
-
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
Pass: каждый выстрел шумнее предыдущего, так как усиление увеличивается.
Использует дисперсию центральной ячейки сетки статистики.
test_raw_burst_sensitivity_variance.png
test_raw_exposure
Захватывает набор необработанных изображений с увеличением времени экспозиции и измеряет значения пикселей.
Протестированные API:
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
Пройдено: увеличение ISO (усиления) делает пиксели более чувствительными к свету, поэтому график смещается влево.
test_raw_exposure_s=55.png
(10⁰ — 1 мс, 10¹ — 10 мс, 10⁻¹ — 0,1 мс)
test_raw_exposure_s=132.png
test_raw_exposure_s=209.png
test_raw_exposure_s=286.png
test_raw_exposure_s=363.png
test_raw_exposure_s=440.png
test_raw_sensitivity
Захватывает набор необработанных изображений с повышенной чувствительностью и измеряет шум (дисперсию) в центре 10% изображения. Тестирует, что каждый выстрел шумнее предыдущего.
Протестированные API:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
-
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
Пас: дисперсия увеличивается с каждым выстрелом.
test_raw_sensitivity_variance.png
test_reprocess_noise_reduction
Проверяет, что android.noiseReduction.mode
применяется для повторной обработки запросов. Захватывает обработанные изображения при слабом освещении камеры. Использует высокое аналоговое усиление, чтобы обеспечить зашумленность захватываемого изображения. Захватывает три обработанных изображения: отключенное шумоподавление, «быстрое» и «высокое качество». Захватывает обработанное изображение с низким усилением и отключенным шумоподавлением и использует его дисперсию в качестве базовой линии.
Протестированные API:
Пройдено: FAST >= OFF, HQ >= FAST, HQ >> OFF
Типичный график зависимости 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
test_yuv_plus_dng
Проверяет работоспособность заявленных размеров и форматов для захвата изображений.
Протестированные API:
Пройдено: тест завершается и возвращает запрошенные изображения.
test_yuv_plus_dng.jpg
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 и необработанные изображения схожи и имеют разницу менее 3,5% RMS (среднеквадратичное значение сигнала).
![]() | ![]() | |
test_yuv_plus_raw_shading=1_raw.jpg | test_yuv_plus_raw_shading=1_yuv.jpg |
сцена2_а
Scene2_a имеет три лица на сером фоне и нейтральную одежду. Лица выбираются с учетом широкого спектра оттенков кожи. Диаграмма должна иметь правильную ориентацию, чтобы распознавание лиц работало оптимально.
сцена2_а
test_autoframing
Тестирует поведение автокадрирования устройства камеры. Выполняет большое масштабирование, чтобы ни одно из лиц в сцене не было видно, включает режим автокадрирования, устанавливая для 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
Пройдено: обнаружены все три лица.
test_display_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.
test_effects
Захватывает кадр для поддерживаемых эффектов камеры и проверяет, правильно ли они сгенерированы. Тест проверяет только эффекты OFF
и MONO
, но сохраняет изображения для всех поддерживаемых эффектов.
Протестированные API:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_EFFECTS
-
android.hardware.camera2.CaptureRequest#CONTROL_EFFECT_MODE
Пройдено: захватывается изображение сцены с OFF
эффектами и монохромное изображение с эффектами, установленными на MONO
.
test_effects_MONO.jpg
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_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 % от изображений YUV со сценарием использования STILL_CAPTURE
.
сцена2_с
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_launch_perf_class
Тестирует задержку запуска камеры для класса производительности S, как указано в разделе 2.2.7.2 Камера в CDD.
Пройдено: ДОЛЖНА иметь задержку запуска камеры 2 (открытая камера до первого кадра предварительного просмотра) < 600 мс, измеренная с помощью теста производительности камеры CTS в условиях освещения ITS (3000K) для обеих основных камер.
test_default_camera_hdr
Проверяет, что захват камеры по умолчанию имеет режим Ultra HDR для класса производительности 15, как указано в разделе 2.2.7.2 Камера CDD.
Пройдено: захват камеры по умолчанию ДОЛЖЕН быть Ultra HDR для устройства с классом производительности 15.
сцена2_d
test_num_faces
Тестирует распознавание лиц с увеличенным разнообразием оттенков кожи в сценах с лицами.
Протестированные API:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Пройти: находит 3 лица.
сцена2_е
test_continous_picture
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_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
сцена3
В сцене 3 используется диаграмма ISO12233, и в большинстве тестов используется метод извлечения диаграммы для поиска диаграммы в сцене. По этой причине большинство сохраненных изображений не имеют границ, как изображения для сцен 1, 2 или 4, а имеют только диаграмму. Чтобы картоискатель работал оптимально, карта должна быть в правильной ориентации.
test_edge_enhancement
Проверяет правильность применения параметра android.edge.mode
. Захватывает изображения без повторной обработки для каждого режима границ и возвращает резкость выходного изображения и метаданные результата захвата. Обрабатывает запрос захвата с заданным режимом края, чувствительностью, временем экспозиции, расстоянием фокусировки и параметром выходной поверхности.
Пройдено: режим HQ
(2) резче, чем режим OFF
(0). Режим FAST
(1) резче, чем режим OFF
. Режим HQ
более резкий или равен режиму 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 кадров находятся на оптимальном расстоянии фокусировки (согласно 3A), а последние 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 - это сетка с небольшими кругами с квадратом в одном углу, чтобы указать ориентацию. Небольшие круги необходимы для проверки функции масштабирования в большом диапазоне. Тесты в сцене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
Проверяет поведение масштабирования камеры. Принимает захваты в диапазоне Zoom и проверяет, становятся ли круги больше по мере увеличения камеры. Для каждого формата (YUV, JPEG) тот же сеанс захвата камеры используется для сходимости 3A и захвата.
Протестировано 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
Пропуск: относительный размер захваченного круга является точным по сравнению с запрошенным соотношением масштабирования, чтобы гарантировать, что камера правильно увеличивается.
test_zoom, чтобы найти контур круга, ближайший к центру.
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
Проверяет это при записи и масштабировании, предварительный просмотр видео и вывод видео и записывает один и тот же вывод. Вычисляет размер круга, ближайший к центру при различных соотношениях масштабирования, и проверяет, увеличивается ли размер круга с увеличением соотношения 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
Пропуск: Относительный размер захваченного круга является точным против запрошенного соотношения масштабирования в видео и предварительном просмотре.
Vga_640x480_key_frame.png (до Zoom)
preview_640x480_key_frame.png (до Zoom)
Vga_640x480_key_frame.png (после Zoom)
preview_640x480_key_frame.png (после Zoom)
test_preview_zoom
Тесты, что соотношение 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
Пропуск: относительный размер выбранного круга является точным для сообщенного соотношения 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 между изображениями UW и W Lens должно составлять менее 0,5%.
- Проверка AWB: разница между значениями R/G и B/G для изображений UW и W Lens должна составлять менее 0,5%.
- Проверка AF: изменение резкости изображения между изображениями UW и W Lens должно составлять менее 2%.
Сцена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 имеет важное значение для этого теста. Если первоначальное обнаружение не удается, система пытается пройти второй проход по обнаружению, используя черно -белую версию изображения. Следующее изображение серого представляет вторичный этап обработки.
Сцена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), и находит среднее из пяти вычисленных различий.
Протестировано API:
-
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
-
android.hardware.camera2.CameraExtensionSession#capture
Пропуск: Среднее значение 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), и находит среднее из пяти вычисленных различий.
Протестировано 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
Пропуск: Среднее значение LUMA первых 6 квадратов должно составлять не менее 70, а средняя разница в значении LUMA последовательных квадратов вплоть до квадратов 5 и 6 должна составлять не менее 17.
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
Проверки, которые светодиодные снимки не насыщают и не протягивают изображение.
Этот тест добавляет контроллер освещения в фьюжн -коробку датчика для управления огнями. С OFF
огнями, тест берет захват с режимом AUTO_FLASH
, установленным для ON
. Во время этого захвата тест запускает последовательность предшественников запуска с START
триггера aePrecapture
, и устанавливает намерение захвата Preview
, чтобы взять захват с помощью Flash.
Поскольку захват имеет отличительную горячую точку из -за вспышки, тест вычисляет среднее изображение вспышки всего захвата и проверяет, находится ли значение в диапазоне (68, 102). Чтобы проверить, разумно ли изображение сбалансировано, тест рассчитывает соотношения R/G и B/G и проверяет, находятся ли соотношения в пределах 0,95 и 1,05.
Протестировано API:
-
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#FLASH_MODE
Проход: соотношения R/G и B/G находятся в пределах 0,95 и 1,05. Среднее среднее изображение находится в пределах диапазона (68, 102).
test_preview_min_frame_rate
Испытания о том, что частота кадров предварительного просмотра правильно уменьшается в темной сцене. Для того, чтобы этот тест был правильно работать, свет в испытательной установке должен быть отключен контроллером или вручную оператором тестирования.
Протестировано 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
Проход: частота кадров предварительного просмотра находится на минимальном диапазоне частоты кадров, а изменение между кадрами меньше, чем абсолютная допуск, установленная в тесте.
test_torch_strength
Тесты, которые управляют силой вспышки в режиме TORCH
, реализованы правильно.
Проверяет, что если устройство поддерживает управление силой вспышки во время использования камеры в режиме TORCH
, сила факела изменяется с различными запрошенными уровнями прочности. Проверяет, что управление силой вспышки работает с различными 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_TORCH_STRENGTH_DEFAULT_LEVEL
-
android.hardware.camera2.CameraCharacteristics#FLASH_TORCH_STRENGTH_MAX_LEVEL
Проходить:
Когда режим автоматического эксплуатации ON
или OFF
, яркость патчей разрыва изображения увеличивается, когда уровень прочности вспышки увеличивается от NO Flash до FLASH_TORCH_STRENGTH_MAX_LEVEL
. Когда режим автоматического эксплуатации ON_AUTO_FLASH
, разница в яркости патчей разрыва изображения находится в пределах толерантности, поскольку уровень прочности вспышки увеличивается от NO Flash до FLASH_TORCH_STRENGTH_MAX_LEVEL
.
Sensor_fusion
Тест на слияние датчиков требует определенного движения телефона перед шаблоном шахматной доски и маркеров ARUCO. Для оптимальных результатов убедитесь, что тестовая диаграмма установлена плоской. Диаграммы, которые не плоские, влияют на расчеты вращения для многих тестов. Диаграмма должна заполнить заднюю часть фьюжн -коробки датчика путем печати при 17 "x17" (43x43 см). Тесты sensor_fusion
могут быть автоматизированы с помощью слияния датчика .
Диаграмма слияния датчика
Диаграмма слияния датчика, которая заполняет заднюю часть слияния датчика
test_lens_intrinsic_calibration
Испытания того, что оптический центр линзы внутренних изменяется, когда линза перемещается из -за оптической стабилизации изображения (OIS). Если поддерживаются внутренние образцы линзы, тесты на то, что оптический центр внутренних образцов линзы меняется, когда линза перемещается из -за оптической стабилизации изображения (OIS).
Протестировано API:
-
android.hardware.camera2.CameraCharacteristics#LENS_INTRINSIC_CALIBRATION
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Пропуск: оптический центр внутренних изменений линзы на один пиксель или более. Если поддерживаются внутренние образцы линзы, оптические центры внутренних образцов линзы изменяются на один пиксель или несколько.
Пример графика test_lens_intrinsic_calibration
показывает изменения основных точек в пикселях для каждого кадра
test_multi_camera_frame_sync
Тесты, которые создают временные метки, захватываемые логической камерой, находятся в пределах 10 мс путем вычисления углов квадратов в шахматной доске для определения метки времени.
Протестировано API:
-
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()
Пропуск: Угол между изображениями с каждой камеры не меняется заметно, поскольку телефон вращается.
test_preview_distortion
Испытания, которые искажают, корректируются на протяжении каждой кадры предварительного просмотра, взятые на различных уровнях масштабирования. Для каждой кадры предварительного просмотра тест вычисляет идеальные точки на основе внутренней камеры и внешней линии. На примере изображения идеальные точки показаны зелеными; Фактические точки показаны красными. Ошибка искажения рассчитывается на основе среднего квадратного пиксельного расстояния между фактическими точками и идеальными точками. Зеленые и красные блики на изображении используются для визуального обнаружения области ошибки искажения.
Изображение шахматной доски с идеальными точками в виде зеленых и фактических точек в качестве красных
Протестировано API:
-
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
Пропустите: нормализованная ошибка искажения каждой кадры предварительного просмотра меньше, чем пороговое значение, установленное в тесте.
test_preview_stabilization
Тесты, которые стабилизировали предварительное видео видео, вращаются меньше, чем гироскоп.
Протестировано API:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Пропуск: максимальное угловое вращение над кадрами составляет менее 70% вращения гироскопа.
Ниже приведены примеры видео со стабилизацией и без них.
Образец видео со стабилизацией
Образец видео без стабилизации
test_sensor_fusion
Проверяет разницу временных метков между камерой и гироскопом для приложений AR и VR. Телефон вращается на 90 градусов 10 раз перед шаблоном шахматной доски. Движение составляет около 2 с. Этот тест пропускается, если гироскоп не включен или если параметр REALTIME
параметра времени не включен.
Тест test_sensor_fusion
генерирует несколько участков. Два наиболее важных участка для отладки:
test_sensor_fusion_gyro_events
: показывает события гироскопа для телефона во время теста. Движение в направлении x и y подразумевает, что телефон не надежно установлен на монтажной пластине, уменьшая вероятность прохождения теста. Количество циклов на графике зависит от скорости записи для сохранения кадров.test_sensor_fusion_gyro_events
test_sensor_fusion_plot_rotations
: показывает выравнивание событий гироскопа и камеры. Этот сюжет должен показывать соответствующее движение между камерой и гироскопом до +/- 1 мс.test_sensor_fusion_plot_rotations
Протестировано API:
-
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
Проход: камера и гироскоп TimeStests 'Смещение составляет менее 1 мс в соответствии с CDD Разделом 7.3.9 Датчики высокой верности [C-2-14] .
Механизмы провал:
- Ошибка смещения: смещение камеры-гироскопа не правильно калибровано в пределах +/-1 мс.
- Кадры кадров: трубопровод недостаточно быстр, чтобы последовательно захватить 200 кадров.
- Ошибки сокета:
adb
не может надежно подключиться к DUT достаточно много времени, чтобы выполнить тест. - Диаграмма не монтированная. У сюжета
test_sensor_fusion_plot_rotations
есть кадры, в которых гироскоп и вращение камеры значительно различаются, когда камера вращается через части диаграммы, которые не плоские. - Камера не монтирована плоская. Участок
test_sensor_fusion_gyro_events
показывает движение в плоскостях x и y. Этот сбой чаще встречается в передних камерах, так как задняя камера часто имеет приподнятую удар до остальной части телефона, создавая наклон при установлении задней части телефона к монтажной пластине.
test_video_stabilization
Тесты, которые стабилизировали видео, вращаются меньше, чем гироскоп.
Протестировано API:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Пропуск: максимальное угловое вращение над кадрами составляет менее 60% вращения гироскопа.
Ниже приведены примеры видео со стабилизацией и без них.
Образец видео со стабилизацией
Образец видео без стабилизации
feature_combination
Тесты feature_combination
проверяют, что функции работают правильно, когда несколько функций камеры включены одновременно. Эти тесты используют то же изображение шахматной доски, которое используется в сцене слияния датчика .
test_feature_combination
Тестирование все комбинации различных комбинаций потока, стабилизация предварительного просмотра, целевой диапазон FPS, 10-битное видео HDR и Ultra HDR, которые поддерживаются устройством камеры. Этот тест очень интенсивный память, поэтому мы рекомендуем использовать хост с не менее 128 ГБ оперативной памяти.
Для Android 15 и выше файл конфигурации включает в себя поле log_feature_combo_support
, которое по умолчанию по False
. Когда поле log_feature_combo_support
устанавливается на True
, тест запускает все комбинации поддерживаемых функций и регистрирует результаты в прото -файл, не выполняя тест. Для тестирования соответствия поле log_feature_combo_support
должно быть установлено на False
.
Протестировано API:
-
android.hardware.camera2.CameraDevice.CameraDeviceSetup#isSessionConfigurationSupported
-
android.hardware.camera2.CameraDevice.CameraDeviceSetup#createCaptureRequest
Проход: для каждой поддерживаемой комбинации функций:
- Предварительный просмотр стабилизируется, если включен превью.
- Частота кадров предварительного просмотра попадает в настройку
AE_TARGET_FPS_RANGE
. - Цветное пространство Preview Stream соответствует тому, что установлено.
- Ультра HDR захват имеет действительную карту усиления.