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

На этой странице представлен полный список тестов в рамках набора тестов изображения камеры (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:

Пройдено: разница между кадрами составляет не менее 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_request_capture_match

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

Протестированные 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_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_capture

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

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

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

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_x_iso

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

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

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

Механизм отказа:

  • В test_exposure_plot_means.png по мере увеличения значений множителя усиления (ось X) нормализованные средние значения плоскости RGB (ось Y) начинают отклоняться от значений множителя низкого усиления.

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_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_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_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_num_faces

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

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

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

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

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) между двумя изображениями.

Кроме того, этот тест проверяет, что выходные данные YUV для всех поддерживаемых вариантов использования потока достаточно похожи на YUV со сценарием использования STILL_CAPTURE .

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

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

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

test_default_camera_hdr

Проверяет, что захват камеры по умолчанию имеет режим Ultra HDR для класса производительности 15, как указано в разделе 2.2.7.2 Камера CDD.

Пройдено: захват камеры по умолчанию ДОЛЖЕН быть Ultra HDR для устройства с классом производительности 15.

сцена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

В сцене 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

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_imu_drift

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

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

Проходить:

  • Дрейф гироскопа за время испытаний составляет менее 0,01 рад.
  • Отклонение показаний гироскопа составляет менее 1E-7 рад 22 /Гц за время испытания.
  • Дрейф вектора вращения составляет менее 0,01 рад за время испытаний.
  • (Пока не обязательно) дрейф гироскопа составляет менее 1 градуса в секунду.

test_imu_drift_gyro_drift.png

test_imu_drift_gyro_drift.png

test_imu_drift_rotation_vector_drift.png

test_imu_drift_rotation_vector_drift.png

test_landscape_to_portrait

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

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

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

test_landscape_to_portrait

test_landscape_to_portrait.png

test_lens_movement_reporting

Проверяет, правильно ли сообщается о флаге движения объектива. Снимает серию из 24 изображений, причем первые 12 кадров находятся на оптимальном расстоянии фокусировки (согласно 3A), а последние 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 могут быть чувствительны к выравниванию, поэтому начиная с 15, вы можете использовать check_alignment.py в каталоге инструментов, чтобы обеспечить проверку выравнивания DUT и диаграммы.

Сцена4

Сцена4

test_30_60fps_preview_fov_match

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

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

Пропустите: изображения не растянуты, центр изображений не отличается более чем на 3%, а максимальное изменение соотношения сторон от 30 кадров в секунду и 60 кадров в секунду не более 7,5%

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

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

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 могут быть чувствительны к выравниванию, поэтому, начиная с 15, вы можете использовать check_alignment.py в каталоге инструментов, чтобы обеспечить проверку выравнивания DUT и диаграммы.

Сцена6

Сцена6

test_in_sensor_zoom

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

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

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

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

test_zoom

Проверяет поведение масштабирования камеры. Принимает захваты в диапазоне Zoom и проверяет, становятся ли круги больше по мере увеличения камеры. Для каждого формата (YUV, JPEG) тот же сеанс захвата камеры используется для сходимости 3A и захвата.

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

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

test_zoom

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

test_low_latency_zoom

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

Протестировано 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)

test_preview_zoom

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

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

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

test_zoom

test_preview_zoom Изображения, показывающие выбранное кружок, ближайший к центру

test_session_characteristics_zoom

Проверяет диапазон соотношения Zoom для всех поддерживаемых конфигураций сеанса, перечисленных в CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION . Для каждой из этих конфигураций, если CameraDeviceSetup#isSessionConfigurationSupported включает возврат истина, тест подтверждает, что диапазон соотношений Zoom возвращается в CameraDeviceSetup#getSessionCharacteristics может быть достигнут.

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

Пропуск: как с минимальным, так и максимальным соотношением масштабирования можно достичь для каждого поддерживаемого SessionConfiguration указанного в CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION .

Сцена7

Сцена7 - это прямоугольная рама, разделенная на четыре равных квадранта, каждый из которых заполнен различным цветом. В центре прямоугольника находится наклонная график краев для проверки резкости. Четыре маркера ARUCO выровнены с четырьмя наружными углами прямоугольника, чтобы помочь в получении точных координат основной рамы прямоугольника при различных соотношениях увеличения.

Сцена7

Сцена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:

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

Сцена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:

Проход: AE и AWB проверяют оба прохода.

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

  • Точное обнаружение всех четырех маркеров ARUCO имеет важное значение для этого теста. Если первоначальное обнаружение не удается, система пытается пройти второй проход по обнаружению, используя черно -белую версию изображения. Следующее изображение серого представляет вторичный этап обработки.

    Аруко маркеры смещения

Сцена9

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

Сцена9

Сцена9

test_jpeg_high_entropy

Тестирует, что сжатие камеры JPEG работает на сцене9 с высокой энтропией, а коэффициент качества JPEG составляет 100%. Коэффициент масштабирования увеличивается, чтобы убедиться, что сцена, отображаемая на планшете, заполняет поле зрения камеры.

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

Pass: файл JPEG сжимается правильно, написан и читайте обратно с диска.

test_jpeg_quality

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

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

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

