Pruebas ITS de cámara

Esta página proporciona una lista completa de las pruebas realizadas en Camera Image Test Suite (ITS), que forma parte del Verificador de Android Compatibility Test Suite (CTS). Las pruebas ITS son pruebas funcionales, lo que significa que no miden la calidad de la imagen, sino que todas las funciones de la cámara anunciadas funcionan como se esperaba. Este documento permite a los desarrolladores y evaluadores comprender qué hacen las pruebas individuales y cómo depurar las fallas de las pruebas.

La cámara ITS realiza pruebas según las propiedades requeridas de la cámara, el nivel de API y el nivel de clase de rendimiento multimedia (MPC). Para el nivel de API, ITS utiliza ro.product.first_api_level para controlar las pruebas agregadas en un nivel de API específico que prueban experiencias de usuario negativas para la funcionalidad en niveles de API inferiores. ITS utiliza ro.vendor.api_level para realizar pruebas de funciones agregadas en un nivel de API específico que requieren nueva capacidad de hardware. Si se define ro.odm.build.media_performance_class para un dispositivo, ITS requiere que se ejecuten pruebas específicas según el nivel de MPC.

Las pruebas se agrupan por escena de la siguiente manera:

  • scene0 : Captura de metadatos, jitter, giroscopio, vibración
  • escena1 : exposición, sensibilidad, compensación EV, YUV frente a JPEG/RAW
  • escena2 : Detección de rostros, pruebas que requieren escenas en color u oscuridad total
  • Escena 3 : mejora de bordes, movimiento de lente.
  • escena4 : Relación de aspecto, recorte, campo de visión
  • escena 5 : sombreado de lentes
  • Escena 6 : Zoom
  • scene_extensions : extensiones de cámara
  • sensor_fusion : compensación de sincronización de cámara/giroscopio

Consulte las secciones individuales para obtener una descripción de cada escena.

escena0

Las pruebas de Scene0 no requieren información de escena específica. Sin embargo, el teléfono debe estar estacionario para realizar pruebas de giroscopio y vibración.

prueba_burst_capture

Verifica que todo el proceso de captura pueda mantenerse al día con la velocidad de captura de tamaño completo y el tiempo de CPU.

API probadas:

Pasar: captura una ráfaga de imágenes en tamaño completo y la cámara es lo suficientemente rápida como para evitar el tiempo de espera.

test_capture_result_dump

Prueba que se devuelve un resultado de captura de una captura manual y luego lo vuelca.

API probadas:

Pasar: completa la captura y vuelca los resultados de la captura.

prueba_gyro_bias

Prueba si el giroscopio tiene una salida estable cuando el dispositivo está estacionario. Los datos se representan como un promedio de 20 puntos de datos.

API probadas:

Pasa: el delta de la lectura del giroscopio es inferior a 0,01 con el tiempo.

test_gyro_bias_plot.png

test_gyro_bias_plot.png

prueba_jitter

Mide la fluctuación en las marcas de tiempo de la cámara.

API probadas:

Pasa: hay al menos un delta de 30 ms entre fotogramas.

test_jitter_plot.png

test_jitter_plot.png (Tenga en cuenta el pequeño rango del eje y. En realidad, la fluctuación es pequeña en este gráfico).

prueba_metadatos

Prueba la validez de las entradas de metadatos. Mira los resultados de la captura y las características de la cámara de los objetos. Esta prueba utiliza valores de exposición y ganancia auto_capture_request porque el contenido de la imagen no es importante.

API probadas:

Pasar: nivel de hardware, rollingShutterSkew , etiquetas frameDuration , timestampSource , croppingType , blackLevelPattern , pixel_pitch , FoV y distancia hiperfocal están presentes y tienen valores válidos.

test_param_sensitivity_burst

Prueba que el parámetro android.sensor.sensitivity se aplica correctamente en ráfaga. Inspecciona únicamente los metadatos de salida.

API probadas:

Pasa: Los datos de salida tienen una tolerancia de error inferior al 0,2%.

prueba_lectura_escritura

Prueba que el dispositivo escribe los valores correctos de exposición y ganancia leyendo los metadatos de captura.

API probadas:

Pasar: los valores de lectura y escritura coinciden en todas las tomas.

eventos_sensor_prueba

Prueba que el dispositivo consulta e imprime eventos de sensores para dispositivos que anuncian soporte de fusión de sensores. Los sensores esperados son acelerómetro, giroscopio y magnetómetro. Esta prueba sólo funciona si la pantalla está encendida, es decir, el dispositivo no está en modo de espera.

API probadas:

Pasar: Se reciben eventos para cada sensor.

prueba_color_sólido_patrón_prueba

Prueba que los patrones de prueba de colores sólidos se generen correctamente para silenciar la cámara. Si se admite el silenciamiento de la cámara, se deben admitir patrones de prueba de colores sólidos. Si no se admite el silenciamiento de la cámara, los patrones de prueba de colores sólidos solo se prueban si se anuncia la capacidad.

Si se admiten imágenes RAW, también se prueba la asignación de color. Los colores probados son negro, blanco, rojo, azul y verde. Para las cámaras que no admiten imágenes RAW, solo se prueba el negro.

API probadas:

Pasa: Los patrones de prueba sólidos admitidos tienen el color correcto y hay poca variación en la imagen.

prueba_test_pattern

Prueba el parámetro android.sensor.testPatternMode para capturar fotogramas para cada patrón de prueba válido y comprueba que los fotogramas se generen correctamente para colores sólidos y barras de colores. Esta prueba incluye los siguientes pasos:

  1. Captura imágenes para todos los patrones de prueba compatibles.
  2. Realiza una comprobación sencilla de la corrección de patrones de prueba de colores sólidos y barras de colores.

API probadas:

Pasa: los patrones de prueba admitidos se generan correctamente.

prueba_prueba_patrones_2

test_test_patterns_2.jpg

test_tonemap_curve

Prueba la conversión del patrón de prueba de RAW a YUV con mapa de tonos lineal. Esta prueba requiere android.sensor.testPatternMode = 2 (COLOR_BARS) para generar un patrón de imagen perfecto para la conversión de mapas de tonos. Garantiza que la canalización tenga salidas de color adecuadas con un mapa de tonos lineal y una entrada de imagen ideal (se basa en test_test_patterns ).

API probadas:

