ИТС тесты камеры

На этой странице представлен полный список тестов в рамках набора тестов изображения камеры (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 : масштабирование
  • Scene_extensions : Расширения камеры.
  • Sensor_fusion : Смещение времени камеры/гироскопа

См. отдельные разделы для описания каждой сцены.

сцена0

Тесты сцены 0 не требуют никакой конкретной информации о сцене. Однако для проведения испытаний на гироскоп и вибрацию телефон должен быть неподвижен.

test_burst_capture

Проверяет, что весь конвейер захвата может соответствовать скорости полноразмерного захвата и процессорному времени.

Протестированные API:

Pass: захватывает серию полноразмерных изображений, и камера работает достаточно быстро, чтобы избежать тайм-аута.

test_capture_result_dump

Проверяет, что результат захвата возвращается после захвата вручную, а затем выгружает его.

Протестированные API:

Pass: Завершает захват и сохраняет результаты захвата.

test_gyro_bias

Проверяет, имеет ли гироскоп стабильный выходной сигнал, когда устройство неподвижно. Данные представлены как среднее значение 20 точек данных.

Протестированные API:

Пройдено: Дельта показаний гироскопа с течением времени составляет менее 0,01.

test_gyro_bias_plot.png

test_gyro_bias_plot.png

test_jitter

Измеряет дрожание временных меток камеры.

Протестированные API:

Пройдено: разница между кадрами составляет не менее 30 мс.

test_jitter_plot.png

test_jitter_plot.png (Обратите внимание на небольшой диапазон по оси Y. На этом графике джиттер на самом деле небольшой.)

test_metadata

Проверяет достоверность записей метаданных. Просматривает результаты захвата и характеристики объектов камеры. В этом тесте используются значения экспозиции и усиления auto_capture_request , поскольку содержимое изображения не важно.

Протестированные API:

Пройдено: аппаратный уровень, rollingShutterSkew , теги frameDuration , timestampSource , croppingType , blackLevelPattern , pixel_pitch , FoV, гиперфокальное расстояние присутствуют и имеют допустимые значения.

test_param_sensitivity_burst

Проверяет правильность применения параметра android.sensor.sensitivity в пакетном режиме. Проверяет только выходные метаданные.

Протестированные API:

Пройдено: выходные данные имеют погрешность менее 0,2%.

test_read_write

Проверяет, что устройство записывает правильные значения экспозиции и усиления, считывая метаданные захвата.

Протестированные API:

Пройдено: значения чтения и записи совпадают для всех снимков.

test_sensor_events

Тестирует, что устройство запрашивает и распечатывает события датчиков для устройств, рекламирующих поддержку объединения датчиков. Ожидаемые датчики — акселерометр, гироскоп и магнитометр. Этот тест работает только в том случае, если экран включен, то есть устройство не находится в режиме ожидания.

Протестированные API:

Pass: Получены события для каждого датчика.

test_solid_color_test_pattern

Проверяет правильность создания сплошных цветных тестовых шаблонов для отключения звука камеры. Если поддерживается отключение звука камеры, должны поддерживаться сплошные цветные тестовые шаблоны. Если отключение звука камеры не поддерживается, тестовые шаблоны сплошного цвета проверяются только в том случае, если такая возможность заявлена.

Если поддерживаются изображения RAW, также проверяется назначение цветов. Тестируемые цвета: черный, белый, красный, синий и зеленый. Для камер, которые не поддерживают изображения RAW, тестируется только черный цвет.

Протестированные API:

Пройдено: поддерживаются сплошные тестовые шаблоны правильного цвета и небольшая дисперсия изображения.

test_test_pattern

Проверяет параметр android.sensor.testPatternMode для захвата кадров для каждого допустимого тестового шаблона и проверяет правильность формирования кадров для сплошных цветов и цветных полос. Этот тест включает в себя следующие шаги:

  1. Захватывает изображения для всех поддерживаемых тестовых шаблонов.
  2. Выполняет простую проверку правильности тестового шаблона сплошного цвета и цветных полос.

Протестированные API:

Пройдено: поддерживаемые тестовые шаблоны генерируются правильно.

test_test_patterns_2

test_test_patterns_2.jpg

test_tonemap_curve

Тестирует преобразование тестового шаблона из RAW в YUV с линейной картой тонов. Для этого теста требуется android.sensor.testPatternMode = 2 (COLOR_BARS) для создания идеального шаблона изображения для преобразования тональной карты. Гарантирует, что конвейер имеет правильные выходные цвета с линейной картой тонов и идеальным входным изображением (зависит от test_test_patterns ).

Протестированные API:

Пройдено: YUV и RAW похожи друг на друга.

test_tonemap_curve_raw_2

test_tonemap_curve_raw_2.jpg

test_tonemap_curve_yuv_2.jpg

test_tonemap_curve_yuv_2.jpg

test_unified_timestamp

Проверяет, находятся ли события изображения и датчика движения в одном временном интервале.

Протестированные API:

Пройдено: временные метки движения находятся между двумя временными метками изображения.

test_vibration_restriction

Проверяет, работает ли вибрация устройства должным образом.

Протестированные API:

Пройдено: устройство не вибрирует при отключении звука с помощью API ограничения звука камеры.

Сцена 1

сцена1 представляет собой серую диаграмму. Серая диаграмма должна охватывать центральные 30 % поля зрения камеры. Ожидается, что серая диаграмма будет в некоторой степени бросать вызов 3A (автоэкспозиция, автоматический баланс белого, автофокусировка), поскольку в центральной области нет никаких особенностей. Однако запрос на захват определяет всю сцену, которая включает в себя достаточно функций для сходимости 3A.

Камеры RFoV можно тестировать на испытательном стенде WFoV или RFoV. Если камера RFoV тестируется на испытательном стенде WFoV, диаграмма масштабируется на ⅔, чтобы обеспечить некоторые границы серой диаграммы в поле зрения и помочь сходимости 3A. Более подробное описание стендов для тестирования камер см. в разделе Camera ITS-in-a-box .

Сцена 1

сцена 1: полноразмерная диаграмма (слева). ⅔ масштабированная диаграмма (справа).

test_3a

Проверяет сходимость 3А с целью средней сложности.

Протестированные API:

Пройдено: 3A сходится, и возвращаемые значения 3A действительны.

test_ae_af

Тестирует алгоритмы автоматической экспозиции (AE) и автофокусировки (AF) 3A по отдельности.

Протестированные API:

Пройдено: 3A сходится, и возвращаемые значения 3A являются допустимыми.

test_ae_precapture_trigger

Тестирует конечный автомат AE при использовании триггера предварительного захвата. Захватывает пять ручных запросов с отключенным AE. Последний запрос имеет триггер предварительного захвата AE, который следует игнорировать, поскольку AE отключен.

Протестированные API:

Пройдено: AE сходится.

test_auto_vs_manual

Тесты, в которых были сделаны автоматические и ручные снимки, выглядят одинаково.

Протестированные API:

Пройдено: усиление и преобразование баланса белого вручную, сообщаемые в каждом результате съемки, совпадают с estimate автоматического баланса белого по алгоритму 3A камеры.

test_auto_vs_manual_auto

test_auto_vs_manual_auto.jpg

test_auto_vs_manual_wb

test_auto_vs_manual_wb.jpg

test_auto_vs_manual_manual_wb_tm

test_auto_vs_manual_manual_wb_tm.jpg

test_black_white

Проверяет, что устройство создает полностью черно-белые изображения. Делается два снимка: первый с чрезвычайно низким усилением и короткой выдержкой, в результате которого получается черная фотография, а второй с чрезвычайно высоким усилением и длинной выдержкой, в результате чего получается белая фотография.

Протестированные API:

Pass: Создает черно-белые изображения. Насыщенные каналы белых изображений имеют значения RGB [255, 255, 255] с погрешностью менее 1%.

test_black_white_blacktest_black_white_black
test_black_white_black.jpg test_black_white_white.jpg

test_black_white_plot_means

test_black_white_plot_means.png

test_burst_sameness_manual

Делает 5 серий по 50 изображений с ручной настройкой съемки и проверяет их идентичность. Этот тест можно использовать для определения наличия спорадических кадров, которые обрабатываются по-разному или содержат артефакты.

Протестированные API:

Пройдено: изображения идентичны визуально и в значениях RGB.

Неудачно: показывает скачок или падение средней диаграммы RGB в начале каждого пакета.

  • Допуск составляет 3% для first_API_level < 30.
  • Допуск составляет 2 % для first_API_level >= 30.

test_burst_sameness_manual_mean

test_burst_sameness_manual_mean.jpg

test_burst_sameness_manual_plot_means

test_burst_sameness_manual_plot_means.png

test_capture_result

Проверяет, что действительные данные возвращаются в объекты CaptureResult . Выполняет автоматический, ручной и автоматический захват.

Протестированные API:

Пройдено: метаданные действительны для всех захватов, а ручные настройки не попадают во второй автоматический захват. Выводит на график коррекцию затенения объектива для снимков.

test_capture_result_plot_lsc_auto_ch0

test_capture_result_plot_lsc_auto_ch0.png

test_crop_region_raw

Проверяет, что потоки RAW невозможно обрезать.

Протестированные API:

Пройдено: изображения YUV обрезаются по центру, но не изображения RAW.

test_crop_region_raw_comp_raw_crop

test_crop_region_raw_comp_raw_crop.jpg

test_crop_region_raw_comp_raw_full

test_crop_region_raw_comp_raw_full.jpg

test_crop_region_raw_comp_yuv_crop

test_crop_region_raw_comp_yuv_crop.jpg

test_crop_region_raw_yuv_full

test_crop_region_raw_yuv_full.jpg

test_crop_regions

Тесты на то, что регионы посева работают. Делает полное изображение и создает фрагменты из 5 различных областей (углы и центр). Делает изображения с кадрированием для 5 областей. Сравнивает значения патча и изображения обрезки.

Протестированные API:

Пройдено: изображение обрезанной области соответствует фрагменту, соответствующему обрезанному изображению.

test_dng_noise_model

Проверяет правильность параметров необработанной модели DNG. На графике изображена измеренная дисперсия центрального участка серой карты в необработанных снимках, снятых в диапазоне чувствительности, и сравниваются эти значения с дисперсией, ожидаемой при каждой чувствительности моделью шума DNG в камере HAL (на основе Параметры O,S, возвращаемые в объектах результатов захвата). Для получения более подробной информации о модели шума DNG загрузите следующий документ о модели шума DNG .

Протестированные API:

Пройдено: параметры необработанной модели DNG верны. Ожидаемые значения RGB соответствуют фактически измеренным значениям RGB.

test_dng_noise_model_plog

test_dng_noise_model_plog.png

test_ev_compensation_advanced

Проверяет, применяется ли компенсация величины экспозиции (EV). Тест увеличивает экспозицию в восемь этапов и сравнивает измеренную яркость с ожидаемой. Ожидаемые значения рассчитываются на основе яркости изображения без применения компенсации EV, и ожидаемое значение будет насыщаться, если рассчитанные значения превышают диапазон фактических значений изображения. Тест не пройден, если ожидаемые значения и измеренные значения не совпадают или изображения переэкспонированы в течение пяти шагов.

Протестированные API:

Пройдено: изображения показывают увеличение экспозиции без переэкспонирования в течение пяти шагов.

test_ev_compensation_advanced_plot_means

test_ev_compensation_advanced_plot_means.png

test_ev_compensation_basic

Проверяет, что компенсация EV применяется с использованием диапазона, созданного с помощью CONTROL_AE_COMPENSATION_STEP . При каждом значении компенсации захватывается восемь кадров.

Протестированные API:

Успешно: фиксируется увеличение яркости с увеличенной настройкой компенсации EV, и восемь кадров, снятых для каждой настройки компенсации EV, имеют стабильные значения яркости.

test_ev_compensation_basic

test_ev_compensation_basic.png

test_exposure

Тесты на достижение постоянной экспозиции при изменении ISO и времени экспозиции. Делает серию снимков, в которых ISO и время экспозиции выбраны так, чтобы сбалансировать друг друга. Результаты должны иметь одинаковую яркость, но с течением времени изображение должно становиться более шумным. Проверяет, что средние значения пикселей выборки близки друг к другу. Гарантирует, что изображения не привязаны к 0 или 1 (из-за чего они будут выглядеть как плоские линии). Тест также можно запустить с изображениями RAW, установив флаг debug в файле конфигурации.

Протестированные API:

Пройдено: изображения имеют одинаковую яркость, но становятся более шумными при более высоком значении ISO. Плоскости RGB являются плоскими, когда значение экспозиции ISO* постоянно в тестируемом пространстве усиления.

test_exposure_plot_means

test_exposure_plot_means.png

test_exposure_mult=1,00test_exposure_mult=64.00
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.jpgtest_jpeg=fmt=yuv.jpg
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.jpgtest_latching_i=01.jpgtest_latching_i=02.jpg
test_latching_i=00.jpg test_latching_i=01.jpg test_latching_i=02.jpg
test_latching_i=03.jpgtest_latching_i=04.jpgtest_latching_i=05.jpg
test_latching_i=03.jpg test_latching_i=04.jpg test_latching_i=05.jpg
test_latching_i=06.jpgtest_latching_i=07.jpgtest_latching_i=08.jpg
test_latching_i=06.jpg test_latching_i=07.jpg test_latching_i=08.jpg
test_latching_i=09.jpgtest_latching_i=10.jpgtest_latching_i=11.jpg
test_latching_i=09.jpg test_latching_i=10.jpg test_latching_i=11.jpg
test_latching_i=12.jpg
test_latching_i=12.jpg

test_latching_plot_means

test_latching_plot_means.png

test_linearity

Тестирует, что обработку устройства можно инвертировать в линейные пиксели. Захватывает последовательность снимков, когда устройство направлено на однородную цель.

Протестированные API:

Успешно: значения R, G, B должны увеличиваться линейно с увеличением чувствительности.

test_linearity_plot_means

test_linearity_plot_means.png

test_locked_burst

Тестирует блокировку 3A и пакет YUV (с использованием автоматической настройки). Этот тест предназначен для прохождения даже на ограниченных устройствах, у которых нет MANUAL_SENSOR или PER_FRAME_CONTROLS . Тест проверяет согласованность изображения YUV, в то время как проверка частоты кадров выполняется в CTS.

Протестированные API:

Пройдено: снимки выглядят стабильно.

test_locked_burst_frame0

test_locked_burst_frame0.jpg

test_locked_burst_frame1

test_locked_burst_frame1.jpg

test_locked_burst_frame2

test_locked_burst_frame2.jpg

test_param_color_correction

Проверяет, что параметры android.colorCorrection.* применяются, если они установлены. Делает снимки с разными значениями преобразования и усиления и проверяет, выглядят ли они соответственно по-разному. Преобразование и коэффициенты усиления выбираются таким образом, чтобы выходной сигнал стал все более красным или синим. Использует линейную карту тонов. Тональное отображение — это метод, используемый при обработке изображений для сопоставления одного набора цветов с другим, чтобы аппроксимировать внешний вид изображений с расширенным динамическим диапазоном в среде с более ограниченным динамическим диапазоном.

Протестированные API:

Пройдено: значения R и B увеличиваются в соответствии с трансформацией.

test_param_color_correction_plot_means

test_param_color_correction_plot_means.png

*Ось X — запросы на захват: 0 = единица, 1 = усиление красного цвета, 2 = усиление синего цвета.

test_param_color_correction_req=0

test_param_color_correction_req=0.jpg

test_param_color_correctness_req=1

test_param_color_correctness_req=1.jpg (усиление R)

test_param_color_correction_req=2

test_param_color_correction_req=2.jpg (увеличение B)

test_param_exposure_time

Проверяет применение параметра android.sensor.exposureTime .

Протестированные API:

Pass: каждый кадр ярче предыдущего.

test_param_exposure_time_frame0

test_param_exposure_time_frame0.jpg

test_param_exposure_time_plot

test_param_exposure_time_plot.png

test_param_flash_mode

Проверяет применение параметра android.flash.mode . Вручную устанавливает экспозицию на темной стороне, чтобы было видно, сработала вспышка или нет, и использует линейную карту тонов. Проверяет центр изображения плитки, чтобы увидеть, создан ли большой градиент, чтобы проверить, сработала ли вспышка.

Протестированные API:

Пройдено: центр изображения плитки имеет большой градиент, что означает, что сработала вспышка.

test_param_flash_mode_1

test_param_flash_mode_1.jpg

test_param_flash_mode_1_tile

test_param_flash_mode_1_tile.jpg

test_param_flash_mode_2

test_param_flash_mode_2.jpg

test_param_flash_mode_2_tile

test_param_flash_mode_2_tile.jpg

test_param_noise_reduction

Проверяет правильность применения параметра android.noiseReduction.mode , если он установлен. Съемка изображений при слабом освещении камеры. Использует высокое аналоговое усиление, чтобы обеспечить зашумленность захваченного изображения. Захватывает три изображения: отключенное шумоподавление, «быстрое» и «высокое качество». Также захватывает изображение с низким усилением и отключенным шумоподавлением и использует его дисперсию в качестве базовой линии. Чем выше SNR (отношение сигнал/шум), тем лучше качество изображения.

Протестированные API:

Pass: SNR варьируется в зависимости от разных режимов шумоподавления и ведет себя так же, как показано на графике ниже.

test_param_noise_reduction_plot_SNRs

test_param_noise_reduction_plot_SNRs.png

0: ВЫКЛ, 1: БЫСТРО, 2: HQ, 3: МИН, 4: ZSL

test_param_noise_reduction_high_gain_nr=0

test_param_noise_reduction_high_gain_nr=0.jpg

test_param_noise_reduction_high_gain_nr=1

test_param_noise_reduction_high_gain_nr=1.jpg

test_param_noise_reduction_high_gain_nr=2

test_param_noise_reduction_high_gain_nr=2.jpg

test_param_noise_reduction_high_gain_nr=3

test_param_noise_reduction_high_gain_nr=3.jpg

test_param_noise_reduction_low_gain

test_param_noise_reduction_low_gain.jpg

test_param_sensitivity

Проверяет применение параметра android.sensor.sensitivity . Тест повышает чувствительность за 5 шагов с фиксированной экспозицией для каждого снимка.

Протестированные API:

Успешно: средние значения RGB в центре на 10 % становятся ярче с увеличением чувствительности.

test_param_sensitivity_iso=0055

test_param_sensitivity_iso=0055.jpg

test_param_sensitivity_iso=1819

test_param_sensitivity_iso=1819.jpg

test_param_sensitivity_iso=3583

test_param_sensitivity_iso=3583.jpg

test_param_sensitivity_iso=5347

test_param_sensitivity_iso=5347.jpg

test_param_sensitivity_iso=7111

test_param_sensitivity_iso=7111.jpg

test_param_sensitivity_plot

test_param_sensitivity_plot.png

test_param_shading_mode

Проверяет применение параметра android.shading.mode .

Протестированные API:

Пройдено: режимы затенения переключаются, а карты затенения объектива изменяются, как ожидалось.

test_param_shading_mode_ls_maps_mode_0_loop_0

test_param_shading_mode_ls_maps_mode_0_loop_0.png

test_param_shading_mode_ls_maps_mode_1_loop_0

test_param_shading_mode_ls_maps_mode_1_loop_0.png

test_param_shading_mode_ls_maps_mode_2_loop_0

test_param_shading_mode_ls_maps_mode_2_loop_0.png

test_param_tonemap_mode

Проверяет применение параметра android.tonemap.mode. Применяет разные кривые карты тонов к каждому каналу R, G, B и проверяет, что выходные изображения изменяются должным образом. Этот тест состоит из двух тестов: test1 и test2.

Протестированные API:

Проходить:

  • test1: Оба изображения имеют линейную карту тонов, но n=1 имеет более крутой градиент. Канал G (зеленый) ярче для изображения n=1.
  • test2: Та же карта тонов, но разная длина. Изображения те же самые.
test_param_tonemap_mode_n=0.jpgtest_param_tonemap_mode_n=1.jpg
test_param_tonemap_mode_n=0.jpg test_param_tonemap_mode_n=1.jpg

test_post_raw_sensitivity_boost

Проверяет повышение чувствительности после RAW. Захватывает набор изображений RAW и YUV с разной чувствительностью, публикует комбинацию повышения чувствительности RAW и проверяет, соответствует ли среднее значение выходного пикселя настройкам запроса.

Протестированные API:

Пройдено: изображения RAW становятся темнее по мере увеличения усиления, в то время как изображения YUV остаются постоянной яркости.

test_post_raw_sensitivity_boost_raw_s=3583_boost=0100

test_post_raw_sensitivity_boost_raw_s=3583_boost=0100.jpg

test_post_raw_sensitivity_boost_raw_s=1792_boost=0200

test_post_raw_sensitivity_boost_raw_s=1792_boost=0200.jpg

test_post_raw_sensitivity_boost_raw_s=0896_boost=0400

test_post_raw_sensitivity_boost_raw_s=0896_boost=0400.jpg

test_post_raw_sensitivity_boost_raw_s=0448_boost=0800

test_post_raw_sensitivity_boost_raw_s=0448_boost=0800.jpg

test_post_raw_sensitivity_boost_raw_s=0224_boost=1600

test_post_raw_sensitivity_boost_raw_s=0224_boost=1600.jpg

test_post_raw_sensitivity_boost_raw_s=0112_boost=3199

test_post_raw_sensitivity_boost_raw_s=0112_boost=3199.jpg

test_post_raw_sensitivity_boost_raw_plot_means

test_post_raw_sensitivity_boost_raw_plot_means.png

test_post_raw_sensitivity_boost_yuv_s=0112_boost=3199

test_post_raw_sensitivity_boost_yuv_s=0112_boost=3199.jpg

test_post_raw_sensitivity_boost_yuv_s=0448_boost=0800

test_post_raw_sensitivity_boost_yuv_s=0448_boost=0800.jpg

test_post_raw_sensitivity_boost_yuv_s=0896_boost=0400

test_post_raw_sensitivity_boost_yuv_s=0896_boost=0400.jpg

test_post_raw_sensitivity_boost_yuv_s=1792_boost=0200

test_post_raw_sensitivity_boost_yuv_s=1792_boost=0200.jpg

test_post_raw_sensitivity_boost_yuv_s=3585_boost=0100

test_post_raw_sensitivity_boost_yuv_s=3585_boost=0100.jpg

test_post_raw_sensitivity_boost_yuv_plot_means

test_post_raw_sensitivity_boost_yuv_plot_means.png

test_raw_burst_sensitivity

Захватывает набор необработанных изображений с возрастающим усилением и измеряет шум. Захватывает только в сыром виде, пакетно.

Протестированные API:

Pass: каждый выстрел шумнее предыдущего, так как усиление увеличивается.

Использует дисперсию центральной ячейки сетки статистики.

test_raw_burst_sensitivity_variance

test_raw_burst_sensitivity_variance.png

test_raw_exposure

Захватывает набор необработанных изображений с увеличением времени экспозиции и измеряет значения пикселей.

Протестированные API:

Пройдено: увеличение ISO (усиления) делает пиксели более чувствительными к свету, поэтому график смещается влево.

test_raw_exposure_s=55

test_raw_exposure_s=55.png

(10⁰ — 1 мс, 10¹ — 10 мс, 10⁻¹ — 0,1 мс)

test_raw_exposure_s=132

test_raw_exposure_s=132.png

test_raw_exposure_s=209

test_raw_exposure_s=209.png

test_raw_exposure_s=286

test_raw_exposure_s=286.png

test_raw_exposure_s=363

test_raw_exposure_s=363.png

test_raw_exposure_s=440

test_raw_exposure_s=440.png

test_raw_sensitivity

Захватывает набор необработанных изображений с повышенной чувствительностью и измеряет шум (дисперсию) в центре 10% изображения. Тестирует, что каждый выстрел шумнее предыдущего.

Протестированные API:

Пас: дисперсия увеличивается с каждым выстрелом.

test_raw_sensitivity_variance

test_raw_sensitivity_variance.png

test_reprocess_noise_reduction

Проверяет, что android.noiseReduction.mode применяется для повторной обработки запросов. Захватывает обработанные изображения при слабом освещении камеры. Использует высокое аналоговое усиление, чтобы обеспечить зашумленность захватываемого изображения. Захватывает три обработанных изображения: отключенное шумоподавление, «быстрое» и «высокое качество». Захватывает обработанное изображение с низким усилением и отключенным шумоподавлением и использует его дисперсию в качестве базовой линии.

Протестированные API:

Пройдено: FAST >= OFF, HQ >= FAST, HQ >> OFF

Типичный график зависимости SNR от NR_MODE

Типичный график зависимости SNR от NR_MODE

test_tonemap_sequence

Тестирует последовательность снимков с различными кривыми тональной карты. Делает 3 ручных снимка с линейной картой тонов. Делает 3 ручных снимка с тональной картой по умолчанию. Вычисляет дельту между каждой последовательной парой кадров.

Протестированные API:

Пройдено: есть 3 одинаковых кадра, за которыми следует другой набор из 3 одинаковых кадров.

test_tonemap_sequence_i=0

test_tonemap_sequence_i=0.jpg

test_tonemap_sequence_i=1

test_tonemap_sequence_i=1.jpg

test_tonemap_sequence_i=2

test_tonemap_sequence_i=2.jpg

test_tonemap_sequence_i=3

test_tonemap_sequence_i=3.jpg

test_tonemap_sequence_i=4

test_tonemap_sequence_i=4.jpg

test_tonemap_sequence_i=5

test_tonemap_sequence_i=5.jpg

test_yuv_jpeg_all

Проверяется работоспособность всех заявленных размеров и форматов для захвата изображений. Использует ручной запрос с линейной картой тонов, чтобы YUV и JPEG выглядели одинаково при преобразовании модулем image_processing_utils . Изображения не сохраняются по умолчанию, но их можно сохранить, включив debug_mode .

Протестированные API:

Пройдено: все центры изображений имеют максимальную разницу RMS (среднеквадратичное значение сигнала) в изображениях, преобразованных в RGB, с 3% от изображения YUV с самым высоким разрешением.

test_yuv_jpeg_all

test_yuv_jpeg_all.png

test_yuv_plus_dng

Проверяет работоспособность заявленных размеров и форматов для захвата изображений.

Протестированные API:

Пройдено: тест завершается и возвращает запрошенные изображения.

test_yuv_plus_dng

test_yuv_plus_dng.jpg

test_yuv_plus_jpeg

Тестирует захват одного кадра как в формате YUV, так и в формате JPEG. Использует ручной запрос с линейной картой тонов, чтобы YUV и JPEG выглядели одинаково при преобразовании модулем image_processing_utils .

Протестированные API:

Пройдено: изображения YUV и JPEG схожи и имеют разницу менее 1 % RMS (среднеквадратичное значение сигнала).

test_yuv_plus_jpg_jpg.jpgtest_yuv_plus_jpeg_yuv.jpg
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:

Пройдено: YUV и необработанные изображения схожи и имеют разницу менее 3,5% RMS (среднеквадратичное значение сигнала).

test_yuv_plus_raw_shading=1_raw.jpgtest_yuv_plus_raw_shading=1_yuv.jpg
test_yuv_plus_raw_shading=1_raw.jpg test_yuv_plus_raw_shading=1_yuv.jpg

сцена2_а

Scene2_a имеет три лица на сером фоне и нейтральную одежду. Лица выбираются с учетом широкого спектра оттенков кожи. Диаграмма должна иметь правильную ориентацию, чтобы распознавание лиц работало оптимально.

сцена2_а

сцена2_а

test_auto_flash

Проверяет, что автоматическая вспышка срабатывает в темной сцене. Проверяет срабатывание автоматической вспышки, проверяя наличие большого градиента в центре мозаичного изображения. Чтобы активировать автоматическую вспышку, планшет и освещение на испытательном стенде должны быть выключены. Планшет выключается при тестировании, а подсветка может быть выключена автоматически с помощью контроллера Arduino. Для корректной работы теста сцена должна быть полностью темной. Таким образом, заднее отверстие планшета должно быть полностью закрыто планшетом сцены, а переднее отверстие должно быть закрыто отверстием и телефоном тестируемого устройства, чтобы предотвратить попадание постороннего света на установку.

Протестированные API:

Пройдено: центр мозаичного изображения имеет большой градиент, что означает, что сработала автоматическая вспышка.

test_autoframing

Тестирует поведение автокадрирования устройства камеры. Выполняет большое масштабирование, чтобы ни одно из лиц в сцене не было видно, включает режим автокадрирования, устанавливая для AUTOFRAMING в CaptureRequest значение True , и проверяет, можно ли обнаружить все лица в исходной сцене, когда состояние сходится (то есть, когда Для параметра AUTOFRAMING_STATE в CaptureResult установлено значение AUTOFRAMING_STATE_CONVERGED ).

Протестированные API:

Пройдено: обнаружены все три лица.

test_display_p3

Тесты Отображение захвата P3 в формате JPEG с использованием API ColorSpaceProfiles . Проверяет, что захваченный JPEG имеет соответствующий профиль ICC в заголовке и что изображение содержит цвета за пределами гаммы sRGB.

Протестированные API:

Пройдено: JPEG содержит профиль Display P3 ICC и цвета за пределами гаммы sRGB.

test_effects

Захватывает кадр для поддерживаемых эффектов камеры и проверяет, правильно ли они сгенерированы. Тест проверяет только эффекты OFF и MONO , но сохраняет изображения для всех поддерживаемых эффектов.

Протестированные API:

Пройдено: захватывается изображение сцены с OFF эффектами и монохромное изображение с эффектами, установленными на MONO .

test_effects_MONO

test_effects_MONO.jpg

test_format_combos

Тестирует различные комбинации выходных форматов.

Протестированные API:

Пас: Все комбинации успешно собраны.

test_jpeg_quality

Проверяет качество сжатия JPEG камеры. Шаг качества JPEG через android.jpeg.quality и обеспечение правильного изменения таблиц квантования.

Протестированные API:

Пройдено: матрица квантования уменьшается с увеличением качества. (Матрица представляет коэффициент деления.)

test_jpeg_quality

Средние значения яркости/цветности матрицы DQT задней камеры Pixel 4 в сравнении с качеством JPEG

test_jpeg_quality не удалось

Пример неудачного теста

Обратите внимание, что для изображений очень низкого качества (jpeg.quality < 50) сжатие в матрице квантования не увеличивается.

test_num_faces

Тестирует распознавание лиц.

Протестированные API:

Пройти: находит три лица.

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

test_preview_min_frame_rate

Проверяет правильность снижения частоты кадров предварительного просмотра в темной сцене. Чтобы этот тест работал правильно, освещение на испытательном стенде должно быть выключено контроллером или вручную оператором-испытателем.

Протестированные API:

Пройдено: частота кадров предварительного просмотра находится на минимальном уровне запрошенного диапазона частоты кадров, а разница между кадрами меньше абсолютного допуска, установленного в тесте.

test_reprocess_uv_swap

Проверяет, что обработка YUV не меняет местами плоскости U и V. Это обнаруживается путем расчета суммы абсолютных разностей (SAD) между обработанным изображением и необработанным снимком. Если замена выходных плоскостей U и V обработанного захвата приводит к увеличению SAD, то предполагается, что выходные данные имеют правильные плоскости U и V.

Протестированные API:

Пройдено: плоскости U и V не меняются местами.

test_reprocess_uv_swap

test_reprocess_uv_swap.png

сцена2_б

test_num_faces

Тестирует распознавание лиц с увеличенным разнообразием оттенков кожи в сценах с лицами.

Протестированные API:

Пройти: находит 3 лица.

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

test_yuv_jpeg_capture_sameness

Захватывает два изображения, используя самые большие распространенные форматы YUV и JPEG с тем же соотношением сторон, что и самый большой формат JPEG, но не превышающее разрешение 1920x1440. Устанавливает jpeg.quality равным 100 и фиксирует запрос двойной поверхности. Преобразует оба изображения в массивы RGB и вычисляет трехмерную среднеквадратическую разницу (RMS) между двумя изображениями.

Протестированные API:

Пройдено: изображения YUV и JPEG схожи и имеют разницу менее 1 % RMS (среднеквадратичное значение сигнала).

сцена2_с

test_num_faces

Тестирует распознавание лиц с увеличенным разнообразием оттенков кожи в сценах с лицами.

Протестированные API:

Пройти: находит 3 лица.

test_num_faces_fd_mode_1

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) для обеих основных камер.

