Esta página proporciona una lista completa de las pruebas bajo Camera Image Test Suite (ITS), que es 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.
Las pruebas se agrupan por escena de la siguiente manera:
- scene0 : Captura de metadatos, jitter, giroscopio, vibración
- escena 1 : Exposición, sensibilidad, compensación EV, YUV frente a JPEG/RAW
- escena2 : Detección de rostros
- escena 3: Realce de bordes, movimiento de lente
- escena 4 : relación de aspecto, recorte, campo de visión
- escena 5 : sombreado de la lente
- escena 6 : Zoom
- sensor_fusion : Compensación de tiempo de cámara/giroscopio
Consulte las secciones individuales para obtener una descripción de cada escena.
escena0
Las pruebas de escena 0 no requieren información específica de la escena. Sin embargo, el teléfono debe estar estacionario para las pruebas de vibración y giroscopio.
prueba_explosión_captura
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.
API probadas:
Aprobado: captura una ráfaga de imágenes de tamaño completo y la cámara es lo suficientemente rápida como para evitar el tiempo de espera.
test_capture_result_dump
Comprueba que se devuelve un resultado de captura de una captura manual y luego lo vuelca.
API probadas:
Aprobado: completa la captura y vuelca los resultados de la captura.
test_gyro_bias
Comprueba si el giroscopio tiene una salida estable cuando el dispositivo está parado. Los datos se representan como un promedio de 20 puntos de datos.
API probadas:
Aprobado: el delta de la lectura del giroscopio es inferior a 0,01 a lo largo del tiempo.
test_gyro_bias_plot.png
test_jitter
Mide el jitter en las marcas de tiempo de la cámara.
API 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 fotogramas.
test_jitter_plot.png (Tenga en cuenta el pequeño rango del eje y. La fluctuación es realmente pequeña en este gráfico).
prueba_metadatos
Prueba la validez de las entradas de metadatos. Mira los resultados de la captura y los objetos de las características de la cámara. Esta prueba utiliza valores de exposición y ganancia de auto_capture_request
porque el contenido de la imagen no es importante.
API 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, la distancia hiperfocal están presentes y tienen valores válidos.
test_param_sensitivity_burst
Comprueba que el parámetro android.sensor.sensitivity
se aplica correctamente en ráfaga. Inspecciona solo los metadatos de salida.
API probadas:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Aprobado: los datos de salida tienen una tolerancia de error inferior al 0,2 %.
prueba_lectura_escritura
Comprueba que el dispositivo escribe los valores correctos de exposición y ganancia leyendo los metadatos de captura.
API 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
Aprobado: los valores de lectura y escritura coinciden en todos los disparos.
prueba_sensor_eventos
Prueba que el dispositivo consulta e imprime eventos de sensor para dispositivos que anuncian soporte de fusión de sensores. Los sensores esperados son acelerómetro, giroscopio y magnetómetro. Esta prueba solo funciona si la pantalla está encendida, lo que significa que el dispositivo no está en modo de espera.
API probadas:
Aprobado: Se reciben eventos para cada sensor.
test_solid_color_test_patrón
Comprueba que los patrones de prueba de color sólido se generan correctamente para silenciar la cámara. Si se admite el silenciamiento de la cámara, se deben admitir patrones de prueba de color sólido. Si no se admite el silenciamiento de la cámara, los patrones de prueba de color sólido 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:
-
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 poca variación en la imagen.
patrón_prueba_prueba
Prueba el parámetro android.sensor.testPatternMode
para capturar marcos para cada patrón de prueba válido y verifica que los marcos se generen correctamente para colores sólidos y barras de colores. 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 el patrón de prueba de color sólido y las barras de color.
API 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 (se basa en test_test_patterns
).
API 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
Pase: El YUV y el RAW se parecen entre sí.
test_tonemap_curve_raw_2.jpg
test_tonemap_curve_yuv_2.jpg
test_unified_timestamp
Comprueba si los eventos del sensor de imagen y movimiento están en el mismo dominio de tiempo.
API probadas:
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.Sensor
-
android.hardware.SensorEvent
-
android.hardware.Sensor#TYPE_ACCELEROMETER
-
android.hardware.Sensor#TYPE_GYROSCOPE
Aprobado: las marcas de tiempo de movimiento están entre las dos marcas de tiempo de imagen.
test_vibration_restriction
Comprueba si la vibración del dispositivo funciona como se esperaba.
API 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 está silenciado por la API de restricción de audio de la cámara.
escena 1
scene1 es un gráfico gris. El gráfico gris debe cubrir el 30 % del centro del campo de visión de la cámara. Se espera que el gráfico gris desafíe moderadamente a 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 banco de pruebas WFoV o 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.
escena 1: gráfico de tamaño completo (izquierda). Gráfico a escala ⅔ (derecha).
prueba_3a
Prueba la convergencia de 3A con un objetivo moderadamente desafiante.
API probadas:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
Aprobado: 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:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
Pasa: 3A converge y los valores 3A devueltos son legales.
test_ae_precapture_trigger
Prueba la máquina de estado AE cuando se usa el activador de precaptura. Captura cinco solicitudes manuales con AE deshabilitado. La última solicitud tiene un activador de captura previa de AE, que debe ignorarse porque AE está deshabilitado.
API probadas:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
Pasa: AE converge.
prueba_auto_vs_manual
Las pruebas que capturaron tomas automáticas y manuales tienen el mismo aspecto.
API 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
Aprobado: las ganancias y la transformación del balance de blancos manual informadas 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.jpg
prueba_auto_vs_manual_wb.jpg
prueba_auto_vs_manual_manual_wb_tm.jpg
prueba_negro_blanco
Comprueba que el dispositivo produce imágenes completas en blanco y negro. Toma dos capturas, la primera con ganancia extremadamente baja y exposición corta, lo que da como resultado una foto negra, y la segunda con ganancia extremadamente alta y exposición larga, lo que da como resultado una foto en blanco.
API probadas:
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Pass: Produce imágenes en blanco y negro.
prueba_negro_blanco_negro.jpg | prueba_negro_blanco_blanco.jpg |
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 verifica que todas sean idénticas. Esta prueba se puede utilizar para identificar si hay fotogramas esporádicos que se procesan de manera diferente o tienen artefactos.
API 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 valores RGB.
Error: muestra un pico o una caída del gráfico 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.jpg
test_burst_sameness_manual_plot_means.png
resultado_de_captura_de_prueba
Prueba que los datos válidos regresan en los objetos CaptureResult
. Hace una captura automática, manual y automática.
API 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
Aprobado: 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.png
prueba_canal_saturación
Prueba que los canales RGB se saturan uniformemente para eliminar el tinte en las regiones saturadas de la imagen.
API 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
Pasa: los canales saturados tienen valores RGB de [255, 255, 255] con un margen de error de menos del 1 % de diferencia.
prueba_canal_saturación.jpg
test_crop_region_raw
Prueba que las transmisiones RAW no se pueden recortar.
API probadas:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CaptureResult#SCALER_CROP_REGION
-
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
Aprobado: las imágenes YUV se recortan en el centro, pero no las imágenes RAW.
test_crop_region_raw_comp_raw_crop.jpg
test_crop_region_raw_comp_raw_full.jpg
test_crop_region_raw_comp_yuv_crop.jpg
test_crop_region_raw_yuv_full.jpg
test_crop_regions
Pruebas de que las regiones de cultivo funcionan. Toma una imagen completa y crea parches de 5 regiones diferentes (esquinas y centro). Toma imágenes con conjunto de recortes para las 5 regiones. Compara los valores de la imagen del parche y del recorte.
API 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 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 captura). Para obtener más detalles sobre el modelo de ruido DNG, descargue el siguiente documento sobre el modelo de ruido DNG .
API 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
Aprobado: los parámetros del modelo DNG sin procesar son correctos. Los valores RGB esperados coinciden con los valores RGB reales medidos.
test_dng_noise_model_plog.png
prueba_ev_compensación_avanzada
Comprueba que se aplica la compensación del valor de exposición (EV). La prueba aumenta la exposición en ocho pasos y compara el brillo medido con 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 si las imágenes se sobreexponen en cinco pasos.
API probadas:
Aprobado: 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 EV se aplica utilizando un rango creado con CONTROL_AE_COMPENSATION_STEP
. Se capturan ocho cuadros en cada valor de compensación.
API 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.CaptureResult#CONTROL_AE_EXPOSURE_COMPENSATION
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
Aprobado: captura el aumento de luminancia 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 luminancia estables.
test_ev_compensation_basic.png
prueba_exposición
Pruebas de que se logra una exposición constante ya que el ISO y el tiempo de exposición varían. Toma una serie de tomas que tienen ISO y tiempo de exposición elegidos para equilibrarse entre sí. Los resultados deben tener el mismo brillo, pero a lo largo de la secuencia, la imagen debe volverse más ruidosa. Verifica que los valores medios de los píxeles de muestra estén cerca uno del otro. Garantiza que las imágenes no estén sujetas a 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 de debug
en su archivo de configuración.
API probadas:
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Aprobado: 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 la exposición ISO* es constante en el espacio de ganancia probado.
test_exposure_plot_means.png
prueba_exposición_mult=1.00.jpg | prueba_exposición_mult=64.00.jpg |
prueba_jpeg
Las pruebas que convirtieron las imágenes YUV y las imágenes JPEG del dispositivo tienen el mismo aspecto. La prueba toma el 10 % del centro de la imagen, calcula el valor RGB y verifica que coincidan.
API probadas:
Aprobado: la diferencia RGB promedio entre cada imagen es inferior al 3%.
prueba_jpeg_fmt=jpg.jpg | test_jpeg=fmt=yuv.jpg |
test_latching
Comprueba que los ajustes (exposición y ganancia) se enganchan en el cuadro derecho para las cámaras FULL
y LEVEL_3
. Toma una serie de disparos utilizando solicitudes consecutivas, variando los parámetros de solicitud de captura entre disparos. Comprueba que las imágenes tienen las propiedades esperadas.
API probadas:
Aprobado: las imágenes [2, 3, 6, 8, 10, 12, 13] tienen ISO o exposición aumentadas y se muestran con medias RGB más altas en test_latching_plot_means.png
.
test_latching_i=00.jpg | test_latching_i=01.jpg | test_latching_i=02.jpg | |
test_latching_i=03.jpg | test_latching_i=04.jpg | test_latching_i=05.jpg | |
test_latching_i=06.jpg | test_latching_i=07.jpg | test_latching_i=08.jpg | |
test_latching_i=09.jpg | test_latching_i=10.jpg | test_latching_i=11.jpg | |
test_latching_i=12.jpg |
test_latching_plot_means.png
prueba_linealidad
Prueba que el procesamiento del dispositivo se puede invertir en píxeles lineales. Captura una secuencia de disparos con el dispositivo apuntando a un objetivo uniforme.
API 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, B deben aumentar linealmente con una mayor sensibilidad.
test_linearity_plot_means.png
test_locked_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 consistencia de la imagen YUV mientras que la verificación de la velocidad de fotogramas está en CTS.
API probadas:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
Aprobado: las capturas se ven consistentes.
test_locked_burst_frame0.jpg
test_locked_burst_frame1.jpg
test_locked_burst_frame2.jpg
test_multi_camera_match
Pruebas para ver si las cámaras múltiples en los dispositivos dan valores RGB similares para un parche gris.
API probadas:
-
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
-
android.hardware.camera2.CaptureRequest#LENS_FOCAL_LENGTH
Pasa: Diferentes cámaras producen valores RGB similares para el mismo parche gris.
test_multi_camera+match_yuv_fl=4.38.jpg
corrección_de_color_de_parámetro_de_prueba
Comprueba que los parámetros android.colorCorrection.*
se aplican cuando se configuran. Toma fotos con diferentes valores de transformación y ganancia, y prueba que se vean correspondientemente diferentes. La transformación y las ganancias se eligen para hacer 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 mapear un conjunto de colores a otro para aproximarse a la apariencia de imágenes de alto rango dinámico en un medio que tiene un rango dinámico más limitado.
API probadas:
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
Aprobado: los valores R y B aumentan según la transformación.
test_param_color_correction_plot_means.png
*El eje x son las solicitudes de captura: 0 = unidad, 1 = impulso rojo, 2 = impulso azul
test_param_color_correction_req=0.jpg
test_param_color_correctness_req=1.jpg (refuerzo de R)
test_param_color_correction_req=2.jpg (refuerzo B)
test_param_exposure_time
Comprueba que se aplica el parámetro android.sensor.exposureTime
.
API probadas:
Aprobado: cada disparo es más brillante que el disparo anterior.
test_param_exposure_time_frame0.jpg
test_param_exposure_time_plot.png
test_param_flash_mode
Comprueba 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 crea un gradiente grande para verificar si se disparó el flash.
API probadas:
Aprobado: el centro de la imagen del mosaico tiene un gradiente grande, lo que significa que se disparó 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
test_param_noise_reduction
Comprueba que el parámetro android.noiseReduction.mode
se aplica correctamente cuando se configura. 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 desactivado, y utiliza la varianza de esta como línea de base. Cuanto mayor sea la SNR (relación señal/ruido), mejor será la calidad de la imagen.
API probadas:
Pasa: SNR varía con diferentes modos de reducción de ruido y se comporta de manera similar al gráfico a continuación.
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.jpg
test_param_noise_reduction_high_gain_nr=1.jpg
test_param_noise_reduction_high_gain_nr=2.jpg
test_param_noise_reduction_high_gain_nr=3.jpg
test_param_noise_reduction_low_gain.jpg
test_param_sensitivity
Comprueba que se aplica el parámetro android.sensor.sensitivity
. La prueba aumenta la sensibilidad en 5 pasos con exposición fija para cada toma.
API probadas:
Aprobado: la media RGB del 10 % central se vuelve más brillante con una mayor sensibilidad.
test_param_sensitivity_iso=0055.jpg
test_param_sensitivity_iso=1819.jpg
test_param_sensitivity_iso=3583.jpg
test_param_sensitivity_iso=5347.jpg
test_param_sensitivity_iso=7111.jpg
test_param_sensitivity_plot.png
test_param_shading_mode
Comprueba que se aplica el parámetro android.shading.mode
.
API 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: 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.png
test_param_shading_mode_ls_maps_mode_1_loop_0.png
test_param_shading_mode_ls_maps_mode_2_loop_0.png
test_param_tonemap_mode
Comprueba que se aplica el parámetro android.tonemap.mode. Aplica diferentes curvas de mapa de tonos a cada canal R, G, B y comprueba que las imágenes de salida se modifican como se esperaba. Esta prueba consta de dos pruebas, test1 y test2.
API probadas:
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Pasar:
- 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.
- test2: Mismo mapa de tonos, pero diferente longitud. Las imágenes son las mismas.
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 la combinación de aumento de sensibilidad RAW y verifica si la media de píxeles de salida coincide con la configuración solicitada.
API 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
Aprobado: las imágenes RAW se oscurecen a medida que aumenta el impulso, mientras que las imágenes YUV permanecen constantes en 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 en bruto con ganancias crecientes y mide el ruido. Captura solo en bruto, en una ráfaga.
API 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
Pase: cada disparo es más ruidoso que el disparo anterior, ya que la ganancia aumenta.
Utiliza la varianza de la celda de la cuadrícula de estadísticas del centro.
test_raw_burst_sensitivity_variance.png
exposición_en bruto_de_prueba
Captura un conjunto de imágenes en bruto con un tiempo de exposición creciente y mide los valores de los píxeles.
API probadas:
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
Aprobado: aumentar el ISO (ganancia) hace que los píxeles sean más sensibles a la luz, por lo que el gráfico se mueve hacia la izquierda.
test_raw_exposure_s=55.png
(10⁰ es 1 ms, 10¹ es 10 ms, 10⁻¹ es 0,1 ms)
test_raw_exposure_s=132.png
test_raw_exposure_s=209.png
test_raw_exposure_s=286.png
test_raw_exposure_s=363.png
test_raw_exposure_s=440.png
test_raw_sensitivity
Captura un conjunto de imágenes sin procesar con sensibilidades crecientes y mide el ruido (variación) en el 10% del centro de la imagen. Prueba que cada disparo es más ruidoso que el anterior.
API 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
Pase: la varianza aumenta con cada disparo.
test_raw_sensitivity_variance.png
test_reprocess_noise_reduction
Prueba que android.noiseReduction.mode
se aplica para las solicitudes de reprocesamiento. Captura imágenes reprocesadas con la cámara poco iluminada. Utiliza una alta ganancia analógica para garantizar que la imagen capturada sea ruidosa. Captura tres imágenes reprocesadas, para NR desactivado, "rápido" y "alta calidad". Captura una imagen reprocesada con baja ganancia y NR desactivado, y utiliza la varianza de esta como línea de base.
API probadas:
Paso: RÁPIDO >= APAGADO, HQ >= RÁPIDO, HQ >> APAGADO
Gráfico típico de SNR frente a NR_MODE
test_tonemap_secuencia
Prueba una secuencia de disparos con diferentes curvas de mapa de tonos. Captura 3 tomas manuales con un mapa de tonos lineal. Captura 3 disparos manuales con mapa de tonos predeterminado. Calcula el delta entre cada par de tramas consecutivas.
API probadas:
Aprobado: 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
test_tonemap_sequence_i=5.jpg
test_yuv_jpeg_all
Pruebas que funcionan todos los tamaños y formatos informados para la captura de imágenes. 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 its.image. Las imágenes no se guardan de forma predeterminada, pero se pueden guardar habilitando debug_mode
.
API probadas:
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
-
android.graphics.ImageFormat#JPEG
Aprobado: todos los centros de imagen tienen una diferencia máxima de RMS (valor cuadrático medio de una señal) en las imágenes convertidas RGB con un 3 % de la imagen YUV de mayor resolución.
prueba_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:
Aprobado: la prueba se completa y devuelve las imágenes solicitadas.
test_yuv_plus_dng.jpg
prueba_yuv_plus_jpeg
Prueba la captura de un solo cuadro como salidas 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 its.image
).
API 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 menos del 1 % de RMS (valor cuadrático medio de una señal) de diferencia.
prueba_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 y YUV. Utiliza una solicitud manual con mapa de tonos lineal, por lo que se espera que RAW y YUV sean iguales. Compara los valores RGB del 10 % del centro de las imágenes convertidas en RGB. Registra android.shading.mode
.
API probadas:
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
-
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
Aprobado: las imágenes YUV y JPEG son similares y tienen una diferencia de menos del 3,5 % RMS (valor cuadrático medio de una señal).
test_yuv_plus_raw_shading=1_raw.jpg | test_yuv_plus_raw_shading=1_yuv.jpg |
prueba_yuv_plus_raw10
Prueba la captura de un solo cuadro como salidas RAW10 y YUV. Utiliza una solicitud manual con mapa de tonos lineal, por lo que se espera que RAW y YUV sean iguales. Compara los valores RGB del 10 % del centro de las imágenes convertidas en RGB. Registra android.shading.mode
.
API probadas:
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
-
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
Aprobado: las imágenes RAW10 y YUV son similares y tienen una diferencia de menos del 3,5 % RMS (valor cuadrático medio de una señal).
test_yuv_plus_raw10_shading=1_raw.jpg | test_yuv_plus_raw10_shading=1_yuv.jpg |
prueba_yuv_plus_raw12
Prueba la captura de un solo cuadro como salidas RAW12 y YUV. Utiliza una solicitud manual con mapa de tonos lineal, por lo que se espera que RAW y YUV sean iguales. Compara los valores RGB del 10 % del centro de las imágenes convertidas en RGB. Registra android.shading.mode
.
API probadas:
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
-
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#RAW12
Aprobado: las imágenes RAW12 y YUV son similares y tienen una diferencia de menos del 3,5 % RMS (valor cuadrático medio de una señal).
test_yuv_plus_raw12_shading=1_raw.jpg | test_yuv_plus_raw12_shading=1_yuv.jpg |
escena2_a
scene2_a tiene tres caras con un fondo gris y ropa neutra. Los rostros se eligen para tener una amplia gama de tonos de piel.
escena2_a
efectos_de_prueba
Captura fotogramas para los efectos de cámara admitidos 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:
-
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 configurados en MONO
.
prueba_efectos_MONO.jpg
test_faces
Prueba la detección de rostros. La imagen se guarda, pero la información del cuadro y el punto de referencia se tabula en test_faces_stdout.txt
.
API probadas:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Aprobado: detecta al menos un rostro de la imagen.
combos_de_formato_de_prueba
Prueba diferentes combinaciones de formatos de salida.
API probadas:
android.hardware.camera2.CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP
android.hardware.camera2.params.StreamConfigurationMap#getOutputSizes()
android.hardware.camera2.CameraCaptureSession#captureBurst()
Pase: Todas las combinaciones se capturan con éxito.
prueba_jpeg_calidad
Prueba la calidad de compresión JPEG de la cámara. Pase las calidades de JPEG a través de android.jpeg.quality
y asegúrese de que las tablas de cuantificación cambien correctamente.
API probadas:
Aprobado: la matriz de cuantificación disminuye con el aumento de la calidad. (La matriz representa el factor de división.)
Medias de la matriz DQT de luminancia/croma de la cámara trasera del Pixel 4 frente a la calidad JPEG
Ejemplo de prueba fallida
Tenga en cuenta que para imágenes de muy baja calidad (jpeg.quality < 50), no hay aumento en la compresión en la matriz de cuantificación.
test_num_faces
Prueba la detección de rostros.
API probadas:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pase: Encuentra tres caras.
test_num_faces_fd_mode_1.jpg
escena2_b
test_auto_per_frame_control
Prueba las propiedades PER_FRAME_CONTROL
para solicitudes de captura automática.
API probadas:
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
-
android.hardware.camera2.CaptureResult#CONTROL_AWB_STATE
-
android.hardware.camera2.CaptureRequest#CONTROL_POST_RAW_SENSITIVITY_BOOST
-
android.hardware.camera2.CaptureRequest#LENS_FOCUS_DISTANCE
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
-
android.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
-
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Aprobado: todas las propiedades PER_FRAME_CONTROL
están presentes.
test_auto_per_frame_control_frame_1.jpg
test_auto_per_frame_control_frame_10.jpg
test_auto_per_frame_control_frame_29.jpg
test_auto_per_frame_control_plot.png
test_num_faces
Prueba la detección de rostros con una mayor diversidad de tonos de piel en escenas de rostros.
API probadas:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pase: Encuentra 3 caras.
test_num_faces_fd_mode_1.jpg
escena2_c
test_num_faces
Prueba la detección de rostros con una mayor diversidad de tonos de piel en escenas de rostros.
API probadas:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pase: Encuentra 3 caras.
test_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 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 lanzamiento 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 (abrir la cámara al primer cuadro 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_faces
Prueba la detección de rostros con una mayor diversidad de tonos de piel en escenas de rostros.
API probadas:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pase: Encuentra 3 caras.
escena2_e
prueba_imagen_continua
Se capturan 50 cuadros de resolución VGA con la solicitud de captura configurando primero android.control.afMode = 4 (CONTINUOUS_PICTURE).
API probadas:
android.hardware.camera2.CaptureRequest#CONTROL_CAPTURE_INTENT
android.hardware.camera2.CaptureResult#CONTROL_POST_RAW_SENSITIVITY_BOOST
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 escenas de rostros.
API probadas:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pase: Encuentra 3 caras.
escena3
Scene3 usa el gráfico ISO12233 y la mayoría de las pruebas usan un método de extracción de gráficos 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 de las escenas 1, 2 o 4, sino solo el gráfico.
test_3a_consistencia
Pruebas de consistencia 3A.
API probadas:
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureRequest#LENS_FOCUS_DISTANCE
-
android.hardware.camera2.CaptureResult#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureResult#SENSOR_SENSITIVITY
Aprobado: 3A converge para exposición, ganancia, awb (balance de blancos automático) y fd (distancia de enfoque) tres veces dentro de la tolerancia.
prueba_borde_mejora
Comprueba que el parámetro android.edge.mode
se aplica correctamente. Captura imágenes sin reprocesar para cada modo de borde y devuelve 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, sensibilidad, tiempo de exposición, distancia de enfoque y parámetro de superficie de salida determinados.
Aprobado: el modo rápido no es más nítido que el modo HQ (alta calidad).
API probadas:
Parámetros de la cámara afectados:
-
EDGE_MODE
prueba_borde_mejora_borde=0.jpg
test_edge_enhancement_edge=1.jpg (modo rápido)
test_edge_enhancement_edge=2.jpg (modo de alta calidad)
test_flip_mirror
Comprueba si la imagen está correctamente orientada según CDD sección 7.5.2 Cámara frontal [C-1-5] .
Las imágenes reflejadas, volteadas o giradas se pueden identificar por la función de diamante cerca del centro.
Aprobado: la imagen no está volteada, reflejada ni girada.
test_flip_mirror_scene_patch.jpg
test_lens_movement_reporting
Comprueba si el indicador de movimiento de la lente se informa correctamente. Captura una ráfaga de 24 imágenes con los primeros 12 fotogramas a la distancia de enfoque óptima (según lo encontrado por 3A) y los últimos 12 fotogramas a la distancia de enfoque mínima. Alrededor del cuadro 12, la lente se mueve y la nitidez disminuye. La nitidez eventualmente se estabiliza cuando la lente se mueve a la posición final. The lens movement flag should be asserted in all frames where the sharpness is intermediate to sharpness in the first 10 frames with the lens stationary at optimum focal distance, and the final 10 frames where the lens is stationary in the minimum focal distance. The exact frame the lens moves isn't important: what is checked is that the movement flag is asserted when the lens is moving.
APIs tested:
-
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
Pass: Lens movement flag is True
in the frame with sharpness change.
test_lens_position
Tests if the focus position is properly reported for moving lenses.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_HYPERFOCAL_DISTANCE
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCE
-
android.hardware.camera2.CaptureResult#LENS_STATE
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
Pass: Correct focus positions are reported.
test_reprocess_edge_enhancement
Returns sharpness of the output images and the capture result metadata. Processes a capture request with a given edge mode, sensitivity, exposure time, focus distance, output surface parameter, and reprocess format.
APIs tested:
-
android.hardware.camera2.CaptureRequest#EDGE_MODE
-
android.hardware.camera2.CaptureRequest#REPROCESS_EFFECTIVE_EXPOSURE_FACTOR
Pass: Sharpness for the different edge modes is correct.
scene4
Scene4 consists of a black circle on a white background inside a square.
scene4
test_aspect_ratio_and_crop
Takes pictures of a circle inside of a square over all formats. Verifies that the aspect ratio of the circle doesn't change, the cropped images keep the circle in center, and the circle size doesn't change for a constant format or with different resolution (field of view check).
APIs tested:
-
android.hardware.camera2.CaptureResult#LENS_DISTORTION
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
-
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
Pass: Images aren't stretched, the center of images don't differ by more than 3%, and the maximum possible FOV (field of view) is preserved.
test_multi_camera_alignment
Tests the multi camera system parameters related to camera spacing. Using the multi-camera physical sub-cameras, takes a picture with one of the physical cameras. Finds the circle center. Projects the circle center to the world coordinates for each camera. Compares the difference between the cameras' circle centers in world coordinates. Reprojects the world coordinate back to pixel coordinates and compares against originals as a validity check. Compares the circle sizes checking if the focal lengths of the cameras are different.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
-
android.hardware.camera2.CameraCharacteristics#LENS_DISTORTION
-
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
Pass: Focal lengths and circles sizes are consistent.
scene5/diffuser
test_lens_shading_and_color_uniformity
Tests that the lens shading correction is applied appropriately, and color of a monochrome uniform scene is evenly distributed. Performs this test on a YUV frame with auto 3A. Lens shading is evaluated based on the y channel. Measures the average y value for each sample block specified, and determines pass or fail by comparing with the center y value. The color uniformity test is evaluated in r/g and b/g space.
APIs tested:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
Pass: At the specified radius of the image, the variance of r/g and b/g value must be less than 20% to pass the test.
scene6
Scene6 is a grid of small circles with a square in one corner to indicate orientation. The small circles are needed to test zoom function over a large range.
scene6
test_zoom
Tests the camera zoom behavior. Takes captures over the zoom range and checks if the circles get bigger as the camera zooms in.
APIs tested:
-
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
Pass: Relative size of captured circle is accurate against requested zoom ratio to ensure camera is zooming correctly.
test_zoom to find the contour of the circle closest to the center.
scene_change
test_scene_change
The scene change makes use of the tablet displaying a face scene and then turns the tablet on and off to create a scene change. The scene reuses scene2_e, but is in a separate scene because of the required tablet control. Additionally, for manual testing, the scene change can be accomplished by waving your hand in front of the camera.
APIs tested:
Pass: The android.control.afSceneChange
flag is asserted with a scene change.
sensor_fusion
Sensor fusion tests require specific phone movement in front of a checkerboard pattern. The sensor_fusion
tests can be automated with the Sensor Fusion Box .
Image of checkerboard
test_multi_camera_frame_sync
Tests that frame timestamps captured by logical camera are within 10 ms by computing angles of squares within the checkerboard to determine the timestamp.
APIs tested:
-
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()
Pass: Angle between images from each camera doesn't change appreciably as phone is rotated.
test_sensor_fusion
Tests the timestamp difference between the camera and the gyroscope for AR and VR applications. Phone is rotated 90 degrees 10 times in front of the checkerboard pattern. Motion is about 2 s round trip. This test is skipped if no gyroscope is included or if the REALTIME
parameter is not enabled.
The test_sensor_fusion
test generates a number of plots. The two most important plots for debugging are:
test_sensor_fusion_gyro_events
: Shows the gyroscope events for the phone during the test. Movement in the x and y direction implies the phone isn't securely mounted on the mounting plate, reducing the probability of the test passing. The number of cycles in the plot depends on the write speed for saving frames.test_sensor_fusion_gyro_events
test_sensor_fusion_plot_rotations
: Shows the alignment of the gyroscope and camera events. This plot must show matching movement between camera and gyroscope to +/-1 ms.test_sensor_fusion_plot_rotations
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#LENS_FACING
-
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
Pass: Camera and gyroscope timestamps' offset is less than 1 ms as per CDD section 7.3.9 High Fidelity Sensors [C-2-14] .