Pasar: El YUV y el RAW se parecen entre sí.

test_tonemap_curve_raw_2

test_tonemap_curve_raw_2.jpg

test_tonemap_curve_yuv_2.jpg

test_tonemap_curve_yuv_2.jpg

prueba_marca_hora_unificada

Prueba si los eventos de imagen y sensor de movimiento están en el mismo dominio de tiempo.

API probadas:

Pasar: las marcas de tiempo de movimiento se encuentran entre las dos marcas de tiempo de la imagen.

prueba_vibración_restricción

Prueba si la vibración del dispositivo funciona como se esperaba.

API probadas:

Pasar: el dispositivo no vibra cuando lo silencia la API de restricción de audio de la cámara.

escena 1

escena1 es un gráfico gris. El gráfico gris debe cubrir el 30% central del campo de visión de la cámara. Se espera que el gráfico gris desafíe moderadamente el 3A (exposición automática, balance de blancos automático, enfoque automático) ya que la región central no tiene características. Sin embargo, la solicitud de captura especifica la escena completa que incluye características suficientes para que 3A converja.

Las cámaras RFoV se pueden probar en el WFoV o en el banco de pruebas RFoV. Si se prueba una cámara RFoV en el equipo de prueba WFoV, el gráfico se escala en ⅔ para garantizar algunos límites para el gráfico gris en el FoV para ayudar a que 3A converja. Para obtener descripciones más detalladas de los equipos de prueba de cámaras, consulte Camera ITS-in-a-box .

escena 1

Escena 1: gráfico de tamaño completo (izquierda). Gráfico escalado ⅔ (derecha).

prueba_3a

Prueba la convergencia de 3A con un objetivo moderadamente desafiante.

API probadas:

Pasa: 3A converge y los valores de 3A devueltos son válidos.

prueba_ae_af

Prueba los algoritmos de exposición automática (AE) y enfoque automático (AF) 3A individualmente.

API probadas:

Pasa: 3A converge y los valores de 3A devueltos son legales.

test_ae_precapture_trigger

Prueba la máquina de estado AE cuando se utiliza el disparador de precaptura. Captura cinco solicitudes manuales con AE desactivada. La última solicitud tiene un activador de captura previa de AE, que debe ignorarse porque AE está deshabilitada.

API probadas:

Pasa: AE converge.

prueba_auto_vs_manual

Las pruebas que capturaron tomas automáticas y manuales tienen el mismo aspecto.

API probadas:

Pasa: Las ganancias y transformaciones del balance de blancos manual reportadas en cada resultado de captura coinciden con la estimate del balance de blancos automático del algoritmo 3A de la cámara.

prueba_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

prueba_negro_blanco

Prueba que el dispositivo produce imágenes completamente en blanco y negro. Realiza dos capturas, la primera con una ganancia extremadamente baja y una exposición corta, lo que da como resultado una fotografía en negro, y la segunda con una ganancia extremadamente alta y una exposición larga, lo que da como resultado una fotografía en blanco.

API probadas:

Pasar: Produce imágenes en blanco y negro. Los canales saturados de imágenes blancas tienen valores RGB de [255, 255, 255] con un margen de error de menos del 1% de diferencia.

prueba_negro_blanco_negroprueba_negro_blanco_negro
prueba_negro_blanco_negro.jpg prueba_negro_blanco_blanco.jpg

test_black_white_plot_means

test_black_white_plot_means.png

test_burst_sameness_manual

Toma 5 ráfagas de 50 imágenes con configuración de captura manual y comprueba que todas sean idénticas. Esta prueba se puede utilizar para identificar si hay fotogramas esporádicos que se procesan de forma diferente o tienen artefactos.

API probadas:

Pasa: Las imágenes son idénticas visualmente y en valores RGB.

Fallo: muestra un pico o una caída del gráfico de promedio RGB al comienzo de cada ráfaga.

  • La tolerancia es del 3 % para first_API_level < 30
  • La tolerancia es del 2% para 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

resultado_captura_prueba

Prueba que los datos válidos regresan en los objetos CaptureResult . Realiza una captura automática, manual y automática.

API probadas:

Pasar: los metadatos son válidos para todas las capturas y la configuración manual no se filtra en la segunda captura automática. Traza la corrección del sombreado de la lente para las capturas.

test_capture_result_plot_lsc_auto_ch0

test_capture_result_plot_lsc_auto_ch0.png

prueba_crop_region_raw

Prueba que las transmisiones RAW no se pueden recortar.

API probadas:

Pasar: las imágenes YUV se recortan en el centro, pero no las imágenes 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

Pruebas que funcionan las regiones de cultivo. Toma una imagen completa y crea parches de 5 regiones diferentes (esquinas y centro). Toma imágenes con recorte establecido para las 5 regiones. Compara los valores del parche y de la imagen recortada.

API probadas:

Pasar: la imagen de la región recortada coincide con el parche que corresponde a la imagen recortada.

test_dng_noise_model

Verifica que los parámetros del modelo sin formato DNG sean correctos. El gráfico representa la varianza medida de un parche central de la tarjeta gris en tomas sin procesar capturadas en un rango de sensibilidades y compara estos valores con la varianza esperada en cada sensibilidad por el modelo de ruido DNG en la cámara HAL (basado en el Parámetros O,S devueltos en los objetos de resultado de la captura). Para obtener más detalles sobre el modelo de ruido DNG, descargue el siguiente documento sobre el modelo de ruido DNG .

API probadas:

Pasa: Los parámetros del modelo sin formato DNG son correctos. Los valores RGB esperados coinciden con los valores RGB reales medidos.

test_dng_noise_model_plog

test_dng_noise_model_plog.png

test_ev_compensación_avanzada

Prueba que se aplica la compensación del valor de exposición (EV). La prueba aumenta la exposición en ocho pasos y verifica el brillo medido versus el brillo esperado. Los valores esperados se calculan a partir del brillo de la imagen sin aplicar compensación EV y el valor esperado se saturará si los valores calculados exceden el rango de valores de la imagen real. La prueba falla si los valores esperados y los valores medidos no coinciden o las imágenes se sobreexponen en cinco pasos.

API probadas:

Pasar: Las imágenes muestran una exposición creciente sin sobreexponer en cinco pasos.

test_ev_compensation_advanced_plot_means

test_ev_compensation_advanced_plot_means.png