сцена2_d

test_num_faces

Тестирует распознавание лиц с увеличенным разнообразием оттенков кожи в сценах с лицами.

Протестированные API:

Пройти: находит 3 лица.

сцена2_е

test_continous_picture

50 кадров разрешения VGA захватываются с первой установкой запроса захвата android.control.afMode = 4 (CONTINUOUS_PICTURE).

Протестированные API:

Пройдено: система 3A стабилизируется к концу захвата 50 кадров.

test_num_faces

Тестирует распознавание лиц с увеличенным разнообразием оттенков кожи в сценах с лицами.

Протестированные API:

Пройти: находит 3 лица.

сцена2_ф

Scene2_f имеет три лица на белом фоне и белую одежду. Лица имеют широкий диапазон оттенков кожи и высокий контраст с фоном.

сцена2_f.png

сцена2_ф

test_num_faces

Тестирует распознавание лиц с увеличенным разнообразием оттенков кожи в сценах с лицами.

Протестированные API:

Пройти: находит 3 лица.

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

сцена3

Scene3 использует диаграмму ISO12233, и в большинстве тестов используется метод экстрактора диаграммы, чтобы найти диаграмму на сцене. По этой причине большинство сохраненных изображений не имеют границ, таких как изображения для сцен 1, 2 или 4, но только диаграмма. Диаграмма должна быть в правильной ориентации для поиска диаграммы оптимально.

