Cette page fournit une liste complète des tests dans le cadre de la suite de tests d'image de caméra (ITS), qui fait partie du vérificateur de la suite de tests de compatibilité Android (CTS). Les tests ITS sont des tests fonctionnels, ce qui signifie qu'ils ne mesurent pas la qualité de l'image, mais que toutes les fonctions annoncées de la caméra fonctionnent comme prévu. Ce document permet aux développeurs et aux testeurs de comprendre ce que font les tests individuels et comment déboguer les échecs de test.
Les tests sont regroupés par scène comme suit :
- scene0 : Capturer les métadonnées, la gigue, le gyroscope, les vibrations
- scène1 : Exposition, sensibilité, compensation EV, YUV vs JPEG/RAW
- scène2 : détection de visage
- scène3 : amélioration des bords, mouvement de l'objectif
- scène4 : Format d'image, recadrage, champ de vision
- scène5 : Ombrage de l'objectif
- scène6 : Zoom
- sensor_fusion : Décalage de synchronisation caméra/gyroscope
Voir les sections individuelles pour une description de chaque scène.
scène0
Les tests Scene0 ne nécessitent aucune information de scène spécifique. Cependant, le téléphone doit être immobile pour les tests de gyroscope et de vibration.
test_burst_capture
Vérifie que l'ensemble du pipeline de capture peut suivre la vitesse de capture en taille réelle et le temps CPU.
API testées :
Réussite : capture une rafale d'images en taille réelle et l'appareil photo est suffisamment rapide pour éviter la temporisation.
test_capture_result_dump
Vérifie qu'un résultat de capture est renvoyé à partir d'une capture manuelle, puis le vide.
API testées :
Réussite : Termine la capture et vide les résultats de la capture.
test_gyro_bias
Teste si le gyroscope a une sortie stable lorsque l'appareil est à l'arrêt. Les données sont tracées comme une moyenne de 20 points de données.
API testées :
Réussite : le delta de la lecture du gyroscope est inférieur à 0,01 au fil du temps.
test_gyro_bias_plot.png
test_jitter
Mesure la gigue dans les horodatages de la caméra.
API testées :
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
Pass : il y a au moins un delta de 30 ms entre les images.
test_jitter_plot.png (Notez la petite plage de l'axe y. La gigue est en fait petite dans ce tracé.)
test_metadata
Teste la validité des entrées de métadonnées. Examine les résultats de capture et les objets caractéristiques de la caméra. Ce test utilise les valeurs d'exposition et de gain auto_capture_request
car le contenu de l'image n'est pas important.
API testées :
-
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
Pass : niveau matériel, rollingShutterSkew
, balises frameDuration
, timestampSource
, croppingType
, blackLevelPattern
, pixel_pitch
, FOV, distance hyperfocale sont présents et ont des valeurs valides.
test_param_sensitivity_burst
Teste que le paramètre android.sensor.sensitivity
est correctement appliqué en rafale. Inspecte uniquement les métadonnées de sortie.
API testées :
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Pass : les données de sortie ont une tolérance d'erreur inférieure à 0,2 %.
test_read_write
Vérifie que l'appareil écrit les valeurs d'exposition et de gain correctes en relisant les métadonnées de capture.
API testées :
-
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
Pass : les valeurs de lecture et d'écriture correspondent à tous les plans.
test_sensor_events
Teste que l'appareil interroge et imprime les événements de capteur pour les appareils qui annoncent la prise en charge de la fusion de capteurs. Les capteurs attendus sont l'accéléromètre, le gyroscope et le magnétomètre. Ce test ne fonctionne que si l'écran est allumé, ce qui signifie que l'appareil n'est pas en mode veille.
API testées :
Pass : les événements de chaque capteur sont reçus.
test_solid_color_test_pattern
Vérifie que les motifs de test de couleur unie sont générés correctement pour la mise en sourdine de la caméra. Si la mise en sourdine de la caméra est prise en charge, les motifs de test de couleur unie doivent être pris en charge. Si la mise en sourdine de la caméra n'est pas prise en charge, les motifs de test de couleur unie ne sont testés que si la fonctionnalité est annoncée.
Si les images RAW sont prises en charge, l'attribution des couleurs est également testée. Les couleurs testées sont le noir, le blanc, le rouge, le bleu et le vert. Pour les appareils photo qui ne prennent pas en charge les images RAW, seul le noir est testé.
API testées :
-
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
Réussite : les motifs de test solides pris en charge sont de la bonne couleur et la variance de l'image est faible.
test_test_pattern
Teste le paramètre android.sensor.testPatternMode
pour capturer des images pour chaque motif de test valide et vérifie que les images sont générées correctement pour les couleurs unies et les barres de couleur. Ce test comprend les étapes suivantes :
- Capture des images pour tous les modèles de test pris en charge.
- Effectue une vérification simple de l'exactitude du motif de test de couleur unie et des barres de couleur.
API testées :
-
android.hardware.camera2.CameraCharacteristic#SENSOR_AVAILABLE_TEST_PATTERN_MODES
-
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
Réussite : les modèles de test pris en charge sont générés correctement.
test_test_patterns_2.jpg
test_tonemap_curve
Teste la conversion du motif de test de RAW à YUV avec une carte de tonalité linéaire. Ce test nécessite android.sensor.testPatternMode = 2
(COLOR_BARS) pour générer un motif d'image parfait pour la conversion de tonemap. S'assure que le pipeline a des sorties de couleur appropriées avec une carte de tonalité linéaire et une entrée d'image idéale (s'appuie sur test_test_patterns
).
API testées :
-
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
Pass : le YUV et le RAW se ressemblent.
test_tonemap_curve_raw_2.jpg
test_tonemap_curve_yuv_2.jpg
test_unified_timestamp
Teste si les événements du capteur d'image et de mouvement se situent dans le même domaine temporel.
API testées :
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.Sensor
-
android.hardware.SensorEvent
-
android.hardware.Sensor#TYPE_ACCELEROMETER
-
android.hardware.Sensor#TYPE_GYROSCOPE
Pass : les horodatages de mouvement se situent entre les deux horodatages d'image.
test_vibration_restriction
Teste si la vibration de l'appareil fonctionne comme prévu.
API testées :
-
android.hardware.Sensor
-
android.hardware.SensorEvent
-
android.hardware.Sensor#TYPE_ACCELEROMETER
-
android.os.Vibrator
-
android.hardware.camera2.CameraDevice#setCameraAudioRestriction
Pass : l'appareil ne vibre pas lorsqu'il est mis en sourdine par l'API de restriction audio de la caméra.
scène 1
scène1 est un graphique gris. La carte grise doit couvrir les 30 % du centre du champ de vision de la caméra. La carte grise devrait défier modérément 3A (exposition automatique, balance des blancs automatique, mise au point automatique) car la région centrale n'a aucune caractéristique. Cependant, la demande de capture spécifie la scène entière qui comprend suffisamment de fonctionnalités pour que 3A converge.
Les caméras RFoV peuvent être testées dans le banc d'essai WFoV ou RFoV. Si une caméra RFoV est testée dans le banc d'essai WFoV, le graphique est mis à l'échelle de ⅔ pour garantir certaines limites du graphique gris dans le FoV afin d'aider 3A à converger.
scène1 : tableau en taille réelle (à gauche). Graphique à l'échelle ⅔ (à droite).
test_3a
Teste la convergence de 3A avec une cible modérément difficile.
API testées :
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
Pass : 3A converge et les valeurs 3A renvoyées sont valides.
test_ae_af
Teste individuellement les algorithmes d'exposition automatique (AE) et de mise au point automatique (AF) 3A.
API testées :
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
Pass : 3A converge et les valeurs 3A renvoyées sont légales.
test_ae_precapture_trigger
Teste la machine d'état AE lors de l'utilisation du déclencheur de précapture. Capture cinq requêtes manuelles avec AE désactivé. La dernière demande a un déclencheur de précapture AE, qui doit être ignoré car AE est désactivé.
API testées :
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
Pass : AE converge.
test_auto_vs_manual
Les tests qui ont capturé des prises de vue automatiques et manuelles se ressemblent.
API testées :
-
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
Réussite : les gains et la transformation de la balance des blancs manuelle signalés dans chaque résultat de capture correspondent à l' estimate
de la balance des blancs automatique de l'algorithme 3A de l'appareil photo.
test_auto_vs_manual_auto.jpg
test_auto_vs_manual_wb.jpg
test_auto_vs_manual_manual_wb_tm.jpg
test_noir_blanc
Vérifie que l'appareil produit des images entièrement en noir et blanc. Prend deux captures, la première avec un gain extrêmement faible et une exposition courte, ce qui donne une photo noire, et la seconde avec un gain extrêmement élevé et une longue exposition, ce qui donne une photo blanche.
API testées :
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Pass : produit des images en noir et blanc.
![]() | ![]() | |
test_noir_blanc_noir.jpg | test_noir_blanc_blanc.jpg |
test_black_white_plot_means.png
test_burst_sameness_manual
Prend 5 rafales de 50 images avec réglage de capture manuelle et vérifie qu'elles sont toutes identiques. Ce test peut être utilisé pour identifier s'il y a des trames sporadiques qui sont traitées différemment ou qui ont des artefacts.
API testées :
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR
-
android.hardware.camera2.CameraMetadata#SYNC_MAX_LATENCY_PER_FRAME_CONTROL
Pass : les images sont identiques visuellement et dans les valeurs RVB.
Échec : affiche un pic ou une baisse du graphique moyen RVB au début de chaque rafale
- La tolérance est de 3 % pour
first_API_level
< 30 - La tolérance est de 2 % pour
first_API_level
>= 30
test_burst_sameness_manual_mean.jpg
test_burst_sameness_manual_plot_means.png
test_capture_result
Vérifie que des données valides reviennent dans les objets CaptureResult
. Effectue une capture automatique, manuelle et automatique.
API testées :
-
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
Pass : les métadonnées sont valides pour toutes les captures et les paramètres manuels ne fuient pas dans la deuxième capture automatique. Trace la correction de l'ombrage de l'objectif pour les captures.
test_capture_result_plot_lsc_auto_ch0.png
test_channel_saturation
Vérifie que les canaux RVB saturent uniformément pour éliminer les teintes dans les régions saturées de l'image.
API testées :
-
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
Pass : les canaux saturés ont des valeurs RVB de [255, 255, 255] avec une marge d'erreur de moins de 1 % de différence.
test_channel_saturation.jpg
test_crop_region_raw
Vérifie que les flux RAW ne peuvent pas être recadrés.
API testées :
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CaptureResult#SCALER_CROP_REGION
-
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
Pass : les images YUV sont recadrées au centre, mais pas les images 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
Vérifie que les régions cadrées fonctionnent. Prend une image complète et crée des patchs de 5 régions différentes (coins et centre). Prend des images avec un recadrage défini pour les 5 régions. Compare les valeurs du patch et de l'image de recadrage.
API testées :
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
Réussi : l'image de la zone recadrée correspond au patch correspondant à l'image recadrée.
test_dng_noise_model
Vérifie que les paramètres du modèle brut DNG sont corrects. Le tracé représente la variance mesurée d'un patch central de la carte grise dans les prises de vue brutes capturées sur une plage de sensibilités, et compare ces valeurs avec la variance attendue à chaque sensibilité par le modèle de bruit DNG dans la caméra HAL (basé sur le paramètres O,S renvoyés dans les objets de résultat de capture). Pour plus de détails sur le modèle de bruit DNG, téléchargez le document suivant sur le modèle de bruit DNG .
API testées :
-
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
Réussite : les paramètres du modèle brut DNG sont corrects. Les valeurs RVB attendues correspondent aux valeurs RVB réelles mesurées.
test_dng_noise_model_plog.png
test_ev_compensation_advanced
Vérifie que la compensation de la valeur d'exposition (EV) est appliquée. Le test augmente l'exposition en huit étapes et vérifie la luminosité mesurée par rapport à la luminosité attendue. Les valeurs attendues sont calculées à partir de la luminosité de l'image sans compensation EV appliquée et la valeur attendue saturera si les valeurs calculées dépassent la plage de valeurs réelles de l'image. Le test échoue si les valeurs attendues et les valeurs mesurées ne correspondent pas ou si les images sont surexposées dans les cinq étapes.
API testées :
Pass : les images montrent une exposition croissante sans surexposition en cinq étapes.
test_ev_compensation_advanced_plot_means.png
test_ev_compensation_basic
Teste que la compensation EV est appliquée à l'aide d'une plage créée avec CONTROL_AE_COMPENSATION_STEP
. Huit images sont capturées à chaque valeur de compensation.
API testées :
-
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
Pass : capture l'augmentation de la luminance avec un réglage de compensation EV accru, et les huit images capturées pour chaque réglage de compensation EV ont des valeurs de luminance stables.
test_ev_compensation_basic.png
exposition_test
Teste qu'une exposition constante est obtenue lorsque l'ISO et le temps d'exposition varient. Prend une série de photos dont l'ISO et le temps d'exposition sont choisis pour s'équilibrer. Les résultats doivent avoir la même luminosité, mais au cours de la séquence, l'image doit devenir plus bruyante. Vérifie que les valeurs moyennes des pixels de l'échantillon sont proches les unes des autres. Garantit que les images ne sont pas fixées à 0 ou 1 (ce qui les ferait ressembler à des lignes plates). Le test peut également être exécuté avec des images RAW en définissant l'indicateur de debug
dans votre fichier de configuration.
API testées :
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Pass : les images ont la même luminosité, mais deviennent plus bruyantes avec une sensibilité ISO plus élevée. Les plans RVB sont plats lorsque la valeur de l' exposition ISO* est constante sur l'espace de gain testé.
test_exposure_plot_means.png
![]() | ![]() | |
test_exposure_mult=1.00.jpg | test_exposure_mult=64.00.jpg |
test_jpeg
Les tests qui ont converti les images YUV et les images JPEG de l'appareil se ressemblent. Le test prend les 10 % du centre de l'image, calcule la valeur RVB et vérifie qu'elles correspondent.
API testées :
Pass : la différence RVB moyenne entre chaque image est inférieure à 3 %.
![]() | ![]() | |
test_jpeg_fmt=jpg.jpg | test_jpeg=fmt=yuv.jpg |
test_verrouillage
Teste que les paramètres (exposition et gain) se verrouillent sur le cadre droit pour les caméras FULL
et LEVEL_3
. Prend une série de prises de vue à l'aide de demandes consécutives, en faisant varier les paramètres de demande de capture entre les prises de vue. Vérifie que les images ont les propriétés attendues.
API testées :
Réussite : les images [2, 3, 6, 8, 10, 12, 13] ont une sensibilité ISO ou une exposition accrue et s'affichent avec des moyennes RVB plus élevées sur test_latching_plot_means.png
.
![]() | ![]() | ![]() | |
test_verrouillage_i=00.jpg | test_verrouillage_i=01.jpg | test_verrouillage_i=02.jpg | |
![]() | ![]() | ![]() | |
test_verrouillage_i=03.jpg | test_verrouillage_i=04.jpg | test_verrouillage_i=05.jpg | |
![]() | ![]() | ![]() | |
test_verrouillage_i=06.jpg | test_verrouillage_i=07.jpg | test_verrouillage_i=08.jpg | |
![]() | ![]() | ![]() | |
test_verrouillage_i=09.jpg | test_verrouillage_i=10.jpg | test_verrouillage_i=11.jpg | |
![]() | |||
test_verrouillage_i=12.jpg |
test_latching_plot_means.png
test_linearity
Vérifie que le traitement de l'appareil peut être inversé en pixels linéaires. Capture une séquence de prises de vue avec l'appareil pointé sur une cible uniforme.
API testées :
-
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
Pass : les valeurs R, G, B doivent augmenter de manière linéaire avec une sensibilité accrue.
test_linearity_plot_means.png
test_locked_burst
Teste le verrouillage 3A et la rafale YUV (en utilisant le réglage automatique). Ce test est conçu pour réussir même sur des appareils limités qui n'ont pas MANUAL_SENSOR
ou PER_FRAME_CONTROLS
. Le test vérifie la cohérence de l'image YUV tandis que la vérification de la fréquence d'images est en CTS.
API testées :
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
Pass : les captures semblent cohérentes.
test_locked_burst_frame0.jpg
test_locked_burst_frame1.jpg
test_locked_burst_frame2.jpg
test_multi_camera_match
Tests pour voir si plusieurs caméras sur des appareils donnent des valeurs RVB similaires pour une tache grise.
API testées :
-
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
Pass : différentes caméras produisent des valeurs RVB similaires pour la même zone de gris.
test_multi_camera+match_yuv_fl=4.38.jpg
test_param_color_correction
Vérifie que les paramètres android.colorCorrection.*
sont appliqués lorsqu'ils sont définis. Prend des photos avec différentes valeurs de transformation et de gain, et teste qu'elles semblent différentes en conséquence. La transformation et les gains sont choisis pour rendre la sortie de plus en plus rouge ou bleue. Utilise une carte de tonalité linéaire. Le mappage des tons est une technique utilisée dans le traitement d'image pour mapper un ensemble de couleurs sur un autre afin de se rapprocher de l'apparence d'images à plage dynamique élevée dans un support qui a une plage dynamique plus limitée.
API testées :
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
Pass : les valeurs R et B augmentent en fonction de la transformation.
test_param_color_correction_plot_means.png
*L'axe des abscisses représente les requêtes de capture : 0 = unité, 1=boost rouge, 2=boost bleu
test_param_color_correction_req=0.jpg
test_param_color_correctness_req=1.jpg (amplification R)
test_param_color_correction_req=2.jpg (boost B)
test_param_exposure_time
Teste que le paramètre android.sensor.exposureTime
est appliqué.
API testées :
Réussite : chaque prise de vue est plus lumineuse que la prise de vue précédente.
test_param_exposure_time_frame0.jpg
test_param_exposure_time_plot.png
test_param_flash_mode
Teste que le paramètre android.flash.mode
est appliqué. Règle manuellement l'exposition sur le côté sombre, de sorte qu'il soit évident que le flash se soit déclenché ou non, et utilise une carte de tonalité linéaire. Vérifie le centre avec l'image de la mosaïque pour voir s'il y a un grand dégradé créé pour vérifier si le flash s'est déclenché.
API testées :
Réussite : le centre de l'image de la mosaïque présente un grand dégradé, ce qui signifie que le flash s'est déclenché.
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
Vérifie que le paramètre android.noiseReduction.mode
est appliqué correctement lorsqu'il est défini. Capture des images avec l'appareil photo faiblement éclairé. Utilise un gain analogique élevé pour s'assurer que l'image capturée est bruitée. Capture trois images, pour NR désactivé, "rapide" et "haute qualité". Capture également une image avec un faible gain et NR désactivé, et utilise la variance de celle-ci comme ligne de base. Plus le SNR (Rapport signal sur bruit) est élevé, meilleure est la qualité de l'image.
API testées :
Réussite : le SNR varie selon les différents modes de réduction du bruit et se comporte de la même manière que le graphique ci-dessous.
test_param_noise_reduction_plot_SNRs.png
0 : OFF, 1 : RAPIDE, 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_sensibility
Teste que le paramètre android.sensor.sensitivity
est appliqué. Le test augmente la sensibilité en 5 étapes avec une exposition fixe pour chaque prise de vue.
API testées :
Pass : RVB signifie que le centre de 10 % devient plus lumineux avec une sensibilité accrue.
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
Teste que le paramètre android.shading.mode
est appliqué.
API testées :
-
android.hardware.camera2.CaptureRequest#SHADING_MODE
-
android.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
-
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
Pass : les modes d'ombrage sont commutés et les cartes d'ombrage de l'objectif sont modifiées comme prévu.
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
Teste que le paramètre android.tonemap.mode est appliqué. Applique différentes courbes de carte de tonalité à chaque canal R, G, B et vérifie que les images de sortie sont modifiées comme prévu. Ce test se compose de deux tests, test1 et test2.
API testées :
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Passer:
- test1 : les deux images ont une carte de tons linéaire, mais n=1 a un gradient plus prononcé. Le canal G (vert) est plus lumineux pour l'image n=1.
- test2 : Même tonemap, mais longueur différente. Les images sont les mêmes.
![]() | ![]() | |
test_param_tonemap_mode_n=0.jpg | test_param_tonemap_mode_n=1.jpg |
test_post_raw_sensivity_boost
Vérifie après l'augmentation de la sensibilité RAW. Capture un ensemble d'images RAW et YUV avec une sensibilité différente, publie une combinaison d'amplification de la sensibilité RAW et vérifie si la moyenne des pixels de sortie correspond aux paramètres de la demande.
API testées :
-
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
Pass : les images RAW s'assombrissent à mesure que le boost augmente tandis que les images YUV restent constantes en luminosité
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_sensibility
Capture un ensemble d'images brutes avec des gains croissants et mesure le bruit. Captures brutes uniquement, en rafale.
API testées :
-
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
Pass : chaque tir est plus bruyant que le tir précédent, car le gain augmente.
Utilise la variance de la cellule centrale de la grille des statistiques.
test_raw_burst_sensitivity_variance.png
test_raw_exposure
Capture un ensemble d'images brutes avec un temps d'exposition croissant et mesure les valeurs de pixel.
API testées :
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
Réussite : l'augmentation de l'ISO (gain) rend les pixels plus sensibles à la lumière, de sorte que le tracé se déplace vers la gauche.
test_raw_exposure_s=55.png
(10⁰ correspond à 1 ms, 10¹ correspond à 10 ms, 10⁻¹ correspond à 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_sensibility
Capture un ensemble d'images brutes avec des sensibilités croissantes et mesure le bruit (variance) au centre de 10 % de l'image. Teste que chaque tir est plus bruyant que le précédent.
API testées :
-
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
Passe : la variance augmente à chaque tir.
test_raw_sensitivity_variance.png
test_reprocess_noise_reduction
Vérifie que android.noiseReduction.mode
est appliqué pour le retraitement des requêtes. Capture des images retraitées avec l'appareil photo faiblement éclairé. Utilise un gain analogique élevé pour s'assurer que l'image capturée est bruitée. Capture trois images retraitées, pour NR désactivé, "rapide" et "haute qualité". Capture une image retraitée avec un faible gain et NR désactivé, et utilise la variance de celle-ci comme ligne de base.
API testées :
Pass : RAPIDE >= OFF, HQ >= RAPIDE, HQ >> OFF
Graphique SNR vs NR_MODE typique
test_tonemap_sequence
Teste une séquence de plans avec différentes courbes de tonalité. Capture 3 prises de vue manuelles avec une carte de tonalité linéaire. Capture 3 prises de vue manuelles avec la carte de tonalité par défaut. Calcule le delta entre chaque paire de trames consécutives.
API testées :
Réussite : Il y a 3 images identiques suivies d'un ensemble différent de 3 images identiques.
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
Vérifie que toutes les tailles et tous les formats signalés pour la capture d'image fonctionnent. Utilise une requête manuelle avec une carte de tonalité linéaire afin que le YUV et le JPEG aient le même aspect lorsqu'ils sont convertis par le module its.image. Les images ne sont pas enregistrées par défaut, mais peuvent être enregistrées en activant debug_mode
.
API testées :
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
-
android.graphics.ImageFormat#JPEG
Réussite : tous les centres d'image ont une différence maximale de RMS (valeur quadratique moyenne d'un signal) dans les images converties en RVB avec 3 % de l'image YUV de résolution la plus élevée.
test_yuv_jpeg_all.png
test_yuv_plus_dng
Vérifie que les tailles et formats signalés pour la capture d'image fonctionnent.
API testées :
Réussite : le test se termine et renvoie les images demandées.
test_yuv_plus_dng.jpg
test_yuv_plus_jpeg
Teste la capture d'une seule image en tant que sorties YUV et JPEG. Utilise une requête manuelle avec une carte de tonalité linéaire afin que le YUV et le JPEG se ressemblent (lorsqu'ils sont convertis par le module its.image
.)
API testées :
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
-
android.graphics.ImageFormat#JPEG
Réussite : les images YUV et JPEG sont similaires et présentent une différence de moins de 1 % RMS (valeur quadratique moyenne d'un signal).
![]() | ![]() | |
test_yuv_plus_jpg_jpg.jpg | test_yuv_plus_jpeg_yuv.jpg |
test_yuv_plus_raw
Teste la capture d'une seule image en tant que sorties RAW et YUV. Utilise une demande manuelle avec une carte de tonalité linéaire afin que RAW et YUV soient identiques. Compare les valeurs RVB centrales à 10 % des images converties en RVB. Enregistre android.shading.mode
.
API testées :
-
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
Réussite : les images YUV et JPEG sont similaires et présentent une différence de moins de 3,5 % RMS (valeur quadratique moyenne d'un signal).
![]() | ![]() | |
test_yuv_plus_raw_shading=1_raw.jpg | test_yuv_plus_raw_shading=1_yuv.jpg |
test_yuv_plus_raw10
Teste la capture d'une seule image en tant que sorties RAW10 et YUV. Utilise une demande manuelle avec une carte de tonalité linéaire afin que RAW et YUV soient identiques. Compare les valeurs RVB centrales à 10 % des images converties en RVB. Enregistre android.shading.mode
.
API testées :
-
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
Réussite : les images RAW10 et YUV sont similaires et présentent une différence de moins de 3,5 % RMS (valeur quadratique moyenne d'un signal).
![]() | ![]() | |
test_yuv_plus_raw10_shading=1_raw.jpg | test_yuv_plus_raw10_shading=1_yuv.jpg |
test_yuv_plus_raw12
Teste la capture d'une seule image en tant que sorties RAW12 et YUV. Utilise une demande manuelle avec une carte de tonalité linéaire afin que RAW et YUV soient identiques. Compare les valeurs RVB centrales à 10 % des images converties en RVB. Enregistre android.shading.mode
.
API testées :
-
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
Réussite : les images RAW12 et YUV sont similaires et présentent une différence de moins de 3,5 % RMS (valeur quadratique moyenne d'un signal).
![]() | ![]() | |
test_yuv_plus_raw12_shading=1_raw.jpg | test_yuv_plus_raw12_shading=1_yuv.jpg |
scène2_a
scene2_a a trois visages avec un fond gris et des vêtements neutres. Les visages sont choisis pour avoir une large gamme de tons de peau.
scène2_a
test_effects
Capture l'image pour les effets de caméra pris en charge et vérifie s'ils sont générés correctement. Le test ne vérifie que les effets OFF
et MONO
, mais enregistre les images pour tous les effets pris en charge.
API testées :
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_EFFECTS
-
android.hardware.camera2.CaptureRequest#CONTROL_EFFECT_MODE
Réussi : capture l'image de la scène avec les effets OFF
et une image monochrome avec les effets réglés sur MONO
.
test_effects_MONO.jpg
test_faces
Teste la détection des visages. L'image est enregistrée, mais les informations sur la boîte et le point de repère sont tabulées dans test_faces_stdout.txt
.
API testées :
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass : Détecte au moins un visage de l'image.
test_format_combos
Teste différentes combinaisons de formats de sortie.
API testées :
android.hardware.camera2.CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP
android.hardware.camera2.params.StreamConfigurationMap#getOutputSizes()
android.hardware.camera2.CameraCaptureSession#captureBurst()
Pass : Toutes les combinaisons sont capturées avec succès.
test_jpeg_quality
Teste la qualité de compression JPEG de la caméra. Passez les qualités JPEG à android.jpeg.quality
et assurez-vous que les tables de quantification changent correctement.
API testées :
Pass : la matrice de quantification diminue avec l'augmentation de la qualité. (La matrice représente le facteur de division.)
Moyennes de la matrice DQT luma / chroma de la caméra arrière Pixel 4 par rapport à la qualité JPEG
Exemple de test raté
Notez que pour les images de très faible qualité (jpeg.quality < 50), il n'y a pas d'augmentation de la compression dans la matrice de quantification.
test_num_faces
Teste la détection des visages.
API testées :
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass : Trouve trois visages.
test_num_faces_fd_mode_1.jpg
scène2_b
test_auto_per_frame_control
Teste les propriétés PER_FRAME_CONTROL
pour les demandes de capture automatique.
API testées :
-
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
Réussite : toutes les propriétés PER_FRAME_CONTROL
sont présentes.
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
Teste la détection des visages avec une diversité accrue des tons de peau dans les scènes de visage.
API testées :
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Réussite : Trouve 3 visages.
test_num_faces_fd_mode_1.jpg
scène2_c
test_num_faces
Teste la détection des visages avec une diversité accrue des tons de peau dans les scènes de visage.
API testées :
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Réussite : Trouve 3 visages.
test_num_faces_fd_mode_1.jpg
test_jpeg_capture_perf_class
Teste la latence de capture JPEG pour la classe de performance S comme spécifié dans la section 2.2.7.2 Caméra dans le CDD.
Réussite : DOIT avoir une latence de capture JPEG de la caméra 2 < 1 000 ms pour une résolution de 1 080 p, telle que mesurée par le test de performance de la caméra CTS dans des conditions d'éclairage ITS (3 000 K) pour les deux caméras principales.
test_camera_launch_perf_class
Teste la latence de lancement de la caméra pour la classe de performance S comme spécifié dans la section 2.2.7.2 Caméra du CDD.
Réussite : DOIT avoir une latence de démarrage de la caméra 2 (caméra ouverte à la première image de prévisualisation) < 600 ms, telle que mesurée par le test de performance de la caméra CTS dans des conditions d'éclairage ITS (3 000 K) pour les deux caméras principales.
scène2_d
test_num_faces
Teste la détection des visages avec une diversité accrue des tons de peau dans les scènes de visage.
API testées :
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Réussite : Trouve 3 visages.
scène2_e
test_continuous_picture
50 images de résolution VGA sont capturées avec la première demande de capture en définissant android.control.afMode = 4 (CONTINUOUS_PICTURE).
API testées :
android.hardware.camera2.CaptureRequest#CONTROL_CAPTURE_INTENT
android.hardware.camera2.CaptureResult#CONTROL_POST_RAW_SENSITIVITY_BOOST
Réussite : le système 3A s'installe à la fin d'une capture de 50 images.
test_num_faces
Teste la détection des visages avec une diversité accrue des tons de peau dans les scènes de visage.
API testées :
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Réussite : Trouve 3 visages.
scène3
Scene3 utilise le graphique ISO12233 et la plupart des tests utilisent une méthode d'extraction de graphique pour trouver le graphique dans la scène. Pour cette raison, la plupart des images enregistrées n'ont pas de bordures comme les images des scènes 1, 2 ou 4, mais seulement le graphique.
test_3a_cohérence
Teste la cohérence 3A.
API testées :
-
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
Pass : 3A converge pour l'exposition, le gain, l'awb (balance des blancs automatique) et le fd (distance de mise au point) trois fois dans la tolérance.
test_edge_enhancement
Teste que le paramètre android.edge.mode
est appliqué correctement. Capture des images non retraitées pour chaque mode de bord et renvoie la netteté de l'image de sortie et les métadonnées du résultat de capture. Traite une demande de capture avec un mode de bord, une sensibilité, un temps d'exposition, une distance de mise au point et un paramètre de surface de sortie donnés.
Réussite : le mode rapide n'est pas plus net que le mode HQ (haute qualité).
API testées :
Paramètres de caméra impactés :
-
EDGE_MODE
test_edge_enhancement_edge=0.jpg
test_edge_enhancement_edge=1.jpg (mode rapide)
test_edge_enhancement_edge=2.jpg (mode haute qualité)
test_flip_mirror
Teste si l'image est correctement orientée conformément à la section CDD 7.5.2 Caméra avant [C-1-5] .
Les images en miroir, retournées ou tournées peuvent être identifiées par la fonction de diamant près du centre.
Réussite : l'image n'est pas retournée, mise en miroir ou pivotée.
test_flip_mirror_scene_patch.jpg
test_lens_movement_reporting
Teste si l'indicateur de mouvement de l'objectif est correctement signalé. Capture une rafale de 24 images avec les 12 premières images à la distance de mise au point optimale (telle que trouvée par 3A) et les 12 dernières images à la distance de mise au point minimale. Autour du cadre 12, l'objectif se déplace, ce qui fait chuter la netteté. La netteté finit par se stabiliser lorsque l'objectif se déplace vers la position finale. 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] .