test_ev_compensación_basic

Prueba que la compensación EV se aplica utilizando un rango creado con CONTROL_AE_COMPENSATION_STEP . Se capturan ocho cuadros en cada valor de compensación.

API probadas:

Pasa: captura el aumento de luma con una mayor configuración de compensación EV, y los ocho fotogramas capturados para cada configuración de compensación EV tienen valores de luma estables.

test_ev_compensación_basic

test_ev_compensación_basic.png

exposición_prueba

Prueba que se logra una exposición constante ya que ISO y el tiempo de exposición varían. Toma una serie de fotografías en las que se elige ISO y tiempo de exposición para equilibrarse entre sí. Los resultados deberían tener el mismo brillo, pero a lo largo de la secuencia la imagen debería volverse más ruidosa. Verifica que los valores medios de los píxeles de muestra estén cerca entre sí. Garantiza que las imágenes no estén fijadas en 0 o 1 (lo que las haría parecer líneas planas). La prueba también se puede ejecutar con imágenes RAW configurando el indicador debug en su archivo de configuración.

API probadas:

Pasa: las imágenes tienen el mismo brillo, pero se vuelven más ruidosas con un ISO más alto. Los planos RGB son planos cuando el valor de exposición ISO* es constante en el espacio de ganancia probado.

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

prueba_jpeg

Las pruebas que convirtieron imágenes YUV e imágenes JPEG del dispositivo tienen el mismo aspecto. La prueba toma el 10% central de la imagen, calcula el valor RGB y verifica que coincidan.

API probadas:

Pasa: La diferencia RGB promedio entre cada imagen es inferior al 3%.

test_jpeg_fmt=jpg.jpgtest_jpeg=fmt=yuv.jpg
test_jpeg_fmt=jpg.jpg test_jpeg=fmt=yuv.jpg

prueba_enganche

Prueba que los ajustes (exposición y ganancia) se fijan en el fotograma correcto para las cámaras FULL y LEVEL_3 . Realiza una serie de tomas utilizando solicitudes consecutivas, variando los parámetros de solicitud de captura entre tomas. Comprueba que las imágenes tienen las propiedades esperadas.

API probadas:

Pasa: Las imágenes [2, 3, 6, 8, 10, 12, 13] tienen ISO o exposición aumentada y aparecen con medios RGB más altos en 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

prueba_linealidad

Prueba que el procesamiento del dispositivo se puede invertir a píxeles lineales. Captura una secuencia de disparos con el dispositivo apuntando a un objetivo uniforme.

API probadas:

Pasa: los valores R, G, B deben aumentar linealmente con una mayor sensibilidad.

test_linearity_plot_means

test_linearity_plot_means.png

prueba_bloqueada_burst

Prueba el bloqueo 3A y la ráfaga YUV (usando la configuración automática). Esta prueba está diseñada para pasar incluso en dispositivos limitados que no tienen MANUAL_SENSOR o PER_FRAME_CONTROLS . La prueba verifica la coherencia de la imagen YUV mientras la verificación de la velocidad de fotogramas se realiza en CTS.

API probadas:

Pasa: Las capturas parecen consistentes.

prueba_bloqueada_burst_frame0

test_locked_burst_frame0.jpg

prueba_bloqueada_burst_frame1

test_locked_burst_frame1.jpg

prueba_bloqueada_burst_frame2

test_locked_burst_frame2.jpg

prueba_param_color_corrección

Prueba que los parámetros android.colorCorrection.* se aplican cuando se configuran. Toma fotografías con diferentes valores de transformación y ganancia, y prueba que se vean correspondientemente diferentes. La transformación y las ganancias se eligen para que la salida sea cada vez más roja o azul. Utiliza un mapa de tonos lineal. El mapeo de tonos es una técnica utilizada en el procesamiento de imágenes para asignar un conjunto de colores a otro para aproximar la apariencia de imágenes de alto rango dinámico en un medio que tiene un rango dinámico más limitado.

API probadas:

Pasa: los valores R y B aumentan según la transformación.

test_param_color_correction_plot_means

test_param_color_correction_plot_means.png

*El eje x son las solicitudes de captura: 0 = unidad, 1 = refuerzo rojo, 2 = refuerzo azul

test_param_color_corrección_req=0

test_param_color_correction_req=0.jpg

test_param_color_correctness_req=1

test_param_color_correctness_req=1.jpg (aumento R)

test_param_color_corrección_req=2

test_param_color_correction_req=2.jpg (aumento B)

test_param_exposure_time

Prueba que se aplica el parámetro android.sensor.exposureTime .

API probadas:

Pasar: Cada toma es más brillante que la toma anterior.

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

Prueba que se aplica el parámetro android.flash.mode . Establece manualmente la exposición para que esté en el lado oscuro, de modo que sea obvio si el flash se disparó o no, y utiliza un mapa de tonos lineal. Comprueba el centro con la imagen del mosaico para ver si se ha creado un gradiente grande para verificar si se disparó el flash.

API probadas:

Pasar: El centro de la imagen del mosaico tiene un gran gradiente, lo que significa que el flash se disparó.

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_reducción_de_ruido

Prueba que el parámetro android.noiseReduction.mode se aplica correctamente cuando está configurado. Captura imágenes con la cámara poco iluminada. Utiliza una alta ganancia analógica para garantizar que la imagen capturada tenga ruido. Captura tres imágenes, para NR desactivado, "rápido" y "alta calidad". También captura una imagen con baja ganancia y NR desactivada, y utiliza la variación de esto como base. Cuanto mayor sea la SNR (relación señal-ruido), mejor será la calidad de la imagen.

API probadas:

Pasa: La SNR varía con los diferentes modos de reducción de ruido y se comporta de manera similar al gráfico siguiente.

test_param_noise_reduction_plot_SNRs

test_param_noise_reduction_plot_SNRs.png

0: APAGADO, 1: RÁPIDO, 2: HQ, 3: MIN, 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_sensibilidad

Prueba que se aplica el parámetro android.sensor.sensitivity . La prueba aumenta la sensibilidad en 5 pasos con exposición fija para cada disparo.

API probadas:

Pasa: RGB significa que el 10% central se vuelve más brillante con mayor sensibilidad.

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

Prueba que se aplica el parámetro android.shading.mode .

API probadas:

Pasar: los modos de sombreado se cambian y los mapas de sombreado de la lente se modifican como se esperaba.

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