test_3a_consistency

Тесты на 3A последовательность.

Протестировано API:

Пропуск: 3A сходится для экспозиции, усиления, AWB (Auto Balance Balance) и FD (расстояние фокусировки) три раза в рамках толерантности.

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

test_edge_enhancement_edge = 0.jpg

test_edge_enhancement_edge = 1

test_edge_enhancement_edge = 1.jpg (быстрый режим)

test_edge_enhancement_edge = 2

test_edge_enhancement_edge = 2.jpg (режим высокого качества)

test_flip_mirror

Тесты, если изображение правильно ориентировано в соответствии с CDD Раздел 7.5.2 Фронтальная камера [C-1-5] .

Зеркальные, перевернутые или повернутые изображения могут быть идентифицированы с помощью алмазной функции вблизи центра.

Пропуск: изображение не перевернуто, зеркало и не вращается.

test_flip_mirror_scene_patch

test_flip_mirror_scene_patch.jpg

test_landscape_to_portrait

Испытания, если ландшафт на портретный переопределение правильно функционирует для ландшафтных датчиков.

Протестировано API:

Проход: тест способен найти диаграмму с ожидаемым вращением (0 градусов, когда отключен пейзаж в портрет отключен, при включении 90 градусов).

test_landscape_to_portrait

test_landscape_to_portrait.png

