Cette page fournit une liste complète des tests de la suite de tests d'image de l'appareil photo (ITS), qui fait partie de l'outil de vérification de la Compatibility Test Suite 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 de l'appareil photo annoncées 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 ITS sont mis à jour ou ajoutés à chaque version d'Android, comme indiqué dans les notes de version de Camera ITS pour cette version d'Android. Les mises à jour sont motivées par les bugs signalés par les utilisateurs ou les développeurs. Les ajouts sont motivés par les bugs signalés par les utilisateurs ou les développeurs, et par la validation du comportement correct des nouvelles fonctionnalités du framework de l'appareil photo.
Sur Android 17 et versions ultérieures, les tests Camera ITS sont divisés en deux activités dans CTS Verifier pour permettre une exécution en parallèle et réduire la durée des tests : une activité pour les tests feature_combination et sensor_fusion, et une autre pour tous les autres tests. Pour en savoir plus, consultez Réduire la durée des tests.
Camera ITS filtre les tests en fonction des propriétés de l'appareil photo requises, du niveau d'API et du niveau de classe de performances multimédias (MPC). Pour le niveau d'API, ITS utilise ro.product.first_api_level pour contrôler les tests ajoutés à un niveau d'API spécifique qui testent les expériences utilisateur négatives pour les fonctionnalités des niveaux d'API inférieurs. ITS utilise ro.vendor.api_level pour limiter les tests des fonctionnalités ajoutées à un niveau d'API spécifique qui nécessitent une nouvelle capacité matérielle. Si ro.odm.build.media_performance_class est défini pour un appareil, ITS nécessite l'exécution de tests spécifiques en fonction du niveau MPC.
Les tests sont regroupés par scène dans les sections suivantes :
scene0: capture des métadonnées, de la gigue, du gyroscope et des vibrationsscene1: exposition, sensibilité, compensation de la valeur d'exposition (EV), YUV par rapport à JPEG et RAWscene2: détection de visages, tests nécessitant des scènes en couleurscene3: Amélioration des contours, mouvement de l'objectifscene4: format, recadrage, champ de visionscene6: Zoomscene7: Changement de camérascene8: mesure de la région d'exposition automatique (AE) et de la balance des blancs automatique (AWB)scene9: compression JPEGscene_extensions: extensions pour l'appareil photoscene_tele: Changement de téléobjectifscene_video: Pertes de fréquence d'images
Scènes de test basées sur le rig Gen2 / sensor_fusion
feature_combination: combinaisons de caractéristiquesscene_flash: flash automatique, fréquence d'images minimalescene_gen2_chart: tests utilisant le tableau papier de 2e générationscene_ip: Parité d'image entre l'application Appareil photo par défaut et l'application Jetpack Camera (JCA)sensor_fusion: décalage temporel de la caméra et du gyroscope
Scène de test basée sur un diffuseur
scene5: ombrage d'objectif
Scène de test sur tablette à large gamme de couleurs
scene_wide_gamut: profil et gamme de couleurs étendus
Consultez les sections individuelles pour obtenir une description de chaque scène.
Scènes de test sur tablette
scene0
Les tests ne nécessitent aucune information spécifique sur la scène. Cependant, le téléphone doit être immobile pour les tests du gyroscope et des vibrations.
test_jitter
Mesure la gigue dans les codes temporels de la caméra.
API testées :
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMPandroid.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
Réussite : il y a un delta d'au moins 30 ms entre les images.
Dans la figure suivante, notez la petite plage de l'axe des ordonnées. La gigue est en fait faible dans ce graphique.
Figure 1. Tracé test_jitter.
test_metadata
Teste la validité des entrées de métadonnées en examinant les résultats de capture et les objets de caractéristiques de la caméra. Ce test utilise des valeurs d'exposition et de gain auto_capture_request, car le contenu de l'image n'est pas important. Il s'agit d'un test d'échec rapide, car il s'exécute en peu de temps, nécessite une configuration minimale et signale un nombre important d'échecs de tests en aval.
La suite de tests complète ne doit pas être exécutée tant que test_metadata n'a pas réussi.
API testées :
android.hardware.camera2.CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVELandroid.hardware.camera2.CameraCharacteristics#SCALER_CROPPING_TYPEandroid.hardware.camera2.CameraCharacteristics#SENSOR_BLACK_LEVEL_PATTERNandroid.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCEandroid.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATIONandroid.hardware.camera2.CaptureResult#SENSOR_ROLLING_SHUTTER_SKEW
Réussite : le niveau matériel, les tags rollingShutterSkew et frameDuration, timestampSource, croppingType, blackLevelPattern, pixel_pitch, le champ de vision et la distance hyperfocale sont présents et ont des valeurs valides.
test_request_capture_match
Vérifie que l'appareil écrit les valeurs d'exposition et de gain correctes en lisant les métadonnées de capture. Il s'agit d'un test d'échec rapide, car il nécessite une configuration minimale et signale un nombre important d'échecs de tests en aval.
La suite de tests complète ne doit pas être exécutée tant que test_request_capture_match n'est pas validé.
API testées :
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_EXPOSURE_TIME_RANGEandroid.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGEandroid.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIMEandroid.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITYandroid.hardware.camera2.CaptureResult#SENSOR_EXPOSURE_TIMEandroid.hardware.camera2.CaptureResult#SENSOR_SENSITIVITY
Réussite : les valeurs des métadonnées de la requête et de la capture correspondent pour tous les plans.
test_sensor_events
Pour les appareils qui annoncent la prise en charge de la fusion de capteurs, ce test vérifie si l'appareil interroge et affiche les événements de capteur. 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é, c'est-à-dire si l'appareil n'est pas en mode veille. Il s'agit d'un test d'échec rapide, car il s'exécute rapidement, nécessite une configuration minimale et signale l'échec du test de fusion des capteurs en aval. Les tests de scène sensor_fusion ne doivent pas s'exécuter, sauf si test_sensor_events est défini sur PASS ou SKIP.
API testées :
Réussite : les événements de chaque capteur sont reçus.
test_solid_color_test_pattern
Vérifie que les mires de test de couleur unie sont générées correctement pour la désactivation de la caméra. Si la coupure de la caméra est possible, les mires de test de couleur unie doivent être acceptées. Si la désactivation de la caméra n'est pas prise en charge, les mires de test de couleur unie ne sont testées que si la fonctionnalité est annoncée.
Si les images brutes sont acceptées, 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 sont pas compatibles avec les images brutes, seul le noir est testé.
API testées :
android.hardware.camera2.CameraCharacteristics#SENSOR_AVAILABLE_TEST_PATTERN_MODESandroid.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_DATAandroid.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
Réussite : les mires de test unies compatibles 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 mire 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 toutes les mires de test compatibles.
- Effectue une vérification de l'exactitude de la mire de test de couleur unie et des barres de couleur.
API testées :
android.hardware.camera2.CameraCharacteristics#SENSOR_AVAILABLE_TEST_PATTERN_MODESandroid.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
Réussite : les mires de test compatibles sont générées correctement.
Figure 2 : exemple test_test_patterns.
test_tonemap_curve
Teste la conversion de la mire de test du format brut au format YUV avec un mappage de tons linéaire. Ce test nécessite android.sensor.testPatternMode = 2 (COLOR_BARS) pour générer un motif d'image parfait pour la conversion du mappage de tons. Vérifie que le pipeline dispose de sorties de couleur appropriées avec un mappage de tons linéaire et une entrée d'image idéale (repose sur test_test_patterns).
API testées :
android.hardware.camera2.CaptureRequest#DISTORTION_CORRECTION_MODEandroid.hardware.camera2.CaptureRequest#SENSOR_TEST_PATTERN_MODEandroid.hardware.camera2.CaptureRequest#TONEMAP_CURVEandroid.hardware.camera2.CaptureRequest#TONEMAP_MODE
Réussite : les images YUV et RAW sont similaires.
Figure 3.Exemple brut de test_tonemap_curve.
Figure 4. Exemple de test_tonemap_curve YUV.
test_unified_timestamp
Vérifie si les événements du capteur d'image et de mouvement se trouvent dans le même domaine temporel. Il s'agit d'un test à échec rapide, car il s'exécute en peu de temps, nécessite une configuration minimale et signale l'échec du test de fusion des capteurs en aval. Les tests de la scène sensor_fusion ne doivent pas être exécutés, sauf si test_unified_timestamp est défini sur PASS ou SKIP.
API testées :
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMPandroid.hardware.Sensorandroid.hardware.SensorEventandroid.hardware.Sensor#TYPE_ACCELEROMETERandroid.hardware.Sensor#TYPE_GYROSCOPE
Réussite : les codes temporels de mouvement se situent entre les deux codes temporels d'image.
test_vibration_restriction
Vérifie si le vibreur de l'appareil fonctionne comme prévu.
API testées :
android.hardware.Sensorandroid.hardware.SensorEventandroid.hardware.Sensor#TYPE_ACCELEROMETERandroid.os.Vibratorandroid.hardware.camera2.CameraDevice#setCameraAudioRestriction
Réussite : l'appareil ne vibre pas lorsque le son est coupé par l'API de restriction audio de l'appareil photo.
scene1_1
scene1 est un graphique gris. La mire grise doit couvrir les 30% centraux du champ de vision de la caméra. Le graphique gris devrait poser un défi modéré aux 3A (AE, AWB et AF), car la région centrale ne présente aucune caractéristique.
Toutefois, la requête de capture spécifie l'intégralité de la scène, qui inclut suffisamment de caractéristiques pour que la convergence 3A se produise.
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 réduit de 2/3 pour spécifier certaines limites du graphique gris dans le FoV afin d'aider la convergence 3A. Pour obtenir une description plus détaillée des bancs d'essai de l'appareil photo, consultez Camera ITS-in-a-box.
Figure 5. Graphique scene1 en taille réelle (à gauche), graphique à l'échelle 2/3 (à droite).
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 l'AE désactivée. La dernière requête comporte un déclencheur de précapture AE, qui doit être ignoré, car l'AE est désactivée.
API testées :
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODEandroid.hardware.camera2.CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGERandroid.hardware.camera2.CaptureResult#CONTROL_AE_STATE
Réussite : l'AE converge.
test_auto_vs_manual
Les tests qui ont capturé des clichés automatiques et manuels se ressemblent.
API testées :
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINSandroid.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORMandroid.hardware.camera2.CaptureResult#TONEMAP_CURVEandroid.hardware.camera2.CaptureResult#TONEMAP_MODE
Réussite : les gains et la transformation de la balance des blancs manuelle indiqués dans chaque résultat de capture correspondent à la balance des blancs automatique estimate de l'algorithme 3A de l'appareil photo.
Figure 6 : Exemple de test_auto_vs_manual auto.
Figure 7 : Exemple de balance des blancs test_auto_vs_manual.
Figure 8 : Exemple de transformation de la balance des blancs manuelle test_auto_vs_manual.
test_black_white
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 exposition longue, ce qui donne une photo blanche.
API testées :
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIMEandroid.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Pass : produit des images en noir et blanc. Les canaux saturés des images blanches ont des valeurs RVB de [255, 255, 255] avec une marge d'erreur inférieure à 1 %.
Figure 9 : test_black_white, exemple noir.
Figure 10. test_black_white, exemple blanc.
Figure 11. Exemple de test_black_white, plot means.
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 vérifie les pertes d'images et la luminosité de l'image.
test_burst_sameness_manual
Prend cinq rafales de 50 images avec le paramètre de capture manuelle et vérifie qu'elles sont toutes identiques. Utilisez ce test pour identifier si des images sporadiques sont traitées différemment ou présentent des artefacts.
API testées :
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSORandroid.hardware.camera2.CameraMetadata#SYNC_MAX_LATENCY_PER_FRAME_CONTROL
Réussite : les images sont identiques visuellement et en termes de valeurs RVB.
Échec : le graphique de la moyenne RVB affiche un pic ou une baisse 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.
Figure 12 : Exemple de moyenne test_burst_sameness_manual.
Figure 13. test_burst_sameness_manual_plot_means
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_SIZEandroid.hardware.camera2.CaptureResult#SCALER_CROP_REGIONandroid.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
Réussite : les images YUV sont recadrées au centre, mais pas les images RAW.
Figure 14.Exemple de recadrage brut de test_crop_region_raw comp.
Figure 15. Exemple complet de test_crop_region_raw comp raw.
Figure 16. Exemple de recadrage YUV de test_crop_region_raw comp.
Figure 17. Exemple complet de test_crop_region_raw YUV.
test_crop_regions
Tests that crop regions work. Prend une image complète et crée des correctifs de cinq régions différentes (angles et centre). Prend des images avec un recadrage défini pour les cinq régions. Compare les valeurs de l'image de patch et de l'image recadrée.
API testées :
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZEandroid.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
Réussite : l'image de la zone recadrée correspond au patch qui correspond à l'image recadrée.
test_ev_compensation
Vérifie que la correction de la valeur d'exposition (EV) est appliquée. Le test se compose d'une section de base et d'une section avancée.
La section de base 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 pour chaque valeur de compensation.
La section avancée 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 d'EV appliquée. La valeur attendue sature si les valeurs calculées dépassent la plage de valeurs réelle 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 en cinq étapes.
API testées :
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_COMPENSATION_STEPandroid.hardware.camera2.CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATIONandroid.hardware.camera2.CaptureRequest#CONTROL_AE_LOCKandroid.hardware.camera2.CaptureResult#CONTROL_AE_STATEandroid.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCKandroid.hardware.camera2.CaptureResult#TONEMAP_CURVEandroid.hardware.camera2.CaptureResult#TONEMAP_MODE
Réussite de la section "De base" : les images montrent une exposition croissante sans surexposition en cinq étapes.
Figure 18. test_ev_compensation_basic.
Réussite de la section avancée : capture une augmentation de la luma à mesure que le paramètre de compensation EV augmente. Les huit images capturées pour chaque paramètre de compensation d'EV ont des valeurs de luminance stables.
Figure 19. test_ev_compensation_advanced_plot_means.
test_exposure_x_iso
Vérifie qu'une exposition constante est obtenue lorsque l'ISO et le temps d'exposition varient. Prend une série de photos dont la sensibilité ISO et le temps d'exposition sont choisis pour s'équilibrer mutuellement.
Les résultats doivent avoir la même luminosité, mais l'image doit devenir plus bruitée au fil de la séquence. Vérifie que les valeurs moyennes des pixels de l'échantillon sont proches les unes des autres. Vérifie que les images ne sont pas limité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'option debug dans votre fichier de configuration.
API testées :
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIMEandroid.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Réussite : les images ont la même luminosité, mais sont plus bruitées avec une sensibilité ISO plus élevée. Les plans RVB sont plats lorsque la valeur de ISO*exposition est constante sur l'espace de gain testé.
Mécanisme d'échec : dans la figure suivante, à mesure que les valeurs du multiplicateur de gain (axe des abscisses) augmentent, les valeurs moyennes du plan RVB normalisé (axe des ordonnées) commencent à s'écarter des valeurs du multiplicateur de gain faible.
Figure 20. test_exposure_plot_means.
Figure 21. test_exposure_mult=1.00.
Figure 22.test_exposure_mult=64.00.
test_latching
Vérifie que les paramètres (exposition et gain) sont verrouillés sur l'image appropriée pour les caméras FULL et LEVEL_3. Prend une série de photos à l'aide de requêtes consécutives, en faisant varier les paramètres de requête de capture entre les prises de vue. Vérifie que les images possèdent 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 plus élevée et s'affichent avec des moyennes RVB plus élevées dans le graphique de la figure suivante.
Figure 23.Exemple de moyenne de tracé test_latching.
Figure 24.test_latching i=00.
Figure 25. test_latching i=01.
Figure 26. test_latching i=02.
Figure 27 : test_latching i=03.
Figure 28. test_latching i=04.
Figure 29. test_latching i=05.
Figure 30. test_latching i=06.
Figure 31. test_latching i=07.
Figure 32. test_latching i=08.
Figure 33 : test_latching i=09.
Figure 34. test_latching i=10.
Figure 35. test_latching i=11.
Figure 36. test_latching i=12.
test_linearity
Vérifie que le traitement de l'appareil peut être inversé en pixels linéaires. Capture une séquence de clichés avec l'appareil pointé vers une cible uniforme.
API testées :
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGEandroid.hardware.camera2.CaptureRequest#BLACK_LEVEL_LOCKandroid.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITYandroid.hardware.camera2.CaptureRequest#TONEMAP_CURVEandroid.hardware.camera2.CaptureRequest#TONEMAP_MODE
Réussite : les valeurs R, G et B doivent augmenter de manière linéaire avec l'augmentation de la sensibilité.
Figure 37 : Exemple de graphique test_linearity.
test_locked_burst
Teste le verrouillage 3A et la rafale YUV (avec le paramètre automatique). Ce test est conçu pour réussir même sur les appareils limités qui ne disposent pas de MANUAL_SENSOR ou de PER_FRAME_CONTROLS.
Le test vérifie la cohérence des images YUV, tandis que la vérification de la fréquence d'images est effectuée dans CTS.
API testées :
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCKandroid.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
Réussite : les captures sont cohérentes.
Figure 38 : Exemple de frame0 test_locked_burst.
Figure 39 : Exemple de frame 1 test_locked_burst.
Figure 40. Exemple de frame2 test_locked_burst.
scene1_2
scene 1_2 est une copie fonctionnellement identique de scene 1_1, qui implémente une structure de sous-scène pour réduire la durée prolongée de scene 1.
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 vérifie qu'elles sont différentes en conséquence. La transformation et les gains sont choisis pour rendre la sortie de plus en plus rouge ou bleue. Utilise un mappage de tons linéaire.
Le mappage des tons est une technique utilisée dans le traitement d'images pour mapper un ensemble de couleurs à un autre afin d'approcher l'apparence d'images à plage dynamique élevée dans un support dont la plage dynamique est plus limitée.
API testées :
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINSandroid.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODEandroid.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
Réussite : les valeurs R et B sont augmentées en fonction de la transformation.
Figure 41. Exemple de moyennes de tracé test_param_color_correction.
Dans les figures suivantes, l'axe des abscisses correspond aux requêtes de capture : 0 = unité, 1 = boost rouge et 2 = boost bleu.
Figure 42. Exemple d'unité test_param_color_correction req=0.
Figure 43 : Exemple de boost de rouge pour test_param_color_correctness req=1.
Figure 44. Exemple de test_param_color_correction req=2 blue boost.
test_param_flash_mode
Vérifie que le paramètre android.flash.mode est appliqué. Définit manuellement l'exposition sur le côté sombre, de sorte qu'il soit évident que le flash s'est déclenché ou non, et utilise un mappage de tons linéaire. Vérifie le centre avec l'image de la tuile pour voir si un dégradé important est créé afin de vérifier si le flash s'est déclenché.
API testées :
Réussite : le centre de l'image de la tuile présente un dégradé important, ce qui signifie que le flash s'est déclenché.
Figure 45. Exemple de test_param_flash_mode 1.
Figure 46 : Exemple de tuile test_param_flash_mode.
Figure 47. Exemple de test_param_flash_mode 2.
Figure 48 : Exemple de test_param_flash_mode avec deux tuiles.
test_param_noise_reduction
Vérifie que le paramètre android.noiseReduction.mode est correctement appliqué lorsqu'il est défini. Capture des images avec la caméra faiblement éclairée. Utilise un gain analogique élevé pour s'assurer que l'image capturée est bruitée. Capture trois images, pour la réduction du bruit désactivée, rapide et de haute qualité. Capture également une image avec un gain faible et la réduction du bruit désactivée, et utilise la variance de cette image comme référence. Plus le rapport signal/bruit (SNR) est élevé, meilleure est la qualité de l'image.
API testées :
Réussite : le SNR varie en fonction des différents modes de réduction du bruit et se comporte de la même manière que le graphique suivant :
Figure 49 : Exemple de tracé des RSB pour test_param_noise_reduction.
0 : OFF, 1 : FAST, 2 : HQ, 3 : MIN , 4 : ZSL
Figure 50 : Exemple de test_param_noise_reduction high gain nr=0.
Figure 51 : Exemple de test_param_noise_reduction avec un gain élevé et nr=1.
Figure 52 : Exemple de test_param_noise_reduction avec un gain élevé et nr=2.
Figure 53 : Exemple de test_param_noise_reduction avec un gain élevé et nr=3.
Figure 54 : Exemple de test_param_noise_reduction avec un gain faible.
test_param_shading_mode
Vérifie que le paramètre android.shading.mode est appliqué.
API testées :
android.hardware.camera2.CaptureRequest#SHADING_MODEandroid.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODEandroid.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
Réussite : les modes d'ombrage sont modifiés et les cartes d'ombrage de l'objectif sont modifiées comme prévu.
Figure 55 : Exemple de carte de shading de l'objectif test_param_shading_mode, mode 0, boucle 0.
Figure 56 : Exemple de carte de shading de l'objectif test_param_shading_mode, mode 1, boucle 0.
Figure 57. Exemple de carte de shading de l'objectif test_param_shading_mode, mode 2, boucle 0.
test_param_tonemap_mode
Vérifie que le paramètre android.tonemap.mode est appliqué. Applique différentes courbes de mappage des tons à 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.CameraMetadata#TONEMAP_MODE_CONTRAST_CURVEandroid.hardware.camera2.CameraMetadata#TONEMAP_MODE_FASTandroid.hardware.camera2.CaptureRequest#TONEMAP_CURVEandroid.hardware.camera2.CaptureRequest#TONEMAP_MODE
Pass :
test1: les deux images ont un mappage de tons linéaire, maisn=1a un dégradé plus prononcé. Le canal G (vert) est plus lumineux pour l'imagen=1.test2: même mappage de tons, mais durée différente. Les images sont identiques.
Figure 58 : test_param_tonemap_mode avec n=0.
Figure 59 : test_param_tonemap_mode avec n=1.
test_post_raw_sensitivity_boost
Vérifie l'augmentation de la sensibilité brute après la publication. Capture un ensemble d'images brutes et YUV avec différentes sensibilités, publie la combinaison d'amélioration de la sensibilité brute et vérifie si la moyenne des pixels de sortie correspond aux paramètres de la requête.
API testées :
android.hardware.camera2.CameraCharacteristics#CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGEandroid.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAWandroid.hardware.camera2.CaptureRequest#CONTROL_POST_RAW_SENSITIVITY_BOOSTandroid.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Réussite : les images brutes s'assombrissent à mesure que l'amplification augmente, tandis que la luminosité des images YUV reste constante.
Figure 60 : Exemple de test_post_raw_sensitivity_boost raw s=3583 boost=0100.
Figure 61 : Exemple de test_post_raw_sensitivity_boost raw s=1792 boost=0200.
Figure 62. Exemple de test_post_raw_sensitivity_boost raw s=0896 boost=0400.
Figure 63 : Exemple de test_post_raw_sensitivity_boost raw s=0448 boost=0800.
Figure 64 : Exemple de test_post_raw_sensitivity_boost raw s=0224 boost=1600.
Figure 65 : Exemple de test_post_raw_sensitivity_boost raw s=0112 boost=3199.
Figure 66. Exemple de moyennes de tracés bruts test_post_raw_sensitivity_boost.
Figure 67. Exemple de test_post_raw_sensitivity_boost YUV s=0112 boost=3199.
Figure 68 : Exemple de test_post_raw_sensitivity_boost YUV s=0448 boost=0800.
Figure 69 : Exemple de test_post_raw_sensitivity_boost YUV s=0896 boost=0400.
Figure 70 : Exemple de test_post_raw_sensitivity_boost YUV s=1792 boost=0200.
Figure 71. Exemple de test_post_raw_sensitivity_boost YUV s=3585 boost=0100.
Figure 72 : Exemple de test_post_raw_sensitivity_boost_yuv_plot_means.
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_RAWandroid.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
Réussite : l'augmentation de la sensibilité ISO (gain) rend les pixels plus sensibles à la lumière, de sorte que le tracé se déplace vers la gauche.
Figure 73 : Exemple de test_raw_exposure ISO=55.
10⁰ correspond à 1 ms, 10¹ à 10 ms et 10⁻¹ à 0, 1 ms.
Figure 74 : Exemple de test_raw_exposure ISO=132.
Figure 75 : Exemple de test_raw_exposure ISO=209.
Figure 76 : Exemple de test_raw_exposure ISOs=286.
Figure 77 : Exemple de test_raw_exposure ISO=363.
Figure 78 : Exemple de test_raw_exposure ISO=440.
test_reprocess_noise_reduction
Vérifie que android.noiseReduction.mode est appliqué aux demandes de retraitement.
Capture des images retraitées avec l'appareil photo faiblement éclairé. Utilise un gain analogique élevé pour vérifier que l'image capturée est bruitée. Capture trois images retraitées, pour la réduction du bruit désactivée, rapide et de haute qualité. Capture une image retraitée avec un gain faible et la réduction du bruit désactivée, et utilise la variance de cette image comme référence.
API testées :
Réussite : FAST >= OFF, HQ >= FAST et HQ >> OFF.
Figure 79. Exemple de graphique typique du rapport signal/bruit par rapport au mode NR.
test_tonemap_sequence
Teste une séquence de prises de vue avec différentes courbes de mappage de tons. Prend trois photos manuelles avec un mappage de tons linéaire. Prend trois photos manuelles avec le mappage de tons par défaut. Calcule le delta entre chaque paire de frames consécutives.
API testées :
Réussite : trois images identiques sont suivies d'un autre ensemble de trois images identiques.
Figure 80 : exemple test_tonemap_sequence i=0.
Figure 81 : Exemple test_tonemap_sequence i=1.
Figure 82. Exemple test_tonemap_sequence i=2.
Figure 83. Exemple de test_tonemap_sequence i=3.
Figure 84 : exemple de test_tonemap_sequence i=4.
Figure 85 : Exemple de test_tonemap_sequence i=5.
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 un mappage de tons linéaire afin que les formats YUV et JPEG soient identiques lorsqu'ils sont convertis par le module image_processing_utils. Les images ne sont pas enregistrées par défaut, mais vous pouvez les enregistrer en activant debug_mode.
API testées :
android.hardware.camera2.CaptureRequest#TONEMAP_CURVEandroid.hardware.camera2.CaptureRequest#TONEMAP_MODEandroid.graphics.ImageFormat#JPEG
Réussite : tous les centres d'image ont une différence maximale de valeur efficace (RMS) (valeur d'un signal) dans les images converties en RVB avec 3% de l'image YUV de résolution la plus élevée.
Figure 86. Exemple test_yuv_jpeg_all.
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.
Figure 87 : Exemple test_yuv_plus_dng.
scene1_3
scene 1_3 est une copie fonctionnellement identique de scene 1_1, qui implémente une structure de sous-scène pour réduire la durée prolongée de scene 1.
test_capture_result
Vérifie que des données valides sont renvoyées dans les objets CaptureResult. Le test consiste en une capture automatique, une capture manuelle et une deuxième capture automatique.
API testées :
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODEandroid.hardware.camera2.CaptureRequest#CONTROL_AE_REGIONSandroid.hardware.camera2.CaptureRequest#CONTROL_AF_MODEandroid.hardware.camera2.CaptureRequest#CONTROL_AF_REGIONSandroid.hardware.camera2.CaptureRequest#CONTROL_AWB_MODEandroid.hardware.camera2.CaptureRequest#CONTROL_AWB_REGIONSandroid.hardware.camera2.CaptureRequest#CONTROL_MODEandroid.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINSandroid.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORMandroid.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODEandroid.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIMEandroid.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITYandroid.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAPandroid.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODEandroid.hardware.camera2.CaptureRequest#TONEMAP_CURVEandroid.hardware.camera2.CaptureRequest#TONEMAP_MODE
Réussite : les métadonnées sont valides pour toutes les captures, et les paramètres manuels ne sont pas appliqués à la deuxième capture automatique. Trace la correction de l'ombrage de l'objectif pour les captures.
Figure 88. test_capture_result_plot_lsc_auto_ch0.
test_dng_noise_model
Vérifie que les paramètres du modèle brut DNG sont corrects. Le graphique représente la variance mesurée d'un patch central de la carte grise dans des clichés bruts capturés sur une plage de sensibilités, et compare ces valeurs à la variance attendue à chaque sensibilité par le modèle de bruit DNG dans la HAL de l'appareil photo (en fonction des paramètres O,S renvoyés dans les objets de résultat de capture). Pour en savoir plus 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_RANGEandroid.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVELandroid.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITYandroid.hardware.camera2.CaptureResult#SENSOR_NOISE_PROFILEandroid.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.
Figure 89. test_dng_noise_model_plog.
test_jpeg
Vérifie que les images YUV converties et les images JPEG de l'appareil sont identiques. Le test prend les 10% centraux de l'image, calcule la valeur RVB et vérifie qu'ils correspondent.
API testées :
Réussite : la différence RVB moyenne entre chaque image est inférieure à 3%.
Figure 90.test_jpeg_fmt=jpg.jpg.
Figure 91 : test_jpeg=fmt=yuv.jpg.
test_raw_burst_sensitivity
Capture un ensemble d'images brutes avec des gains croissants et mesure le bruit. Capture uniquement des images RAW, en rafale.
API testées :
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZEandroid.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGEandroid.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVELandroid.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITYandroid.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
Réussite : chaque photo est plus bruitée que la précédente, car le gain augmente.
Utilise la variance de la cellule de la grille des statistiques centrales.
Figure 92 : test_raw_burst_sensitivity_variance.
test_raw_sensitivity
Capture un ensemble d'images brutes avec des sensibilités croissantes et mesure le bruit (variance) dans les 10% centraux de l'image. Vérifie que chaque prise de vue est plus bruitée que la précédente.
API testées :
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZEandroid.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGEandroid.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVELandroid.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITYandroid.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
Réussite : la variance augmente à chaque tir.
Figure 93 : test_raw_sensitivity_variance.
test_yuv_plus_jpeg
Teste la capture d'une seule image en tant que sorties YUV et JPEG. Utilise une requête manuelle avec un mappage de tons linéaire afin que les formats YUV et JPEG soient identiques lorsqu'ils sont convertis par le module image_processing_utils.
API testées :
android.hardware.camera2.CaptureRequest#TONEMAP_CURVEandroid.hardware.camera2.CaptureRequest#TONEMAP_MODEandroid.graphics.ImageFormat#JPEG
Réussite : les images YUV et JPEG sont similaires et présentent une différence RMS (valeur d'un signal) inférieure à 1 %.
Figure 94 : test_yuv_plus_jpeg au format JPEG
Figure 95.test_yuv_plus_jpeg avec le format YUV.
test_yuv_plus_raw
Tests capturant une seule image en tant que sorties brutes (brutes 10 bits et 12 bits) et YUV, si elles sont compatibles. Utilise une requête manuelle avec un mappage de tons linéaire. Les données brutes et YUV devraient donc être identiques. Compare les valeurs RVB des 10% centraux des images converties en RVB. Journauxandroid.shading.mode.
API testées :
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAWandroid.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAPandroid.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODEandroid.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINSandroid.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORMandroid.hardware.camera2.CaptureRequest#CONTROL_AWB_MODEandroid.hardware.camera2.CaptureRequest#CONTROL_MODEandroid.hardware.camera2.CaptureRequest#SHADING_MODEandroid.hardware.camera2.CaptureRequest#TONEMAP_CURVEandroid.hardware.camera2.CaptureRequest#TONEMAP_MODEandroid.graphics.ImageFormat#RAW10android.graphics.ImageFormat#RAW12
Réussite : les images YUV et brutes sont similaires et présentent une différence RMS (valeur quadratique moyenne d'un signal) inférieure à 3,5 %.
Figure 96.test_yuv_plus_raw_shading=1_raw.jpg.
Figure 97.test_yuv_plus_raw_shading=1_yuv.jpg.
test_sensitivity_priority
Testez CONTROL_AE_PRIORITY_MODE_SENSOR_SENSITIVITY_PRIORITY avec différents paramètres ISO pour confirmer la corrélation entre une sensibilité ISO plus élevée et des niveaux de bruit accrus.
API testées :
android.hardware.camera2.CameraMetadata#CONTROL_AE_PRIORITY_MODE_SENSOR_SENSITIVITY_PRIORITYandroid.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITYandroid.hardware.camera2.CaptureResult#SENSOR_SENSITIVITYandroid.hardware.camera2.CaptureRequest#CONTROL_AE_PRIORITY_MODEandroid.hardware.camera2.CaptureResult#CONTROL_AE_PRIORITY_MODEandroid.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGEandroid.hardware.camera2.CaptureRequest#CONTROL_AE_MODEandroid.hardware.camera2.CaptureResult#CONTROL_AE_MODEandroid.hardware.camera2.CameraMetadata#CONTROL_AE_MODE_ONandroid.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_PRIORITY_MODES
Réussite : une valeur ISO plus élevée entraîne une augmentation des niveaux de bruit.
Critères d'exclusion des tests
Le test test_sensitivity_priority.py est ignoré si l'un des critères suivants est rempli :
- Le premier niveau d'API de l'appareil (
first_api_level) est inférieur ou égal à 35. - L'appareil n'annonce pas
CONTROL_AE_PRIORITY_MODE_SENSOR_SENSITIVITY_PRIORITYdansCONTROL_AE_AVAILABLE_PRIORITY_MODES.
test_exposure_time_priority
Teste CONTROL_AE_PRIORITY_MODE_SENSOR_EXPOSURE_TIME_PRIORITY sur différents temps d'exposition, en vérifiant la stabilité de la luminosité dans la plage où la sensibilité ISO peut compenser.
API testées :
android.hardware.camera2.CameraMetadata#CONTROL_AE_PRIORITY_MODE_SENSOR_EXPOSURE_TIME_PRIORITYandroid.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIMEandroid.hardware.camera2.CaptureResult#SENSOR_EXPOSURE_TIMEandroid.hardware.camera2.CaptureRequest#CONTROL_AE_PRIORITY_MODEandroid.hardware.camera2.CaptureResult#CONTROL_AE_PRIORITY_MODEandroid.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGEandroid.hardware.camera2.CaptureResult#SENSOR_SENSITIVITYandroid.hardware.camera2.CaptureRequest#CONTROL_AE_MODEandroid.hardware.camera2.CaptureResult#CONTROL_AE_MODEandroid.hardware.camera2.CameraMetadata#CONTROL_AE_MODE_ONandroid.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_PRIORITY_MODES
Réussite : la luminosité est stable (dans les limites de tolérance) sur l'ensemble des temps d'exposition si la sensibilité ISO se situe dans sa plage de compensation.
Critères d'exclusion des tests
Le test test_exposure_time_priority est ignoré si l'un des critères suivants est rempli :
- Le premier niveau d'API de l'appareil (
first_api_level) est inférieur ou égal à 35. - L'appareil n'annonce pas
CONTROL_AE_PRIORITY_MODE_SENSOR_EXPOSURE_TIME_PRIORITYdansCONTROL_AE_AVAILABLE_PRIORITY_MODES.
scene2_a
scene2_a présente trois visages sur fond gris, avec des vêtements neutres. Les visages sont choisis de manière à présenter un large éventail de couleurs de peau. Le graphique doit être orienté correctement pour que la détection de visages fonctionne de manière optimale.
Figure 98. Exemple scene2_a.
test_autoframing
Teste le comportement de cadrage automatique de la caméra. Effectue un zoom important de sorte qu'aucun des visages de la scène ne soit visible, active le mode de cadrage automatique en définissant AUTOFRAMING dans CaptureRequest sur True, et vérifie si tous les visages de la scène d'origine peuvent être détectés lorsque l'état converge (c'est-à-dire lorsque AUTOFRAMING_STATE dans CaptureResult est défini sur AUTOFRAMING_STATE_CONVERGED).
API testées :
android.hardware.camera2.CameraCharacteristics#CONTROL_AUTOFRAMING_AVAILABLEandroid.hardware.camera2.CaptureRequest#CONTROL_AUTOFRAMINGandroid.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMINGandroid.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMING_STATE
Réussite : les trois visages sont détectés.
test_display_p3
Teste la capture Display P3 au format JPEG à l'aide de l'API ColorSpaceProfiles. Vérifie que le JPEG capturé possède un profil ICC approprié dans son en-tête et que l'image contient des couleurs en dehors de la gamme sRGB.
API testées :
android.hardware.camera2.params.ColorSpaceProfilesandroid.hardware.camera2.params.SessionConfiguration#setColorSpace
Réussite : le JPEG contient un profil ICC Display P3 et des couleurs en dehors de la gamme sRGB.
test_effects
Capture une image pour les effets de caméra compatibles 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 compatibles.
API testées :
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_EFFECTSandroid.hardware.camera2.CaptureRequest#CONTROL_EFFECT_MODE
Pass : capture l'image de la scène avec les effets OFF et une image monochrome avec les effets définis sur MONO.
Figure 99 : test_effects_MONO.
test_exposure_keys_consistent
Ce test compare la luminance moyenne d'une capture avec exposition automatique activée à celle d'une capture avec exposition automatique désactivée qui applique manuellement les paramètres d'exposition (sensibilité, temps d'exposition, durée de l'image, augmentation de la sensibilité post-RAW) reçus dans le CaptureResult de la capture avec exposition automatique activée.
API testées :
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITYandroid.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIMEandroid.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATIONandroid.hardware.camera2.CaptureRequest#CONTROL_POST_RAW_SENSITIVITY_BOOSTandroid.hardware.camera2.CaptureResult#SENSOR_SENSITIVITYandroid.hardware.camera2.CaptureResult#SENSOR_EXPOSURE_TIMEandroid.hardware.camera2.CaptureResult#SENSOR_FRAME_DURATIONandroid.hardware.camera2.CaptureResult#CONTROL_POST_RAW_SENSITIVITY_BOOST
Réussite : la différence relative de luma entre les deux captures est inférieure à 4 %.
test_format_combos
Teste différentes combinaisons de formats de sortie.
API testées :
android.hardware.camera2.CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAPandroid.hardware.camera2.params.StreamConfigurationMap#getOutputSizes()android.hardware.camera2.CameraCaptureSession#captureBurst()
Réussite : toutes les combinaisons sont bien capturées.
test_num_faces
Teste la détection de visages.
API testées :
android.hardware.camera2.CaptureResult#STATISTICS_FACESandroid.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Réussite : trois visages sont détectés.
Figure 100 : Exemple de mode de détection de visages test_num_faces 1.
test_reprocess_uv_swap
Vérifie que le retraitement YUV n'échange pas les plans U et V. Cette détection est effectuée en calculant la somme des différences absolues (SAD) entre l'image retraitée et une capture non retraitée. Si l'échange des plans U et V de sortie de la capture retraitée entraîne une augmentation de la SAD, on suppose que la sortie comporte les plans U et V corrects.
API testées :
android.hardware.camera2.CameraDevice#createCaptureSessionandroid.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_YUV_REPROCESSINGandroid.hardware.camera2.CaptureRequest#EDGE_MODEandroid.hardware.camera2.CaptureResult#NOISE_REDUCTION_MODE
Réussite : les plans U et V ne sont pas permutés.
Figure 101. Exemple test_reprocess_uv_swap.
scene2_b
scene2_b présente trois visages sur fond gris, avec des vêtements neutres. Les visages sont choisis de manière à présenter un large éventail de couleurs de peau. Le graphique doit être orienté correctement pour que la détection de visages fonctionne de manière optimale.
test_preview_num_faces
Teste la détection de visages dans l'aperçu avec une plus grande diversité de carnations dans les scènes de visage.
API testées :
android.hardware.camera2.CaptureResult#STATISTICS_FACESandroid.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Réussite : trouve trois visages avec des points de repère dans les cadres de délimitation des visages.
Figure 102 : Exemple de test_num_faces en mode de détection de visages 1.
test_yuv_jpeg_capture_sameness
Capture deux images en utilisant les formats YUV et JPEG courants les plus grands avec le même format que le format JPEG le plus grand ne dépassant pas une résolution de 1 920 x 1 440.
Définit jpeg.quality sur 100 et capture une requête à double surface. Convertit les deux images en tableaux RVB et calcule la différence de racine carrée moyenne (RMS) en 3D entre les deux images.
De plus, ce test vérifie que les sorties YUV pour tous les cas d'utilisation de flux compatibles sont raisonnablement similaires au YUV avec le cas d'utilisation STILL_CAPTURE.
API testées :
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASESandroid.hardware.camera2.CaptureRequest#JPEG_QUALITYandroid.graphics.ImageFormat#JPEG
Réussite : les images YUV et JPEG pour le cas d'utilisation STILL_CAPTURE présentent une différence RMS (valeur quadratique moyenne d'un signal) inférieure à 3 %. Les images YUV pour tous les cas d'utilisation compatibles présentent une différence CIELAB inférieure à 4% par rapport aux images YUV avec le cas d'utilisation STILL_CAPTURE.
scene2_c
test_num_faces
Teste la détection de visages avec une plus grande diversité de carnations dans les scènes de visage.
API testées :
android.hardware.camera2.CaptureResult#STATISTICS_FACESandroid.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Réussite : trois visages sont détectés.
Figure 103 : Exemple de mode de détection de visages test_num_faces.
test_jpeg_capture_perf_class
Teste la latence de capture JPEG pour la classe de performances S, comme spécifié dans la section 2.2.7.2 "Appareil photo" du CDD.
Réussite : la latence de capture JPEG camera2 DOIT être inférieure à 1 000 ms pour une résolution de 1080p, telle que mesurée par le test PerformanceTest de la caméra CTS dans les conditions d'éclairage ITS (3 000 K) pour les deux caméras principales.
test_camera_launch_perf_class
Teste la latence de lancement de l'appareil photo pour la classe de performances S, comme spécifié dans la section 2.2.7.2 "Appareil photo" du CDD.
Réussite : la latence de démarrage de camera2 (de l'ouverture de l'appareil photo à la première image d'aperçu) DOIT être inférieure à 600 ms, comme mesuré par le test PerformanceTest de l'appareil photo CTS dans des conditions d'éclairage ITS (3 000 K) pour les deux appareils photo principaux.
test_default_camera_hdr
Vérifie que la capture par défaut de l'appareil photo est Ultra HDR pour la classe de performances 15, comme spécifié dans la section 2.2.7.2 "Appareil photo" du CDD.
Réussite : la capture par défaut du package de l'appareil photo DOIT être Ultra HDR pour un appareil de classe de performances 15.
scene2_d
test_preview_num_faces
Teste la détection de visages dans l'aperçu avec une plus grande diversité de carnations dans les scènes de visage.
API testées :
android.hardware.camera2.CaptureResult#STATISTICS_FACESandroid.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Réussite : trouve trois visages avec des points de repère dans les cadres de délimitation des visages.
scene2_e
test_continuous_picture
50 images de résolution VGA sont capturées avec le premier paramètre de la requête de capture
android.control.afMode = 4 (CONTINUOUS_PICTURE).
API testées :
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODEandroid.hardware.camera2.CaptureResult#CONTROL_AE_STATEandroid.hardware.camera2.CaptureResult#CONTROL_AF_STATEandroid.hardware.camera2.CaptureResult#CONTROL_AWB_STATE
Réussite : le système 3A se stabilise à la fin d'une capture de 50 images.
test_num_faces
Teste la détection de visages avec une plus grande diversité de carnations dans les scènes de visage.
API testées :
android.hardware.camera2.CaptureResult#STATISTICS_FACESandroid.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Réussite : trois visages sont détectés.
scene2_f
scene2_f présente trois visages sur un arrière-plan blanc et des vêtements blancs. Les visages présentent une grande variété de tons de peau et un contraste élevé avec l'arrière-plan.
Figure 104. Exemple scene2_f.
test_preview_num_faces
Teste la détection de visages avec une plus grande diversité de carnations dans les scènes de visage.
API testées :
android.hardware.camera2.CaptureResult#STATISTICS_FACESandroid.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Réussite : trouve trois visages avec des points de repère dans les cadres de délimitation des visages.
Figure 105. Exemple test_num_faces_fd_mode_1.
scene2_g
scene2_g présente trois visages de profil sur un fond blanc et avec des vêtements blancs.
Les visages présentent une grande variété de tons de peau et un contraste élevé avec l'arrière-plan.
Figure 106. Exemple scene2_g.
test_preview_num_faces
Teste la détection de visages avec une plus grande diversité de carnations dans les scènes de visage.
API testées :
android.hardware.camera2.CaptureResult#STATISTICS_FACESandroid.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Réussite : trouve trois visages avec des points de repère dans les cadres de délimitation des visages.
Figure 107 : Exemple de test_preview_num_faces.
scene3
scene3 utilise la mire ISO12233, et la plupart des tests utilisent une méthode d'extraction de mire pour trouver la mire dans la scène. C'est pourquoi 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. Le graphique doit être orienté correctement pour que l'outil de recherche de graphiques fonctionne de manière optimale.
Dans Android 17 et versions ultérieures, scene3 utilise des marqueurs ArUco pour la détection des graphiques.
Figure 108. Graphique scene3.
test_edge_enhancement
Vérifie 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 la capture. Traite une requête 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. Dans Android 17 et versions ultérieures, utilise des marqueurs ArUco pour définir la zone du graphique contenant les bords nets nécessaires.
Réussite : le mode HQ (2) est plus net que le mode OFF (0). Le mode FAST (1) est plus net que le mode OFF. Le mode HQ est plus net ou égal au mode FAST.
API testées :
Paramètres de caméra concernés :
EDGE_MODE
Figure 109. Exemple de test_edge_enhancement edge=0.
Figure 110 : Exemple de test_edge_enhancement edge=1 (mode rapide).
Figure 111. Exemple de test_edge_enhancement edge=2 (mode haute qualité).
test_flip_mirror
Vérifie si l'image est correctement orientée conformément à la section 7.5.2 Caméra avant du CDD. Sous Android 17 ou version ultérieure, utilise des marqueurs ArUco pour valider la présence et l'orientation du graphique. Les images en miroir, retournées ou pivotées peuvent être identifiées par la forme en losange près du centre.
Réussite : tous les repères sont détectés et correctement alignés. L'image n'est pas inversée, retournée ni pivotée.
Figure 112 : Exemple de patch de scène test_flip_mirror.
test_imu_drift
Vérifie si la sortie de l'unité de mesure inertielle (IMU) est stable pendant 30 secondes lorsque l'appareil est immobile et capture un aperçu haute définition.
API testées :
android.hardware.Sensorandroid.hardware.SensorEventandroid.hardware.Sensor#TYPE_GYROSCOPEandroid.hardware.Sensor#TYPE_ROTATION_VECTOR
Pass :
- La dérive du gyroscope est inférieure à 0,01 rad pendant la durée du test.
- La variance de la mesure du gyroscope est inférieure à 1E-7 rad2/s2/Hz pendant la durée du test.
- La dérive du vecteur de rotation est inférieure à 0,01 rad pendant la durée du test.
- (Pas encore obligatoire) La dérive du gyroscope est inférieure à 1 degré par seconde.
Figure 113 : Exemple de dérive du gyroscope test_imu_drift.
Figure 114 : Exemple de dérive du vecteur de rotation test_imu_drift.
test_landscape_to_portrait
Vérifie si le forçage du mode paysage au mode portrait fonctionne correctement pour les capteurs orientés en mode paysage.
API testées :
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_ROTATE_AND_CROP_MODESandroid.hardware.camera2.CameraCharacteristics#SENSOR_ORIENTATIONandroid.hardware.camera2.CameraManager#getCameraCharacteristics
Réussite : le test localise un graphique avec la rotation attendue (0 degré lorsque le forçage du mode paysage au mode portrait est désactivé, 90 degrés lorsqu'il est activé).
Figure 115 : Exemple de test_landscape_to_portrait.
test_lens_movement_reporting
Vérifie si l'indicateur de mouvement de l'objectif est correctement signalé. Capture une rafale de 24 images, les 12 premières à la distance de mise au point optimale (déterminée par 3A) et les 12 dernières à la distance de mise au point minimale. Vers l'image 12, l'objectif bouge, ce qui entraîne une baisse de la netteté. La netteté finit par se stabiliser lorsque l'objectif atteint sa position finale.
L'indicateur de mouvement de l'objectif doit être activé dans toutes les images où la netteté est intermédiaire par rapport à la netteté des premières images avec l'objectif fixe à la distance focale optimale, et des dernières images où l'objectif est fixe à la distance focale minimale. La trame exacte dans laquelle l'objectif se déplace n'est pas importante : ce qui est important, c'est que l'indicateur de mouvement soit activé lorsque l'objectif se déplace.
Sur Android 17 ou version ultérieure, ce test utilise des marqueurs ArUco pour définir la zone du graphique contenant les contours nets nécessaires. Cette méthode permet une détection stable pour les caméras, des applications ultra grand angle aux applications téléobjectif.
API testées :
android.hardware.camera2.CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCEandroid.hardware.camera2.CaptureResult#LENS_STATEandroid.hardware.camera2.CaptureResult#LENS_FOCUS_DISTANCEandroid.hardware.camera2.CaptureResult#SENSOR_TIMESTAMPandroid.hardware.camera2.CaptureRequest#LENS_FOCUS_DISTANCE
Réussite : l'indicateur de mouvement de l'objectif est défini sur True dans l'image avec changement de netteté.
Mécanismes d'échec :
lens_moving: True(android.hardware.camera2.CaptureResult#LENS_STATE= 1) danstest_log.DEBUGn'est déclaré que dans les images où la netteté ne change pas.- Les images avec
lens_moving: False(android.hardware.camera2.CaptureResult#LENS_STATE= 0) danstest_log.DEBUGprésentent une différence de netteté par rapport aux premières images à la distance focale optimale ou aux dernières images à la distance focale minimale.
test_reprocess_edge_enhancement
Vérifie si les méthodes de retraitement compatibles pour l'amélioration des contours fonctionnent correctement. Traite une requête de capture avec un mode de bord de retraitement donné et compare différents modes de capture avec les modes de bord de retraitement désactivés.
API testées :
android.hardware.camera2.CaptureRequest#EDGE_MODEandroid.hardware.camera2.CaptureRequest#REPROCESS_EFFECTIVE_EXPOSURE_FACTOR
Réussite : la netteté des différents modes de bord est correcte. HQ (mode 2) est plus net que OFF (mode 0), et l'amélioration entre les différents modes est similaire.
Figure 116. Exemple de graphique test_reprocess_edge_enhancement.
scene4
scene4 se compose d'un cercle noir sur fond blanc à l'intérieur d'un carré.
Les tests de scene4 peuvent être sensibles à l'alignement. Par conséquent, à partir d'Android 15, vous pouvez utiliser check_alignment.py dans le répertoire des outils pour activer une vérification de l'alignement de l'appareil testé et du graphique.
Figure 117. Exemple de scene4.
test_30_60fps_preview_fov_match
Vérifie que les vidéos d'aperçu à 30 FPS et 60 FPS ont le même champ de vision. Le test capture deux vidéos, l'une à 30 FPS et l'autre à 60 FPS. Une image représentative est sélectionnée dans chaque vidéo et analysée pour vérifier que les modifications du champ de vision dans les deux vidéos sont conformes aux spécifications. Vérifie que le format du cercle reste constant, que le centre du cercle reste stable et que le rayon du cercle reste constant.
API testées :
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGEandroid.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATIONandroid.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIMEandroid.hardware.camera2.CaptureResult#LENS_DISTORTIONandroid.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTHandroid.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
Réussite : les images ne sont pas étirées, le centre des images ne diffère pas de plus de 3 % et la variation maximale du format entre les vidéos à 30 FPS et à 60 FPS ne dépasse pas 7,5 %.
Mécanismes d'échec :
- La taille du cercle de la vidéo à 30 FPS est très différente de celle de la vidéo à 60 FPS.
- Le cercle de l'image capturée est déformé par le pipeline de traitement.
- Le cercle de l'image capturée est recadré en raison d'une demande de capture au format extrême qui réduit la hauteur ou la largeur de l'image.
- Le cercle de l'image capturée présente un reflet au centre et ne semble pas entièrement rempli.
test_aspect_ratio_and_crop
Vérifie si les images sont déformées ou recadrées de manière inattendue dans le pipeline d'images. Prend des photos d'un cercle dans tous les formats. Vérifie que le cercle n'est pas déformé, qu'il ne se déplace pas du centre de l'image et qu'il ne change pas de taille de manière incorrecte avec différents formats ou résolutions.
API testées :
android.hardware.camera2.CaptureResult#LENS_DISTORTIONandroid.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTHandroid.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
Réussite : les images ne sont pas étirées, le centre des images ne diffère pas de plus de 3 % et le champ de vision maximal possible est préservé.
Mécanismes d'échec :
- La caméra n'est pas alignée avec le cercle affiché sur la tablette au centre de la scène capturée.
- Le cercle de l'image capturée est déformé par le pipeline de traitement.
- L'image basse résolution est recadrée deux fois dans le pipeline d'images, ce qui crée un champ de vision différent entre les images haute et basse résolution.
- Le cercle de l'image capturée est recadré en raison d'une demande de capture au format extrême qui réduit la hauteur ou la largeur de l'image.
- Le cercle de l'image capturée présente un reflet au centre et ne semble pas entièrement rempli.
test_multi_camera_alignment
Teste les paramètres d'étalonnage de la caméra liés au positionnement de la caméra pour les systèmes multicaméras. Prend une photo avec l'une des caméras physiques à l'aide des sous-caméras physiques multicaméras. Recherche le centre du cercle. Projette le centre du cercle sur les coordonnées mondiales de chaque caméra. Compare la différence entre les centres des cercles des caméras en coordonnées mondiales. Reprojette la coordonnée mondiale en coordonnées en pixels et la compare aux coordonnées d'origine pour vérifier sa validité. Compare les tailles des cercles en vérifiant si les longueurs focales des caméras sont différentes.
API testées :
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()android.hardware.camera2.CameraCharacteristics#LENS_DISTORTIONandroid.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHSandroid.hardware.camera2.CameraCharacteristics#LENS_INTRINSIC_CALIBRATIONandroid.hardware.camera2.CameraCharacteristics#LENS_POSE_ROTATIONandroid.hardware.camera2.CameraCharacteristics#LENS_POSE_TRANSLATIONandroid.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERAandroid.hardware.camera2.CaptureRequest#SCALER_CROP_REGIONandroid.hardware.camera2.CaptureRequest#DISTORTION_CORRECTION_MODE
Réussite : les centres et les tailles des cercles sont conformes aux attentes dans les images projetées par rapport aux images capturées à l'aide des données d'étalonnage de la caméra et des longueurs focales.
Mécanismes d'échec :
LENS_INTRINSIC_CALIBRATION,LENS_POSE_TRANSLATIONetLENS_POSE_ROTATIONsont des valeurs de conception et non des données d'étalonnage réelles.- Le système de caméra n'est pas adapté à la configuration de test. Par exemple, tester un système de caméra grand angle et ultra grand angle avec le banc de test RFoV. Pour en savoir plus, consultez la question 1 des questions fréquentes sur Camera ITS-in-a-box.
test_preview_aspect_ratio_and_crop
Comme pour le test test_aspect_ratio_and_crop pour les captures fixes, vérifie les formats d'aperçu compatibles pour s'assurer que les images d'aperçu ne sont pas étirées ni recadrées de manière inappropriée. Vérifie que le format du cercle ne change pas, que les images recadrées conservent le cercle au centre du cadre et que la taille du cercle ne change pas pour un format constant ou avec des résolutions différentes (vérification du champ de vision).
API testées :
android.hardware.camera2.CaptureResult#LENS_DISTORTIONandroid.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTHandroid.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATIONandroid.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASESandroid.media.MediaRecorderandroid.media.CamcorderProfile
Réussite : les images ne sont pas étirées, le centre des images ne diffère pas de plus de 3 % et le champ de vision maximal possible est préservé.
test_preview_stabilization_fov
Vérifie les tailles d'aperçu compatibles pour s'assurer que le champ de vision est recadré de manière appropriée. Le test capture deux vidéos, l'une avec la stabilisation de l'aperçu ON et l'autre avec la stabilisation de l'aperçu OFF. Une image représentative est sélectionnée dans chaque vidéo et analysée pour vérifier que les modifications du champ de vision dans les deux vidéos sont conformes aux spécifications.
API testées :
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASESandroid.media.MediaRecorderandroid.media.CamcorderProfile
Réussite : le format du cercle reste à peu près constant, l'emplacement du centre du cercle reste stable et la taille du cercle ne varie pas de plus de 20%.
test_video_aspect_ratio_and_crop
Enregistre des vidéos d'un cercle à l'intérieur d'un carré dans tous les formats vidéo. Extrait les images clés et vérifie que le format du cercle ne change pas, que les images recadrées conservent le cercle au centre et que la taille du cercle ne change pas pour un format constant ou avec une résolution différente (vérification du champ de vision).
API testées :
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASESandroid.hardware.camera2.CaptureResult#LENS_DISTORTIONandroid.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTHandroid.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATIONandroid.media.MediaRecorderandroid.media.CamcorderProfile
Réussite : les images vidéo ne sont pas étirées, le centre des images ne diffère pas de plus de 3 % et le champ de vision maximal possible est préservé.
scene6
scene6 est une grille de marqueurs ArUco identifiables de manière unique.
Les tests dans scene6 peuvent être sensibles à l'alignement. Par conséquent, à partir de la version 15, vous pouvez utiliser check_alignment.py dans le répertoire des outils pour activer une vérification de l'alignement de l'appareil testé et du graphique.
Figure 118. Exemple scene6.
test_in_sensor_zoom
Teste le comportement de la fonctionnalité de zoom intégré au capteur de l'appareil photo, qui produit des images brutes recadrées.
Lorsque le cas d'utilisation du flux est défini sur CROPPED_RAW, le test effectue deux captures sur la plage de zoom : une image brute FoV complète et une image brute recadrée. Le test convertit les images en tableaux RVB, réduit l'image brute recadrée en taille réelle à la taille indiquée par SCALER_RAW_CROP_REGION et calcule la différence RMS 3D entre les deux images.
API testées :
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGEandroid.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASESandroid.hardware.camera2.CameraMetadata#SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAWandroid.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIOandroid.hardware.camera2.CaptureResult#SCALER_RAW_CROP_REGION
Réussite : la différence RMS 3D entre l'image brute recadrée et réduite et l'image brute en plein champ de vision est inférieure au seuil défini dans le test.
test_zoom
Teste le comportement du zoom de la caméra de l'objectif ultra grand angle à l'objectif grand angle. Prend des captures sur la plage de zoom et vérifie si les repères ArUco s'agrandissent lorsque l'appareil photo effectue un zoom avant. Le test vérifie également si la position du repère central change de manière prévisible à chaque capture. La distance entre le centre du repère central et le centre de l'image peut varier à un taux constant par rapport au taux de zoom jusqu'à un changement de caméra physique, ou elle peut varier de manière monotone vers l'emplacement du même repère après un changement de caméra physique. L'application Jetpack Camera (JCA) doit être installée sur l'appareil avant le test.
API testées :
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGEandroid.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHSandroid.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIOandroid.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Réussite : la taille relative du repère ArUco capturé correspond au taux de zoom demandé pour vérifier que l'appareil photo zoome correctement, et la distance entre le repère et le centre de l'image change en fonction des critères indiqués dans la description du test.
Figure 119 : test_zoom pour trouver le contour du repère ArUco le plus proche du centre.
test_low_latency_zoom
Teste le comportement du zoom à faible latence de l'appareil photo. Prend des captures sur la plage de zoom avec android.control.settingsOverride = 1 (SETTINGS_OVERRIDE_ZOOM) et vérifie si les repères dans les images de sortie correspondent aux ratios de zoom dans les métadonnées de capture. La même session de capture de l'appareil photo est utilisée pour faire converger les paramètres 3A et prendre des captures.
API testées :
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_SETTINGS_OVERRIDESandroid.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGEandroid.hardware.camera2.CaptureRequest#CONTROL_SETTINGS_OVERRIDEandroid.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIOandroid.hardware.camera2.CaptureResult#CONTROL_SETTINGS_OVERRIDE
Réussite : la taille relative du repère capturé est exacte par rapport aux métadonnées du résultat du taux de zoom.
test_preview_video_zoom_match
Vérifie que lors de l'enregistrement et du zoom, l'aperçu vidéo et la sortie vidéo affichent et enregistrent la même sortie. Calcule la taille du repère le plus proche du centre à différents ratios de zoom et vérifie si la taille du repère augmente à mesure que le ratio de zoom augmente.
API testées :
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGEandroid.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHSandroid.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIOandroid.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Réussite : la taille relative du repère capturé est exacte par rapport au taux de zoom demandé dans la vidéo et l'aperçu.
Figure 120. HD_1280x720_key_frame.png (avant le zoom).
Figure 121. preview_1280x720_key_frame.png (avant le zoom).
Figure 122. HD_1280x720_key_frame.png (après zoom).
Figure 123 : preview_1280x720_key_frame.png (après zoom).
test_preview_zoom
Vérifie que le taux de zoom de chaque image d'aperçu correspond aux métadonnées de capture correspondantes de l'objectif ultra grand angle à l'objectif grand angle. Le test prend des images d'aperçu sur la plage de zoom et recherche le marqueur ArUco le plus proche du centre. Le test vérifie ensuite si la position du repère central change de manière prévisible à chaque capture. La distance entre le centre du repère central et le centre de l'image peut varier à un taux constant par rapport au taux de zoom jusqu'à un changement de caméra physique, ou elle peut varier de manière monotone vers l'emplacement du même repère après un changement de caméra physique.
API testées :
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGEandroid.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHSandroid.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIOandroid.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Réussite : la taille relative du marqueur ArUco sélectionné est exacte pour le taux de zoom indiqué du résultat de capture correspondant pour toutes les images d'aperçu. La distance relative du repère sélectionné par rapport au centre de l'image est exacte pour le taux de zoom indiqué du résultat de capture correspondant de toutes les images d'aperçu.
Figure 124 : Images test_preview_zoom montrant le repère sélectionné le plus proche du centre
test_session_characteristics_zoom
Teste la plage de taux de zoom pour toutes les configurations de session compatibles listées dans CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION.
Pour chacune de ces configurations, si CameraDeviceSetup#isSessionConfigurationSupported renvoie true, le test vérifie que la plage de taux de zoom renvoyée dans CameraDeviceSetup#getSessionCharacteristics peut être atteinte.
API testées :
android.hardware.camera2.CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSIONandroid.hardware.camera2.CameraDevice.CameraDeviceSetup#isSessionConfigurationSupportedandroid.hardware.camera2.CameraDevice.CameraDeviceSetup#getSessionCharacteristics
Réussite : les ratios de zoom minimal et maximal peuvent être atteints pour chaque SessionConfiguration compatible listé dans CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION.
scene7
scene7 est un cadre rectangulaire divisé en quatre quadrants égaux, chacun rempli d'une couleur différente. Au centre du rectangle se trouve un graphique à bords inclinés pour les vérifications de la netteté. Quatre marqueurs ArUco sont alignés sur les quatre angles extérieurs du rectangle pour aider à obtenir les coordonnées précises du cadre du rectangle principal à différents niveaux de zoom.
Figure 125. scene7.
test_multi_camera_switch
Ce test vérifie que, lors de l'enregistrement de l'aperçu à différents niveaux de zoom, le passage de l'objectif ultra grand angle (UW) à l'objectif grand angle (W) produit des valeurs RVB similaires.
Le test utilise différents ratios de zoom dans la plage prédéfinie pour effectuer un enregistrement d'aperçu dynamique et identifier le point auquel la caméra physique change. Ce point marque le passage de l'objectif ultra grand angle à l'objectif grand angle.
Les images capturées au niveau du point de croisement et avant celui-ci sont analysées pour l'exposition automatique (AE), la balance des blancs automatique (AWB) et la mise au point automatique (AF).
La vérification de l'exposition automatique vérifie que la variation de luma se situe dans la plage attendue pour les images des objectifs ultra grand angle et grand angle. La vérification de la balance des blancs automatique permet de s'assurer que les ratios rouge-vert et bleu-vert se situent dans les valeurs de seuil pour les images des objectifs ultra grand angle et grand angle. La vérification de l'AF évalue la valeur d'estimation de la netteté en fonction de l'amplitude moyenne du gradient entre les images des objectifs UW et W.
Si l'effet de moiré interfère avec les résultats lors de l'exécution de ce test, utilisez une tablette de résolution supérieure figurant dans la liste des tablettes approuvées par Camera ITS.
API testées :
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGEandroid.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIOandroid.media.CamcorderProfileandroid.media.MediaRecorder
Réussite : pour que le test réussisse, les vérifications AE et AWB doivent réussir. Les résultats de la vérification de l'AF ne sont utilisés qu'à des fins de journalisation. Voici les critères de chaque vérification :
- Vérification de l'exposition automatique : la variation de luma (valeur Y) entre les images des objectifs ultra grand angle et grand angle doit être inférieure à 4% pour tous les patchs de couleur si l'appareil est compatible avec
ae_regionsetawb_regions. Si seulae_regionsest accepté, seules les valeurs de la zone de couleur grise doivent répondre aux critères. - Vérification de la balance des blancs automatique : la différence entre les valeurs rouge-vert et bleu-vert pour les images des objectifs UW et W doit être inférieure à 3% pour la zone de couleur grise et inférieure à 10% pour les autres zones de couleur si l'appareil est compatible avec
ae_regionsetawb_regions. - Vérification de l'AF : la netteté de l'image capturée avec l'objectif grand angle doit être supérieure à celle de l'image capturée avec l'objectif ultra grand angle.
Figure 126. Zone grise prise avec l'objectif ultra grand angle.
Figure 127. Patch gris pris avec l'objectif grand angle.
scene8
scene8 est un cadre rectangulaire divisé en quatre régions égales, chacune contenant un portrait pris avec une exposition différente ou recouvert d'une nuance de couleur différente (nuance bleue, exposition augmentée, exposition diminuée, nuance jaune).
Quatre marqueurs ArUco sont alignés avec les quatre coins extérieurs du rectangle pour obtenir les coordonnées précises du cadre du rectangle principal.
Figure 128. Exemple scene8.
test_ae_awb_regions
Vérifie que les valeurs RVB et de luma diffèrent lors de l'enregistrement de l'aperçu dans différentes régions AE et AWB.
Le test enregistre un aperçu de huit secondes, en effectuant une mesure AE et AWB sur chaque quadrant pendant deux secondes. Le test extrait ensuite une image de l'enregistrement de l'aperçu de chaque région et utilise les images extraites pour effectuer les vérifications AE et AWB suivantes :
- Vérification de l'exposition automatique : vérifie que l'image mesurant la région avec une exposition réduite a une valeur de luminance supérieure de plus de 1% à celle de l'image mesurant la région avec une exposition accrue. Cela permet de vérifier que les images sont éclaircies lors de la mesure d'une zone sombre.
- Vérification de la balance des blancs automatique : vérifie que le ratio rouge/bleu (des valeurs RVB moyennes de l'image) dans l'image avec la région de mesure bleue est supérieur de plus de 2 % à celui de l'image avec la région de mesure jaune. Cela permet de vérifier que les images ont une valeur RVB équilibrée lors de la mesure d'une région jaune (chaude) ou bleue (froide).
API testées :
android.hardware.camera2.CaptureRequest#CONTROL_AWB_REGIONSandroid.hardware.camera2.CaptureRequest#CONTROL_AE_REGIONSandroid.hardware.camera2.CameraCharacteristics#CONTROL_MAX_REGIONS_AEandroid.hardware.camera2.CameraCharacteristics#CONTROL_MAX_REGIONS_AWB
Réussite : les vérifications de l'exposition automatique et de la balance des blancs automatique sont toutes deux réussies.
Figure 129. Mesure de la luminosité de la zone sombre du cadre avec une exposition accrue.
Figure 130. Mesure de l'image dans une zone plus claire avec une exposition réduite.
Mécanismes d'échec :
La détection précise des quatre marqueurs ArUco est essentielle pour ce test. Si la détection initiale échoue, le système tente une deuxième détection à l'aide d'une version en noir et blanc de l'image. L'image en nuances de gris suivante représente l'étape de traitement secondaire :
Figure 131. Mauvais alignement des marqueurs ArUco.
test_color_correction_mode_cct
Teste COLOR_CORRECTION_MODE sur différentes températures de couleur et teintes, en vérifiant les modifications des ratios RVB par rapport à la scène de capture, scene8.
API testées :
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODEandroid.hardware.camera2.CaptureResult#COLOR_CORRECTION_MODEandroid.hardware.camera2.CaptureRequest#COLOR_CORRECTION_COLOR_TEMPERATUREandroid.hardware.camera2.CaptureResult#COLOR_CORRECTION_COLOR_TEMPERATUREandroid.hardware.camera2.CaptureRequest#COLOR_CORRECTION_COLOR_TINTandroid.hardware.camera2.CaptureResult#COLOR_CORRECTION_COLOR_TINTandroid.hardware.camera2.CameraCharacteristics#COLOR_CORRECTION_COLOR_TEMPERATURE_RANGEandroid.hardware.camera2.CameraMetadata#COLOR_CORRECTION_MODE_CCTandroid.hardware.camera2.CameraCharacteristics#COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES
Réussite : les ratios RVB présentent les augmentations ou diminutions attendues par rapport aux températures de couleur et aux teintes sélectionnées.
Critères d'exclusion des tests
Le test test_color_correction_mode_cct est ignoré si l'un des critères suivants est rempli :
- Le premier niveau d'API de l'appareil (
first_api_level) est inférieur ou égal à 35. - L'appareil n'annonce pas
COLOR_CORRECTION_MODE_CCTdansCOLOR_CORRECTION_AVAILABLE_ABERRATION_MODES.
scene9
scene9 se compose de milliers de cercles de tailles et de couleurs aléatoires pour créer une scène à très faible répétabilité afin de tester les algorithmes de compression JPEG.
Figure 132 : Exemple scene9.
test_jpeg_high_entropy
Teste que la compression JPEG de l'appareil photo fonctionne sur scene9 avec une entropie élevée et un facteur de qualité JPEG défini sur 100%. Le facteur de zoom est augmenté pour vérifier que la scène affichée sur la tablette remplit le champ de vision de la caméra.
API testées :
Réussite : le fichier JPEG est correctement compressé, écrit et lu à partir du disque.
test_jpeg_quality
Teste la qualité de compression JPEG de l'appareil photo. Parcourt les qualités JPEG via android.jpeg.quality et vérifie que les tables de quantification changent correctement.
API testées :
Réussite : la matrice de quantification diminue à mesure que la qualité augmente. (La matrice représente le facteur de division.)
Figure 133. Moyennes de la matrice DQT de luma et de chroma de la caméra arrière du Pixel 4 par rapport à la qualité JPEG.
Figure 134. Exemple de test ayant échoué.
scene_extensions
Les tests scene_extensions sont destinés aux extensions d'appareil photo et doivent utiliser Camera ITS-in-a-Box, car ils nécessitent un contrôle précis de l'environnement de test. De plus, toutes les fuites de lumière doivent être contrôlées. Pour ce faire, vous devrez peut-être couvrir le banc d'essai, l'appareil testé et la tablette avec une bâche, et éliminer les fuites de lumière de l'écran avant de l'appareil testé.
scene_hdr
La scène scene_hdr se compose d'un portrait à gauche et d'un QR code à faible contraste à droite.
Figure 135. Exemple de scene_hdr.
test_hdr_extension
Teste l'extension HDR. Prend des captures avec et sans l'extension activée, et vérifie si l'extension rend le QR code plus détectable.
API testées :
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensionsandroid.hardware.camera2.CameraExtensionSession#capture
Réussite : l'extension HDR réduit le nombre de changements de contraste nécessaires pour détecter le code QR ou réduit le dégradé sur le code QR.
scene_low_light
La scène scene_low_light se compose d'une grille de carrés de différentes nuances de gris sur un fond noir, et la grille de carrés est entourée d'un contour rouge. Les carrés sont disposés selon une courbe de Hilbert.
Figure 136. Exemple de scene_low_light.
test_night_extension
Teste l'extension Night. Effectue des captures avec l'extension activée et effectue les opérations suivantes :
- Détecte la présence de 20 carrés
- Calcule la luma délimitée par chaque carré
- Calcule la valeur de luma moyenne des six premiers carrés en fonction de l'orientation de la grille de la courbe de Hilbert.
- Calcule la différence de valeur de luma des carrés consécutifs (par exemple, carré2 - carré1) jusqu'aux carrés 5 et 6 (carré6 - carré5), puis calcule la moyenne des cinq différences calculées.
Pour les appareils équipés d'Android 16 ou version ultérieure, la requête de capture inclut une région mesurée correspondant au rectangle délimitant la grille de carrés. Cet ajout modifie les critères de réussite du seuil.
API testées :
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensionsandroid.hardware.camera2.CameraExtensionSession#capture
Pass :
- Pour les appareils équipés d'Android 16 ou version ultérieure, la valeur de luma moyenne des six premiers carrés doit être d'au moins 80, et la différence moyenne de valeur de luma des carrés consécutifs jusqu'aux carrés 5 et 6 doit être d'au moins 18,75.
- Pour les appareils équipés d'Android 15 ou d'une version antérieure, la valeur de luma moyenne des six premiers carrés doit être d'au moins 85, et la différence moyenne de valeur de luma des carrés consécutifs jusqu'aux carrés 5 et 6 doit être d'au moins 17.
Le graphique de luminance suivant montre à quoi ressemble un résultat de test réussi.
Figure 137. Exemple de test réussi pour une scène de nuit par faible luminosité.
test_low_light_boost_extension
Teste le mode AE d'amplification de luminosité. Si Camera2 est compatible avec le mode d'exposition automatique d'amplification de la luminosité, ce test est effectué pour Camera2. Si l'extension du mode Nuit de l'appareil photo est compatible et qu'elle est compatible avec le mode d'exposition automatique de l'amplification de la luminosité, ce test est également effectué pour l'extension du mode Nuit de l'appareil photo. Ce test définit le mode AE sur l'amplification en basse lumière, prend une image de l'aperçu et effectue les opérations suivantes :
- Détecte la présence de 20 boîtes
- Calcule la luma délimitée par chaque cadre
- Calcule la valeur de luma moyenne des six premiers carrés en fonction de l'orientation de la grille de la courbe de Hilbert.
- Calcule la différence de valeur de luma des carrés consécutifs (par exemple, carré2 - carré1) jusqu'aux carrés 5 et 6 (carré6 - carré5), puis calcule la moyenne des cinq différences calculées.
Pour les appareils équipés d'Android 16 ou version ultérieure, la requête de capture inclut une région mesurée correspondant au rectangle délimitant la grille de carrés. Cet ajout modifie les critères de réussite du seuil.
API testées :
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_MODESandroid.hardware.camera2.CameraMetadata#CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITYandroid.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
Pass :
Pour les appareils équipés d'Android 16 ou version ultérieure, la valeur de luma moyenne des six premiers carrés doit être d'au moins 54, et la différence moyenne de valeur de luma des carrés consécutifs jusqu'aux carrés 5 et 6 doit être d'au moins 17.
Pour les appareils équipés d'Android 15 ou version antérieure, la valeur de luma moyenne des six premiers carrés doit être d'au moins 70, et la différence moyenne de valeur de luma des carrés consécutifs jusqu'aux carrés 5 et 6 doit être d'au moins 18.
scene_tele
Une exigence clé pour les tests scene_tele est que la distance du graphique doit être au moins égale à la distance de mise au point minimale du téléobjectif. Comme cette distance de mise au point minimale peut varier d'un appareil à l'autre, vous devez configurer votre configuration en fonction du téléobjectif spécifique.
Figure 138. Configuration de scene_tele basée sur la distance de mise au point de l'appareil photo grand angle et du téléobjectif.
Pour en savoir plus sur la configuration du matériel de test, consultez Configuration du banc d'essai pour l'extension téléobjectif.
scene6_tele
La scène scene6_tele se compose d'une grille de marqueurs ArUco sur un fond blanc.
Si les captures scene6_tele semblent surexposées dans le système modulaire, retirez la plaque avant du système modulaire.
Déconnectez le banc de test WFoV de l'extension et retirez le support du téléphone.
Figure 139. Déconnectez le banc de test WFoV de l'extension et retirez le support du téléphone.
Figure 140. Retirez la plaque avant.
test_zoom_tele
Teste le comportement du zoom de l'appareil photo, de l'objectif grand angle au téléobjectif. Le test est identique à test_zoom, mais teste le comportement du zoom de l'appareil photo, de l'objectif grand angle au téléobjectif.
API testées :
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGEandroid.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHSandroid.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIOandroid.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Réussite : la taille relative du repère ArUco capturé est exacte par rapport au taux de zoom demandé pour vérifier que l'appareil photo zoome correctement, et la distance du repère par rapport au centre de l'image change en fonction des critères listés dans test_zoom.
test_preview_zoom_tele
Teste le comportement du zoom de l'appareil photo pour les images d'aperçu, de l'objectif grand angle au téléobjectif. Le test est identique à test_preview_zoom, mais teste le comportement du zoom de l'appareil photo pour les images d'aperçu, de l'objectif grand angle au téléobjectif.
API testées :
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGEandroid.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHSandroid.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIOandroid.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Réussite : la taille relative du repère ArUco capturé est exacte par rapport au taux de zoom demandé pour vérifier que l'appareil photo zoome correctement, et la distance du repère par rapport au centre de l'image change en fonction des critères listés dans test_preview_zoom.
scene7_tele
scene7_tele est identique à scene7, mais configuré pour tester le téléobjectif. Il s'agit d'un cadre rectangulaire divisé en quatre quadrants égaux, chacun rempli d'une couleur différente. Au centre du rectangle se trouve un graphique à bords inclinés pour les vérifications de la netteté. Quatre marqueurs ArUco sont alignés sur les quatre angles extérieurs du rectangle pour aider à obtenir les coordonnées précises du cadre du rectangle principal à différents niveaux de zoom.
test_multi_camera_switch_tele
Ce test vérifie que, lors de l'enregistrement de l'aperçu à différents niveaux de zoom, le passage de l'objectif grand angle (W) au téléobjectif (tele) donne des valeurs RVB similaires.
Le test utilise différents ratios de zoom dans la plage prédéfinie pour effectuer un enregistrement d'aperçu dynamique et identifier le point auquel la caméra physique change. Ce point marque le passage de l'objectif grand angle au téléobjectif.
Les images capturées au niveau du point de croisement et avant celui-ci sont analysées pour l'exposition automatique, la balance des blancs automatique et l'autofocus.
La vérification de l'exposition automatique vérifie que la variation de luma se situe dans la plage attendue pour les images de l'objectif grand angle et du téléobjectif. La vérification de la balance des blancs automatique permet de s'assurer que les ratios rouge-vert et bleu-vert se situent dans les valeurs de seuil pour les images prises avec l'objectif grand angle et le téléobjectif. La vérification de l'AF évalue la valeur d'estimation de la netteté en fonction de l'amplitude moyenne du gradient entre les images de l'objectif grand angle et du téléobjectif.
API testées :
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGEandroid.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIOandroid.media.CamcorderProfileandroid.media.MediaRecorder
Réussite : pour que le test soit réussi, les vérifications de l'AE, de l'AWB et de l'AF doivent toutes être réussies. Voici les critères pour chaque vérification :
- Vérification de l'exposition automatique : la variation de luma entre les images de l'objectif grand angle et du téléobjectif doit être inférieure à 4%.
- Vérification de la balance des blancs automatique : dans l'espace colorimétrique LAB, le delta C entre le rouge-vert et le bleu-vert pour le grand angle et le téléobjectif ne peut pas dépasser 10.
- Vérification de l'AF : la netteté de l'image du téléobjectif doit être supérieure à celle de l'objectif grand angle.
scene_video
scene_video est une scène vidéo composée de quatre cercles de couleurs différentes qui se déplacent d'avant en arrière à différentes fréquences d'images sur un fond blanc.
Figure 141. Exemple de scene_video.
test_preview_frame_drop
Vérifie que la fréquence d'images d'aperçu demandée est maintenue avec une scène dynamique. Ce test s'exécute sur toutes les caméras exposées aux applications tierces.
API testées :
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_TARGET_FPS_RANGESandroid.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASESandroid.hardware.camera2.CaptureResult#CONTROL_AE_TARGET_FPS_RANGEandroid.media.CamcorderProfileandroid.media.MediaRecorder
Réussite : la fréquence d'images de l'aperçu est au maximum de la plage de fréquences d'images demandée, et la variation moyenne entre les images consécutives est inférieure à la tolérance relative définie dans le test.
Scènes de test basées sur le rig Gen2 / sensor_fusion
feature_combination
Les tests feature_combination vérifient que les fonctionnalités fonctionnent correctement lorsque plusieurs fonctionnalités de l'appareil photo sont activées en même temps. Ces tests utilisent la même image en damier que celle utilisée dans la scène de fusion de capteurs.
test_feature_combination
Teste toutes les combinaisons de flux, de modes de stabilisation vidéo, de plages de FPS cibles, de vidéos HDR 10 bits et d'Ultra HDR compatibles avec l'appareil photo.
Pour Android 16 et versions ultérieures, le test exécute toutes les combinaisons de fonctionnalités compatibles et consigne les résultats dans un fichier proto. Les assertions d'échec ne sont appelées que pour les combinaisons de caractéristiques pour lesquelles isSessionConfigurationSupported renvoie True.
API testées :
android.hardware.camera2.CameraDevice.CameraDeviceSetup#isSessionConfigurationSupportedandroid.hardware.camera2.CameraDevice.CameraDeviceSetup#createCaptureRequest
Réussite : pour chaque combinaison de fonctionnalités compatible :
- Le flux d'aperçu est stabilisé si la stabilisation de l'aperçu est activée.
- La fréquence d'images de l'aperçu se situe dans la plage
AE_TARGET_FPS_RANGEconfigurée. - L'espace colorimétrique du flux d'aperçu enregistré correspond à celui défini.
- La capture Ultra HDR comporte une carte de gain valide.
scene_flash
Les tests scene_flash nécessitent une scène sombre dans la boîte de fusion des capteurs.
Sur Android 17 et versions ultérieures, les tests scene_flash peuvent être effectués à l'aide du dispositif Gen2.
test_auto_flash
Vérifie que le flash automatique se déclenche dans une scène sombre pour les caméras arrière et avant. Pour les caméras avant, le flash automatique utilise l'écran pour éclairer la scène, et non un flash physique. Le test vérifie que le flash automatique est déclenché en vérifiant que le centre de l'image de la tuile est plus lumineux lorsque le flash automatique est activé. Pour déclencher le flash automatique, les lumières du banc de test doivent être éteintes. Elles peuvent être éteintes automatiquement avec le contrôleur Arduino. La scène doit être complètement sombre pour que le test fonctionne correctement. L'application Jetpack Camera (JCA) doit être installée sur l'appareil avant le test. Le flash automatique des caméras arrière dépend de l'état de l'exposition automatique pour être déclenché, mais le flash automatique des caméras avant ne dépend pas de l'exposition automatique et est toujours déclenché.
Dans Android 17 et versions ultérieures, teste les niveaux de zoom non 1-x pour vérifier le bon fonctionnement de toutes les plages de zoom compatibles.
API testées :
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLEandroid.hardware.camera2.CaptureRequest#CONTROL_AE_MODEandroid.hardware.camera2.CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGERandroid.hardware.camera2.CaptureResult#CONTROL_AE_STATEandroid.hardware.camera2.CaptureRequest#FLASH_MODE
Réussite : le centre de l'image de la tuile avec le flash automatique activé est plus lumineux que l'image de la scène d'origine pour toutes les caméras.
test_flash_strength
Vérifie que le contrôle de l'intensité du flash en mode SINGLE est correctement implémenté.
Vérifie que si l'appareil est compatible avec le contrôle de l'intensité du flash lors de l'utilisation de l'appareil photo en mode SINGLE, l'intensité du flash change en fonction des différents niveaux d'intensité demandés. Vérifie que le contrôle de l'intensité du flash fonctionne avec différents AE_MODES.
Par exemple, si le mode d'exposition automatique est ON ou OFF, le niveau d'intensité du flash a un effet sur la luminosité. Si le mode est ON_AUTO_FLASH, le niveau d'intensité du flash n'a aucun effet sur la luminosité.
Pour effectuer le test, les lumières du banc d'essai doivent être éteintes. Elles peuvent être éteintes automatiquement avec le contrôleur Arduino. La scène doit être complètement sombre pour que le test fonctionne correctement.
API testées :
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_DEFAULT_LEVELandroid.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_MAXIMUM_LEVELandroid.hardware.camera2.CameraCharacteristics#FLASH_SINGLE_STRENGTH_DEFAULT_LEVELandroid.hardware.camera2.CameraCharacteristics#FLASH_SINGLE_STRENGTH_MAX_LEVEL
Pass :
Lorsque le mode d'exposition automatique est défini sur ON ou OFF, la luminosité des patchs d'image augmente à mesure que le niveau d'intensité du flash augmente, de l'absence de flash à FLASH_SINGLE_STRENGTH_MAX_LEVEL.
Lorsque le mode d'exposition automatique est ON_AUTO_FLASH, la différence de luminosité des zones de l'image se situe dans la tolérance, car le niveau d'intensité du flash augmente de l'absence de flash à FLASH_SINGLE_STRENGTH_MAX_LEVEL.
test_led_snapshot
Vérifie que les instantanés LED ne saturent pas l'image et ne la teintent pas.
Ce test ajoute un contrôleur d'éclairage à la Sensor Fusion Box pour contrôler les lumières. Lorsque les lumières sont réglées sur OFF, le test effectue une capture avec le mode AUTO_FLASH défini sur ON. Pendant cette capture, le test exécute une séquence de précapture avec le déclencheur aePrecapture défini sur START, et définit l'intent de capture sur Preview pour effectuer la capture avec flash.
Étant donné que la capture présente un point d'accès distinctif en raison du flash, le test calcule la moyenne de l'image flash de l'ensemble de la capture et vérifie si la valeur se situe dans la plage (68, 102). Pour vérifier si la balance des blancs de l'image est raisonnable, le test calcule les ratios rouge-vert et bleu-vert, et vérifie s'ils sont compris entre 0,95 et 1,05.
API testées :
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLEandroid.hardware.camera2.CaptureRequest#CONTROL_AE_MODEandroid.hardware.camera2.CaptureRequest#FLASH_MODE
Réussite : les ratios rouge-vert et bleu-vert sont compris entre 0,95 et 1,05. La moyenne de l'image flash se situe dans la plage (68, 102).
test_night_mode_indicator
Teste le fonctionnement de l'indicateur du mode Nuit, une fonctionnalité qui indique si l'appareil photo fonctionne dans des conditions de faible luminosité et s'il bénéficiera d'une capture d'image fixe de l'extension du mode Nuit de l'appareil photo. Cette fonctionnalité n'est disponible que sur les appareils compatibles avec les extensions d'appareil photo en mode nuit.
Ce test vérifie que l'indicateur du mode nuit reflète correctement les conditions d'éclairage pendant l'aperçu de la caméra. Le test effectue les étapes suivantes :
- Initialisation : le test initialise un
ItsSessionet récupère les propriétés de la caméra. Il établit également une connexion avec le contrôleur d'éclairage. - Conditions d'omission : le test est ignoré si l'appareil n'est pas compatible avec le niveau d'API requis ou la fonctionnalité d'indicateur du mode nuit.
- Session Camera2 :
- Le test démarre une session de capture d'aperçu à l'aide d'une session
Camera2. - La lumière s'allume et un cadre d'aperçu est capturé.
- Le test vérifie que l'indicateur du mode nuit est à l'état
OFF. - La lumière est éteinte et une image d'aperçu est capturée.
- Le test vérifie que l'indicateur du mode nuit est à l'état
ON.
- Le test démarre une session de capture d'aperçu à l'aide d'une session
- Session d'extension de l'appareil photo :
- Le test répète la même procédure que pour la session
Camera2, mais en utilisant une sessionCameraExtensionavec l'extensionEXTENSION_NIGHT.
- Le test répète la même procédure que pour la session
- Nettoyage : le test ferme
ItsSessionet libère le contrôleur d'éclairage.
API testées :
Pass :
- Lorsque la lumière est allumée, l'indicateur du mode nuit doit être à l'état
OFF. - Lorsque la lumière est éteinte, l'indicateur du mode nuit doit être à l'état
ON. - S'applique aux sessions
Camera2etCameraExtension.
test_preview_min_frame_rate
Vérifie que la fréquence d'images de l'aperçu diminue correctement dans une scène sombre. Pour que ce test fonctionne correctement, les lumières du banc de test doivent être éteintes par le contrôleur ou manuellement par l'opérateur de test.
API testées :
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_TARGET_FPS_RANGESandroid.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASESandroid.hardware.camera2.CaptureResult#CONTROL_AE_TARGET_FPS_RANGEandroid.media.CamcorderProfileandroid.media.MediaRecorder
Réussite : la fréquence d'images de l'aperçu est au minimum de la plage de fréquences d'images demandée, et la variation entre les images est inférieure à la tolérance absolue définie dans le test.
test_torch_strength
Vérifie que le contrôle de l'intensité du flash en mode TORCH est correctement implémenté.
Vérifie que si l'appareil est compatible avec le contrôle de l'intensité du flash lors de l'utilisation de l'appareil photo en mode TORCH, l'intensité de la lampe torche change en fonction des différents niveaux d'intensité demandés. Vérifie que le contrôle de l'intensité du flash fonctionne avec différents AE_MODES.
Par exemple, si le mode d'exposition automatique est ON ou OFF, le niveau d'intensité du flash a un effet sur la luminosité. Si le mode est ON_AUTO_FLASH, le niveau d'intensité du flash n'a aucun effet sur la luminosité.
Vérifie que l'intensité de la lampe torche reste la même pendant toute la durée d'une rafale, en simulant une session de capture vidéo. Pour effectuer le test, les lumières du banc d'essai doivent être éteintes. Elles peuvent être éteintes automatiquement avec le contrôleur Arduino. La scène doit être complètement sombre pour que le test fonctionne correctement.
API testées :
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_DEFAULT_LEVELandroid.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_MAXIMUM_LEVELandroid.hardware.camera2.CameraCharacteristics#FLASH_TORCH_STRENGTH_DEFAULT_LEVELandroid.hardware.camera2.CameraCharacteristics#FLASH_TORCH_STRENGTH_MAX_LEVEL
Pass :
Lorsque le mode d'exposition automatique est ON ou OFF, la luminosité des zones de rafale d'images augmente à mesure que le niveau d'intensité du flash augmente, de l'absence de flash à FLASH_TORCH_STRENGTH_MAX_LEVEL.
Lorsque le mode d'exposition automatique est ON_AUTO_FLASH, la différence de luminosité des zones de la rafale d'images se situe dans la tolérance, car le niveau d'intensité du flash augmente de l'absence de flash à FLASH_TORCH_STRENGTH_MAX_LEVEL.
scene_gen2_chart
Sous Android 17 et versions ultérieures, scene_gen2_chart utilise le graphique papier Gen2.
Cette mire de test se compose d'échantillons de visages, d'un QR code, de patchs en niveaux de gris, d'une étoile de Siemens, d'une mire de couleurs et de carrés inclinés.
Figure 142. Exemple de graphique Gen2.
test_tonemap_sequence
Ce test évalue la courbe de mappage des tons par défaut d'un appareil par rapport à une courbe linéaire et à deux courbes exponentielles (l'une avec des points uniformes et l'autre avec des points non uniformes). Pour obtenir un résultat positif, la luminosité de la courbe par défaut doit être supérieure à celle des courbes linéaire et exponentielle. De plus, la courbe linéaire doit être plus lumineuse que les courbes exponentielles, et les deux courbes exponentielles doivent avoir des niveaux de luminosité similaires.
Il permet également de vérifier la précision de la courbe par défaut de l'appareil. Pour ce faire, il extrait la courbe par défaut, la réinjecte, puis compare la luminosité de l'image obtenue à celle de l'image de la courbe par défaut d'origine.
Figure 143. Testez le tracé de la séquence de mappage de tons.
API testées :
android.hardware.camera2.CameraMetadata#TONEMAP_MODE_CONTRAST_CURVEandroid.hardware.camera2.CameraMetadata#TONEMAP_MODE_FASTandroid.hardware.camera2.CaptureRequest#TONEMAP_CURVEandroid.hardware.camera2.CaptureRequest#TONEMAP_MODE
Réussite : la différence de luminosité entre les courbes par défaut et linéaire est supérieure à 15%, tandis que la différence entre les deux courbes exponentielles est inférieure à 8%.
test_multi_camera_switch
Ce test vérifie la cohérence des couleurs et de l'exposition lors des transitions de zoom dynamique. Il vérifie que le passage de l'objectif ultra grand angle (UW) à l'objectif grand angle (W) pendant l'enregistrement de l'aperçu conserve des valeurs CIELAB presque identiques, ce qui évite les changements visibles dans l'expérience utilisateur.
Le test exécute un enregistrement d'aperçu dynamique sur une plage de zoom prédéfinie pour déclencher le point de "croisement" de la caméra physique, où l'objectif ultra grand angle passe à l'objectif grand angle. Le test identifie l'image exacte où le changement d'objectif se produit. Les images précédant et suivant immédiatement ce point de croisement sont capturées et analysées pour vérifier la stabilité de l'exposition automatique (AE) et de la balance des blancs automatique (AWB).
La vérification de l'exposition automatique confirme que les fluctuations de luminance restent dans une plage acceptable lors du changement d'objectif. La vérification de la balance automatique des blancs permet de s'assurer que les ratios rouge-vert et bleu-vert restent dans les seuils définis de neutralité des couleurs.
API testées :
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGEandroid.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIOandroid.media.CamcorderProfileandroid.media.MediaRecorder
Réussite : pour que le test réussisse, les vérifications d'AE et d'AWB suivantes doivent réussir :
- Vérification de l'exposition automatique : la variation de luma (valeur Y) entre les images des objectifs ultra grand angle et grand angle doit être inférieure à 4% pour tous les patchs de couleur si l'appareil est compatible avec
ae_regionsetawb_regions. Si seulae_regionsest accepté, seules les valeurs de la zone de couleur grise doivent répondre aux critères. - Vérification de la balance des blancs automatique : la différence entre les valeurs rouge-vert et bleu-vert pour les images des objectifs UW et W doit être inférieure à 3% pour la zone de couleur grise et inférieure à 10% pour les autres zones de couleur si l'appareil est compatible avec
ae_regionsetawb_regions.
Figure 144. Zone grise prise avec l'objectif ultra grand angle.
Figure 145. Patch gris pris avec l'objectif grand angle.
scene_ip
Dans Android 16 et versions ultérieures, la scène scene_ip permet de vérifier la parité des images entre l'application d'appareil photo par défaut et l'application d'appareil photo Jetpack (JCA) afin d'identifier les différences majeures entre les images capturées. La JCA réplique les captures d'applications de réseaux sociaux et fournit une image de référence que les applications de réseaux sociaux traitent et affinent ensuite.
Configuration matérielle requise
La configuration matérielle suivante est requise pour les tests scene_ip :
- Les tests sont exécutés dans la boîte ITS-in-a-box de la caméra de 2e génération.
- Les contrôleurs d'éclairage et de servomoteur qui font partie du rig Gen2 sont utilisés pour contrôler l'environnement de test.
- Un graphique de test des fonctionnalités est placé à l'intérieur du banc de test Gen2.
Figure 146. Exemple Gen2chart_sample.
Critères d'exclusion des tests
Les tests scene_ip sont ignorés si l'un des critères suivants est rempli :
- Le premier niveau d'API de l'appareil (
first_api_level) est inférieur ou égal à 35. - L'appareil n'est pas un téléphone équipé d'appareils photo principaux avant et arrière (par exemple, une tablette ou un téléviseur).
test_default_jca_ip
Prend des captures de la mire de test dans des conditions d'éclairage contrôlées à l'aide de l'application Appareil photo par défaut et de JCA, puis effectue les vérifications suivantes :
FoV : vérifie que l'application d'appareil photo par défaut et les captures JCA ont le même FoV. Cette vérification utilise la fonctionnalité de QR code central extraite de l'image de la mire capturée.
Luminosité : vérifie que la différence de luminosité mesurée entre l'application d'appareil photo par défaut et JCA ne dépasse pas 10. Cette vérification utilise le patch de plage dynamique pour mesurer la luminosité.
Balance des blancs : vérifie que la différence de balance des blancs entre l'application d'appareil photo par défaut et JCA ne dépasse pas 4. Cette vérification utilise le patch de plage dynamique pour mesurer la luminosité.
Rendu des couleurs : vérifie que la différence de rendu des couleurs entre l'application d'appareil photo par défaut et JCA ne dépasse pas 6.
Réussite : le test réussit les vérifications du champ de vision, de la luminosité et de la balance des blancs. Sous Android 16, ce test n'est pas obligatoire (NOT_YET_MANDATED). Pour Android 17 et versions ultérieures, les vérifications de parité du champ de vision, de la luminosité et de la balance des blancs sont obligatoires. La vérification du rendu des couleurs n'est pas obligatoire (NOT_YET_MANDATED) dans Android 17.
test_jca_jpegr_ip
Vérifie que la différence de balance des blancs entre l'instantané d'aperçu JCA JPEG_R et les images capturées ne dépasse pas 4.
API testées :
Réussite : la différence de balance des blancs entre l'instantané d'aperçu JCA et l'image JPEG_R capturée est inférieure au seuil (la valeur par défaut est 4).
sensor_fusion
Les tests de fusion de capteurs nécessitent un mouvement spécifique du téléphone devant un motif en damier et des repères ArUco. Pour des résultats optimaux, vérifiez que la mire de test est montée à plat. Les graphiques qui ne sont pas plats affectent les calculs de rotation pour de nombreux tests. Le graphique doit remplir l'arrière de la boîte de fusion de capteurs en l'imprimant au format 17 x 17 pouces. (43 x 43 cm). Les tests sensor_fusion peuvent être automatisés avec la Sensor Fusion Box.
Figure 147. Graphique de fusion de capteurs.
Figure 148. Graphique de fusion de capteurs qui remplit l'arrière du boîtier de fusion de capteurs.
test_lens_intrinsic_calibration
Vérifie que le centre optique de l'objectif intrinsèque change lorsque l'objectif se déplace en raison de la stabilisation optique de l'image (OIS). Si les échantillons intrinsèques de l'objectif sont acceptés, vérifie que le centre optique des échantillons intrinsèques de l'objectif change lorsque l'objectif se déplace en raison de l'OIS.
API testées :
android.hardware.camera2.CameraCharacteristics#LENS_INTRINSIC_CALIBRATIONandroid.media.MediaRecorderandroid.media.CamcorderProfile
Réussite : le centre optique de l'objectif intrinsèque change d'un pixel ou plus. Si les échantillons intrinsèques de l'objectif sont acceptés, les centres optiques des échantillons intrinsèques de l'objectif changent d'un pixel ou plus.
La figure suivante est un exemple de tracé test_lens_intrinsic_calibration montrant les modifications des points principaux en pixels pour chaque image :
Figure 149. Exemple de graphique test_lens_intrinsic_calibration montrant les changements de points principaux en pixels pour chaque image.
test_multi_camera_frame_sync
Vérifie que les codes temporels des images capturées par la caméra logique sont inférieurs à 10 ms en calculant les angles des carrés du damier pour déterminer le code temporel.
API testées :
android.hardware.camera2.CameraCharacteristics#LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPEandroid.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERAandroid.hardware.camera2.params.OutputConfiguration#setPhysicalCameraId()
Réussite : l'angle entre les images de chaque appareil photo ne change pas de manière significative lorsque le téléphone est pivoté.
test_preview_distortion
Vérifie que la distorsion est corrigée dans chaque image d'aperçu prise à différents niveaux de zoom. Pour chaque image d'aperçu, le test calcule les points idéaux en fonction des paramètres intrinsèques et extrinsèques de la caméra.
Dans l'exemple d'image, les points idéaux sont affichés en vert et les points réels en rouge. L'erreur de distorsion est calculée en fonction de la distance RMS en pixels entre les points réels et les points idéaux. Les éléments surlignés en vert et en rouge sur l'image permettent de détecter visuellement la zone d'erreur de distorsion.
Figure 150. Image d'un damier avec des points idéaux en vert et des points réels en rouge.
API testées :
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGEandroid.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIOandroid.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()android.media.CamcorderProfileandroid.media.MediaRecorder
Réussite : l'erreur de distorsion normalisée de chaque image d'aperçu est inférieure au seuil défini dans le test.
test_preview_stabilization
Vérifie que la vidéo d'aperçu stabilisée pivote moins que le gyroscope.
API testées :
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASESandroid.media.MediaRecorderandroid.media.CamcorderProfile
Réussite : la rotation d'angle maximale sur les images est inférieure à 70% de la rotation du gyroscope.
Voici des exemples de vidéos avec et sans stabilisation :
Figure 151. Exemple de vidéo avec stabilisation.
Figure 152. Exemple de vidéo sans stabilisation.
test_sensor_fusion
Teste la différence de code temporel entre la caméra et le gyroscope pour les applications de RA et de RV. Le téléphone est pivoté de 90 degrés 10 fois devant le motif en damier. Le mouvement dure environ 2 s aller-retour. Ce test est ignoré si aucun gyroscope n'est inclus ou si le paramètre REALTIME de la source du code temporel n'est pas activé.
Le test test_sensor_fusion génère un certain nombre de tracés. Les deux tracés les plus importants pour le débogage sont les suivants :
test_sensor_fusion_gyro_events: affiche les événements du gyroscope du téléphone pendant le test. Un mouvement dans les directions x et y implique que le téléphone n'est pas solidement fixé à la plaque de montage, ce qui réduit la probabilité de réussite du test. Le nombre de cycles dans le tracé dépend de la vitesse d'écriture pour l'enregistrement des images.
Figure 153.Exemple d'événements de gyroscope test_sensor_fusion.
test_sensor_fusion_plot_rotations: affiche l'alignement des événements du gyroscope et de la caméra. Ce tracé doit montrer un mouvement correspondant entre la caméra et le gyroscope à +/-1 ms.
Figure 154 : Exemple de rotation de tracé test_sensor_fusion.
API testées :
android.hardware.camera2.CameraCharacteristics#LENS_FACINGandroid.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCEandroid.hardware.camera2.CameraMetadata#SENSOR_INFO_TIMESTAMP_SOURCE_REALTIMEandroid.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGEandroid.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATIONandroid.hardware.camera2.CaptureResult#SENSOR_TIMESTAMPandroid.hardware.camera2.CaptureResult#SENSOR_ROLLING_SHUTTER_SKEW
Réussite : le décalage des codes temporels de la caméra et du gyroscope est inférieur à 1 ms, conformément à la section 7.3.9 Capteurs haute fidélité du CDD.
Mécanismes d'échec :
- Erreur de décalage : le décalage entre la caméra et le gyroscope n'est pas correctement calibré à +/-1 ms.
- Sauts d'images : le pipeline n'est pas assez rapide pour capturer 200 images consécutives.
- Erreurs de socket :
adbne peut pas se connecter de manière fiable au DUT pendant une durée suffisante pour exécuter le test. - La mire n'est pas montée à plat. Le tracé
test_sensor_fusion_plot_rotationscomporte des images où la rotation du gyroscope et de la caméra varie considérablement lorsque la caméra pivote dans les parties du graphique qui ne sont pas plates. - La caméra n'est pas installée à plat. Le graphique
test_sensor_fusion_gyro_eventsmontre les mouvements sur les plans X et Y. Cette défaillance est plus fréquente avec les caméras avant, car la caméra arrière est souvent surélevée par rapport au reste du corps du téléphone, ce qui crée une inclinaison lors du montage de l'arrière du téléphone sur la plaque de montage.
test_video_stabilization
Obsolète : ce test est obsolète à partir d'Android 17. Pour Android 17 et versions ultérieures, ce test est remplacé par test_video_stabilization_jca.
Vérifie que la vidéo stabilisée pivote moins que le gyroscope.
API testées :
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASESandroid.media.MediaRecorderandroid.media.CamcorderProfile
Réussite : la rotation d'angle maximale sur les images est inférieure à 60% de la rotation du gyroscope.
Voici des exemples de vidéos avec et sans stabilisation.
Figure 155. Exemple de vidéo avec stabilisation.
Figure 156. Exemple de vidéo sans stabilisation.
test_video_stabilization_jca
Les tests ont montré que la vidéo stabilisée capturée à l'aide de l'API Jetpack Camera tourne moins que le gyroscope. Le JCA doit être installé sur l'appareil avant le test.
API testées :
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASESandroid.media.CamcorderProfileandroid.media.MediaRecorder
Réussite : la rotation d'angle maximale sur les images extraites de la vidéo capturée à l'aide de l'application JCA est inférieure à 70% de la rotation du gyroscope (4).
Scène de test basée sur un diffuseur
scene5
scene5 nécessite une scène grise éclairée de manière uniforme. Pour cela, un diffuseur est placé sur l'objectif de l'appareil photo. Nous vous recommandons le diffuseur suivant : http://www.edmundoptics.com/optics/windows-diffusers/optical-diffusers/opal-diffusing-glass/46168/.
Pour préparer la scène, fixez un diffuseur devant la caméra et orientez-la vers une source lumineuse d'environ 2 000 lux. Les images capturées pour scene5 nécessitent un éclairage diffus sans caractéristiques évidentes. Voici un exemple d'image :
Figure 157. Exemple de capture de scene5.
Comme aucune tablette ni manette n'est requise pour cette scène, les tests utilisent le banc d'essai TEST_BED_MANUAL. Pour voir un exemple, consultez Fichier config.yml de test manuel.
Le fichier config.yml par défaut n'inclut pas TEST_BED_MANUAL, mais vous pouvez modifier le fichier pour en inclure un.
test_lens_shading_and_color_uniformity
Vérifie que la correction de l'ombrage de l'objectif est appliquée correctement et que la couleur d'une scène monochrome uniforme est répartie de manière homogène. Effectue ce test sur une image YUV avec 3A automatique. L'ombrage de l'objectif est évalué en fonction du canal Y. Mesure la valeur y moyenne pour chaque bloc d'échantillon spécifié et détermine la réussite ou l'échec en la comparant à la valeur y centrale. Le test d'uniformité des couleurs est évalué dans l'espace rouge-vert et bleu-vert.
API testées :
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODEandroid.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
Réussite : au rayon spécifié de l'image, la variance de la valeur rouge-vert et bleu-vert doit être inférieure à 20% pour que le test soit réussi.
Mécanismes d'échec :
- Vignettage excessif dans les images
- Artefacts de bordure noire dans les images
Figure 158. test_lens_shading_and_color_uniformity_y_plane.
Figure 159.test_lens_shading_and_color_uniformity_color_uniformity.
Figure 160. test_lens_shading_and_color_uniformity_lens_shading_result.
Scène de test sur tablette à large gamme de couleurs
scene_wide_gamut
scene_wide_gamut est un cadre rectangulaire divisé en quatre quadrants égaux, chacun rempli d'une couleur différente. Pour cela, la tablette doit afficher le graphique en gamut étendu, et l'appareil testé doit prendre une photo en gamut étendu de l'écran.
Ces tests vérifient que l'image capturée respecte le profil de couleur et la gamme de couleurs appropriés.
test_display_p3
Teste la capture Display P3 au format JPEG à l'aide de l'API ColorSpaceProfiles. Vérifie que le JPEG capturé possède un profil ICC approprié dans son en-tête et que l'image contient un certain centile de couleurs en dehors de la gamme sRGB.
API testées :
android.hardware.camera2.params.ColorSpaceProfilesandroid.hardware.camera2.params.SessionConfiguration#setColorSpace
Réussite : le JPEG contient un profil ICC Display P3 et plus de 1 % de couleurs en dehors de la gamme sRGB.
Figure 161. Exemple test_display_p3.