Prueba que se aplica el parámetro android.tonemap.mode. Aplica diferentes curvas de mapa de tonos a cada canal R, G, B y verifica que las imágenes de salida se modifiquen como se esperaba. Esta prueba consta de dos pruebas, prueba1 y prueba2.

API probadas:

Aprobar:

  • prueba1: Ambas imágenes tienen un mapa de tonos lineal, pero n=1 tiene un gradiente más pronunciado. El canal G (verde) es más brillante para la imagen n=1.
  • prueba2: Mismo mapa de tonos, pero diferente longitud. Las imágenes son las mismas.
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

Comprueba el aumento de sensibilidad posterior a RAW. Captura un conjunto de imágenes RAW y YUV con diferente sensibilidad, publica una combinación de aumento de sensibilidad RAW y comprueba si la media de píxeles de salida coincide con la configuración solicitada.

API probadas:

Pasar: las imágenes RAW se vuelven más oscuras a medida que aumenta el aumento, mientras que las imágenes YUV mantienen el brillo constante

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_sensibilidad

Captura un conjunto de imágenes sin procesar con ganancias crecientes y mide el ruido. Captura solo sin formato, en una ráfaga.

API probadas:

Pase: Cada disparo es más ruidoso que el anterior, ya que la ganancia va aumentando.

Utiliza la variación de la celda central de la cuadrícula de estadísticas.

test_raw_burst_sensitivity_variance

test_raw_burst_sensitivity_variance.png

prueba_raw_exposición

Captura un conjunto de imágenes sin procesar con un tiempo de exposición cada vez mayor y mide los valores de píxeles.

API probadas:

Pasa: aumentar el ISO (ganancia) hace que los píxeles sean más sensibles a la luz, por lo que la trama se mueve hacia la izquierda.

test_raw_exposure_s=55

test_raw_exposure_s=55.png

(10⁰ es 1 ms, 10¹ es 10 ms, 10⁻¹ es 0,1 ms)

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

prueba_raw_sensibilidad

Captura un conjunto de imágenes sin procesar con sensibilidades crecientes y mide el ruido (variación) en el 10% central de la imagen. Prueba que cada disparo sea más ruidoso que el anterior.

API probadas:

Pase: la variación aumenta con cada disparo.

test_raw_sensitivity_variance

test_raw_sensitivity_variance.png

prueba_reproceso_reducción_de_ruido

Prueba que android.noiseReduction.mode se aplica para reprocesar solicitudes. Captura imágenes reprocesadas con la cámara poco iluminada. Utiliza una alta ganancia analógica para garantizar que la imagen capturada tenga ruido. Captura tres imágenes reprocesadas, con NR desactivado, "rápida" y "alta calidad". Captura una imagen reprocesada con baja ganancia y NR desactivada, y utiliza la variación de esto como base.

API probadas:

Pasar: RÁPIDO >= APAGADO, HQ >= RÁPIDO, HQ >> APAGADO

Trazado típico de SNR vs NR_MODE

Trazado típico de SNR vs NR_MODE

prueba_tonemap_sequence

Prueba una secuencia de tomas con diferentes curvas de mapa de tonos. Captura 3 tomas manuales con un mapa de tonos lineal. Captura 3 tomas manuales con mapa de tonos predeterminado. Calcula el delta entre cada par de cuadros consecutivos.

API probadas:

Pasar: Hay 3 fotogramas idénticos seguidos de un conjunto diferente de 3 fotogramas idénticos.

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

Prueba que todos los tamaños y formatos informados para la captura de imágenes funcionan. Utiliza una solicitud manual con un mapa de tonos lineal para que YUV y JPEG tengan el mismo aspecto cuando se convierten mediante el módulo image_processing_utils . Las imágenes no se guardan de forma predeterminada, pero se pueden guardar habilitando debug_mode .

API probadas:

Pasa: Todos los centros de imágenes tienen una diferencia máxima de RMS (valor cuadrático medio de una señal) en imágenes convertidas RGB con un 3% de la imagen YUV de mayor resolución.

test_yuv_jpeg_all

test_yuv_jpeg_all.png

prueba_yuv_plus_dng

Prueba que los tamaños y formatos informados para la captura de imágenes funcionan.

API probadas:

Pasa: la prueba completa y devuelve las imágenes solicitadas.

prueba_yuv_plus_dng

test_yuv_plus_dng.jpg

test_yuv_plus_jpeg

Prueba la captura de un solo cuadro como salida YUV y JPEG. Utiliza una solicitud manual con un mapa de tonos lineal para que YUV y JPEG tengan el mismo aspecto cuando se convierten mediante el módulo image_processing_utils .

API probadas:

Pasa: las imágenes YUV y JPEG son similares y tienen menos del 1% de diferencia RMS (valor cuadrático medio de una señal).

test_yuv_plus_jpg_jpg.jpgtest_yuv_plus_jpeg_yuv.jpg
test_yuv_plus_jpg_jpg.jpg test_yuv_plus_jpeg_yuv.jpg

prueba_yuv_plus_raw

Prueba la captura de un solo cuadro como salidas RAW/RAW10/RAW12 y YUV, si es compatible. Utiliza una solicitud manual con un mapa de tonos lineal, por lo que se espera que raw y YUV sean iguales. Compara los valores RGB centrales del 10% de las imágenes convertidas RGB. Registra android.shading.mode .

API probadas:

Pasa: las imágenes YUV y sin formato son similares y tienen menos del 3,5 % de diferencia RMS (valor cuadrático medio de una señal).

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

escena2_a

scene2_a tiene tres caras con fondo gris y ropa neutra. Los rostros se eligen para tener una amplia gama de tonos de piel. El gráfico debe tener la orientación correcta para que la detección de rostros funcione de manera óptima.

escena2_a

escena2_a

prueba_auto_flash

Prueba que el flash automático se activa en una escena oscura. Verifica que se active el flash automático comprobando que el centro de la imagen del mosaico tenga un gradiente grande. Para activar el flash automático, la tableta y las luces del equipo de prueba deben estar apagadas. La prueba apaga la tableta y las luces se pueden apagar automáticamente con el controlador Arduino. La escena debe estar completamente oscura para que la prueba funcione correctamente. Como tal, la abertura trasera de la tableta debe estar completamente cubierta por la tableta de escena, y la abertura frontal debe estar cubierta por una abertura y el teléfono DUT para bloquear la entrada de luz parásita al equipo.