test_lens_movement_reporting

Испытания, если флаг движения объектива правильно сообщается. Занимает всплеск из 24 изображений с первыми 12 кадрами на оптимальном расстоянии фокусировки (как найдено 3А) и последние 12 кадров на минимальном расстоянии фокуса. Вокруг кадра 12 линза движется, вызывая резкость падать. Резкость в конечном итоге стабилизируется, когда объектив перемещается в конечную позицию. Флаг движения линз должен быть утвержден во всех кадрах, где резкость является промежуточной до резкости в первых нескольких кадрах с объективом, стационарным на оптимальном фокусном расстоянии, и в последних нескольких кадрах, где объектив является стационарным на минимальном фокусном расстоянии. Точная кадра, которую движутся линзы, не важна: то, что проверяется, так это то, что флаг движения утверждается, когда объектив движется.

Протестировано API:

Пропуск: флаг движения объектива 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:

Проход: резкость для различных режимов края верна. HQ (режим 2) является острее, чем OFF (режим 0), и улучшение между различными режимами аналогично.

test_reprocess_edge_enhancement_plot

test_reprocess_edge_enhancement_plot.png

сцена4

Scene4 состоит из черного круга на белом фоне внутри квадрата.

сцена4

сцена4

test_aspect_ratio_and_crop

