En esta página, se proporciona una lista completa de las pruebas del Conjunto de pruebas de imágenes de la cámara (ITS), que forma parte del verificador del Conjunto de pruebas de compatibilidad (CTS) de Android. 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 según lo esperado. Este documento permite a los desarrolladores y verificadores comprender qué hacen las pruebas individuales y cómo depurar las fallas de prueba.
Pruebas de las puertas de ITS de la cámara según las propiedades de cámara, el nivel de API y la clase de rendimiento del contenido multimedia (MPC) requeridos En el caso del nivel de API, ITS usa ro.product.first_api_level
para controlar las pruebas agregadas en un nivel de API específico que prueban experiencias negativas del usuario para la funcionalidad en niveles de API inferiores. ITS usa ro.vendor.api_level
para controlar las pruebas de funciones agregadas en un nivel de API específico que requieren una nueva función 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 metadatos, jitter, giroscopio y vibración.
- scene1: Exposición, sensibilidad, compensación de EV, YUV en comparación con JPEG/RAW
- scene2: Detección de rostros, pruebas que requieren escenas de color
- scene3: Mejora de los bordes, movimiento de la lente
- scene4: Relación de aspecto, recorte, campo visual
- scene5: Sombra de lente
- scene6: Zoom
- scene7: Interruptor de varias cámaras
- scene8: Medición de regiones de AE y AWB
- scene9: Compresión JPEG
- scene_extensions: Extensiones de la cámara
- scene_flash: Autoflash, velocidad de fotogramas mínima
- scene_video: Pérdida de fotogramas
- sensor_fusion: Desplazamiento de sincronización de la cámara/giroscopio
- feature_combination: Combinaciones de funciones
Consulta 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 quieto para realizar pruebas de giroscopio y vibración.
test_jitter
Mide el jitter en las marcas de tiempo de la cámara.
APIs probadas:
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
Aprobado: Hay al menos un delta de 30 ms entre los fotogramas.
test_jitter_plot.png (observa el pequeño rango del eje Y). En realidad, el jitter es pequeño en este gráfico).
metadatos_prueba
Prueba la validez de las entradas de metadatos. Analiza los resultados de la captura y los objetos de las características de la cámara. En esta prueba, se usan valores de exposición y ganancia de auto_capture_request
porque el contenido de la imagen no es importante.
APIs probadas:
android.hardware.camera2.CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL
android.hardware.camera2.CameraCharacteristics#SCALER_CROPPING_TYPE
android.hardware.camera2.CameraCharacteristics#SENSOR_BLACK_LEVEL_PATTERN
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
android.hardware.camera2.CaptureResult#SENSOR_ROLLING_SHUTTER_SKEW
Aprobado: El nivel de hardware, las etiquetas rollingShutterSkew
, frameDuration
, timestampSource
, croppingType
, blackLevelPattern
, pixel_pitch
, FoV y distancia hiperfocal están presentes y tienen valores válidos.
test_request_capture_match
Prueba que el dispositivo escribe los valores de exposición y ganancia correctos leyendo los metadatos de captura.
APIs probadas:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_EXPOSURE_TIME_RANGE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
android.hardware.camera2.CaptureResult#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureResult#SENSOR_SENSITIVITY
Aprobación: Los valores de los metadatos de solicitud y captura coinciden en todas las tomas.
eventos_sensor_prueba
Prueba que el dispositivo consulte y muestre eventos de sensores para dispositivos que anuncien compatibilidad con la fusión de sensores. Los sensores esperados son el acelerómetro, el giroscopio y el magnetómetro. Esta prueba solo funciona si la pantalla está encendida, lo que significa que el dispositivo no está en modo de espera.
APIs probadas:
Aprobado: Se reciben eventos para cada sensor.
prueba_solid_color_test_pattern
Prueba que los patrones de prueba de color sólido se generan correctamente para silenciar la cámara. Si se admite la inhabilitación del sonido de la cámara, también se deben admitir los patrones de prueba de colores sólidos. Si no se admite la función de silenciamiento de la cámara, los patrones de prueba de colores sólidos solo se prueban si se anuncia la función.
Si se admiten imágenes RAW, también se prueba la asignación de colores. Los colores probados son negro, blanco, rojo, azul y verde. En el caso de las cámaras que no admiten imágenes RAW, solo se prueba el negro.
APIs probadas:
android.hardware.camera2.CameraCharacteristic#SENSOR_AVAILABLE_TEST_PATTERN_MODES
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_DATA
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
Aprobado: Los patrones de prueba sólidos admitidos son del color correcto y hay una baja variación en la imagen.
test_test_pattern
Prueba el parámetro android.sensor.testPatternMode
para capturar fotogramas de cada patrón de prueba válido y verifica que los fotogramas se generen correctamente para los colores sólidos y las barras de color. Esta prueba incluye los siguientes pasos:
- Captura imágenes para todos los patrones de prueba admitidos.
- Realiza una verificación de corrección simple para un patrón de prueba de color sólido y barras de color.
APIs probadas:
android.hardware.camera2.CameraCharacteristic#SENSOR_AVAILABLE_TEST_PATTERN_MODES
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
Aprobado: Los patrones de prueba admitidos se generan correctamente.
test_test_patterns_2.jpg
test_tonemap_curve
Prueba la conversión del patrón de prueba de RAW a YUV con un 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 (depende de test_test_patterns
).
APIs probadas:
android.hardware.camera2.CaptureRequest#DISTORTION_CORRECTION_MODE
android.hardware.camera2.CaptureRequest#SENSOR_TEST_PATTERN_MODE
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Aprobado: El YUV y la RAW son similares entre sí.
test_tonemap_curve_raw_2.jpg
test_tonemap_curve_yuv_2.jpg
test_unified_timestamp
Prueba si los eventos del sensor de imagen y movimiento están en el mismo dominio de tiempo.
APIs probadas:
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
android.hardware.Sensor
android.hardware.SensorEvent
android.hardware.Sensor#TYPE_ACCELEROMETER
android.hardware.Sensor#TYPE_GYROSCOPE
Pasa: Las marcas de tiempo de movimiento se encuentran entre las dos marcas de tiempo de imagen.
test_vibration_restriction
Prueba si la vibración del dispositivo funciona como se espera.
APIs probadas:
android.hardware.Sensor
android.hardware.SensorEvent
android.hardware.Sensor#TYPE_ACCELEROMETER
android.os.Vibrator
android.hardware.camera2.CameraDevice#setCameraAudioRestriction
Aprobado: El dispositivo no vibra cuando lo silencia la API de restricción de audio de la cámara.
escena1
scene1 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 desafie moderadamente a 3A (exposición automática, balance de blancos automático y enfoque automático), ya que la región central no tiene características. Sin embargo, la solicitud de captura especifica toda la escena, que incluye características suficientes para que converja la 3A.
Las cámaras RFoV se pueden probar en el equipo de prueba de WFoV o RFoV. Si se prueba una cámara de RFoV en el equipo de pruebas de WFoV, el gráfico se escala 2⁄3 para garantizar que algunos límites del gráfico gris en el FoV ayuden a la convergencia de 3A. Para obtener descripciones más detalladas de los equipos de prueba de la cámara, consulta ITS integrado en la cámara.
escena1: Gráfico de tamaño completo (izquierda). Gráfico ajustado a ⅔ (derecha).
test_ae_precapture_trigger
Prueba la máquina de estados de AE cuando se usa el activador de captura previa. Captura cinco solicitudes manuales con el AE inhabilitado. La última solicitud tiene un activador de captura previa de AE, que se debe ignorar porque AE está inhabilitado.
APIs probadas:
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
Aprobado: El AE converge.
prueba_automática_vs_manual
Las pruebas que capturaron tomas automáticas y manuales se ven iguales.
APIs probadas:
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
android.hardware.camera2.CaptureResult#TONEMAP_CURVE
android.hardware.camera2.CaptureResult#TONEMAP_MODE
Aprobación: Las ganancias y la transformación del balance de blancos manuales que se informan en cada resultado de captura coinciden con el balance de blancos automático estimate
del algoritmo 3A de la cámara.
test_auto_vs_manual_auto.jpg
test_auto_vs_manual_wb.jpg
prueba_auto_vs_manual_manual_wb_tm.jpg
test_black_white
Pruebas que el dispositivo produce imágenes en blanco y negro. Realiza dos capturas: la primera con una ganancia extremadamente baja y una exposición corta, lo que genera una foto en negro, y la segunda con una ganancia extremadamente alta y una exposición larga, lo que genera una foto en blanco.
APIs probadas:
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Pass: Produce imágenes en blanco y negro. Los canales saturados de imágenes en blanco tienen valores RGB de [255, 255, 255] con un margen de error de menos del 1% de diferencia.
test_black_white_black.jpg | prueba_black_white_white.jpg |
test_black_white_plot_means.png
test_burst_capture
Verifica que toda la canalización de captura pueda mantenerse al día con la velocidad de la captura de tamaño completo y el tiempo de CPU.
APIs probadas:
Aprobación: Captura una ráfaga de imágenes de tamaño completo, verifica si hay fallas de fotogramas y brillo de la imagen.
prueba_ráfaga_igualidad_manual
Toma 5 ráfagas de 50 imágenes con configuración de captura manual y verifica que todas sean idénticas. Esta prueba se puede usar para identificar si hay fotogramas esporádicos que se procesan de manera diferente o tienen artefactos.
APIs probadas:
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR
android.hardware.camera2.CameraMetadata#SYNC_MAX_LATENCY_PER_FRAME_CONTROL
Aprobado: Las imágenes son idénticas visualmente y en los valores RGB.
Error: Muestra un aumento o una disminución en el gráfico promedio RGB al comienzo de cada aumento de actividad.
- La tolerancia es del 3% para
first_API_level
< 30. - La tolerancia es del 2% para
first_API_level
>= 30.
prueba_burst_sameness_manual_mean.jpg
test_burst_sameness_manual_plot_means.png
test_capture_result
Prueba que los datos válidos se muestran en objetos CaptureResult
. Realiza capturas automáticas,
manuales y automáticas.
APIs probadas:
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AE_REGIONS
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AF_REGIONS
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AWB_REGIONS
android.hardware.camera2.CaptureRequest#CONTROL_MODE
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
android.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Aprobación: 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 de sombreado del lente para las capturas.
test_capture_result_plot_lsc_auto_ch0.png
test_crop_region_raw
Pruebas que las transmisiones en formato RAW no se pueden recortar.
APIs probadas:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
android.hardware.camera2.CaptureResult#SCALER_CROP_REGION
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
Aprobación: Las imágenes YUV se recortan en el centro, pero no las imágenes RAW.
prueba_crop_región_raw_comp_raw_crop.jpg
test_crop_region_raw_comp_raw_full.jpg
test_crop_region_raw_comp_yuv_crop.jpg
test_crop_region_raw_yuv_full.jpg
test_crop_regions
Prueba que las regiones de recorte funcionen. Toma una imagen completa y crea parches de 5 regiones diferentes (esquinas y centro). Toma imágenes con los recortes de las 5 regiones. Compara el parche y los valores de la imagen recortada.
APIs probadas:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
Aprobado: La imagen de la región recortada coincide con el parche que corresponde a la imagen del recorte.
test_dng_noise_model
Verifica que los parámetros del modelo sin procesar DNG sean correctos. El gráfico muestra la variación 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 variación que se espera en cada sensibilidad por el modelo de ruido DNG en el HAL de la cámara (según los parámetros O y S que se muestran en los objetos de resultados de captura). Para obtener más detalles sobre el modelo de ruido DNG, descarga el siguiente documento sobre el modelo de ruido DNG.
APIs probadas:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
android.hardware.camera2.CaptureResult#SENSOR_NOISE_PROFILE
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Aprobación: Los parámetros del modelo sin procesar DNG son correctos. Los valores RGB esperados coinciden con los valores RGB reales medidos.
test_dng_noise_model_plog.png
prueba_ev_compensación_avanzada
Prueba que se aplique la compensación del valor de exposición (VE). La prueba aumenta la exposición en ocho pasos y verifica el brillo medido en comparación con el brillo esperado. Los valores esperados se calculan a partir del brillo de la imagen sin aplicar compensación de EV, y el valor esperado se saturará si los valores calculados superan el rango de valores de imagen real. La prueba falla si los valores esperados y los valores medidos no coinciden o si las imágenes se sobreexponen en cinco pasos.
APIs probadas:
android.hardware.camera2.CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
android.hardware.camera2.CaptureResult#TONEMAP_CURVE
android.hardware.camera2.CaptureResult#TONEMAP_MODE
Aprobación: Las imágenes muestran una exposición creciente sin sobreexposición en cinco pasos.
test_ev_compensation_advanced_plot_means.png
test_ev_compensation_basic
Prueba que la compensación de VE se aplique con un rango creado con CONTROL_AE_COMPENSATION_STEP
. Se capturan ocho fotogramas en cada valor de compensación.
APIs probadas:
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_COMPENSATION_STEP
android.hardware.camera2.CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
android.hardware.camera2.CaptureResult#CONTROL_AE_EXPOSURE_COMPENSATION
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
Aprobación: Captura un aumento en la luma con un mayor parámetro de configuración de compensación de EV, y los ocho fotogramas capturados para cada parámetro de configuración de compensación de EV tienen valores de luma estables.
test_ev_compensation_basic.png
test_exposure_x_iso
Pruebas que comprueban que se logra una exposición constante a medida que varían el ISO y el tiempo de exposición. Realiza una serie de tomas en las que se eligen el tiempo de exposición y la escala ISO para que se equilibren entre sí.
Los resultados deben tener el mismo brillo, pero a lo largo de la secuencia, la imagen debería ser más ruidosa. Verifica que los valores medios de píxeles de muestra estén cerca entre sí. Garantiza que las imágenes no se limiten a 0 o 1 (lo que las haría parecer líneas planas). La prueba también se puede ejecutar con imágenes RAW si configuras la marca debug
en tu archivo de configuración.
APIs probadas:
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Aprobación: 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 ISO*exposición es constante en el espacio de ganancia probado.
Mecanismo de fallo:
- En
test_exposure_plot_means.png
, a medida que aumentan los valores del multiplicador de ganancia (eje x), los valores promedio del plano RGB normalizados (eje y) comienzan a desviarse de los valores del multiplicador de ganancia baja.
test_exposure_plot_means.png
test_exposure_mult=1.00.jpg | prueba_exposición_mult=64.00.jpg |
prueba_jpeg
Pruebas que comprueban que las imágenes YUV convertidas y las imágenes JPEG del dispositivo se ven igual. La prueba toma el 10% central de la imagen, calcula el valor RGB y verifica que coincidan.
APIs probadas:
Aprobación: La diferencia de RGB promedio entre cada imagen es inferior al 3%.
test_jpeg_fmt=jpg.jpg | test_jpeg=fmt=yuv.jpg |
test_latching
Prueba que la configuración (exposición y ganancia) se bloquee en el marco correcto para las cámaras FULL
y LEVEL_3
. Toma una serie de tomas con solicitudes consecutivas y varía los parámetros de solicitud de captura entre las tomas. Verifica que las imágenes tengan las propiedades esperadas.
APIs probadas:
Aprobación: Las imágenes [2, 3, 6, 8, 10, 12 y 13] tienen un ISO o una exposición más altos y aparecen con valores medios de RGB más altos en test_latching_plot_means.png
.
test_latching_i=00.jpg | prueba_latching_i=01.jpg | prueba_latching_i=02.jpg | |
test_latching_i=03.jpg | test_latching_i=04.jpg | prueba_latching_i=05.jpg | |
test_latching_i=06.jpg | test_latching_i=07.jpg | prueba_latching_i=08.jpg | |
test_latching_i=09.jpg | test_latching_i=10.jpg | prueba_latching_i=11.jpg | |
test_latching_i=12.jpg |
prueba_latching_plot_means.png
test_linearity
Pruebas que el procesamiento del dispositivo se puede invertir a píxeles lineales. Captura una secuencia de tomas con el dispositivo apuntando a un objetivo uniforme.
APIs probadas:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CaptureRequest#BLACK_LEVEL_LOCK
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Aprobado: Los valores R, G y B deben aumentar de manera lineal con mayor sensibilidad.
test_linearity_plot_means.png
test_locked_burst
Prueba el bloqueo 3A y la ráfaga YUV (con configuración automática). Esta prueba está diseñada para aprobar 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 está en CTS.
APIs probadas:
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
Aprobación: Las capturas se ven coherentes.
prueba_bloqueada_ráfaga_marco0.jpg
prueba_bloqueada_ráfaga_marco1.jpg
prueba_bloqueada_ráfaga_marco2.jpg
test_param_color_correction
Prueba que los parámetros android.colorCorrection.*
se apliquen cuando se configuren.
Toma fotos con diferentes valores de transformación y ganancia, y prueba que se vean diferentes según corresponda. La transformación y las ganancias se eligen para que el resultado sea cada vez más rojo o azul. Usa un mapa de tonos lineal. La asignación de tonos es una técnica que se usa en el procesamiento de imágenes para asignar un conjunto de colores a otro y aproximar la apariencia de las imágenes de alto rango dinámico en un medio que tiene un rango dinámico más limitado.
APIs probadas:
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
Pasar: Los valores de R y B se aumentan según la transformación.
test_param_color_correction_plot_means.png
*El eje x son las solicitudes de captura: 0 = unidad, 1=aumento rojo, 2= aumento azul
test_param_color_correction_req=0.jpg
test_param_color_correctness_req=1.jpg (R boost)
test_param_color_correction_req=2.jpg (B boost)
test_param_flash_mode
Prueba que se aplica el parámetro android.flash.mode
. Establece de forma manual la exposición en el lado oscuro, de modo que sea obvio si se activó el flash o no, y usa un mapa de tonos lineal. Verifica el centro con la imagen de la tarjeta para ver si se crea un gradiente grande que permita verificar si se activó el flash.
APIs probadas:
Aprobado: El centro de la imagen de mosaico tiene un gran gradiente, lo que significa que se activó el flash.
test_param_flash_mode_1.jpg
test_param_flash_mode_1_tile.jpg
test_param_flash_mode_2.jpg
test_param_flash_mode_2_tile.jpg
prueba_param_reducción_de_ruido
Prueba que el parámetro android.noiseReduction.mode
se aplique correctamente cuando se configura. Captura imágenes con la cámara con poca luz. Usa una ganancia analógica alta para garantizar que la imagen capturada tenga ruido. Captura tres imágenes: NR desactivado, "rápido" y "alta calidad". También captura una imagen con ganancia baja y NR desactivada, y usa la variación de esta como referencia. Cuanto mayor sea la relación SNR (relación señal a ruido), mejor será la calidad de la imagen.
APIs probadas:
Aprobación: La SNR varía con los diferentes modos de reducción de ruido y se comporta de manera similar al siguiente gráfico.
test_param_noise_reduction_plot_SNRs.png
0: DESACTIVADO, 1: RÁPIDO, 2: HQ, 3: MÍN , 4: ZSL
test_param_noise_reduction_high_gain_nr=0.jpg
test_param_noise_reduction_high_gain_nr=1.jpg
test_param_noise_reduction_high_gain_nr=2.jpg
test_param_noise_reduction_high_gain_nr=3.jpg
test_param_noise_reduction_low_gain.jpg
modo_de_sombreado_de_parámetro_de_prueba
Prueba que se aplique el parámetro android.shading.mode
.
APIs probadas:
android.hardware.camera2.CaptureRequest#SHADING_MODE
android.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
Aprobado: Se cambian los modos de sombreado y los mapas de sombreado de lente se modifican según lo previsto.
prueba_param_shading_mode_ls_maps_mode_0_loop_0.png
test_param_shading_mode_ls_maps_mode_1_loop_0.png
test_param_shading_mode_ls_maps_mode_2_loop_0.png
modo_mapa_tono_para_prueba
Prueba que se aplique el parámetro android.tonemap.mode. Aplica diferentes curvas de mapa de tonos a cada canal R, G y B, y comprueba que las imágenes de salida se modifiquen como se espera. Esta prueba consta de dos pruebas: prueba1 y prueba2.
APIs probadas:
android.hardware.camera2.CameraMetadata#TONEMAP_MODE_CONTRAST_MODE
android.hardware.camera2.CameraMetadata#TONEMAP_MODE_FAST
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Aprobación:
- test1: 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: Tiene el mismo mapa de tonos, pero diferente duración. Las imágenes son iguales.
test_param_tonemap_mode_n=0.jpg | test_param_tonemap_mode_n=1.jpg |
test_post_raw_sensitivity_boost
Verifica el aumento de sensibilidad posterior a RAW. Captura un conjunto de imágenes RAW y YUV con sensibilidad diferente, publica la combinación de aumento de sensibilidad RAW y verifica si la media de píxeles de salida coincide con la configuración de la solicitud.
APIs probadas:
android.hardware.camera2.CameraCharacteristics#CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
android.hardware.camera2.CaptureRequest#CONTROL_POST_RAW_SENSITIVITY_BOOST
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Aprobación: Las imágenes RAW se oscurecen a medida que aumenta el aumento, mientras que las imágenes YUV permanecen constantes en el brillo.
test_post_raw_sensitivity_boost_raw_s=3583_boost=0100.jpg
test_post_raw_sensitivity_boost_raw_s=1792_boost=0200.jpg
test_post_raw_sensitivity_boost_raw_s=0896_boost=0400.jpg
test_post_raw_sensitivity_boost_raw_s=0448_boost=0800.jpg
test_post_raw_sensitivity_boost_raw_s=0224_boost=1600.jpg
test_post_raw_sensitivity_boost_raw_s=0112_boost=3199.jpg
test_post_raw_sensitivity_boost_raw_plot_means.png
test_post_raw_sensitivity_boost_yuv_s=0112_boost=3199.jpg
test_post_raw_sensitivity_boost_yuv_s=0448_boost=0800.jpg
test_post_raw_sensitivity_boost_yuv_s=0896_boost=0400.jpg
test_post_raw_sensitivity_boost_yuv_s=1792_boost=0200.jpg
test_post_raw_sensitivity_boost_yuv_s=3585_boost=0100.jpg
test_post_raw_sensitivity_boost_yuv_plot_means.png
test_raw_burst_sensitivity
Captura un conjunto de imágenes sin procesar con ganancias crecientes y mide el ruido. Captura solo en formato sin procesar, en una ráfaga.
APIs probadas:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
Pasa: Cada toma es más ruidosa que la anterior, ya que la ganancia aumenta.
Usa la varianza de la celda de la cuadrícula de estadísticas del centro.
test_raw_burst_sensitivity_variance.png
test_raw_exposure
Captura un conjunto de imágenes sin procesar con un tiempo de exposición creciente y mide los valores de píxeles.
APIs probadas:
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
Aprobado: aumentar el ISO (aumento) hace que los píxeles sean más sensibles a la luz, por lo que el trazado se mueve hacia la izquierda.
test_raw_exposure_s=55.png
(10⁰ es 1 ms, 10¹ es 10 ms y 10⁻¹ es 0.1 ms).
test_raw_exposure_s=132.png
test_raw_exposure_s=209.png
test_raw_exposure_s=286.png
prueba_raw_exposure_s=363.png
prueba_raw_exposure_s=440.png
test_raw_sensitivity
Captura un conjunto de imágenes sin procesar con sensibilidades crecientes y mide el ruido (varianza) en el 10% central de la imagen. Prueba que cada toma sea más ruidosa que la anterior.
APIs probadas:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
Aprobado: La variación aumenta con cada lanzamiento.
test_raw_sensitivity_variance.png
test_reprocess_noise_reduction
Pruebas en las que se aplica android.noiseReduction.mode
para volver a procesar solicitudes.
Captura imágenes reprocesadas con la cámara tenue. Usa una ganancia analógica alta para garantizar que la imagen capturada tenga ruido. Captura tres imágenes reprocesadas: sin NR, "rápida" y "alta calidad". Captura una imagen repreprocesada con ganancia baja y NR desactivada, y usa la varianza de esta como referencia.
APIs probadas:
Aprobación: FAST >= OFF, HQ >= FAST, HQ >> OFF
Gráfico típico de SNR en comparación con NR_MODE
test_tonemap_sequence
Prueba una secuencia de tomas con diferentes curvas de tono. Captura 3 tomas manuales con un mapa de tonos lineal. Captura 3 tomas manuales con el mapa de tonos predeterminado. Calcula el delta entre cada par de fotogramas consecutivos.
APIs probadas:
Aprobación: Hay 3 fotogramas idénticos seguidos de un conjunto diferente de 3 fotogramas idénticos.
test_tonemap_sequence_i=0.jpg
test_tonemap_sequence_i=1.jpg
test_tonemap_sequence_i=2.jpg
test_tonemap_sequence_i=3.jpg
test_tonemap_sequence_i=4.jpg
prueba_tono_secuencia_i=5.jpg
test_yuv_jpeg_all
Prueba que todos los tamaños y formatos informados para la captura de imágenes funcionen. Usa una solicitud manual con un mapa de tonos lineal para que YUV y JPEG se vean iguales cuando el módulo image_processing_utils
los convierta. Las imágenes no se guardan de forma predeterminada, pero se pueden guardar habilitando debug_mode
.
APIs probadas:
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
android.graphics.ImageFormat#JPEG
Aprobación: Todos los centros de imagen tienen una diferencia máxima de RMS (valor raíz cuadrada media de una señal) en las imágenes convertidas a RGB con el 3% de la imagen YUV de mayor resolución.
prueba_yuv_jpeg_all.png
test_yuv_plus_dng
Prueba que los tamaños y formatos informados para la captura de imágenes funcionen.
APIs probadas:
Aprobación: La prueba se completa y muestra las imágenes solicitadas.
test_yuv_plus_dng.jpg
prueba_yuv_plus_jpeg
Prueba la captura de un solo fotograma como salida YUV y JPEG. Usa una solicitud manual con un mapa de tonos lineal para que YUV y JPEG se vean iguales cuando el módulo image_processing_utils
los convierta.
APIs probadas:
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
android.graphics.ImageFormat#JPEG
Aprobado: Las imágenes YUV y JPEG son similares y tienen una diferencia inferior al 1% de RMS (valor raíz cuadrado de una señal).
test_yuv_plus_jpg_jpg.jpg | prueba_yuv_plus_jpeg_yuv.jpg |
test_yuv_plus_raw
Prueba la captura de un solo fotograma como salidas RAW/RAW10/RAW12 y YUV, si son compatibles. Usa una solicitud manual con un mapa de tonos lineal, por lo que se espera que los datos sin procesar y YUV sean iguales. Compara los valores RGB del 10% central de las imágenes convertidas a RGB. Registrosandroid.shading.mode
.
APIs probadas:
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
android.hardware.camera2.CaptureRequest#CONTROL_MODE
android.hardware.camera2.CaptureRequest#SHADING_MODE
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
android.hardware.graphics.ImageFormat#RAW10
android.hardware.graphics.ImageFormat#RAW12
Aprobación: Las imágenes YUV y sin procesar son similares y tienen una diferencia de RMS (valor de la raíz cuadrada de la media de una señal) inferior al 3.5%.
prueba_yuv_plus_raw_shading=1_raw.jpg | test_yuv_plus_raw_shading=1_yuv.jpg |
escena2_a
scene2_a tiene tres rostros con un fondo gris y ropa neutra. Se eligieron los rostros para que tengan una amplia variedad de tonos de piel. El gráfico debe tener la orientación correcta para que la detección de rostro funcione de manera óptima.
escena2_a
test_autoframing
Prueba el comportamiento del enmarcado 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 enmarcado automático configurando AUTOFRAMING
en CaptureRequest
como True
y verifica si se pueden detectar todos los rostros de la escena original cuando el estado converge (es decir, cuando AUTOFRAMING_STATE
en CaptureResult
se establece como AUTOFRAMING_STATE_CONVERGED
).
APIs probadas:
android.hardware.camera2.CameraCharacteristics#CONTROL_AUTOFRAMING_AVAILABLE
android.hardware.camera2.CaptureRequest#CONTROL_AUTOFRAMING
android.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMING
android.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMING_STATE
Aprobado: Se detectan los tres rostros.
test_display_p3
Prueba la captura de Display P3 en JPEG con la API de ColorSpaceProfiles
. Prueba que el JPEG capturado tiene un perfil ICC apropiado en su encabezado y que la imagen contiene colores fuera de la gama sRGB.
APIs probadas:
android.hardware.camera2.params.ColorSpaceProfiles
android.hardware.camera2.params.SessionConfiguration#setColorSpace
Aprobado: El archivo JPEG contiene un perfil ICC Display P3 y colores fuera de la gama sRGB.
test_effects
Captura el fotograma para los efectos de cámara compatibles y verifica si se generan correctamente. La prueba solo verifica los efectos OFF
y MONO
, pero guarda imágenes para todos los efectos admitidos.
APIs probadas:
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_EFFECTS
android.hardware.camera2.CaptureRequest#CONTROL_EFFECT_MODE
Pasar: Captura la imagen de la escena con los efectos OFF
y una imagen monocromática con los efectos establecidos en MONO
.
test_effects_MONO.jpg
test_format_combos
Prueba diferentes combinaciones de formatos de salida.
APIs probadas:
android.hardware.camera2.CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP
android.hardware.camera2.params.StreamConfigurationMap#getOutputSizes()
android.hardware.camera2.CameraCaptureSession#captureBurst()
Aprobado: Todas las combinaciones se capturan correctamente.
test_num_faces
Prueba la detección de rostro.
APIs probadas:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Aprobación: Se encuentran tres rostros.
test_num_faces_fd_mode_1.jpg
test_reprocess_uv_swap
Comprueba que el reprocesamiento de YUV no cambie los planos U y V. Para detectar esto, se calcula la suma de las diferencias absolutas (SAD) entre la imagen que se volvió a procesar y una captura que no se volvió a procesar. Si el intercambio de los planos U y V de salida de la captura reprocesada da como resultado un aumento del SAD, se supone que la salida tiene los planos U y V correctos.
APIs probadas:
android.hardware.camera2.CameraDevice#createCaptureSession
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_YUV_REPROCESSING
android.hardware.camera2.CaptureRequest#EDGE_MODE
android.hardware.camera2.CaptureResult#NOISE_REDUCTION_MODE
Aprobación: Los planos U y V no se intercambian.
prueba_reprocesamiento_uv_swap.png
scene2_b
test_num_faces
Prueba la detección de rostros con una mayor diversidad de tonos de piel en las escenas de rostros.
APIs probadas:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Aprobado: Se encuentran 3 rostros.
test_num_faces_fd_mode_1.jpg
prueba_yuv_jpeg_captura_misma
Captura dos imágenes con los formatos YUV y JPEG comunes más grandes con la misma relación de aspecto que el formato JPEG más grande que no supere una resolución de 1920 × 1440.
Establece jpeg.quality
en 100 y captura una solicitud de doble superficie. Convierte ambas imágenes en arrays RGB y calcula la diferencia de la raíz cuadrada de la media (RMS) en 3D entre las dos imágenes.
Además, esta prueba verifica que los resultados YUV de todos los casos de uso de transmisión compatibles sean bastante similares a los YUV con el caso de uso de STILL_CAPTURE
.
APIs probadas:
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASES
android.hardware.camera2.CaptureRequest#JPEG_QUALITY
android.graphics.ImageFormat#JPEG
Aprobación: Las imágenes YUV y JPEG del caso de uso de STILL_CAPTURE
tienen una diferencia de menos del 3% en RMS (valor raíz cuadrada media de una señal). Las imágenes YUV de todos los casos de uso admitidos tienen una diferencia de menos del 10% en RMS con las imágenes YUV del caso de uso de STILL_CAPTURE
.
scene2_c
test_num_faces
Prueba la detección de rostros con una mayor diversidad de tonos de piel en las escenas de rostros.
APIs probadas:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Aprobado: Se encuentran 3 rostros.
prueba_num_faces_fd_mode_1.jpg
test_jpeg_capture_perf_class
Prueba la latencia de captura de JPEG para la clase de rendimiento S, como se especifica en la sección 2.2.7.2 Cámara del CDD.
Aprobación: DEBE tener una latencia de captura de JPEG de camera2 inferior a 1000 ms para una resolución de 1080p, según lo mida la prueba de rendimiento de la cámara CTS en condiciones de iluminación de ITS (3000 K) para ambas cámaras principales.
clase_de_prueba_de_la_cámara_de_perfeccionamiento
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 del CDD.
Aprobación: DEBE tener una latencia de inicio de Camera2 (abrir la cámara hasta el primer fotograma de vista previa) inferior a 600 ms, según lo mida la prueba de rendimiento de la cámara CTS en las condiciones de iluminación de ITS (3000 K) para ambas cámaras principales.
test_default_camera_hdr
Prueba que la captura de cámara predeterminada sea Ultra HDR para la clase de rendimiento 15, como se especifica en la sección 2.2.7.2 Cámara del CDD.
Aprobación: La captura predeterminada del paquete de la cámara DEBE ser Ultra HDR para un dispositivo de clase de rendimiento 15.
scene2_d
test_num_faces
Prueba la detección de rostros con una mayor diversidad de tonos de piel en las escenas de rostros.
APIs probadas:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Aprobado: Se encuentran 3 rostros.
escena2_e
test_continuous_picture
Se capturan 50 fotogramas de resolución VGA con el primer parámetro de configuración de la solicitud de captura.android.control.afMode = 4 (CONTINUOUS_PICTURE).
APIs probadas:
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
android.hardware.camera2.CaptureResult#CONTROL_AF_STATE
android.hardware.camera2.CaptureResult#CONTROL_AWB_STATE
Aprobado: El sistema 3A se establece al final de una captura de 50 fotogramas.
test_num_faces
Prueba la detección de rostros con una mayor diversidad de tonos de piel en las escenas de rostros.
APIs probadas:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Aprobado: Se encuentran 3 rostros.
scene2_f
scene2_f tiene tres rostros con un fondo y ropa blancos. Los rostros tienen una amplia variedad de tonos de piel y un alto contraste con el fondo.
scene2_f
test_num_faces
Prueba la detección de rostros con una mayor diversidad de tonos de piel en las escenas de rostros.
APIs probadas:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Aprobado: Se encuentran 3 rostros.
test_num_faces_fd_mode_1.jpg
scene3
Scene3 usa el gráfico ISO12233 y la mayoría de las pruebas usan un método de extractor de gráficos para encontrar el gráfico en la escena. Por este motivo, la mayoría de las imágenes guardadas no tienen bordes como las imágenes de 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_edge_enhancement
Prueba que el parámetro android.edge.mode
se aplique correctamente. Captura imágenes que no se vuelven a procesar para cada modo de borde y muestra la nitidez de la imagen de salida y los metadatos del resultado de la captura. Procesa una solicitud de captura con un modo de borde, una sensibilidad, un tiempo de exposición, una distancia de enfoque y un parámetro de superficie de salida determinados.
Aprobación: El modo HQ
(2) es más nítido que el modo OFF
(0). El modo FAST
(1) es más nítido que el modo OFF
. El modo HQ
es más nítido o igual que el modo FAST
.
APIs probadas:
Parámetros de cámara afectados:
EDGE_MODE
test_edge_enhancement_edge=0.jpg
test_edge_enhancement_edge=1.jpg (modo rápido)
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 CDD Cámara frontal [C-1-5].
Las imágenes reflejadas, invertidas o rotadas se pueden identificar por la función de diamante cerca del centro.
Aprobado: La imagen no está invertida, reflejada ni rotada.
test_flip_mirror_scene_patch.jpg
test_imu_drift
Prueba si la unidad de medición inercial (IMU) tiene una salida estable durante 30 segundos mientras el dispositivo está inmóvil y captura una vista previa de alta definición.
APIs probadas:
android.hardware.Sensor
android.hardware.SensorEvent
android.hardware.Sensor#TYPE_GYROSCOPE
android.hardware.Sensor#TYPE_ROTATION_VECTOR
Aprobado:
- La deriva del giroscopio es inferior a 0.01 rad durante el tiempo de prueba.
- La varianza de la lectura del giroscopio es inferior a 1E-7 rad2/s2/Hz durante el tiempo de la prueba.
- La desviación del vector de rotación es menor que 0.01 rad durante el tiempo de la prueba.
- (Aún no es obligatorio) La deriva del giroscopio es inferior a 1 grado por segundo.
test_imu_drift_gyro_drift.png
test_imu_drift_rotation_vector_drift.png
test_landscape_to_portrait
Prueba si la anulación de horizontal a vertical funciona correctamente para los sensores orientados horizontalmente.
APIs probadas:
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_ROTATE_AND_CROP_MODES
android.hardware.camera2.CameraCharacteristics#SENSOR_ORIENTATION
android.hardware.camera2.CameraCharacteristics#getCameraCharacteristics
Aprobación: La prueba puede ubicar un gráfico con la rotación esperada (0 grados cuando la anulación de horizontal a vertical está inhabilitada, 90 grados cuando está habilitada).
test_landscape_to_portrait.png
test_lens_movement_reporting
Prueba si la marca de movimiento del lente se informa correctamente. Captura una ráfaga de 24 imágenes con los primeros 12 fotogramas a la distancia de enfoque óptima (como lo encontró 3A) y los últimos 12 fotogramas a la distancia de enfoque mínima. Alrededor del fotograma 12, el lente se mueve, lo que hace que disminuya la nitidez. La nitidez se estabiliza a medida que el objetivo se mueve a la posición final. La marca de movimiento del lente debe confirmarse en todos los fotogramas en los que la nitidez es intermedia a la nitidez en los primeros fotogramas con el lente estacionario en la distancia focal óptima y los últimos fotogramas en los que el lente está estacionario en la distancia focal mínima. No es importante el fotograma exacto en el que se mueve el lente: lo que se verifica es que se confirme la marca de movimiento cuando el lente se mueve.
APIs probadas:
android.hardware.camera2.CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCE
android.hardware.camera2.CaptureResult#LENS_STATE
android.hardware.camera2.CaptureResult#LENS_FOCUS_DISTANCE
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
android.hardware.camera2.CaptureRequest#LENS_FOCUS_DISTANCE
Aprobación: La marca de movimiento del lente es True
en el fotograma con cambio de nitidez.
Mecanismos de fallo:
lens_moving: True
(android.hardware.camera2.CaptureResult#LENS_STATE
= 1) entest_log.DEBUG
solo se confirma en los fotogramas en los que no cambia la nitidez.- Los fotogramas con
lens_moving: False
(android.hardware.camera2.CaptureResult#LENS_STATE
= 0) entest_log.DEBUG
tienen una diferencia de nitidez en comparación con los primeros fotogramas a la distancia focal óptima o los últimos fotogramas a la distancia focal mínima.
prueba_reprocesamiento_del_arista_mejora
Prueba si los métodos de procesamiento compatibles para la mejora de los bordes funcionan correctamente. Procesa una solicitud de captura con un modo de borde de procesamiento nuevamente determinado y compara los diferentes modos de captura con los modos de borde de procesamiento nuevamente inhabilitados.
APIs probadas:
android.hardware.camera2.CaptureRequest#EDGE_MODE
android.hardware.camera2.CaptureRequest#REPROCESS_EFFECTIVE_EXPOSURE_FACTOR
Aprobado: La nitidez de los diferentes modos de bordes es correcta. HQ
(modo 2) es más nítido que OFF
(modo 0), y la mejora entre los diferentes modos es similar.
prueba_reprocess_edge_mejora_plot.png
scene4
La escena 4 consta de un círculo negro sobre un fondo blanco dentro de un cuadrado.
Las pruebas en scene4 pueden ser sensibles a la alineación, por lo que, a partir de la versión 15, puedes usar check_alignment.py
en el directorio de herramientas para habilitar una verificación de la alineación del DUT y del gráfico.
scene4
test_30_60fps_preview_fov_match
Prueba que los videos de vista previa de 30 FPS y 60 FPS tienen el mismo FoV. La prueba captura dos videos, uno con 30 FPS y otro con 60 FPS. Se selecciona un fotograma representativo de cada video y se analiza para garantizar que los cambios del campo de visión en los dos videos estén dentro de las especificaciones. Pruebas que la relación de aspecto del círculo permanece constante, el centro del círculo permanece estable y el radio del círculo permanece constante.
APIs probadas:
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureResult#LENS_DISTORTION
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
Aprobado: Las imágenes no se estiran, el centro de las imágenes no difiere en más del 3% y el cambio máximo de relación de aspecto entre los videos de 30 FPS y 60 FPS no es superior al 7.5%.
Mecanismos de fallo:
- El círculo del video de 30 FPS es muy diferente en tamaño al del video de 60 FPS.
- La canalización de procesamiento distorsiona el círculo en la imagen capturada.
- 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 de la imagen capturada tiene un reflejo en el centro y no se ve completamente relleno.
prueba_aspect_ratio_and_crop
Prueba si las imágenes se distorsionan o se recortan de forma inesperada en la canalización de imágenes. Toma fotos de un círculo en todos los formatos. Verifica que el círculo no esté distorsionado, que no se mueva del centro de la imagen y que no cambie de tamaño de forma incorrecta con diferentes relaciones de aspecto o resoluciones.
APIs probadas:
android.hardware.camera2.CaptureResult#LENS_DISTORTION
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
Aprobación: Las imágenes no se estiran, el centro de las imágenes no difiere en más del 3% y se conserva el campo visual (FoV) máximo posible.
Mecanismos de falla:
- La cámara no está alineada con el círculo que se muestra en la tablet en el centro de la escena capturada.
- La canalización de procesamiento distorsiona el círculo en la imagen capturada.
- La imagen de menor resolución se recorta dos veces en la canalización de imágenes, lo que crea un campo de visión diferente entre las imágenes de alta y baja resolución.
- El círculo de 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 de la imagen capturada tiene un reflejo en el centro y no se ve completamente relleno.
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 varias cámaras. Con las subcámaras físicas multicámara, se toma una foto con una de las cámaras físicas. Encuentra el centro del círculo. Proyecta el centro del círculo en función de las coordenadas mundiales de cada cámara. Compara la diferencia entre los centros de los círculos de las cámaras en coordenadas mundiales. Vuelve a proyectar las coordenadas mundiales en coordenadas de píxeles y las compara con las originales como una verificación de validez. Compara los tamaños de los círculos para verificar si las distancias focales de las cámaras son diferentes.
APIs probadas:
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
android.hardware.camera2.CameraCharacteristics#LENS_DISTORTION
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
android.hardware.camera2.CameraCharacteristics#LENS_INTRINSIC_CALIBRATION
android.hardware.camera2.CameraCharacteristics#LENS_POSE_ROTATION
android.hardware.camera2.CameraCharacteristics#LENS_POSE_TRANSLATION
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
android.hardware.camera2.CaptureRequest#DISTORTION_CORRECTION_MODE
Aprobación: Los centros y tamaños de los círculos son los esperados en las imágenes proyectadas en comparación con las imágenes capturadas con datos de calibración de la cámara y distancias focales.
Mecanismos de fallo:
LENS_INTRINSIC_CALIBRATION
,LENS_POSE_TRANSLATION
oLENS_POSE_ROTATION
son valores de diseño y no datos de calibración reales.- El sistema de cámaras no es adecuado para la configuración de prueba. Por ejemplo, probar un sistema de cámara panorámica y ultrapanorámica con el equipo de prueba de RFoV. Para obtener más información, consulta Pregunta frecuente 1 sobre el sistema ITS integrado en la cámara.
prueba_vista previa_aspect_ratio_y_crop
Al igual que la prueba test_aspect_ratio_and_crop para capturas estáticas, esta prueba verifica los formatos de vista previa admitidos para garantizar que los fotogramas de vista previa no se estiren ni recorten de forma incorrecta. Verifica que la relación de aspecto del círculo no cambie, que las imágenes recortadas mantengan el círculo en el centro del marco y que el tamaño del círculo no cambie para un formato constante o con diferentes resoluciones (verificación del campo de visión).
APIs probadas:
android.hardware.camera2.CaptureResult#LENS_DISTORTION
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
Aprobación: Las imágenes no se estiran, el centro de las imágenes no difiere en más del 3% y se conserva el FoV (campo de visión) máximo posible.
test_preview_stabilization_fov
Verifica los tamaños de vista previa compatibles para asegurarse de que el FoV se recorte correctamente.
La prueba captura dos videos, uno con estabilización de vista previa ON
y otro con estabilización de vista previa OFF
. Se selecciona un fotograma representativo de cada video y se analiza para garantizar que los cambios del campo de visión en los dos videos estén dentro de las especificaciones.
APIs probadas:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
Aprobado: La relación de aspecto del círculo se mantiene constante, la ubicación central del círculo se mantiene estable y el tamaño del círculo no cambia más de un 20%.
prueba_proporción_de_aspect_ratio_y_recorte
Graba videos de un círculo dentro de un cuadrado sobre todos los formatos de video. Extrae los fotogramas clave y verifica que la relación de aspecto del círculo no cambie, 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 del campo visual).
APIs probadas:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.hardware.camera2.CaptureResult#LENS_DISTORTION
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
android.media.MediaRecorder
android.media.CamcorderProfile
Aprobado: Los fotogramas de video no se estiran, el centro de los fotogramas no difiere en más del 3% y se conserva el FoV (campo visual) máximo posible.
scene5
Scene5 requiere una escena gris con iluminación uniforme. Esto se logra con un difusor que se coloca sobre el 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, coloca un difusor frente a la cámara y apúntalo hacia una fuente de iluminación de alrededor de 2,000 lux. Las imágenes capturadas para escena5 requieren iluminación difusa sin ninguna característica evidente. La siguiente es una imagen de muestra:
captura de ambiente 5
prueba_sombra_de_lente_y_uniformidad_de_color
Prueba que la corrección de sombras del lente se aplica de forma adecuada y que el color de una escena monocromática uniforme se distribuye de manera uniforme. Realiza esta prueba en un fotograma YUV con 3A automático. La atenuación de la lente se evalúa en función del canal Y. Mide el valor promedio de Y para cada bloque de muestra especificado y determina si se aprueba o no en función de la comparación con el valor de Y central. La prueba de uniformidad de colores se evalúa en el espacio r/g y b/g.
APIs probadas:
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
Aprobado: en el radio especificado de la imagen, la varianza de los valores r/g y b/g debe ser inferior al 20% para aprobar la prueba.
scene6
La escena 6 es una cuadrícula de círculos pequeños con un cuadrado en una esquina para indicar la orientación. Los círculos pequeños son necesarios para probar la función de zoom en un rango amplio.
Las pruebas en escena6 pueden ser sensibles a la alineación, por lo que, a partir de la versión 15, puedes usar check_alignment.py
en el directorio de herramientas para habilitar una verificación del DUT y la alineación del gráfico.
scene6
prueba_en_sensor_zoom
Prueba el comportamiento de la función de zoom en el sensor de la cámara, que produce imágenes RAW recortadas.
Con el caso de uso de transmisión configurado en CROPPED_RAW
, la prueba toma dos capturas en el rango de zoom, una imagen RAW de campo visual completo (FoV) y una imagen RAW recortada. La prueba convierte las imágenes en arrays RGB, reduce la escala de la imagen RAW de tamaño completo recortada al tamaño que informa SCALER_RAW_CROP_REGION
y calcula la diferencia de la raíz cuadrada de la media (RMS) en 3D entre las dos imágenes.
APIs probadas:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.hardware.camera2.CameraMetadata#SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CaptureResult#SCALER_RAW_CROP_REGION
Aprobado: La diferencia de la raíz cuadrada de la media (RMS) en 3D entre la imagen RAW recortada y reducida y la imagen RAW del campo visual completo es inferior al umbral establecido en la prueba.
test_zoom
Prueba el comportamiento del zoom de la cámara. Toma capturas del rango de zoom y comprueba si los círculos se agrandan a medida que la cámara se acerca. Para cada formato (YUV, JPEG), se usa la misma sesión de captura de la cámara para converger 3A y tomar capturas.
APIs probadas:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Aprobación: El tamaño relativo del círculo capturado es preciso en función de la relación de zoom solicitada para garantizar que la cámara realice el zoom correctamente.
test_zoom para encontrar el contorno del círculo más cercano al centro.
test_low_latency_zoom
Prueba el comportamiento del zoom de baja latencia de la cámara. Realiza capturas en el rango de zoom con android.control.settingsOverride = 1 (SETTINGS_OVERRIDE_ZOOM)
y comprueba si los círculos en las imágenes de salida coinciden con las relaciones de zoom en los metadatos de captura. Se usa la misma sesión de captura de la cámara para converger el 3A y realizar capturas.
APIs probadas:
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_SETTINGS_OVERRIDES
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CaptureRequest#CONTROL_SETTINGS_OVERRIDE
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CaptureResult#CONTROL_SETTINGS_OVERRIDE
Aprobación: El tamaño relativo del círculo capturado es preciso en función de los metadatos del resultado de la proporción de zoom.
test_preview_video_zoom_match
Pruebas que, mientras se graba y se acerca, la vista previa y el resultado del video muestran y graban el mismo resultado. Calcula el tamaño del círculo más cercano al centro con diferentes relaciones de zoom y comprueba si el tamaño del círculo aumenta a medida que aumenta la relación de zoom.
APIs probadas:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Aprobación: El tamaño relativo del círculo capturado es preciso en función de la relación de zoom solicitada en el video y la vista previa.
VGA_640x480_key_frame.png (antes de zoom)
preview_640x480_key_frame.png (antes del zoom)
VGA_640x480_key_frame.png (después del zoom)
preview_640x480_key_frame.png (después del zoom)
test_preview_zoom
Prueba que la relación de zoom de cada fotograma de vista previa coincida con los metadatos de captura correspondientes. La prueba toma fotogramas de vista previa sobre el rango de zoom y encuentra el contorno del círculo más cercano al centro. Luego, la prueba verifica que el círculo seleccionado se agrande y que el centro del círculo se aleje del centro de la imagen a medida que la cámara se acerca.
APIs probadas:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Aprobado: El tamaño relativo del círculo seleccionado es preciso para la proporción de zoom informada del resultado de captura correspondiente para todos los marcos de vista previa. La distancia relativa del círculo seleccionado desde el centro de la imagen es precisa para la relación de zoom informada del resultado de captura correspondiente de todos los fotogramas de vista previa.
Imágenes de test_preview_zoom que muestran el círculo seleccionado más cercano al centro
test_session_characteristics_zoom
Prueba el rango de relación de zoom para todas las configuraciones de sesión compatibles que se enumeran en CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION
.
Para cada una de esas configuraciones, si CameraDeviceSetup#isSessionConfigurationSupported
muestra el valor "true", la prueba verifica que se pueda alcanzar el rango de proporción de zoom que se muestra en CameraDeviceSetup#getSessionCharacteristics
.
APIs probadas:
android.hardware.camera2.CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION
android.hardware.camera2.CameraDevice.CameraDeviceSetup#isSessionConfigurationSupported
android.hardware.camera2.CameraDevice.CameraDeviceSetup#getSessionCharacteristics
Aprobación: Se pueden alcanzar las relaciones de zoom mínimas y máximas para cada SessionConfiguration
compatible que se indica en CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION
.
scene7
Scene7 es un marco rectangular dividido en cuatro cuadrantes iguales, cada uno con un color diferente. En el centro del rectángulo, hay un gráfico de bordes inclinados para realizar verificaciones de nitidez. Cuatro marcadores ArUco están alineados con las cuatro esquinas externas del rectángulo para ayudar a obtener coordenadas precisas del marco del rectángulo principal con diferentes relaciones de zoom.
scene7
test_multi_camera_switch
Esta prueba verifica que, durante la grabación de vista previa con diferentes relaciones de zoom, el cambio entre los lentes ultraanchos (UW) y anchos (W) genera valores RGB similares.
La prueba usa diferentes relaciones de zoom dentro del rango predefinido para realizar una grabación de vista previa dinámica e identificar el punto en el que cambia la cámara física. Este punto marca el cruce entre el lente UW y el W.
Los fotogramas capturados en el punto de intersección y antes de él se analizan para la exposición automática (AE), el balance de blancos automático (AWB) y el enfoque automático (AF).
La comprobación de AE garantiza que el cambio de luma esté dentro del rango esperado para las imágenes de lente UW y W. La verificación del balance de blancos verifica que las relaciones de R/G y B/G estén dentro de los valores umbrales para las imágenes de lentes UW y W. La verificación del enfoque automático evalúa el valor de la estimación de nitidez en función de la magnitud promedio del gradiente entre las imágenes de los lentes UW y W.
APIs probadas:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.media.CamcorderProfile
android.media.MediaRecorder
Aprobación: Para que la prueba se apruebe, las verificaciones de AE, AWB y AF deben aprobarse. Los siguientes son los criterios para cada verificación:
- Verificación de AE: El cambio de luma entre las imágenes de los lentes UW y W debe ser inferior al 0.5%.
- Verificación del balance de blancos automático: La diferencia entre los valores de R/G y B/G para las imágenes de los lentes UW y W debe ser inferior al 0.5%.
- Verificación de AF: El cambio de nitidez de la imagen entre las imágenes del lente UW y W debe ser inferior al 2%.
scene8
La escena 8 es un marco rectangular dividido en cuatro regiones iguales, cada una de las cuales contiene un retrato tomado con una exposición diferente o superpuesto con un tono de color diferente (tono azul, exposición más alta, exposición más baja, tono amarillo). Cuatro marcadores ArUco se alinean con las cuatro esquinas externas del rectángulo para obtener coordenadas precisas del marco del rectángulo principal.
scene8
test_ae_awb_regions
Prueba que los valores de RGB y luma difieren cuando se graba la vista previa en diferentes regiones de exposición automática (AE) y balance de blancos automático (AWB).
La prueba registra una vista previa de ocho segundos y realiza la medición de AE y AWB en cada cuadrante durante dos segundos. Luego, la prueba extrae un fotograma de la grabación de vista previa de cada región y usa los fotogramas extraídos para realizar las siguientes verificaciones de AE y AWB:
- Verificación de AE: Verifica que el fotograma que mide la región con una exposición menor tenga un valor de luma aumentado de más del 1% en comparación con el fotograma que mide la región con una exposición mayor. De esta manera, se verifica que las imágenes se iluminan cuando se mide una región oscura.
- Verificación del balance de blancos automático: Verifica que la proporción de rojo a azul (de los valores RGB promedio de la imagen) en el fotograma con la región de medición azul sea más del 2% superior al fotograma con la región de medición amarilla. De esta manera, se verifica que las imágenes tengan un valor RGB equilibrado cuando se mide una región amarilla (cálida) o azul (frío).
APIs probadas:
android.hardware.camera2.CaptureRequest#CONTROL_AWB_REGIONS
android.hardware.camera2.CaptureRequest#CONTROL_AE_REGIONS
android.hardware.camera2.CameraCharacteristics#CONTROL_MAX_REGIONS_AE
android.hardware.camera2.CameraCharacteristics#CONTROL_MAX_REGIONS_AWB
Aprobación: La AE y el AWB pasan las verificaciones.
scene9
Scene9 consta de miles de círculos de colores y tamaños aleatorios para crear una escena con una repetibilidad muy baja y sobrecargar los algoritmos de compresión de JPEG.
escena9
test_jpeg_high_entropy
Prueba que la compresión JPEG de la cámara funcione en escena9 con alta entropía y el factor de calidad JPEG establecido en 100%. El factor de zoom aumenta para garantizar que la escena que se muestra en la tablet ocupe todo el campo de visión de la cámara.
APIs probadas:
Aprobado: El archivo JPEG se comprime correctamente, se escribe y se lee desde el disco.
test_jpeg_quality
Prueba la calidad de compresión JPEG de la cámara. Paso las calidades de JPEG a través de android.jpeg.quality
y garantiza que las tablas de cuantificación cambien correctamente.
APIs probadas:
Aprobación: La matriz de cuantización disminuye con el aumento de la calidad. (la matriz representa el factor de división).
Promedios de matrices de DQT de luma/croma de la cámara posterior del Pixel 4 en comparación con la calidad de JPEG
Ejemplo de prueba fallida
Ten en cuenta que, para las imágenes de muy baja calidad (jpeg.quality < 50), no hay un aumento de la compresión en la matriz de cuantificación.
scene_video
La escena scene_video
es una escena de video. Consiste en cuatro círculos de colores diferentes que se mueven hacia adelante y hacia atrás a diferentes velocidades de fotogramas sobre un fondo blanco.
video_de_escena
test_preview_frame_drop
Prueba que la velocidad de fotogramas de vista previa solicitada se mantenga con una escena dinámica. Esta prueba se ejecuta en todas las cámaras que están expuestas a apps de terceros.
APIs probadas:
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.hardware.camera2.CaptureResult#CONTROL_AE_TARGET_FPS_RANGE
android.media.CamcorderProfile
android.media.MediaRecorder
Aprobación: La velocidad de fotogramas de la vista previa está en el máximo del rango de velocidad de fotogramas solicitada, y la variación promedio entre fotogramas consecutivos es inferior a la tolerancia relativa establecida en la prueba.
extensiones_de_escena
Las pruebas de scene_extensions
son para extensiones de cámara y deben usar ITS integrado en la cámara, ya que requieren un control preciso del entorno de prueba. Además, se debe controlar toda la fuga de luz. Esto puede requerir cubrir el equipo de prueba, el DUT y la tablet con una cubierta protectora, así como eliminar la fuga de luz de la pantalla frontal del DUT.
scene_hdr
La escena scene_hdr
consta de un retrato a la izquierda y un código QR de contraste bajo a la derecha.
scene_hdr
test_hdr_extension
Prueba la extensión HDR. Toma capturas con y sin la extensión habilitada, y verifica si esta hace que el código QR sea más detectable.
APIs probadas:
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
android.hardware.camera2.CameraExtensionSession#capture
Aprobado: La extensión HDR reduce la cantidad de cambios de contraste necesarios para detectar el código QR o reduce el gradiente a lo largo del código QR.
scene_low_light
La escena scene_low_light
consta de una cuadrícula de cuadrados de diferentes tonos de gris sobre un fondo negro, y la cuadrícula de cuadrados está unida por un contorno rojo. Los cuadrados están dispuestos en una orientación de curva de Hilbert.
escena_baja_luz
extensión_noche_prueba
Prueba la extensión Night. Realiza capturas con la extensión habilitada y realiza las siguientes acciones:
- Detecta la presencia de 20 cuadrados.
- Calcula la luma limitada por cada cuadrado
- Calcula el valor de luma promedio de los 6 primeros cuadrados según la orientación de la cuadrícula de la curva de Hilbert
- Calcula la diferencia en el valor de luma de cuadrados consecutivos (por ejemplo, cuadrado2 - cuadrado1) hasta los cuadrados 5 y 6 (cuadrado6 - cuadrado5) y encuentra el promedio de las cinco diferencias calculadas.
APIs probadas:
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
android.hardware.camera2.CameraExtensionSession#capture
Aprobado: El valor promedio de luma de los primeros 6 cuadrados debe ser de al menos 85, y la diferencia promedio en el valor de luma de los cuadrados consecutivos hasta los cuadrados 5 y 6 debe ser de al menos 17.
En la siguiente representación de luminancia, se muestra el aspecto de un resultado de prueba aprobado.
test_low_light_boost_extension
Prueba el modo de AE con mejora con poca luz. Si Camera2 admite el modo de AE de aumento de poca luz, esta prueba se realiza para Camera2. Si la extensión de la cámara del modo nocturno es compatible con el modo AE de mejora con poca luz, esta prueba también se realiza para la extensión de la cámara en modo nocturno. Esta prueba establece el modo de AE en el aumento de poca luz, toma un fotograma de la vista previa y realiza lo siguiente:
- Detecta la presencia de 20 cuadros.
- Calcula la luma delimitada por cada cuadro.
- Calcula el valor de luma promedio de los primeros 6 cuadrados según la orientación de la cuadrícula de la curva de Hilbert.
- Calcula la diferencia en el valor de luma de cuadrados consecutivos (por ejemplo, cuadrado2 - cuadrado1) hasta los cuadrados 5 y 6 (cuadrado6 - cuadrado5) y encuentra el promedio de las cinco diferencias calculadas.
APIs probadas:
android.hardware.camera2.CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES
android.hardware.camera2.CameraMetadata#CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
Aprobado: El valor promedio de luma de los primeros 6 cuadrados debe ser de al menos 70, y la diferencia promedio en el valor de luma de los cuadrados consecutivos hasta los cuadrados 5 y 6 debe ser de al menos 17.
scene_flash
Las pruebas de scene_flash
requieren una escena oscura en la caja de fusión de sensores.
prueba_auto_flash
Pruebas que se activa el flash automático en una escena oscura para las cámaras frontal y posterior En el caso de las cámaras frontales, el flash automático usa la pantalla para iluminar la escena, no una unidad de flash física. La prueba verifica que la escritura en la memoria flash automática se active. Para ello, comprueba que el centro de la imagen de mosaico esté más brillante con la escritura en la memoria flash automática habilitada. Para activar el flash automático, se deben apagar las luces del equipo de prueba. Las luces se pueden apagar automáticamente con el controlador Arduino. La escena debe estar completamente oscura para que la prueba funcione correctamente. La app de cámara de Jetpack (JCA) debe estar instalada en el dispositivo antes de la prueba. El flash automático para cámaras posteriores depende de que se active el estado de AE, pero el flash automático para cámaras frontales no depende de AE y siempre se activa.
APIs probadas:
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLE
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
android.hardware.camera2.CaptureRequest#FLASH_MODE
Aprobación: El centro de la imagen de la tarjeta con el flash automático habilitado es más brillante que la imagen de la escena original en todas las cámaras.
test_flash_strength
Pruebas que el control de intensidad de la luz estroboscópica en el modo SINGLE
se implementa correctamente.
Verifica que, si el dispositivo admite el control de intensidad del flash durante el uso de la cámara en el modo SINGLE
, la intensidad del flash cambie con los diferentes niveles de intensidad solicitados. Verifica que el control de intensidad del flash funcione con diferentes AE_MODES
.
Por ejemplo, si el modo de exposición automática es ON
o OFF
, el nivel de intensidad del flash tiene un efecto en el brillo, y si el modo es ON_AUTO_FLASH
, el nivel de intensidad del flash no tiene ningún efecto en el brillo.
Para realizar la prueba, se deben apagar las luces del sistema de prueba. Las luces se pueden apagar automáticamente con el controlador Arduino.
La escena debe estar completamente oscura para que la prueba funcione correctamente.
APIs probadas:
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_DEFAULT_LEVEL
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_MAXIMUM_LEVEL
android.hardware.camera2.CameraCharacteristics#FLASH_SINGLE_STRENGTH_DEFAULT_LEVEL
android.hardware.camera2.CameraCharacteristics#FLASH_SINGLE_STRENGTH_MAX_LEVEL
Aprobación:
Cuando el modo de exposición automática es ON
o OFF
, el brillo de los parches de imagen aumenta a medida que el nivel de intensidad del flash aumenta de no tener flash a FLASH_SINGLE_STRENGTH_MAX_LEVEL
.
Cuando el modo de exposición automática es ON_AUTO_FLASH
, la diferencia en el brillo de los parches de imagen está dentro de la tolerancia a medida que el nivel de intensidad del flash aumenta de sin flash a FLASH_SINGLE_STRENGTH_MAX_LEVEL
.
Instantánea_LED_de_prueba
Prueba que las instantáneas de LED no saturen ni tinten la imagen.
En esta prueba, se agrega un controlador de iluminación a la caja de fusión de sensores 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 previa a la captura con el activador aePrecapture
establecido en START
y establece el intent de captura en Preview
para tomar la captura con flash.
Debido a que la captura tiene un punto de acceso distintivo debido al flash, la prueba calcula el promedio de la imagen del flash de toda la captura y verifica si el valor está dentro del rango (68, 102). Para verificar si el balance de blancos de la imagen es razonable, la prueba calcula las relaciones R/G y B/G y verifica si las relaciones están entre 0.95 y 1.05.
APIs probadas:
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLE
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#FLASH_MODE
Aprobación: Las relaciones R/G y B/G están dentro de 0.95 y 1.05. La media de la imagen Flash se encuentra dentro del rango (68, 102).
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 operador de prueba o el controlador deben apagar las luces del equipo de prueba.
APIs probadas:
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.hardware.camera2.CaptureResult#CONTROL_AE_TARGET_FPS_RANGE
android.media.CamcorderProfile
android.media.MediaRecorder
Aprobación: La velocidad de fotogramas de la vista previa es la mínima del rango de velocidad de fotogramas solicitada, y la variación entre fotogramas es menor que la tolerancia absoluta establecida en la prueba.
test_torch_strength
Pruebas que el control de intensidad de la luz estroboscópica en el modo TORCH
se implementa correctamente.
Verifica que, si el dispositivo admite el control de intensidad del flash durante el uso de la cámara en el modo TORCH
, la intensidad de la linterna cambia según los diferentes niveles de intensidad solicitados. Verifica que el control de intensidad del flash funcione con diferentes AE_MODES
.
Por ejemplo, si el modo de exposición automática es ON
o OFF
, el nivel de intensidad del flash tiene un efecto en el brillo, y si el modo es ON_AUTO_FLASH
, el nivel de intensidad del flash no tiene ningún efecto en el brillo.
Verifica que la intensidad de la linterna permanezca igual durante la duración de una ráfaga, lo que simula una sesión de captura de video. Para realizar la prueba, se deben apagar las luces del equipo de prueba. Las luces se pueden apagar automáticamente con el controlador Arduino. La escena debe estar completamente oscura para que la prueba funcione correctamente.
APIs probadas:
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_DEFAULT_LEVEL
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_MAXIMUM_LEVEL
android.hardware.camera2.CameraCharacteristics#FLASH_TORCH_STRENGTH_DEFAULT_LEVEL
android.hardware.camera2.CameraCharacteristics#FLASH_TORCH_STRENGTH_MAX_LEVEL
Aprobado:
Cuando el modo de exposición automática es ON
o OFF
, el brillo de los parches de ráfaga de la imagen aumenta a medida que el nivel de intensidad del flash aumenta de no tener flash a FLASH_TORCH_STRENGTH_MAX_LEVEL
.
Cuando el modo de exposición automática es ON_AUTO_FLASH
, la diferencia en la luminosidad de los parches de ráfaga de imágenes está dentro de la tolerancia a medida que el nivel de intensidad del flash aumenta de no tener flash a FLASH_TORCH_STRENGTH_MAX_LEVEL
.
sensor_fusion
Las pruebas de fusión de sensores requieren un movimiento específico del teléfono frente a un patrón de tablero de ajedrez y marcadores de ArUco. Para obtener resultados óptimos, asegúrate de que el gráfico de prueba esté plano. Los gráficos que no son planos afectan los cálculos de rotación de muchas de las pruebas. El gráfico debe ocupar toda la parte posterior de la caja de fusión de sensores. Para ello, imprime en un tamaño de 17" x 17" (43 x 43 cm). Las pruebas de sensor_fusion
se pueden automatizar con la Sensor Fusion Box.
Gráfico de fusión de sensores
Gráfico de fusión de sensores que cubre la parte posterior de la caja de fusión de sensores
test_lens_intrinsic_calibration
Prueba que el centro óptico del lente cambia de forma intrínseca cuando el lente se mueve debido a la estabilización de imagen óptica (OIS). Si se admiten muestras intrínsecas del lente, prueba que el centro óptico de las muestras intrínsecas del lente cambie cuando el lente se mueva debido a la estabilización de imagen óptica (OIS).
APIs probadas:
android.hardware.camera2.CameraCharacteristics#LENS_INTRINSIC_CALIBRATION
android.media.MediaRecorder
android.media.CamcorderProfile
Aprobado: El centro óptico del lente cambia intrínsecamente un píxel o más. Si se admiten muestras intrínsecas del lente, los centros ópticos de las muestras intrínsecas del lente cambian en un píxel o más.
Ejemplo del trazado de test_lens_intrinsic_calibration
que muestra los cambios de los puntos
principales en píxeles para cada fotograma
prueba_sincronización_de_marcos_múltiples_cámaras
Prueba que las marcas de tiempo de fotogramas capturadas por la cámara lógica estén dentro de 10 ms calculando los ángulos de los cuadrados dentro del tablero de ajedrez para determinar la marca de tiempo.
APIs probadas:
android.hardware.camera2.CameraCharacteristics#LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
android.hardware.camera2.params.OutputConfiguration#setPhysicalCameraId()
Aprobación: El ángulo entre las imágenes de cada cámara no cambia de forma significativa a medida que se gira el teléfono.
test_preview_distortion
Pruebas que comprueban que la distorsión se corrige en cada fotograma de vista previa tomado en varios niveles de zoom. Para cada fotograma de vista previa, la prueba calcula los puntos ideales según las funciones intrínsecas y extrínicas de la cámara. En la imagen de ejemplo, los puntos ideales se muestran en verde y los puntos reales, en rojo. El error de distorsión se calcula en función de la distancia de píxeles de la raíz cuadrada de la media (RMS) entre los puntos reales y los ideales. Los puntos destacados en verde y rojo de la imagen se usan para detectar visualmente el área del error de distorsión.
Imagen de un tablero de ajedrez con puntos ideales en verde y puntos reales en rojo
APIs probadas:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
android.media.CamcorderProfile
android.media.MediaRecorder
Aprobado: El error de distorsión normalizado de cada fotograma de vista previa es menor que el umbral establecido en la prueba.
test_preview_stabilization
Se realizaron pruebas que indican que el video de vista previa estabilizado rota menos que el giroscopio.
APIs probadas:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
Aprobación: La rotación máxima del ángulo en los fotogramas 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 ejemplo sin estabilización
test_sensor_fusion
Prueba la diferencia de marca de tiempo entre la cámara y el giroscopio para aplicaciones de RA 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 un giroscopio o si no está habilitado el parámetro REALTIME
de la fuente de marca de tiempo.
La prueba test_sensor_fusion
genera varios diagramas. Los dos diagramas más importantes para la depuración son los siguientes:
test_sensor_fusion_gyro_events
: Muestra los eventos del giroscopio del teléfono durante la prueba. El movimiento en la dirección x e y implica que el teléfono no está montado de manera segura en la placa de montaje, lo que reduce la probabilidad de que se apruebe la prueba. La cantidad de ciclos en la trama depende de la velocidad de escritura para guardar fotogramas.test_sensor_fusion_gyro_events
test_sensor_fusion_plot_rotations
: Muestra la alineación del giroscopio y los eventos de la cámara. Este gráfico debe mostrar un movimiento coincidente entre la cámara y el giroscopio en +/-1 ms.prueba_sensor_fusion_plot_rotations
APIs probadas:
android.hardware.camera2.CameraCharacteristics#LENS_FACING
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE
android.hardware.camera2.CameraMetadata#SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
android.hardware.camera2.CaptureRequest#SENSOR_TIMESTAMP
android.hardware.camera2.CaptureResult#SENSOR_ROLLING_SHUTTER_SKEW
Aprobado: La compensación 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 del CDD de sensores de alta fidelidad [C-2-14].
Mecanismos de falla:
- Error de compensación: El desplazamiento del giroscopio de la cámara no está calibrado correctamente dentro de +/- 1 ms.
- Pérdidas de fotogramas: La canalización no es lo suficientemente rápida como para capturar 200 fotogramas de forma consecutiva.
- Errores de socket:
adb
no puede conectarse de forma confiable al DUT el tiempo suficiente para ejecutar la prueba. - El gráfico no está montado de forma plana. El gráfico
test_sensor_fusion_plot_rotations
tiene fotogramas en los que el giroscopio y la rotación de la cámara varían considerablemente a medida que la cámara gira por las partes del gráfico que no son planas. - La cámara no está montada en posición horizontal. El diagrama
test_sensor_fusion_gyro_events
muestra movimiento en los planos X e Y. Esta falla es más común en las cámaras frontales, ya que la cámara posterior suele tener una protuberancia elevada en el resto del cuerpo del teléfono, lo que genera una inclinación cuando se monta la parte posterior del teléfono en la placa de montaje.
test_video_stabilization
Pruebas que indican que el video estabilizado rota menos que el giroscopio.
APIs probadas:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
Aprobado: La rotación máxima del ángulo sobre los marcos es inferior al 60% de la rotación del giroscopio.
Estos son videos de muestra con y sin estabilización.
Video de muestra con estabilización
Video de ejemplo sin estabilización
feature_combination
Las pruebas de feature_combination
verifican que las funciones funcionen correctamente cuando se habilitan varias funciones de la cámara al mismo tiempo. En estas pruebas, se usa la misma imagen de tablero de ajedrez que se usa en la escena de fusión de sensores.
test_feature_combination
Prueba todas las combinaciones de diferentes combinaciones de transmisiones, estabilización de vista previa, rango de FPS objetivo, video HDR de 10 bits y Ultra HDR que admite el dispositivo de la cámara. Esta prueba requiere mucha memoria, por lo que te recomendamos usar un host con al menos 128 GB de RAM.
En Android 15 y versiones posteriores, el archivo de configuración incluye un campo log_feature_combo_support
, que se establece de forma predeterminada en False
. Cuando el campo log_feature_combo_support
se establece en True
, la prueba ejecuta todas las combinaciones de funciones compatibles y registra los resultados en un archivo proto sin fallar la prueba. Para las pruebas de cumplimiento, el campo log_feature_combo_support
debe configurarse como False
.
APIs probadas:
android.hardware.camera2.CameraDevice.CameraDeviceSetup#isSessionConfigurationSupported
android.hardware.camera2.CameraDevice.CameraDeviceSetup#createCaptureRequest
Aprobado: Para cada combinación de funciones admitida:
- La transmisión de vista previa se estabiliza si la estabilización de vista previa está activada.
- La velocidad de fotogramas de la vista previa se encuentra dentro del
AE_TARGET_FPS_RANGE
configurado. - El espacio de color de la transmisión de vista previa grabada coincide con el establecido.
- La captura Ultra HDR tiene un mapa de ganancia válido.