API probadas:

Pasar: El centro de la imagen del mosaico tiene un gradiente grande, lo que significa que se disparó el flash automático.

prueba_autoframing

Prueba el comportamiento de encuadre automático del dispositivo de la cámara. Realiza un zoom grande de modo que ninguno de los rostros de la escena sea visible, habilita el modo de encuadre automático configurando AUTOFRAMING en CaptureRequest en True y verifica si todos los rostros en la escena original se pueden detectar cuando el estado converge (es decir, cuando AUTOFRAMING_STATE en CaptureResult está configurado en AUTOFRAMING_STATE_CONVERGED ).

API probadas:

Pasar: Se detectan las tres caras.

prueba_display_p3

Pruebas Muestra la captura P3 en JPEG utilizando la API ColorSpaceProfiles . Comprueba que el JPEG capturado tenga un perfil ICC apropiado en su encabezado y que la imagen contenga colores fuera de la gama sRGB.

API probadas:

Pasa: El JPEG contiene un perfil Display P3 ICC y colores fuera de la gama sRGB.

efectos_prueba

Captura fotogramas para los efectos de cámara compatibles y comprueba si se generan correctamente. La prueba solo verifica los efectos OFF y MONO , pero guarda imágenes para todos los efectos admitidos.

API probadas:

Pasar: Captura la imagen de la escena con los efectos OFF y una imagen monocromática con los efectos configurados en MONO .

prueba_efectos_MONO

prueba_efectos_MONO.jpg

test_format_combos

Prueba diferentes combinaciones de formatos de salida.

API probadas:

Pase: Todas las combinaciones se capturan con éxito.

test_jpeg_calidad

Prueba la calidad de compresión JPEG de la cámara. Mejora las cualidades JPEG a través de android.jpeg.quality y garantiza que las tablas de cuantificación cambien correctamente.

API probadas:

Pasa: La matriz de cuantificación disminuye con el aumento de la calidad. (La matriz representa el factor de división).

test_jpeg_calidad

Promedios de matriz DQT luma/croma de la cámara trasera del Pixel 4 frente a la calidad JPEG

test_jpeg_quality falló

Ejemplo de prueba fallida

Tenga en cuenta que para imágenes de muy baja calidad (jpeg.quality < 50), no hay ningún aumento en la compresión en la matriz de cuantificación.

test_num_caras

Prueba la detección de rostros.

API probadas:

Pase: Encuentra tres caras.

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

test_preview_min_frame_rate

Prueba que la velocidad de fotogramas de la vista previa disminuye correctamente en una escena oscura. Para que esta prueba funcione correctamente, el controlador o el operador de prueba deben apagar las luces del equipo de prueba manualmente.

API probadas:

Pasa: la velocidad de fotogramas de la vista previa está en el mínimo del rango de velocidad de fotogramas solicitado y la variación entre fotogramas es menor que la tolerancia absoluta establecida en la prueba.

prueba_reproceso_uv_swap

Prueba que el reprocesamiento YUV no intercambia los planos U y V. Esto se detecta calculando la suma de diferencias absolutas (SAD) entre la imagen reprocesada y una captura no reprocesada. Si el intercambio de los planos U y V de salida de la captura reprocesada da como resultado un aumento de SAD, entonces se supone que la salida tiene los planos U y V correctos.

API probadas:

Pase: Los aviones U y V no se intercambian.

prueba_reproceso_uv_swap

prueba_reproceso_uv_swap.png

escena2_b

test_num_caras

Prueba la detección de rostros con una mayor diversidad de tonos de piel en escenas de rostros.

API probadas:

Pase: Encuentra 3 caras.

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

test_yuv_jpeg_capture_sameness

Captura dos imágenes utilizando los formatos YUV y JPEG comunes más grandes con la misma relación de aspecto que el formato JPEG más grande sin exceder una resolución de 1920x1440. Establece jpeg.quality en 100 y captura una solicitud de superficie dual. Convierte ambas imágenes a matrices RGB y calcula la diferencia cuadrática media (RMS) 3D entre las dos imágenes.

API probadas:

Pasa: las imágenes YUV y JPEG son similares y tienen menos del 1% de diferencia RMS (valor cuadrático medio de una señal).

escena2_c

test_num_caras

Prueba la detección de rostros con una mayor diversidad de tonos de piel en escenas de rostros.

API probadas:

Pase: Encuentra 3 caras.

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

test_jpeg_capture_perf_class

Prueba la latencia de captura JPEG para la clase de rendimiento S como se especifica en la sección 2.2.7.2 Cámara en el CDD.

Aprobado: DEBE tener una latencia de captura JPEG de la cámara 2 < 1000 ms para una resolución de 1080p según lo medido por la prueba de rendimiento de la cámara CTS en condiciones de iluminación ITS (3000 K) para ambas cámaras principales.

test_camera_launch_perf_class

Prueba la latencia de inicio de la cámara para la clase de rendimiento S como se especifica en la sección 2.2.7.2 Cámara en el CDD.

Aprobado: DEBE tener una latencia de inicio de la cámara 2 (cámara abierta al primer fotograma de vista previa) <600 ms, según lo medido por la prueba de rendimiento de la cámara CTS en condiciones de iluminación ITS (3000 K) para ambas cámaras principales.

escena2_d

test_num_caras

Prueba la detección de rostros con una mayor diversidad de tonos de piel en escenas de rostros.

API probadas:

Pase: Encuentra 3 caras.

escena2_e

imagen_continua_de_prueba

Se capturan 50 fotogramas con resolución VGA con la solicitud de captura configurando primero android.control.afMode = 4 (CONTINUOUS_PICTURE).

API probadas:

Pase: el sistema 3A se estabiliza al final de una captura de 50 fotogramas.

test_num_caras

Prueba la detección de rostros con una mayor diversidad de tonos de piel en escenas de rostros.

API probadas:

Pase: Encuentra 3 caras.

escena2_f

scene2_f tiene tres caras con fondo blanco y ropa blanca. Los rostros tienen una amplia gama de tonos de piel y alto contraste con el fondo.

escena2_f.png

escena2_f

test_num_caras

Prueba la detección de rostros con una mayor diversidad de tonos de piel en escenas de rostros.