Тесты, если изображения искажены или неожиданно обрезаются в трубопроводе изображения. Фотографирует круг по всем форматам. Проверяет круг не искажен, круг не движется от центра изображения, и круг не изменяется неправильно с различными соотношениями сторон или разрешениями.

Протестировано API:

Пропуск: изображения не растянуты, центр изображений не отличается более чем на 3%, и сохранится максимально возможный FOV (поле зрения).

Механизмы провал:

  • Круг в захваченном изображении искажен в процессе обработки.
  • Изображение с более низким разрешением двойное обрезано в трубопроводе изображения, создавая различные FOV между изображениями с высоким и низким разрешением.
  • Круг в захваченном изображении обрезан из -за чрезвычайного запроса по захвату соотношения сторон, снижающего высоту или ширину изображения.
  • Круг на захваченном изображении имеет отражение в центре и не выглядит полностью заполненным.

test_multi_camera_alenment

Проверяет параметры калибровки камеры, связанные с позиционированием камеры для систем нескольких камеры. Используя многокамерные физические суб-камеры, сфотографируется с одной из физических камер. Находит центр круга. Проецирует Circle Center к миру координаты для каждой камеры. Сравнивает разницу между центрами круга камер в мировых координатах. Воспроизведения мировой координации координат пикселя и сравнение с оригиналами как проверка достоверности. Сравнивает размеры круга, проверяя, различаются ли фокусные расстояния камер.