test_jpeg_quality

Pixel 4 Задняя камера Luma/Chroma DQT Матрица Средняя по сравнению с качеством JPEG

test_jpeg_quality не удалось

Неудачный тестовый пример

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

Scene_video

Сцена сцены scene_video - это видео -сцена. Он состоит из четырех разных цветных кругов, движущихся взад -вперед с разными частотами кадров на белом фоне.

Scene_video

test_preview_frame_drop

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

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

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

Scene_extensions

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

Scene_hdr

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

Scene_hdr

Scene_hdr

test_hdr_extension

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

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

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

Scene_low_light

Сцена 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:

Пропуск: Среднее значение LUMA первых 6 квадратов должно составлять не менее 85, а средняя разница в значении LUMA последовательных квадратов до квадратов 5 и 6 должна составлять не менее 17.

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

SCHEEE_LOW_LIGHT_INATE_PASS

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:

Пропуск: Среднее значение LUMA первых 6 квадратов должно составлять не менее 70, а средняя разница в значении LUMA последовательных квадратов вплоть до квадратов 5 и 6 должна составлять не менее 17.

Scene_flash

Тесты scene_flash требуют темной сцены в ящике слияния датчика.

test_auto_flash

Тесты, которые автоматическая флеша запускаются в темной сцене для камер обращаются к задней части и фронта. Для фронтальных камер Auto-Flash использует экран, чтобы осветить сцену, а не физическую вспышку. Тест проверяет, что автоматическая флеша упускается путем проверки того, что центр изображения плитки ярче с включенным автоматическим флашом. Чтобы вызвать автоматическую плату, свет в испытательной установке должен быть выключен. Огни можно отключить автоматически с помощью контроллера Arduino. Сцена должна быть совершенно темной, чтобы тест работал правильно. Приложение JetPack Camera ( JCA ) должно быть установлено на устройстве перед тестированием. Автофлляция для камер, обращенных к задней части, полагается на то, что состояние AE будет вызвано, но автоматическая флэша для фронтальных камер не полагается на AE и всегда запускается.

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

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

test_flash_strength

Тесты, которые управляют прочностью вспышки в SINGLE режиме, реализованы правильно.

Проверяет, что если устройство поддерживает управление силой вспышки во время использования камеры в SINGLE режиме, прочность вспышки изменяется с различными запрошенными уровнями прочности. Проверяет, что управление силой вспышки работает с различными AE_MODES . Например, если режим автоматического эксплуатации ON или OFF , уровень прочности вспышки влияет на яркость, и если режим ON_AUTO_FLASH , уровень прочности вспышки не влияет на яркость. Чтобы провести тест, свет в испытательной установке должен быть выключен. Огни можно отключить автоматически с помощью контроллера Arduino. Сцена должна быть совершенно темной, чтобы тест работал правильно.

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

Проходить:

Когда режим автоматического эксплуатации 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:

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

test_preview_min_frame_rate

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

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

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

test_torch_strength

Тесты, которые управляют силой вспышки в режиме TORCH , реализованы правильно.

Проверяет, что если устройство поддерживает управление силой вспышки во время использования камеры в режиме TORCH , сила факела изменяется с различными запрошенными уровнями прочности. Проверяет, что управление силой вспышки работает с различными AE_MODES . Например, если режим автоматического эксплуатации ON или OFF , уровень прочности вспышки влияет на яркость, и если режим ON_AUTO_FLASH , уровень прочности вспышки не влияет на яркость. Проверяет, что сила факела остается неизменной на протяжении всего взрыва, имитируя сеанс захвата видео. Чтобы провести тест, свет в испытательной установке должен быть выключен. Огни можно отключить автоматически с помощью контроллера Arduino. Сцена должна быть совершенно темной, чтобы тест работал правильно.

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

Проходить:

Когда режим автоматического эксплуатации 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:

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

test_lens_intrinsic_calibration_example.png

Пример графика test_lens_intrinsic_calibration показывает изменения основных точек в пикселях для каждого кадра

test_multi_camera_frame_sync

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

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

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

test_preview_distortion

Испытания, которые искажают, корректируются на протяжении каждой кадры предварительного просмотра, взятые на различных уровнях масштабирования. Для каждой кадры предварительного просмотра тест вычисляет идеальные точки на основе внутренней камеры и внешней линии. На примере изображения идеальные точки показаны зелеными; Фактические точки показаны красными. Ошибка искажения рассчитывается на основе среднего квадратного пиксельного расстояния между фактическими точками и идеальными точками. Зеленые и красные блики на изображении используются для визуального обнаружения области ошибки искажения.

test_preview_distortort_example.jpg

Изображение шахматной доски с идеальными точками в виде зеленых и фактических точек в качестве красных

Протестировано 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% вращения гироскопа.

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

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

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

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:

Проход: для каждой поддерживаемой комбинации функций:

  • Предварительный просмотр стабилизируется, если включен превью.
  • Частота кадров предварительного просмотра попадает в настройку AE_TARGET_FPS_RANGE .
  • Цветное пространство Preview Stream соответствует тому, что установлено.
  • Ультра HDR захват имеет действительную карту усиления.