API probadas:

Pase: Encuentra 3 caras.

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

escena3

Scene3 usa el gráfico ISO12233, y la mayoría de las pruebas usan un método de extractor de gráfico para encontrar el gráfico en la escena. Por esta razón, la mayoría de las imágenes guardadas no tienen bordes como las imágenes para las escenas 1, 2 o 4, sino solo el gráfico. El gráfico debe estar en la orientación correcta para que el buscador de gráficos funcione de manera óptima.

test_3a_consistency

Pruebas para consistencia 3A.

API probadas:

Pase: 3A converge para exposición, ganancia, AWB (balance de blancos automáticos) y FD (distancia de enfoque) tres veces dentro de la tolerancia.

test_edge_enhancement

Prueba que el parámetro android.edge.mode se aplica correctamente. Captura las imágenes no representantes para cada modo de borde y devuelve la nitidez de la imagen de salida y los metadatos del resultado de captura. Procesa una solicitud de captura con un modo de borde dado, sensibilidad, tiempo de exposición, distancia de enfoque y parámetro de superficie de salida.

Pase: modo HQ (2) más nítido que el modo OFF (0). Modo FAST (1) más nítido que el modo OFF . Modo HQ más nítido o igual al modo FAST .

API probadas:

Parámetros de la cámara afectados:

  • EDGE_MODE

test_edge_enhancement_edge = 0

test_edge_enhancement_edge = 0.jpg

test_edge_enhancement_edge = 1

test_edge_enhancement_edge = 1.jpg (modo rápido)

test_edge_enhancement_edge = 2

test_edge_enhancement_edge = 2.jpg (modo de alta calidad)

test_flip_mirror

Prueba si la imagen está orientada correctamente según la Sección 7.5.2 de la cámara frontal [C-1-5] .

Las imágenes reflejadas, volteadas o giradas pueden identificarse mediante la función de diamante cerca del centro.

Pase: la imagen no se voltea, se refleja o giró.

test_flip_mirror_scene_patch

test_flip_mirror_scene_patch.jpg

test_landscape_to_portrait

Prueba si el paisaje a la anulación de retratos funciona correctamente para los sensores orientados al paisaje.

API probadas:

Pase: la prueba puede ubicar un gráfico con la rotación esperada (0 grados cuando el paisaje a la anulación de retrato está deshabilitado, 90 grados cuando está habilitado).

test_landscape_to_portrait

test_landscape_to_portrait.png

test_lens_movement_reporting

Pruebas si el indicador de movimiento de la lente se informa correctamente. Captura una explosión de 24 imágenes con los primeros 12 cuadros a la distancia de enfoque óptimo (como se encuentra por 3A) y los últimos 12 cuadros a la distancia de enfoque mínimo. Alrededor del marco 12, la lente se mueve haciendo que la nitidez caiga. La nitidez finalmente se estabiliza a medida que la lente se mueve a la posición final. La bandera de movimiento del lente debe afirmarse en todos los cuadros donde la nitidez es intermedia a la nitidez en los primeros cuadros con la lente estacionaria a una distancia focal óptima, y ​​los últimos cuadros donde la lente está estacionaria en la distancia focal mínima. El marco exacto que se mueve la lente no es importante: lo que se verifica es que el indicador de movimiento se afirma cuando la lente se mueve.

API probadas:

Pase: la bandera de movimiento de la lente es True en el marco con cambio de nitidez.