Протестировано API:

Проход: Центры кружков и размеры, как и ожидалось, на прогнозируемых изображениях по сравнению с захваченными изображениями, использующими данные калибровки камеры и фокусные расстояния.

Механизмы провал:

  • 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:

Пропуск: изображения не растянуты, центр изображений не отличается более чем на 3%, и сохранится максимально возможный FOV (поле зрения).

test_preview_stabilization_fov

Проверяет поддерживаемые размеры предварительного просмотра, чтобы убедиться, что FOV обрезан соответствующим образом. Тест снимает два видео, один со стабилизацией ON просмотра, а другой - с превью. OFF . Репрезентативный кадр выбирается из каждого видео и анализируется, чтобы убедиться, что изменения FOV в двух видео находятся в пределах спецификации.

Протестировано API:

Проход: соотношение сторон округа остается постоянным, центральное местоположение круга остается стабильным, а размер круга не изменяется больше, чем на 20%.

test_video_aspect_ratio_and_crop

Снимает видео с кругом внутри квадрата над всеми форматами видео. Извлекает ключевые кадры, и проверяет соотношение сторон круга не изменяется, обрезанные изображения сохраняют круг в центре, а размер круга не изменяется для постоянного формата или с различным разрешением (проверка поля зрения).

Протестировано API:

Pass: видео кадры не растянуты, центр кадров не отличается более чем на 3%, а максимально возможный FOV (поле зрения) сохраняется.

сцена5

Сцена5 требует равномерно освещенной серой сцены. Это достигается диффузором, помещенным над объективом камеры. Мы рекомендуем следующий диффузор: www.edmundoptics.com/optics/window-diffusers/optical-diffusers/opal-diffusing-glass/46168 .

Чтобы подготовить сцену, прикрепите диффузор перед камерой и укажите камеру на источник освещения около 2000 года. Изображения, снятые для сцены5, требуют диффузного освещения без очевидных функций. Ниже приведен пример изображения:

сцена5

Сцена5 захват

test_lens_shading_and_color_uniformity

Испытания о том, что коррекция затенения объектива применяется соответствующим образом, и цвет монохромной единой сцены, равномерно распределяется. Выполняет этот тест на кадре YUV с Auto 3A. Затенение линз оценивается на основе канала Y. Измеряют среднее значение y для каждого указанного блока выборки и определяет проход или сбой, сравнивая с центром y. Тест на однородность цвета оценивается в пространстве R/G и B/G.

Протестировано API:

Пропуск: при указанном радиусе изображения дисперсия значения R/G и B/G должна составлять менее 20% для прохождения теста.

сцена6

Сцена6 - это сетка с небольшими кругами с квадратом в одном углу, чтобы указать ориентацию. Небольшие круги необходимы для проверки функции масштабирования в большом диапазоне.

сцена6

сцена6

test_in_sensor_zoom

Проверяет поведение функции Zoom Zoom in-Camer, которая создает обрезанные необработанные изображения.

С вариантом использования потока, установленным в CROPPED_RAW , тест берет два захвата над диапазоном масштабирования, полное полевое изображение (FOV) и обрезанное сырое изображение. Тест преобразует изображения в массивы RGB, снижает полноразмерное обрезанное сырое изображение в размер, сообщаемый SCALER_RAW_CROP_REGION , и вычисляет разницу средней квадратной (среднеквадратичной) трехмерного корня (среднеквадратичных) между двумя изображениями.