Mecanismos de falla:

  • lens_moving: True ( android.hardware.camera2.CaptureResult#LENS_STATE = 1) en test_log.DEBUG se afirma solo en cuadros donde la nitidez no está cambiando.
  • Frames con lens_moving: False ( android.hardware.camera2.CaptureResult#LENS_STATE = 0) en test_log.DEBUG tiene una diferencia de nitidez en comparación con los primeros cuadros a una distancia focal óptima o los últimos cuadros a mínima distancia de enfoque.

test_reprocess_edge_enhancement

Pruebas si los métodos de reprocesamiento admitidos para la mejora de los bordes funcionan correctamente. Procesa una solicitud de captura con un modo de borde de reprocesado dado y compara diferentes modos para capturar con modos de borde de reprocesación deshabilitados.

API probadas:

Pase: la nitidez para los diferentes modos de borde es correcta. HQ (Modo 2) es más nítido que OFF (Modo 0), y la mejora entre diferentes modos es similar.

test_reprocess_edge_enhancement_plot

test_reprocess_edge_enhancement_plot.png

escena4

Scene4 consiste en un círculo negro sobre un fondo blanco dentro de un cuadrado.

escena4

escena4

test_aspect_ratio_and_crop

Pruebas si las imágenes se distorsionan o recortan inesperadamente en la tubería de imágenes. Toma fotos de un círculo sobre todos los formatos. Verifica que el círculo no se distorsione, el círculo no se mueve del centro de la imagen y el círculo no cambia de tamaño incorrectamente con diferentes relaciones o resoluciones de aspecto.

API probadas:

Pase: las imágenes no se estiran, el centro de imágenes no difiere en más del 3%, y se conserva el máximo posible FOV (campo de visión).

Mecanismos de falla:

  • El círculo en la imagen capturada está distorsionado por la tubería de procesamiento.
  • La imagen de resolución más baja se recorta doble en la tubería de imágenes, creando diferentes FOV entre imágenes de alta y baja resolución.
  • El círculo en la imagen capturada se recorta debido a una solicitud de captura de relación de aspecto extrema que reduce la altura o el ancho de la imagen.
  • El círculo en la imagen capturada tiene un reflejo en el centro y no aparece completamente lleno.

test_multi_camera_alignment

Prueba los parámetros de calibración de la cámara relacionados con el posicionamiento de la cámara para sistemas de múltiples cámaras. Usando las subcameras físicas de múltiples cámaras, toma una foto con una de las cámaras físicas. Encuentra el Circle Center. Proyecta el Circle Center a las coordenadas mundiales para cada cámara. Compara la diferencia entre los centros del círculo de las cámaras en las coordenadas mundiales. Reproyectas el mundo Coordine de nuevo a las coordenadas de píxeles y se compara con los originales como una verificación de validez. Compara la verificación de tamaños de círculo si las distancias focales de las cámaras son diferentes.

API probadas:

Pase: los centros y los tamaños del círculo son los esperados en imágenes proyectadas en comparación con las imágenes capturadas utilizando datos de calibración de la cámara y distancias focales.

Mecanismos de falla:

  • LENS_INTRINSIC_CALIBRATION , LENS_POSE_TRANSLATION o LENS_POSE_ROTATION son valores de diseño y no datos de calibración reales.
  • El sistema de cámara no es apropiado para la configuración de la prueba. Por ejemplo, probar un sistema de cámara ancho y ultra ancho con la plataforma de prueba RFOV. Para obtener más información, consulte la Cámara de preguntas frecuentes de la cámara en la caja .

test_preview_aspect_ratio_and_crop

Similar a la prueba test_aspect_ratio_and_crop para obtener capturas, esta prueba verifica los formatos de vista previa compatible para garantizar que los marcos de vista previa no se estiren o recorten de manera inapropiada. Verifica que la relación de aspecto del círculo no cambia, las imágenes recortadas mantienen el círculo en el centro del marco y el tamaño del círculo no cambia para un formato constante o con diferentes resoluciones (verificación de campo de vista).

API probadas:

Pase: las imágenes no se estiran, el centro de imágenes no difiere en más del 3%, y se conserva el máximo posible FOV (campo de visión).

test_preview_stabilization_fov

Comprueba los tamaños de vista previa compatible para garantizar que el FOV se recorte adecuadamente. La prueba captura dos videos, uno con estabilización de vista ON y otra con estabilización de vista OFF . Se selecciona un marco representativo de cada video y se analiza para garantizar que los cambios de FOV en los dos videos estén dentro de la especificación.

API probadas:

Pase: la relación de aspecto del círculo permanece aproximadamente constante, la ubicación central del círculo permanece estable y el tamaño del círculo no cambia más ese 20%.

test_video_aspect_ratio_and_crop

Toma videos de un círculo dentro de un cuadrado sobre todos los formatos de video. Extrae los marcos clave y verifica la relación de aspecto del círculo no cambia, las imágenes recortadas mantienen el círculo en el centro y el tamaño del círculo no cambia para un formato constante o con una resolución diferente (verificación de campo de visión).

API probadas:

Pase: los marcos de video no se estiran, el centro de los marcos no difiere en más del 3%y se conserva el máximo posible FOV (campo de visión).

escena5

Scene5 requiere una escena gris uniformemente iluminada. Esto se logra por un difusor colocado sobre la lente de la cámara. Recomendamos el siguiente difusor: www.edmundoptics.com/optics/window-diffusers/optical-diffusers/opal-diffusing-glass/46168 .

Para preparar la escena, conecte un difusor frente a la cámara y apunte la cámara a una fuente de iluminación de alrededor de 2000 Lux. Las imágenes capturadas para la escena5 requieren iluminación difusa sin características evidentes. La siguiente es una imagen de muestra:

escena5

Captura de escena5

test_lens_shading_and_color_uniformity

Prueba que la corrección de sombreado de lente se aplica adecuadamente, y el color de una escena uniforme monocromática se distribuye uniformemente. Realiza esta prueba en un marco YUV con Auto 3A. El sombreado de lentes se evalúa en función del canal Y. Mide el valor promedio de Y para cada bloque de muestra especificado, y determina el paso o el fracaso al comparar con el valor del centro y. La prueba de uniformidad de color se evalúa en el espacio R/G y B/G.

API probadas:

Pase: en el radio especificado de la imagen, la varianza del valor R/G y B/G debe ser inferior al 20% para pasar la prueba.

escena6

Scene6 es una cuadrícula de pequeños círculos con un cuadrado en una esquina para indicar orientación. Los pequeños círculos son necesarios para probar la función de zoom en un rango grande.

escena6

escena6

test_in_sensor_zoom

Prueba el comportamiento de la función de zoom de sensor de la cámara, que produce imágenes crudas recortadas.

Con el caso de uso de la corriente establecido en CROPPED_RAW , la prueba toma dos capturas sobre el rango de zoom, una imagen cruda de campo de vista completo (FOV) y una imagen cruda recortada. La prueba convierte las imágenes en matrices RGB, baja la imagen cruda recortada de tamaño completo en el tamaño informado por SCALER_RAW_CROP_REGION , y calcula la diferencia de cuadrado medio de raíz 3D (RMS) entre las dos imágenes.

API probadas:

Pase: la diferencia de cuadrado medio (RMS) 3D entre la imagen cruda recortada con escala reducción y la imagen cruda FOV completa es inferior al 1%.

test_zoom

Prueba el comportamiento del zoom de la cámara. Toma capturas sobre el rango de zoom y verifica si los círculos se hacen más grandes a medida que la cámara se acerca.

API probadas:

Pase: el tamaño relativo del círculo capturado es preciso frente a la relación zoom solicitada para garantizar que la cámara se aleje correctamente.

test_zoom

test_zoom para encontrar el contorno del círculo más cercano al centro.

test_low_latency_zoom

Prueba el comportamiento de zoom de baja latencia de la cámara. Toma capturas sobre el rango de zoom con android.control.settingsOverride = 1 (SETTINGS_OVERRIDE_ZOOM) , y verifica si los círculos en las imágenes de salida coinciden con las relaciones de zoom en los metadatos de captura.

API probadas:

Pase: el tamaño relativo del círculo capturado es preciso contra los metadatos del resultado de la relación de zoom.

test_preview_video_zoom_match

Prueba eso mientras graba y zoom, vista previa de video y visualización de salida de video y graban la misma salida. Calcula el tamaño del círculo más cercano al centro con diferentes relaciones de zoom y verifica si el tamaño del círculo aumenta a medida que aumenta la relación de zoom.

API probadas:

Pase: el tamaño relativo del círculo capturado es preciso contra la relación zoom solicitada en video y vista previa.

Vga_640x480_key_frame.png

Vga_640x480_key_frame.png (antes de Zoom)

Preview_640x480_key_frame.png

Preview_640x480_key_frame.png (antes del zoom)

Vga_640x480_key_frame_zoomed.png

Vga_640x480_key_frame.png (después de Zoom)

Preview_640x480_key_frame_zoomed.png

Preview_640x480_key_frame.png (después del zoom)

escena_extensions

Las pruebas scene_extensions son para extensiones de cámara y deben usar la cámara de cámara , ya que requieren un control preciso del entorno de prueba.

escena_hdr

La escena scene_hdr consiste en un retrato a la izquierda y un código QR de bajo contraste a la derecha.

escena_hdr

escena_hdr

test_hdr_extension

Prueba la extensión HDR . Toma capturas con y sin la extensión habilitada, y verifica si la extensión hace que el código QR sea más detectable.

API probadas:

Pase: la extensión HDR reduce el número de cambios de contraste necesarios para detectar el código QR o reduce el gradiente a través del código QR.

Scene_night

La escena scene_night consiste en un círculo blanco con cuatro círculos más pequeños dentro de ella, todo contra un fondo negro. El círculo más pequeño en la esquina superior derecha es más oscuro que los demás para indicar orientación.

Scene_night

Scene_night

test_night_extension

Prueba la extensión nocturna . Toma capturas con y sin la extensión habilitada, y verifica lo siguiente:

  • La captura con la extensión nocturna habilitada lleva más tiempo.
  • La captura con la extensión nocturna habilitada es más brillante o tiene artefactos de escena con una apariencia mejorada.

API probadas:

Pase: en comparación con una captura sin la extensión nocturna habilitada, una captura con la extensión nocturna habilitada toma al menos 0.5 segundos más. La captura debe ser al menos 10% más brillante, o los puntos grises en la escena deben ser de 20 valores de píxeles más bajos que el centro del círculo circundante.

fusión de sensores

Las pruebas de fusión del sensor requieren un movimiento de teléfono específico frente a un patrón de tablero de ajedrez. Para obtener resultados óptimos, asegúrese de que la tabla de prueba esté plana. Los gráficos que no son planos afectan los cálculos de rotación para muchas de las pruebas. Las pruebas sensor_fusion se pueden automatizar con el cuadro de fusión del sensor .

tablero de damas

Imagen del tablero de verificación

test_multi_camera_frame_sync

Las pruebas que marcan las marcas de tiempo capturadas por la cámara lógica se encuentran dentro de los 10 ms al calcular los ángulos de los cuadrados dentro del tablero de ajedrez para determinar la marca de tiempo.

API probadas:

Pase: el ángulo entre las imágenes de cada cámara no cambia apreciablemente a medida que se gira el teléfono.

test_preview_stabilización

Las pruebas que estabilizan el video de vista previa gira menos que el giroscopio.

API probadas:

Pase: la rotación del ángulo máximo sobre los marcos es inferior al 70% de la rotación del giroscopio.

Los siguientes son videos de muestra con y sin estabilización.

  • Video de muestra con estabilización

  • Video de muestra sin estabilización

test_sensor_fusion

Prueba la diferencia de marca de tiempo entre la cámara y el giroscopio para aplicaciones AR y VR. El teléfono se gira 90 grados 10 veces frente al patrón de tablero de ajedrez. El movimiento es de aproximadamente 2 s de ida y vuelta. Esta prueba se omite si no se incluye giroscopio o si el parámetro REALTIME de la fuente de la marca de tiempo no está habilitada.

La prueba test_sensor_fusion genera una serie de gráficos. Las dos tramas más importantes para la depuración son:

  • test_sensor_fusion_gyro_events : muestra los eventos de giroscopio para el teléfono durante la prueba. El movimiento en la dirección X e Y implica que el teléfono no está montado de forma segura en la placa de montaje, lo que reduce la probabilidad de pasar la prueba. El número de ciclos en la parcela depende de la velocidad de escritura para guardar marcos.

    test_sensor_fusion_gyro_events.png

    test_sensor_fusion_gyro_events

  • test_sensor_fusion_plot_rotations : muestra la alineación del giroscopio y los eventos de la cámara. Esta trama debe mostrar un movimiento coincidente entre la cámara y el giroscopio a +/- 1 ms.

    test_sensor_fusion_plot_rotations.png

    test_sensor_fusion_plot_rotations

API probadas:

Pase: el desplazamiento de las marcas de tiempo de la cámara y el giroscopio es inferior a 1 ms según la sección 7.3.9 sensores de alta fidelidad [C-2-14] .

Mecanismos de falla:

  • Error de compensación: el desplazamiento del gancho-giroscopio de la cámara no está correctamente calibrado dentro de +/- 1 ms.
  • Dropas de marco: la tubería no es lo suficientemente rápida como para capturar 200 cuadros consecutivamente.
  • Errores de socket: adb no puede conectarse de manera confiable al DUT lo suficiente como para ejecutar la prueba.
  • El gráfico no está montado plano. El gráfico test_sensor_fusion_plot_rotations tiene marcos donde el giroscopio y la rotación de la cámara varían considerablemente a medida que la cámara gira a través de las partes del gráfico que no son planas.
  • La cámara no está montada plana. El gráfico test_sensor_fusion_gyro_events muestra el movimiento en los planos X e Y. Esta falla es más común en las cámaras frontales, ya que la cámara trasera a menudo tiene un golpe elevado al resto del cuerpo del teléfono, creando una inclinación al montar la parte trasera del teléfono hasta la placa de montaje.

test_video_stabilización

Las pruebas que estabilizan el video gira menos que el giroscopio.

API probadas:

Pase: la rotación del ángulo máximo sobre los marcos es inferior al 60% de la rotación del giroscopio.

Los siguientes son videos de muestra con y sin estabilización.

  • Video de muestra con estabilización

  • Video de muestra sin estabilización

test_led_snapshot

Prueba que las instantáneas LED no saturan ni teñen la imagen.

Esta prueba agrega un controlador de iluminación a la caja de fusión del sensor para controlar las luces. Con las luces configuradas en OFF , la prueba toma una captura con el modo AUTO_FLASH configurado en ON . Durante esta captura, la prueba ejecuta una secuencia de precapitres con el ajuste de activación aePrecapture establecido para START , y establece la intención de captura para obtener Preview para tomar la captura con flash.

Debido a que la captura tiene un punto de acceso distintivo debido al flash, la prueba calcula la media de la imagen flash de toda la captura y verifica si el valor está dentro del rango (68, 102). Para verificar si la imagen está razonablemente equilibrada en blanco, la prueba calcula las relaciones R/G y B/G y verifica si las relaciones están dentro de 0.95 y 1.05.

API probadas:

Pase: las relaciones R/G y B/G están dentro de 0.95 y 1.05. La media de la imagen flash está dentro del rango (68, 102).