Протестировано API:

Проход: разница средней квадратной (среднеквадратичной (среднеквадратичной) трехмерного корня между обрезанным сырым изображением и полным изображением сырого FOV составляет менее 1%.

test_zoom

Проверяет поведение масштабирования камеры. Принимает захваты через диапазон увеличения и проверяет, становятся ли круги больше, поскольку камера увеличивается.

Протестировано API:

Пропуск: относительный размер захваченного круга является точным по сравнению с запрошенным соотношением масштабирования, чтобы гарантировать, что камера правильно увеличивается.

test_zoom

test_zoom, чтобы найти контур круга, ближайший к центру.

test_low_latency_zoom

Проверяет камеру низкого уровня задержки. Принимает захваты в диапазоне Zoom с android.control.settingsOverride = 1 (SETTINGS_OVERRIDE_ZOOM) и проверяет, соответствуют ли круги в выходных изображениях соотношениях Zoom в метаданных захвата.

Протестировано API:

Пропуск: Относительный размер захваченного круга является точным по сравнению с метаданными результатами масштабирования.

test_preview_video_zoom_match

Проверяет это при записи и масштабировании, предварительный просмотр видео и вывод видео и записывает один и тот же вывод. Вычисляет размер круга, ближайший к центру при различных соотношениях масштабирования, и проверяет, увеличивается ли размер круга с увеличением соотношения Zoom.

Протестировано API:

Пропуск: Относительный размер захваченного круга является точным против запрошенного соотношения масштабирования в видео и предварительном просмотре.

Vga_640x480_key_frame.png

Vga_640x480_key_frame.png (до Zoom)

preview_640x480_key_frame.png

preview_640x480_key_frame.png (до Zoom)

Vga_640x480_key_frame_zoomed.png

Vga_640x480_key_frame.png (после Zoom)

preview_640x480_key_frame_zoomed.png

preview_640x480_key_frame.png (после Zoom)

Scene_extensions

Тесты scene_extensions предназначены для расширений камеры и должны использовать камеру ITS в коробке , поскольку они требуют точного управления средой тестирования.

Scene_hdr

Сцена scene_hdr состоит из портрета слева и низкоконтрастного QR-кода справа.

Scene_hdr

Scene_hdr

test_hdr_extension

Проверка расширения HDR . Принимает захваты с включенным расширением и без него, и проверяет, делает ли расширение QR -код более обнаруживаемым.

Протестировано API:

Пропуск: расширение HDR уменьшает количество изменений контрастности, необходимых для обнаружения QR -кода или уменьшения градиента по QR -коду.

Scene_night

Сцена scene_night состоит из белого круга с четырьмя меньшими кругами внутри, все на черном фоне. Меньший круг в правом верхнем углу темнее других, чтобы указать ориентацию.

Scene_night

Scene_night

test_night_extension

Проверка ночи расширения . Принимает захваты с включенным расширением и без него, и проверяет на следующее:

  • Захват с включенным расширением ночи занимает больше времени.
  • Захват с включенным расширением ночного расширения является ярче или имеет артефакты сцены с улучшенным внешним видом.

Протестировано API:

Пропуск: по сравнению с захватом без включенного удлинения ночи, захват с включенным расширением ночи занимает не менее 0,5 секунды дольше. Захват должен быть как минимум на 10% ярче, или серые точки в сцене должны быть на 20 пикселей ниже, чем центр окружающего круга.

Sensor_fusion

Тесты слияния датчика требуют определенного движения телефона перед шаблоном шахматной доски. Для оптимальных результатов убедитесь, что тестовая диаграмма установлена ​​плоской. Диаграммы, которые не плоские, влияют на расчеты вращения для многих тестов. Тесты sensor_fusion могут быть автоматизированы с помощью слияния датчика .

шахматная доска

Изображение шахматной доски

test_multi_camera_frame_sync

Тесты, которые создают временные метки, захваченные логической камерой, находятся в пределах 10 мс, вычисляя углы квадратов в шахте, чтобы определить метку времени.

Протестировано API:

Пропуск: Угол между изображениями с каждой камеры не меняется заметно, поскольку телефон вращается.

test_preview_stabilization

Тесты, которые стабилизировали предварительное видео видео, вращаются меньше, чем гироскоп.

Протестировано API:

Пропуск: максимальное угловое вращение над кадрами составляет менее 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.png

    test_sensor_fusion_gyro_events

  • test_sensor_fusion_plot_rotations : показывает выравнивание событий гироскопа и камеры. Этот сюжет должен показывать соответствующее движение между камерой и гироскопом до +/- 1 мс.

    test_sensor_fusion_plot_rotations.png

    test_sensor_fusion_plot_rotations

Протестировано API:

Проход: камера и гироскоп 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:

Пропуск: максимальное угловое вращение над кадрами составляет менее 60% вращения гироскопа.

Ниже приведены примеры видео со стабилизацией и без них.

  • Образец видео со стабилизацией

  • Образец видео без стабилизации

test_led_snapshot

Проверки, которые светодиодные снимки не насыщают и не протягивают изображение.

Этот тест добавляет контроллер освещения в фьюжн -коробку датчика для управления огнями. С OFF огнями, тест берет захват с режимом AUTO_FLASH , установленным для ON . Во время этого захвата тест запускает последовательность предшественников запуска с START триггера aePrecapture , и устанавливает намерение захвата Preview , чтобы взять захват с помощью Flash.

Поскольку захват имеет отличительную горячую точку из -за вспышки, тест вычисляет среднее изображение вспышки всего захвата и проверяет, находится ли значение в диапазоне (68, 102). Чтобы проверить, разумно ли изображение сбалансировано, тест рассчитывает соотношения R/G и B/G и проверяет, находятся ли соотношения в пределах 0,95 и 1,05.

Протестировано API:

Проход: соотношения R/G и B/G находятся в пределах 0,95 и 1,05. Среднее среднее изображение находится в пределах диапазона (68, 102).