Questa pagina fornisce un elenco completo dei test della suite di test delle immagini della fotocamera (ITS), che fa parte del Verifier della suite di test di compatibilità (CTS) di Android. I test ITS sono test funzionali, il che significa che non misurano la qualità delle immagini, ma che tutte le funzioni della fotocamera pubblicizzate funzionano come previsto. Questo documento consente a sviluppatori e tester di comprendere cosa fanno i singoli test e come eseguire il debug degli errori dei test.
I test ITS vengono aggiornati o aggiunti con ogni versione di Android, come descritto nelle note di rilascio di Camera ITS per la versione di Android in questione. Gli aggiornamenti sono basati sui bug segnalati dagli utenti o dagli sviluppatori. Le aggiunte sono guidate da bug segnalati dagli utenti o dagli sviluppatori e dalla convalida del comportamento corretto delle nuove funzionalità del framework della fotocamera.
In Android 17 e versioni successive, i test ITS della fotocamera sono suddivisi in due attività in CTS Verifier per consentire l'esecuzione parallela e ridurre il tempo di test: un'attività per i test feature_combination e sensor_fusion e un'altra per tutti gli altri test. Per saperne di più, consulta Riduzione del tempo di test.
Camera ITS filtra i test in base alle proprietà della fotocamera richieste, al livello API e al livello della classe di prestazioni multimediali (MPC). Per il livello API, ITS utilizza
ro.product.first_api_level per bloccare i test aggiunti in un livello API specifico che
verificano la presenza di esperienze utente negative per le funzionalità nei livelli API inferiori. ITS utilizza ro.vendor.api_level per controllare i test delle funzionalità aggiunte in un livello API specifico che richiedono nuove funzionalità hardware. Se ro.odm.build.media_performance_class è definito per un dispositivo, ITS richiede l'esecuzione di test specifici a seconda del livello MPC.
I test sono raggruppati per scena nelle seguenti sezioni:
Scene di test basate su tablet
scene0: acquisisci metadati, jitter, giroscopio, vibrazionescene1: esposizione, sensibilità, compensazione del valore di esposizione (EV), YUV rispetto a JPEG e RAWscene2: riconoscimento facciale, test che richiedono scene a coloriscene3: Rinforzo periferico, movimento dell'obiettivoscene4: proporzioni, ritaglio, campo visivoscene6: Zoomscene7: Sensore videocamera multiploscene8:misurazione della regione di esposizione automatica (AE) e bilanciamento del bianco automatico (AWB)scene9: compressione JPEGscene_extensions: estensioni della fotocamerascene_tele: Cambio del teleobiettivoscene_video: cali di frame
Scene di test basate su rig Gen2 / sensor_fusion
feature_combination: combinazioni di funzionalitàscene_flash: flash automatico, frequenza fotogrammi minimascene_gen2_chart: test che utilizzano il grafico cartaceo Gen2scene_ip: parità di immagini tra l'app Fotocamera predefinita e l'app Jetpack Camera (JCA)sensor_fusion: offset temporale della fotocamera e del giroscopio
Scena di test basata su diffusore
scene5: vignettatura dell'obiettivo
Scena di test basata su tablet con ampia gamma di colori
scene_wide_gamut:profilo e gamma di colori ad ampio gamut
Consulta le singole sezioni per una descrizione di ogni scena.
Scene di test basate su tablet
scene0
I test non richiedono informazioni specifiche sulla scena. Tuttavia, lo smartphone deve essere fermo per i test del giroscopio e della vibrazione.
test_jitter
Misura il jitter nei timestamp della videocamera.
API testate:
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMPandroid.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
Superato:esiste un delta di almeno 30 ms tra i frame.
Nella figura seguente, nota l'intervallo ridotto dell'asse Y. In realtà, il jitter è ridotto in questo grafico.
Figura 1. Grafico test_jitter.
test_metadata
Verifica la validità delle voci dei metadati, esaminando i risultati di acquisizione e gli oggetti delle caratteristiche della fotocamera. Questo test utilizza
valori di esposizione e guadagno auto_capture_request perché i contenuti delle immagini non sono
importanti. Si tratta di un test fast-FAIL, in quanto viene eseguito in breve tempo, richiede una configurazione minima e segnala un numero significativo di test non riusciti a valle.
L'intera suite di test non deve essere eseguita finché test_metadata non viene superato.
API testate:
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
Esito positivo:il livello hardware, i tag rollingShutterSkew, frameDuration,
timestampSource, croppingType, blackLevelPattern, pixel_pitch,
il campo visivo (FoV) e la distanza iper-focale sono presenti e hanno valori validi.
test_request_capture_match
Verifica che il dispositivo scriva i valori di esposizione e guadagno corretti leggendo i metadati di acquisizione. Questo è un test fast-FAIL, in quanto richiede una configurazione minima e segnala un numero significativo di test non riusciti a valle.
L'intera suite di test non deve essere eseguita finché test_request_capture_match non viene superato.
API testate:
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
Superato: i valori dei metadati di richiesta e acquisizione corrispondono in tutte le inquadrature.
test_sensor_events
Per i dispositivi che annunciano il supporto della fusione dei sensori, questo test verifica se
il dispositivo esegue query e stampa gli eventi dei sensori. I sensori previsti sono
accelerometro, giroscopio e magnetometro. Questo test funziona solo se lo schermo è acceso, ovvero se il dispositivo non è in modalità standby. Si tratta di un test con esito negativo rapido, in quanto viene eseguito in breve tempo, richiede una configurazione minima e segnala l'esito negativo del test di fusione dei sensori a valle. I test della scena sensor_fusion non devono essere eseguiti, a meno che test_sensor_events non sia PASS o SKIP.
API testate:
Superato:vengono ricevuti gli eventi per ogni sensore.
test_solid_color_test_pattern
Verifica che i pattern di test a tinta unita vengano generati correttamente per la disattivazione della videocamera. Se è supportata la disattivazione della videocamera, devono essere supportati i pattern di test a tinta unita. Se la disattivazione della videocamera non è supportata, i pattern di test a tinta unita vengono testati solo se la funzionalità è pubblicizzata.
Se sono supportate le immagini RAW, viene testata anche l'assegnazione dei colori. I colori testati sono nero, bianco, rosso, blu e verde. Per le fotocamere che non supportano le immagini RAW, viene testato solo il nero.
API testate:
android.hardware.camera2.CameraCharacteristics#SENSOR_AVAILABLE_TEST_PATTERN_MODESandroid.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_DATAandroid.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
Superato:i pattern di test a tinta unita supportati sono del colore corretto e la varianza nell'immagine è bassa.
test_test_pattern
Verifica il parametro android.sensor.testPatternMode per acquisire i frame per ogni pattern di test valido e controlla che i frame vengano generati correttamente per i colori a tinta unita e le barre di colore. Questo test include i seguenti passaggi:
- Acquisisce immagini per tutti i pattern di test supportati.
- Esegue un controllo di correttezza per il pattern di test a tinta unita e le barre di colore.
API testate:
android.hardware.camera2.CameraCharacteristics#SENSOR_AVAILABLE_TEST_PATTERN_MODESandroid.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
Superato:i pattern di test supportati vengono generati correttamente.
Figura 2. Esempio di test_test_patterns.
test_tonemap_curve
Testa la conversione del pattern di test da RAW a YUV con mappatura dei toni lineare. Questo test richiede android.sensor.testPatternMode = 2 (COLOR_BARS) per generare un pattern di immagini perfetto per la conversione della mappatura dei toni. Verifica che la pipeline abbia output di colore corretti con mappatura dei toni lineare e input di immagini ideale (si basa su test_test_patterns).
API testate:
android.hardware.camera2.CaptureRequest#DISTORTION_CORRECTION_MODEandroid.hardware.camera2.CaptureRequest#SENSOR_TEST_PATTERN_MODEandroid.hardware.camera2.CaptureRequest#TONEMAP_CURVEandroid.hardware.camera2.CaptureRequest#TONEMAP_MODE
Superato: YUV e RAW sono simili tra loro.
Figura 3. Esempio di test_tonemap_curve non elaborato.
Figura 4. Esempio di test_tonemap_curve YUV.
test_unified_timestamp
Verifica se gli eventi del sensore di movimento e dell'immagine si trovano nello stesso dominio temporale. Si tratta di un test con esito negativo rapido, in quanto viene eseguito in breve tempo, richiede una configurazione minima e segnala l'esito negativo del test di fusione dei sensori a valle. I test della scena sensor_fusion non devono essere eseguiti a meno che test_unified_timestamp non sia PASS o SKIP.
API testate:
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMPandroid.hardware.Sensorandroid.hardware.SensorEventandroid.hardware.Sensor#TYPE_ACCELEROMETERandroid.hardware.Sensor#TYPE_GYROSCOPE
Superato:i timestamp del movimento sono compresi tra i due timestamp dell'immagine.
test_vibration_restriction
Verifica se la vibrazione del dispositivo funziona come previsto.
API testate:
android.hardware.Sensorandroid.hardware.SensorEventandroid.hardware.Sensor#TYPE_ACCELEROMETERandroid.os.Vibratorandroid.hardware.camera2.CameraDevice#setCameraAudioRestriction
Superato:il dispositivo non vibra quando viene disattivato l'audio dall'API di limitazione dell'audio della fotocamera.
scene1_1
scene1 è un grafico grigio. Il grafico grigio deve coprire il 30% centrale del campo visivo della videocamera. Il grafico grigio dovrebbe mettere moderatamente alla prova le funzionalità 3A (AE, AWB e AF), poiché la regione centrale non ha caratteristiche.
Tuttavia, la richiesta di acquisizione specifica l'intera scena, che include
caratteristiche sufficienti per la convergenza di 3A.
Le videocamere RFoV possono essere testate nel banco di prova WFoV o RFoV. Se una fotocamera RFoV viene testata nel banco di prova WFoV, il grafico viene ridimensionato di 2/3 per specificare alcuni limiti per il grafico grigio nel FoV per aiutare la convergenza 3A. Per descrizioni più dettagliate dei banchi di prova della fotocamera, consulta Camera ITS-in-a-box.
Figura 5. Grafico della scena 1 a grandezza originale (a sinistra), grafico ridimensionato di 2/3 (a destra).
test_ae_precapture_trigger
Testa la macchina a stati AE quando utilizzi l'attivatore di pre-acquisizione. Acquisisce cinque richieste manuali con l'AE disattivata. L'ultima richiesta ha un trigger di pre-acquisizione AE, che deve essere ignorato perché l'AE è disattivata.
API testate:
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODEandroid.hardware.camera2.CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGERandroid.hardware.camera2.CaptureResult#CONTROL_AE_STATE
Pass: l'AE converge.
test_auto_vs_manual
Test che hanno dimostrato che gli scatti automatici e manuali hanno lo stesso aspetto.
API testate:
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINSandroid.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORMandroid.hardware.camera2.CaptureResult#TONEMAP_CURVEandroid.hardware.camera2.CaptureResult#TONEMAP_MODE
Superato:i guadagni e la trasformazione del bilanciamento del bianco manuale riportati in ogni risultato di acquisizione corrispondono al bilanciamento del bianco automatico estimate dell'algoritmo 3A della fotocamera.
Figura 6. Esempio di test_auto_vs_manual automatico.
Figura 7. Esempio di bilanciamento del bianco test_auto_vs_manual.
Figura 8. Esempio di trasformazione del bilanciamento del bianco manuale test_auto_vs_manual.
test_black_white
Verifica che il dispositivo produca immagini completamente in bianco e nero. Acquisisce due immagini, la prima con un guadagno estremamente basso e un'esposizione breve, che genera una foto nera, e la seconda con un guadagno estremamente elevato e un'esposizione lunga, che genera una foto bianca.
API testate:
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIMEandroid.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Pass: produce immagini in bianco e nero. I canali saturi delle immagini bianche hanno valori RGB di [255, 255, 255] con un margine di errore inferiore all'1% di differenza.
Figura 9. test_black_white, esempio di nero.
Figura 10. test_black_white, esempio di bianco.
Figura 11. test_black_white, esempio di medie dei grafici.
test_burst_capture
Verifica che l'intera pipeline di acquisizione possa tenere il passo con la velocità di acquisizione a grandezza originale e il tempo di CPU.
API testate:
Superato:acquisisce una sequenza di immagini a grandezza originale, verifica la presenza di frame drop e la luminosità dell'immagine.
test_burst_sameness_manual
Acquisisce 5 sequenze di 50 immagini con l'impostazione di acquisizione manuale e verifica che siano tutte identiche. Utilizza questo test per identificare se esistono frame sporadici che vengono elaborati in modo diverso o che presentano artefatti.
API testate:
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSORandroid.hardware.camera2.CameraMetadata#SYNC_MAX_LATENCY_PER_FRAME_CONTROL
Superato:le immagini sono identiche visivamente e nei valori RGB.
Non superato: mostra un picco o un calo del grafico della media RGB all'inizio di ogni sequenza
- La tolleranza è del 3% per
first_API_level< 30 - La tolleranza è del 2% per
first_API_level>= 30
Figura 12. Esempio di media test_burst_sameness_manual.
Figura 13. test_burst_sameness_manual_plot_means
test_crop_region_raw
Verifica che gli stream RAW non siano ritagliabili.
API testate:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZEandroid.hardware.camera2.CaptureResult#SCALER_CROP_REGIONandroid.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
Superato:le immagini YUV vengono ritagliate al centro, ma non le immagini RAW.
Figura 14. Esempio di ritaglio raw comp test_crop_region_raw.
Figura 15. Esempio completo di test_crop_region_raw comp raw.
Figura 16. Esempio di ritaglio YUV di test_crop_region_raw comp.
Figura 17. Esempio completo di test_crop_region_raw YUV.
test_crop_regions
Verifica che le regioni di ritaglio funzionino. Acquisisce un'immagine completa e crea patch di cinque regioni diverse (angoli e centro). Acquisisce immagini con il ritaglio impostato per le cinque regioni. Confronta i valori dell'immagine ritagliata e della patch.
API testate:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZEandroid.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
Superato:l'immagine dell'area ritagliata corrisponde alla patch che corrisponde all'immagine ritagliata.
test_ev_compensation
Verifica che venga applicata la compensazione del valore di esposizione (EV). Il test è composto da una sezione di base e una sezione avanzata.
La sezione di base verifica che la compensazione EV venga applicata utilizzando un intervallo creato con CONTROL_AE_COMPENSATION_STEP. Vengono acquisiti otto fotogrammi per ogni valore di compensazione.
La sezione avanzata aumenta l'esposizione in otto passaggi e confronta la luminosità misurata con quella prevista. I valori previsti vengono calcolati in base alla luminosità dell'immagine senza compensazione EV applicata e il valore previsto si satura se i valori calcolati superano l'intervallo di valori effettivo dell'immagine. Il test non va a buon fine se i valori previsti e quelli misurati non corrispondono o se le immagini vengono sovraesposte entro cinque passaggi.
API testate:
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
Superamento della sezione di base:le immagini mostrano un'esposizione crescente senza sovraesposizione entro cinque passaggi.
Figura 18. test_ev_compensation_basic.
Superamento della sezione avanzata:acquisisce un aumento della luma man mano che l'impostazione della compensazione EV aumenta. Gli otto fotogrammi acquisiti per ogni impostazione di compensazione EV hanno valori di luminanza stabili.
Figura 19. test_ev_compensation_advanced_plot_means.
test_exposure_x_iso
Verifica che venga ottenuta un'esposizione costante al variare dell'ISO e del tempo di esposizione. Scatta una serie di foto con ISO e tempo di esposizione scelti per bilanciarsi a vicenda.
I risultati dovrebbero avere la stessa luminosità, ma nel corso della sequenza l'immagine dovrebbe diventare più rumorosa. Verifica che i valori medi dei pixel di esempio siano vicini tra loro. Verifica che le immagini non siano bloccate su 0 o 1 (il che le farebbe sembrare linee piatte). Il test può essere eseguito anche con immagini RAW impostando il flag debug nel file di configurazione.
API testate:
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIMEandroid.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Superato: le immagini hanno la stessa luminosità, ma diventano più rumorose con un ISO più elevato. I piani RGB sono piatti quando il valore di ISO*esposizione è costante nello spazio di guadagno testato.
Meccanismo di errore: nella figura seguente, man mano che i valori del moltiplicatore di guadagno (asse x) aumentano, i valori medi del piano RGB normalizzato (asse y) iniziano a deviare dai valori del moltiplicatore di guadagno basso.
Figura 20. test_exposure_plot_means.
Figura 21. test_exposure_mult=1.00.
Figura 22. test_exposure_mult=64.00.
test_latching
Verifica che le impostazioni (esposizione e guadagno) si blocchino sul frame corretto per le fotocamere FULL e LEVEL_3. Scatta una serie di foto utilizzando richieste consecutive, variando i parametri della richiesta di acquisizione tra uno scatto e l'altro. Controlla che le immagini abbiano le proprietà previste.
API testate:
Superato: le immagini [2, 3, 6, 8, 10, 12, 13] hanno un ISO o un'esposizione aumentati e vengono visualizzate con medie RGB più elevate nel grafico della figura seguente.
Figura 23. Esempio di grafico test_latching.
Figura 24. test_latching i=00.
Figura 25. test_latching i=01.
Figura 26. test_latching i=02.
Figura 27. test_latching i=03.
Figura 28. test_latching i=04.
Figura 29. test_latching i=05.
Figura 30. test_latching i=06.
Figura 31. test_latching i=07.
Figura 32. test_latching i=08.
Figura 33. test_latching i=09.
Figura 34. test_latching i=10.
Figura 35. test_latching i=11.
Figura 36. test_latching i=12.
test_linearity
Verifica che l'elaborazione del dispositivo possa essere invertita in pixel lineari. Acquisisce una sequenza di scatti con il dispositivo puntato verso un target uniforme.
API testate:
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
Superato:i valori R, G, B devono aumentare in modo lineare con l'aumento della sensibilità.
Figura 37. Esempio di medie del grafico test_linearity.
test_locked_burst
Testa il blocco 3A e la sequenza YUV (utilizzando l'impostazione automatica). Questo test è progettato per essere superato anche su dispositivi limitati che non dispongono di MANUAL_SENSOR o PER_FRAME_CONTROLS.
Il test verifica la coerenza delle immagini YUV, mentre il controllo della frequenza fotogrammi è in CTS.
API testate:
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCKandroid.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
Superato:le acquisizioni hanno un aspetto coerente.
Figura 38. Esempio di frame0 test_locked_burst.
Figura 39. Esempio di frame 1 test_locked_burst.
Figura 40. Esempio di frame2 test_locked_burst.
scene1_2
scene 1_2 è una copia funzionalmente identica di scene 1_1, che implementa una struttura di scene secondarie per ridurre la durata estesa di scene 1.
test_param_color_correction
Verifica che i parametri android.colorCorrection.* vengano applicati quando vengono impostati.
Acquisisce scatti con valori di trasformazione e guadagno diversi e verifica che l'aspetto sia corrispondentemente diverso. La trasformazione e i guadagni vengono scelti per rendere l'output sempre più rosso o blu. Utilizza una mappatura dei toni lineare.
La mappatura tonale è una tecnica utilizzata nell'elaborazione delle immagini per mappare un insieme di colori a un altro per approssimare l'aspetto delle immagini con un intervallo dinamico elevato in un mezzo con un intervallo dinamico più limitato.
API testate:
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINSandroid.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODEandroid.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
Pass: i valori R e B aumentano in base alla trasformazione.
Figura 41. Esempio di medie del grafico test_param_color_correction.
Nelle figure seguenti, l'asse x rappresenta le richieste di acquisizione: 0 = unità, 1 = boost rosso e 2 = boost blu.
Figura 42. Esempio di unity test_param_color_correction req=0.
Figura 43. Esempio di test_param_color_correctness req=1 con aumento del rosso.
Figura 44. Esempio di test_param_color_correction req=2 blue boost.
test_param_flash_mode
Verifica che il parametro android.flash.mode sia applicato. Imposta manualmente l'esposizione sul lato scuro, in modo che sia evidente se il flash è stato attivato o meno, e utilizza una mappatura dei toni lineare. Controlla il centro con l'immagine della sezione per verificare se è stato creato un gradiente di grandi dimensioni per verificare se il flash è stato attivato.
API testate:
Superato:il centro dell'immagine del riquadro ha un gradiente elevato, il che significa che il flash è stato attivato.
Figura 45. Esempio di test_param_flash_mode 1.
Figura 46. Esempio di un riquadro test_param_flash_mode.
Figura 47. Esempio di test_param_flash_mode 2.
Figura 48. Esempio di due riquadri test_param_flash_mode.
test_param_noise_reduction
Verifica che il parametro android.noiseReduction.mode venga applicato correttamente quando viene impostato. Acquisisce immagini con la fotocamera scarsamente illuminata. Utilizza un guadagno analogico elevato per garantire che l'immagine acquisita sia rumorosa. Acquisisce tre immagini, per NR disattivata,
veloce e di alta qualità. Acquisisce anche un'immagine con un guadagno basso e la riduzione del rumore disattivata e utilizza la varianza di questa immagine come base di riferimento. Più alto è il rapporto segnale/rumore (SNR), migliore è la qualità dell'immagine.
API testate:
Superato:l'SNR varia in base alle diverse modalità di riduzione del rumore e si comporta in modo simile al grafico seguente:
Figura 49. Esempio di SNR del grafico test_param_noise_reduction.
0: OFF, 1: FAST, 2: HQ, 3: MIN , 4: ZSL
Figura 50. Esempio di test_param_noise_reduction high gain nr=0.
Figura 51. Esempio di test_param_noise_reduction high gain nr=1.
Figura 52. Esempio di test_param_noise_reduction high gain nr=2.
Figura 53. Esempio di test_param_noise_reduction high gain nr=3.
Figura 54. Esempio di test_param_noise_reduction con guadagno basso.
test_param_shading_mode
Verifica che il parametro android.shading.mode sia applicato.
API testate:
android.hardware.camera2.CaptureRequest#SHADING_MODEandroid.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODEandroid.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
Superato:le modalità di ombreggiatura vengono cambiate e le mappe di ombreggiatura dell'obiettivo vengono modificate come previsto.
Figura 55. Esempio di mappa di ombreggiatura dell'obiettivo test_param_shading_mode, modalità 0, loop 0.
Figura 56. Esempio di mappa di ombreggiatura dell'obiettivo test_param_shading_mode, modalità 1, loop 0.
Figura 57. Esempio di mappa di ombreggiatura dell'obiettivo test_param_shading_mode, modalità 2, loop 0.
test_param_tonemap_mode
Verifica che il parametro android.tonemap.mode sia applicato. Applica curve di mappatura dei toni diverse a ciascun canale R, G, B e verifica che le immagini di output siano modificate come previsto. Questo test è composto da due test, test1 e test2.
API testate:
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: entrambe le immagini hanno una mappatura dei toni lineare, man=1ha un gradiente più ripido. Il canale G (verde) è più luminoso per l'immaginen=1.test2: stessa mappatura dei toni, ma durata diversa. Le immagini sono uguali.
Figura 58. test_param_tonemap_mode con n=0.
Figura 59. test_param_tonemap_mode con n=1.
test_post_raw_sensitivity_boost
Controlla l'aumento della sensibilità non elaborata dei post. Acquisisce un insieme di immagini RAW e YUV con sensibilità diverse, pubblica la combinazione di aumento della sensibilità RAW e controlla se la media dei pixel di output corrisponde alle impostazioni della richiesta.
API testate:
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
Superato:le immagini RAW diventano più scure man mano che l'amplificazione aumenta, mentre la luminosità delle immagini YUV rimane costante.
Figura 60. Esempio di test_post_raw_sensitivity_boost raw s=3583 boost=0100.
Figura 61. Esempio di test_post_raw_sensitivity_boost raw s=1792 boost=0200.
Figura 62. Esempio di test_post_raw_sensitivity_boost raw s=0896 boost=0400.
Figura 63. Esempio di test_post_raw_sensitivity_boost raw s=0448 boost=0800.
Figura 64. Esempio di test_post_raw_sensitivity_boost raw s=0224 boost=1600.
Figura 65. Esempio di test_post_raw_sensitivity_boost raw s=0112 boost=3199.
Figura 66. Esempio di media del grafico non elaborato test_post_raw_sensitivity_boost.
Figura 67. Esempio di test_post_raw_sensitivity_boost YUV s=0112 boost=3199.
Figura 68. Esempio di test_post_raw_sensitivity_boost YUV s=0448 boost=0800.
Figura 69. Esempio di test_post_raw_sensitivity_boost YUV s=0896 boost=0400.
Figura 70. Esempio di test_post_raw_sensitivity_boost YUV s=1792 boost=0200.
Figura 71. Esempio di test_post_raw_sensitivity_boost YUV s=3585 boost=0100.
Figura 72. Esempio di test_post_raw_sensitivity_boost_yuv_plot_means.
test_raw_exposure
Acquisisce un insieme di immagini RAW con un tempo di esposizione crescente e misura i valori dei pixel.
API testate:
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAWandroid.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
Pass: l'aumento dell'ISO (guadagno) rende i pixel più sensibili alla luce, quindi il grafico si sposta verso sinistra.
Figura 73. Esempio di test_raw_exposure ISO=55.
10⁰ corrisponde a 1 ms, 10¹ corrisponde a 10 ms e 10⁻¹ corrisponde a 0, 1 ms.
Figura 74. Esempio di test_raw_exposure ISO=132.
Figura 75. Esempio di test_raw_exposure ISO=209.
Figura 76. Esempio di test_raw_exposure ISO=286.
Figura 77. Esempio di test_raw_exposure ISO=363.
Figura 78. Esempio di test_raw_exposure ISO=440.
test_reprocess_noise_reduction
Verifica che android.noiseReduction.mode venga applicato per le richieste di ritrattamento.
Acquisisce immagini rielaborate con la fotocamera in condizioni di scarsa illuminazione. Utilizza un guadagno analogico elevato per verificare che l'immagine acquisita sia rumorosa. Acquisisce tre immagini rielaborate,
per NR disattivata, veloce e di alta qualità. Acquisisce un'immagine rielaborata con un guadagno basso e la riduzione del rumore disattivata e utilizza la varianza di questa immagine come riferimento.
API testate:
Pass: FAST >= OFF, HQ >= FAST e HQ >> OFF.
Figura 79. Esempio di grafico tipico del rapporto segnale/rumore rispetto alla modalità NR.
test_tonemap_sequence
Testa una sequenza di scatti con diverse curve di mappatura dei toni. Acquisisce 3 scatti manuali con una mappatura dei toni lineare. Acquisisce 3 scatti manuali con la mappatura dei toni predefinita. Calcola il delta tra ogni coppia di frame consecutivi.
API testate:
Esito positivo:sono presenti tre frame identici seguiti da un altro set di tre frame identici.
Figura 80. Esempio di test_tonemap_sequence i=0.
Figura 81. Esempio di test_tonemap_sequence i=1.
Figura 82. Esempio di test_tonemap_sequence i=2.
Figura 83. Esempio di test_tonemap_sequence i=3.
Figura 84. Esempio di test_tonemap_sequence i=4.
Figura 85. Esempio di test_tonemap_sequence i=5.
test_yuv_jpeg_all
Verifica che tutte le dimensioni e i formati segnalati per l'acquisizione di immagini funzionino. Utilizza una richiesta manuale con una mappatura dei toni lineare in modo che YUV e JPEG abbiano lo stesso aspetto quando vengono convertiti dal modulo image_processing_utils. Le immagini non vengono salvate per impostazione predefinita, ma possono essere salvate attivando debug_mode.
API testate:
android.hardware.camera2.CaptureRequest#TONEMAP_CURVEandroid.hardware.camera2.CaptureRequest#TONEMAP_MODEandroid.graphics.ImageFormat#JPEG
Superato:tutti i centri delle immagini hanno una differenza massima del valore quadratico medio (RMS) (valore di un segnale) nelle immagini convertite in RGB con il 3% dell'immagine YUV con la risoluzione più alta.
Figura 86. Esempio di test_yuv_jpeg_all.
test_yuv_plus_dng
Verifica che le dimensioni e i formati segnalati per l'acquisizione di immagini funzionino.
API testate:
Superato: il test viene completato e restituisce le immagini richieste.
Figura 87. Esempio di test_yuv_plus_dng.
scene1_3
scene 1_3 è una copia funzionalmente identica di scene 1_1, che implementa una struttura di scene secondarie per ridurre la durata estesa di scene 1.
test_capture_result
Verifica che vengano restituiti dati validi negli oggetti CaptureResult. Il test consiste in un'acquisizione automatica, un'acquisizione manuale e una seconda acquisizione automatica.
API testate:
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
Superato:i metadati sono validi per tutte le acquisizioni e le impostazioni manuali non vengono applicate alla seconda acquisizione automatica. Traccia la correzione dell'ombreggiatura dell'obiettivo per le acquisizioni.
Figura 88. test_capture_result_plot_lsc_auto_ch0.
test_dng_noise_model
Verifica che i parametri del modello RAW DNG siano corretti. Il grafico mostra la varianza misurata di un'area centrale della scheda grigia in scatti non elaborati acquisiti in un intervallo di sensibilità e confronta questi valori con la varianza prevista per ogni sensibilità dal modello di rumore DNG nell'HAL della fotocamera (in base ai parametri O,S restituiti negli oggetti dei risultati di acquisizione). Per maggiori dettagli sul modello di rumore DNG, scarica il seguente documento sul modello di rumore DNG.
API testate:
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
Superato:i parametri del modello non elaborato DNG sono corretti. I valori RGB previsti corrispondono ai valori RGB effettivi misurati.
Figura 89. test_dng_noise_model_plog.
test_jpeg
I test che hanno convertito le immagini YUV e le immagini JPEG del dispositivo hanno lo stesso aspetto. Il test prende il 10% centrale dell'immagine, calcola il valore RGB e verifica che corrisponda.
API testate:
Superato: la differenza RGB media tra ogni immagine è inferiore al 3%.
Figura 90. test_jpeg_fmt=jpg.jpg.
Figura 91. test_jpeg=fmt=yuv.jpg.
test_raw_burst_sensitivity
Acquisisce un insieme di immagini RAW con guadagni crescenti e misura il rumore. Acquisisce solo immagini RAW, in sequenza.
API testate:
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
Pass: ogni scatto è più rumoroso del precedente, poiché il guadagno aumenta.
Utilizza la varianza della cella della griglia delle statistiche centrale.
Figura 92. test_raw_burst_sensitivity_variance.
test_raw_sensitivity
Acquisisce un insieme di immagini RAW con sensibilità crescenti e misura il rumore (varianza) nel 10% centrale dell'immagine. Verifica che ogni scatto sia più rumoroso del precedente.
API testate:
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
Pass: la varianza aumenta con ogni scatto.
Figura 93. test_raw_sensitivity_variance.
test_yuv_plus_jpeg
Testa l'acquisizione di un singolo frame come output YUV e JPEG. Utilizza una richiesta manuale con una mappatura dei toni lineare in modo che YUV e JPEG abbiano lo stesso aspetto quando vengono convertiti dal modulo image_processing_utils.
API testate:
android.hardware.camera2.CaptureRequest#TONEMAP_CURVEandroid.hardware.camera2.CaptureRequest#TONEMAP_MODEandroid.graphics.ImageFormat#JPEG
Superato:le immagini YUV e JPEG sono simili e hanno una differenza RMS (valore di un segnale) inferiore all'1%.
Figura 94. test_yuv_plus_jpeg con formato JPEG.
Figura 95. test_yuv_plus_jpeg con formato YUV.
test_yuv_plus_raw
Testa l'acquisizione di un singolo frame come output non elaborato (raw a 10 bit e 12 bit) e YUV, se supportati. Utilizza una richiesta manuale con mappatura dei toni lineare, quindi i formati RAW e YUV dovrebbero essere uguali. Confronta i valori RGB del 10% centrale delle immagini convertite in RGB. Logandroid.shading.mode.
API testate:
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
Superato:le immagini YUV e RAW sono simili e presentano una differenza RMS (valore quadratico medio di un segnale) inferiore al 3,5%.
Figura 96. test_yuv_plus_raw_shading=1_raw.jpg.
Figura 97. test_yuv_plus_raw_shading=1_yuv.jpg.
test_sensitivity_priority
Test CONTROL_AE_PRIORITY_MODE_SENSOR_SENSITIVITY_PRIORITY
con varie impostazioni ISO per confermare una correlazione tra un ISO più elevato e
livelli di rumore maggiori.
API testate:
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
Superato:un valore ISO più elevato comporta livelli di rumore maggiori.
Criteri di esclusione dei test
Il test test_sensitivity_priority.py viene saltato se viene soddisfatto uno dei seguenti criteri:
- Il dispositivo ha un primo livello API (
first_api_level) pari o inferiore a 35. - Il dispositivo non annuncia
CONTROL_AE_PRIORITY_MODE_SENSOR_SENSITIVITY_PRIORITYinCONTROL_AE_AVAILABLE_PRIORITY_MODES.
test_exposure_time_priority
Testa CONTROL_AE_PRIORITY_MODE_SENSOR_EXPOSURE_TIME_PRIORITY
su vari tempi di esposizione, verificando la stabilità della luminosità nell'intervallo
in cui l'ISO può compensare.
API testate:
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
Superato:la luminosità è stabile (entro la tolleranza) nei tempi di esposizione se l'ISO rientra nel suo intervallo di compensazione.
Criteri di esclusione dei test
Il test test_exposure_time_priority viene saltato se viene soddisfatto uno dei seguenti criteri:
- Il dispositivo ha un primo livello API (
first_api_level) pari o inferiore a 35. - Il dispositivo non annuncia
CONTROL_AE_PRIORITY_MODE_SENSOR_EXPOSURE_TIME_PRIORITYinCONTROL_AE_AVAILABLE_PRIORITY_MODES.
scene2_a
scene2_a ha tre volti con uno sfondo grigio e abiti neutri. I volti vengono scelti in modo da avere un'ampia gamma di tonalità della pelle. Il grafico deve avere l'orientamento corretto affinché il riconoscimento facciale funzioni in modo ottimale.
Figura 98. Esempio di scene2_a.
test_autoframing
Testa il comportamento di inquadratura automatica della videocamera. Esegue uno zoom ampio in modo che nessuno dei volti nella scena sia visibile, attiva la modalità di inquadratura automatica impostando AUTOFRAMING in CaptureRequest su True e verifica se tutti i volti nella scena originale possono essere rilevati quando lo stato converge (ovvero quando AUTOFRAMING_STATE in CaptureResult è impostato su AUTOFRAMING_STATE_CONVERGED).
API testate:
android.hardware.camera2.CameraCharacteristics#CONTROL_AUTOFRAMING_AVAILABLEandroid.hardware.camera2.CaptureRequest#CONTROL_AUTOFRAMINGandroid.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMINGandroid.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMING_STATE
Superato:vengono rilevati tutti e tre i volti.
test_display_p3
Testa l'acquisizione Display P3 in JPEG utilizzando l'API ColorSpaceProfiles. Verifica che il JPEG acquisito abbia un profilo ICC appropriato nell'intestazione e che l'immagine contenga colori al di fuori della gamma sRGB.
API testate:
android.hardware.camera2.params.ColorSpaceProfilesandroid.hardware.camera2.params.SessionConfiguration#setColorSpace
Superato:il JPEG contiene un profilo ICC Display P3 e colori al di fuori della gamma sRGB.
test_effects
Acquisisce il frame per gli effetti della fotocamera supportati e controlla se vengono generati correttamente. Il test controlla solo gli effetti OFF e MONO, ma salva le immagini per tutti gli effetti supportati.
API testate:
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_EFFECTSandroid.hardware.camera2.CaptureRequest#CONTROL_EFFECT_MODE
Pass: acquisisce l'immagine della scena con gli effetti OFF e un'immagine monocromatica con gli effetti impostati su MONO.
Figura 99. test_effects_MONO.
test_exposure_keys_consistent
Questo test confronta la luma media di un'acquisizione con AE attivata con un'acquisizione con AE disattivata che applica manualmente i parametri di esposizione (sensibilità, tempo di esposizione, durata del frame, aumento della sensibilità post-raw) ricevuti in CaptureResult dell'acquisizione con AE attivata.
API testate:
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
Superato:la differenza relativa di luma tra le due acquisizioni è inferiore al 4%.
test_format_combos
Testa diverse combinazioni di formati di output.
API testate:
android.hardware.camera2.CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAPandroid.hardware.camera2.params.StreamConfigurationMap#getOutputSizes()android.hardware.camera2.CameraCaptureSession#captureBurst()
Superato: tutte le combinazioni vengono acquisite correttamente.
test_num_faces
Testa il riconoscimento facciale.
API testate:
android.hardware.camera2.CaptureResult#STATISTICS_FACESandroid.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Superato:trova tre volti.
Figura 100. Esempio di modalità di riconoscimento facciale test_num_faces 1.
test_reprocess_uv_swap
Verifica che l'elaborazione YUV non scambi i piani U e V. Questo viene rilevato calcolando la somma delle differenze assolute (SAD) tra l'immagine rielaborata e un'acquisizione non rielaborata. Se lo scambio dei piani U e V di output dei risultati di acquisizione rielaborati comporta un aumento del SAD, si presume che l'output abbia i piani U e V corretti.
API testate:
android.hardware.camera2.CameraDevice#createCaptureSessionandroid.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_YUV_REPROCESSINGandroid.hardware.camera2.CaptureRequest#EDGE_MODEandroid.hardware.camera2.CaptureResult#NOISE_REDUCTION_MODE
Superato:i piani U e V non vengono scambiati.
Figura 101. Esempio di test_reprocess_uv_swap.
scene2_b
scene2_b ha tre volti con uno sfondo grigio e abiti neutri. I volti vengono scelti in modo da avere un'ampia gamma di tonalità della pelle. Il grafico deve avere l'orientamento corretto affinché il riconoscimento facciale funzioni in modo ottimale.
test_preview_num_faces
Verifica il riconoscimento facciale in anteprima con una maggiore diversità di tonalità della pelle nelle scene con volti.
API testate:
android.hardware.camera2.CaptureResult#STATISTICS_FACESandroid.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Superato: trova tre volti con punti di riferimento nei riquadri di delimitazione dei volti.
Figura 102. Esempio di modalità di riconoscimento facciale test_num_faces 1.
test_yuv_jpeg_capture_sameness
Acquisisce due immagini utilizzando i formati YUV e JPEG comuni più grandi con le stesse proporzioni del formato JPEG più grande, senza superare una risoluzione di 1920 x 1440.
Imposta jpeg.quality su 100 e acquisisce una richiesta di doppia superficie. Converte entrambe le immagini in array RGB e calcola la differenza della radice quadrata media (RMS) 3D tra le due immagini.
Inoltre, questo test verifica che gli output YUV per tutti i casi d'uso degli stream supportati siano ragionevolmente simili a quelli YUV con il caso d'uso STILL_CAPTURE.
API testate:
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASESandroid.hardware.camera2.CaptureRequest#JPEG_QUALITYandroid.graphics.ImageFormat#JPEG
Superato:le immagini YUV e JPEG per il caso d'uso STILL_CAPTURE hanno una differenza RMS (valore quadratico medio di un segnale) inferiore al 3%; le immagini YUV per tutti i casi d'uso supportati hanno una differenza CIELAB inferiore al 4% rispetto alle immagini YUV con il caso d'uso STILL_CAPTURE.
scene2_c
test_num_faces
Testa il riconoscimento facciale con una maggiore diversità di tonalità della pelle nelle scene con volti.
API testate:
android.hardware.camera2.CaptureResult#STATISTICS_FACESandroid.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Superato:trova tre volti.
Figura 103. Esempio di modalità di riconoscimento facciale test_num_faces.
test_jpeg_capture_perf_class
Testa la latenza di acquisizione JPEG per la classe di prestazioni S, come specificato nella sezione 2.2.7.2 Fotocamera del CDD.
Superato:DEVE avere una latenza di acquisizione JPEG camera2 < 1000 ms per la risoluzione 1080p, misurata dal test delle prestazioni della fotocamera CTS in condizioni di illuminazione ITS (3000 K) per entrambe le fotocamere principali.
test_camera_launch_perf_class
Testa la latenza di avvio della fotocamera per la classe di prestazioni S, come specificato nella sezione 2.2.7.2 Fotocamera del CDD.
Superato:DEVE avere una latenza di avvio di camera2 (dall'apertura della fotocamera al primo frame di anteprima) < 600 ms, misurata dal test delle prestazioni della fotocamera CTS in condizioni di illuminazione ITS (3000 K) per entrambe le fotocamere principali.
test_default_camera_hdr
Verifica che l'acquisizione predefinita della fotocamera sia Ultra HDR per la classe di prestazioni 15, come specificato nella sezione 2.2.7.2 Fotocamera del CDD.
Superato: l'acquisizione del pacchetto della fotocamera predefinito DEVE essere Ultra HDR per un dispositivo di classe di prestazioni 15.
scene2_d
test_preview_num_faces
Verifica il riconoscimento facciale in anteprima con una maggiore diversità di tonalità della pelle nelle scene con volti.
API testate:
android.hardware.camera2.CaptureResult#STATISTICS_FACESandroid.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Superato: trova tre volti con punti di riferimento nei riquadri di delimitazione dei volti.
scene2_e
test_continuous_picture
Vengono acquisiti 50 frame con risoluzione VGA con la prima impostazione della richiesta di acquisizione
android.control.afMode = 4 (CONTINUOUS_PICTURE).
API testate:
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
Superato:il sistema 3A si stabilizza entro la fine di un'acquisizione di 50 fotogrammi.
test_num_faces
Testa il riconoscimento facciale con una maggiore diversità di tonalità della pelle nelle scene con volti.
API testate:
android.hardware.camera2.CaptureResult#STATISTICS_FACESandroid.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: trova 3 volti.
scene2_f
scene2_f ha tre volti con uno sfondo bianco e abiti bianchi. I volti hanno un'ampia gamma di tonalità della pelle e un contrasto elevato con lo sfondo.
Figura 104. Esempio di scene2_f.
test_preview_num_faces
Testa il riconoscimento facciale con una maggiore diversità di tonalità della pelle nelle scene con volti.
API testate:
android.hardware.camera2.CaptureResult#STATISTICS_FACESandroid.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Superato: trova tre volti con punti di riferimento nei riquadri di delimitazione dei volti.
Figura 105. Esempio di test_num_faces_fd_mode_1.
scene2_g
scene2_g ha tre volti di profilo con uno sfondo bianco e abiti bianchi.
I volti hanno un'ampia gamma di tonalità della pelle e un contrasto elevato con lo sfondo.
Figura 106. Esempio di scene2_g.
test_preview_num_faces
Testa il riconoscimento facciale con una maggiore diversità di tonalità della pelle nelle scene con volti.
API testate:
android.hardware.camera2.CaptureResult#STATISTICS_FACESandroid.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Superato: trova tre volti con punti di riferimento nei riquadri di delimitazione dei volti.
Figura 107. Esempio di test_preview_num_faces.
scene3
scene3 utilizza il grafico ISO12233 e la maggior parte dei test utilizza un metodo di estrazione del grafico per trovare il grafico nella scena. Per questo motivo, la maggior parte delle immagini salvate non ha bordi come le immagini delle scene 1, 2 o 4, ma solo il grafico. Il grafico deve essere orientato correttamente affinché lo strumento di ricerca dei grafici funzioni in modo ottimale.
In Android 17 e versioni successive, scene3 utilizza i marker ArUco per il rilevamento dei grafici.
Figura 108. Grafico scene3.
test_edge_enhancement
Verifica che il parametro android.edge.mode venga applicato correttamente. Acquisisce immagini non rielaborate per ogni modalità di bordo e restituisce la nitidezza dell'immagine di output e i metadati dei risultati dell'acquisizione. Elabora una richiesta di acquisizione con una determinata modalità di bordo, sensibilità, tempo di esposizione, distanza di messa a fuoco e parametro della superficie di output. In Android 17 e versioni successive, utilizza i marker ArUco per definire l'area del grafico che contiene i bordi nitidi necessari.
Pass: la modalità HQ (2) è più nitida della modalità OFF (0). FAST (1) più nitida
rispetto alla modalità OFF. Modalità HQ più nitida o uguale alla modalità FAST.
API testate:
Parametri della videocamera interessati:
EDGE_MODE
Figura 109. Esempio di test_edge_enhancement edge=0.
Figura 110. Esempio di test_edge_enhancement edge=1 (modalità veloce).
Figura 111. Esempio di test_edge_enhancement edge=2 (modalità di alta qualità).
test_flip_mirror
Verifica se l'immagine è orientata correttamente in base alla sezione 7.5.2 Fotocamera anteriore del CDD. In Android 17 e versioni successive, utilizza i marker ArUco per convalidare sia la presenza che l'orientamento del grafico. Le immagini speculari, capovolte o ruotate possono essere identificate dalla caratteristica a forma di rombo vicino al centro.
Superato: tutti i marker vengono rilevati e allineati correttamente. L'immagine non è capovolta, specchiata o ruotata.
Figura 112. Esempio di patch della scena test_flip_mirror.
test_imu_drift
Verifica se l'unità di misura inerziale (IMU) ha un output stabile per 30 secondi mentre il dispositivo è fermo e acquisisce un'anteprima ad alta definizione.
API testate:
android.hardware.Sensorandroid.hardware.SensorEventandroid.hardware.Sensor#TYPE_GYROSCOPEandroid.hardware.Sensor#TYPE_ROTATION_VECTOR
Pass:
- La deviazione del giroscopio è inferiore a 0,01 rad nel tempo di test.
- La varianza della lettura del giroscopio è inferiore a 1E-7 rad2/s2/Hz per tutta la durata del test.
- La deviazione del vettore di rotazione è inferiore a 0,01 rad durante il tempo di test.
- (Non ancora obbligatorio) La deviazione del giroscopio è inferiore a 1 grado al secondo.
Figura 113. Esempio di deviazione del giroscopio test_imu_drift.
Figura 114. Esempio di deviazione del vettore di rotazione test_imu_drift.
test_landscape_to_portrait
Verifica se l'override da orizzontale a verticale funziona correttamente per i sensori con orientamento orizzontale.
API testate:
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_ROTATE_AND_CROP_MODESandroid.hardware.camera2.CameraCharacteristics#SENSOR_ORIENTATIONandroid.hardware.camera2.CameraManager#getCameraCharacteristics
Superato:il test individua un grafico con la rotazione prevista (0 gradi quando l'override da orizzontale a verticale è disattivato, 90 gradi quando è attivato).
Figura 115. Esempio di test_landscape_to_portrait.
test_lens_movement_reporting
Verifica se il flag di movimento dell'obiettivo viene segnalato correttamente. Acquisisce una sequenza di 24 immagini con i primi 12 fotogrammi alla distanza di messa a fuoco ottimale (come rilevato da 3A) e gli ultimi 12 fotogrammi alla distanza di messa a fuoco minima. Intorno al fotogramma 12, l'obiettivo si muove, causando una riduzione della nitidezza. La nitidezza si stabilizza quando l'obiettivo si sposta nella posizione finale.
Il flag di movimento dell'obiettivo deve essere impostato in tutti i frame in cui la nitidezza è intermedia rispetto alla nitidezza nei primi frame con l'obiettivo fermo alla distanza focale ottimale e negli ultimi frame in cui l'obiettivo è fermo alla distanza focale minima. Il frame esatto in cui l'obiettivo si sposta non è importante: ciò che conta è che il flag di movimento venga impostato quando l'obiettivo si muove.
In Android 17 e versioni successive, questo test utilizza i marker ArUco per definire l'area del grafico che contiene i bordi nitidi necessari. Questo metodo fornisce un rilevamento stabile per le fotocamere, dalle applicazioni ultra-grandangolari (UW) a quelle con teleobiettivo.
API testate:
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
Superato:il flag di movimento dell'obiettivo è True nel frame con variazione della nitidezza.
Meccanismi di errore:
lens_moving: True(android.hardware.camera2.CaptureResult#LENS_STATE= 1) intest_log.DEBUGviene dichiarato solo nei frame in cui la nitidezza non cambia.- I frame con
lens_moving: False(android.hardware.camera2.CaptureResult#LENS_STATE= 0) intest_log.DEBUGpresentano una differenza di nitidezza rispetto ai primi frame alla distanza focale ottimale o agli ultimi frame alla distanza di messa a fuoco minima.
test_reprocess_edge_enhancement
Verifica se i metodi di rielaborazione supportati per il miglioramento dei bordi funzionano correttamente. Elabora una richiesta di acquisizione con una determinata modalità di rielaborazione dei bordi e confronta diverse modalità di acquisizione con le modalità di rielaborazione dei bordi disattivate.
API testate:
android.hardware.camera2.CaptureRequest#EDGE_MODEandroid.hardware.camera2.CaptureRequest#REPROCESS_EFFECTIVE_EXPOSURE_FACTOR
Superato:la nitidezza per le diverse modalità di bordo è corretta. HQ (modalità 2) è più nitida di OFF (modalità 0) e il miglioramento tra le diverse modalità è simile.
Figura 116. Esempio di grafico test_reprocess_edge_enhancement.
scene4
scene4 è costituito da un cerchio nero su sfondo bianco all'interno di un quadrato.
I test in scene4 possono essere sensibili all'allineamento, quindi a partire da Android 15 puoi utilizzare check_alignment.py nella directory degli strumenti per attivare un controllo dell'allineamento del DUT e del grafico.
Figura 117. Esempio di scene4.
test_30_60fps_preview_fov_match
Verifica che i video di anteprima a 30 FPS e 60 FPS abbiano lo stesso campo visivo. Il test acquisisce due video, uno a 30 FPS e l'altro a 60 FPS. Da ogni video viene selezionato un frame rappresentativo, che viene analizzato per verificare che le modifiche del campo visivo nei due video rientrino nelle specifiche. Verifica che le proporzioni del cerchio rimangano costanti, che il centro del cerchio rimanga stabile e che il raggio del cerchio rimanga costante.
API testate:
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
Superato: le immagini non sono allungate, il centro delle immagini non differisce di oltre il 3% e la variazione massima delle proporzioni tra i video a 30 FPS e 60 FPS non supera il 7,5%
Meccanismi di errore:
- Il cerchio del video a 30 f/s ha dimensioni notevolmente diverse rispetto a quello del video a 60 f/s.
- Il cerchio nell'immagine acquisita è distorta dalla pipeline di elaborazione.
- Il cerchio nell'immagine acquisita viene ritagliato a causa di una richiesta di acquisizione con proporzioni estreme che riduce l'altezza o la larghezza dell'immagine.
- Il cerchio nell'immagine acquisita ha un riflesso al centro e non appare completamente pieno.
test_aspect_ratio_and_crop
Verifica se le immagini sono distorte o ritagliate in modo imprevisto nella pipeline delle immagini. Scatta foto di un cerchio in tutti i formati. Verifica che il cerchio non sia distorto, che non si sposti dal centro dell'immagine e che non cambi dimensioni in modo errato con proporzioni o risoluzioni diverse.
API testate:
android.hardware.camera2.CaptureResult#LENS_DISTORTIONandroid.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTHandroid.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
Superato:le immagini non sono allungate, il centro delle immagini non differisce di oltre il 3% e viene preservato il campo visivo massimo possibile.
Meccanismi di errore:
- La fotocamera non è allineata al cerchio visualizzato sul tablet al centro della scena acquisita.
- Il cerchio nell'immagine acquisita è distorto dalla pipeline di elaborazione.
- L'immagine a bassa risoluzione viene ritagliata due volte nella pipeline di immagini, creando un campo visivo diverso tra le immagini ad alta e bassa risoluzione.
- Il cerchio nell'immagine acquisita viene ritagliato a causa di una richiesta di acquisizione con proporzioni estreme che riduce l'altezza o la larghezza dell'immagine.
- Il cerchio nell'immagine acquisita ha un riflesso al centro e non appare completamente pieno.
test_multi_camera_alignment
Testa i parametri di calibrazione della fotocamera relativi al posizionamento della fotocamera per i sistemi con più fotocamere. Utilizzando le fotocamere secondarie fisiche della configurazione con più fotocamere, scatta una foto con una delle fotocamere fisiche. Trova il centro del cerchio. Proietta il centro del cerchio sulle coordinate globali per ogni videocamera. Confronta la differenza tra i centri dei cerchi delle videocamere nelle coordinate del mondo. Riproietta le coordinate del mondo in coordinate dei pixel e le confronta con quelle originali come controllo di validità. Confronta le dimensioni dei cerchi controllando se le lunghezze focali delle fotocamere sono diverse.
API testate:
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
Superato:i centri e le dimensioni dei cerchi sono quelli previsti nelle immagini proiettate rispetto alle immagini acquisite utilizzando i dati di calibrazione della fotocamera e le lunghezze focali.
Meccanismi di errore:
LENS_INTRINSIC_CALIBRATION,LENS_POSE_TRANSLATIONeLENS_POSE_ROTATIONsono valori di progettazione e non dati di calibrazione effettivi.- Il sistema di fotocamere non è appropriato per la configurazione del test, ad esempio test di un sistema di fotocamere grandangolare e ultrawide con il banco di prova RFoV. Per ulteriori informazioni, consulta la domanda 1 delle domande frequenti su Camera ITS-in-a-box.
test_preview_aspect_ratio_and_crop
Analogamente al test test_aspect_ratio_and_crop per le acquisizioni di immagini fisse, controlla i formati di anteprima supportati per verificare che i frame di anteprima non siano allungati o ritagliati in modo inappropriato. Verifica che le proporzioni del cerchio non cambino, che le immagini ritagliate mantengano il cerchio al centro dell'inquadratura e che le dimensioni del cerchio non cambino per un formato costante o con risoluzioni diverse (controllo FoV).
API testate:
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
Superato:le immagini non sono allungate, il centro delle immagini non differisce di oltre il 3% e viene preservato il campo visivo massimo possibile.
test_preview_stabilization_fov
Controlla le dimensioni di anteprima supportate per assicurarti che il campo visivo sia ritagliato
correttamente. Il test acquisisce due video, uno con la stabilizzazione dell'anteprima ON e un altro con la stabilizzazione dell'anteprima OFF. Da ogni video viene selezionato un frame rappresentativo, che viene analizzato per verificare che le modifiche del campo visivo nei due video rientrino nelle specifiche.
API testate:
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASESandroid.media.MediaRecorderandroid.media.CamcorderProfile
Superato: le proporzioni del cerchio rimangono pressoché costanti, la posizione centrale del cerchio rimane stabile e le dimensioni del cerchio non cambiano di oltre il 20%.
test_video_aspect_ratio_and_crop
Acquisisce video di un cerchio all'interno di un quadrato in tutti i formati video. Estrae i fotogrammi chiave e verifica che le proporzioni del cerchio non cambino, che le immagini ritagliate mantengano il cerchio al centro e che le dimensioni del cerchio non cambino per un formato costante o con una risoluzione diversa (controllo FoV).
API testate:
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
Superato: i fotogrammi del video non sono allungati, il centro dei fotogrammi non differisce di oltre il 3% e viene conservato il campo visivo massimo possibile.
scene6
scene6 è una griglia di marker ArUco identificabili in modo univoco.
I test in scene6 possono essere sensibili all'allineamento, quindi a partire dalla versione 15 puoi utilizzare check_alignment.py nella directory degli strumenti per attivare un controllo dell'allineamento del DUT e del grafico.
Figura 118. Esempio di scene6.
test_in_sensor_zoom
Testa il comportamento della funzionalità di zoom nel sensore della fotocamera, che produce immagini RAW ritagliate.
Con il caso d'uso dello stream impostato su
CROPPED_RAW,
il test esegue due acquisizioni nell'intervallo di zoom, un'immagine RAW con FoV completo e un'immagine RAW ritagliata. Il test converte le immagini in array RGB, riduce l'immagine RAW ritagliata a grandezza naturale alle dimensioni indicate da SCALER_RAW_CROP_REGION e calcola la differenza RMS 3D tra le due immagini.
API testate:
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
Superato:la differenza RMS 3D tra l'immagine raw ritagliata e ridotta e l'immagine raw con FoV completo è inferiore alla soglia impostata nel test.
test_zoom
Testa il comportamento dello zoom della fotocamera dall'obiettivo ultrawide all'obiettivo grandangolare. Acquisisce immagini nell'intervallo di zoom e controlla se i marker ArUco diventano più grandi quando la fotocamera aumenta lo zoom. Il test verifica anche se la posizione dell'indicatore centrale cambia in modo prevedibile in ogni acquisizione. La distanza dal centro dell'indicatore centrale al centro dell'immagine può cambiare a una velocità costante rispetto al rapporto di zoom fino a un cambio di fotocamera fisica oppure può cambiare in modo monotono verso la posizione dello stesso indicatore dopo un cambio di fotocamera fisica. L'app Jetpack Camera (JCA) deve essere installata sul dispositivo prima del test.
API testate:
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
Superato:le dimensioni relative del marker ArUco acquisito sono accurate rispetto alle proporzioni di zoom richieste per verificare che lo zoom della fotocamera funzioni correttamente e la distanza del marker dal centro dell'immagine cambia in base ai criteri indicati nella descrizione del test.
Figura 119. test_zoom per trovare il contorno del marcatore ArUco più vicino al centro.
test_low_latency_zoom
Testa il comportamento dello zoom a bassa latenza della fotocamera. Acquisisce immagini nell'intervallo di zoom con android.control.settingsOverride = 1 (SETTINGS_OVERRIDE_ZOOM) e verifica se gli indicatori nelle immagini di output corrispondono ai rapporti di zoom nei metadati di acquisizione. La stessa sessione di acquisizione della fotocamera viene utilizzata per la convergenza 3A e per l'acquisizione.
API testate:
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
Superato:le dimensioni relative dell'indicatore acquisito sono accurate rispetto ai metadati dei risultati del rapporto di zoom.
test_preview_video_zoom_match
Verifica che, durante la registrazione e lo zoom, l'anteprima e l'output video mostrino e registrino lo stesso output. Calcola le dimensioni dell'indicatore più vicino al centro con diversi rapporti di zoom e controlla se le dimensioni dell'indicatore aumentano con l'aumentare del rapporto di zoom.
API testate:
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
Superato:le dimensioni relative del marker acquisito sono accurate rispetto al rapporto di zoom richiesto nel video e nell'anteprima.
Figura 120. HD_1280x720_key_frame.png (prima dello zoom).
Figura 121. preview_1280x720_key_frame.png (prima dello zoom).
Figura 122. HD_1280x720_key_frame.png (dopo lo zoom).
Figura 123. preview_1280x720_key_frame.png (dopo lo zoom).
test_preview_zoom
Verifica che il rapporto di zoom di ogni frame di anteprima corrisponda ai metadati di acquisizione corrispondenti dall'obiettivo ultrawide all'obiettivo wide. Il test acquisisce i frame di anteprima nell'intervallo di zoom e trova l'indicatore ArUco più vicino al centro. Il test verifica quindi se la posizione dell'indicatore centrale cambia in modo prevedibile in ogni acquisizione. La distanza dal centro dell'indicatore centrale al centro dell'immagine può cambiare a una velocità costante rispetto al rapporto di zoom fino a un cambio di fotocamera fisica oppure può cambiare in modo monotono verso la posizione dello stesso indicatore dopo un cambio di fotocamera fisica.
API testate:
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
Superato:le dimensioni relative del marker ArUco selezionato sono accurate per il rapporto di zoom riportato del risultato di acquisizione corrispondente per tutti i frame di anteprima. La distanza relativa dell'indicatore selezionato dal centro dell'immagine è accurata per il rapporto di zoom riportato del risultato di acquisizione corrispondente di tutti i frame di anteprima.
test_session_characteristics_zoom
Testa l'intervallo del rapporto di zoom per tutte le configurazioni di sessione supportate elencate in CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION.
Per ciascuna di queste configurazioni, se
CameraDeviceSetup#isSessionConfigurationSupported
restituisce true, il test verifica che l'intervallo del rapporto di zoom restituito in
CameraDeviceSetup#getSessionCharacteristics
possa essere raggiunto.
API testate:
android.hardware.camera2.CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSIONandroid.hardware.camera2.CameraDevice.CameraDeviceSetup#isSessionConfigurationSupportedandroid.hardware.camera2.CameraDevice.CameraDeviceSetup#getSessionCharacteristics
Superato: è possibile raggiungere i rapporti di zoom minimo e massimo per ogni SessionConfiguration supportato elencato in CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION.
scene7
scene7 è una cornice rettangolare divisa in quattro quadranti uguali, ciascuno riempito con un colore diverso. Al centro del rettangolo è presente un grafico con bordi inclinati per i controlli della nitidezza. Quattro indicatori ArUco sono allineati ai quattro angoli esterni del rettangolo per facilitare l'ottenimento di coordinate precise della cornice del rettangolo principale con diversi rapporti di zoom.
Figura 125. scene7.
test_multi_camera_switch
Questo test verifica che durante la registrazione dell'anteprima con rapporti di zoom variabili, il passaggio tra gli obiettivi ultrawide (UW) e wide (W) generi valori RGB simili.
Il test utilizza diversi rapporti di zoom all'interno dell'intervallo predefinito per eseguire una registrazione di anteprima dinamica e identificare il punto in cui la fotocamera fisica cambia. Questo punto segna il passaggio dall'obiettivo UW all'obiettivo W.
I frame acquisiti in corrispondenza e prima del punto di crossover vengono analizzati per l'esposizione automatica (AE), il bilanciamento del bianco automatico (AWB) e la messa a fuoco automatica (AF).
Il controllo AE verifica che la variazione della luminanza rientri nell'intervallo previsto per le immagini degli obiettivi UW e W. Il controllo AWB verifica che i rapporti rosso-verde e blu-verde rientrino nei valori di soglia per le immagini degli obiettivi UW e W. Il controllo AF valuta il valore di stima della nitidezza in base alla grandezza media del gradiente tra le immagini degli obiettivi UW e W.
Se durante l'esecuzione di questo test l'effetto moiré interferisce con i risultati, utilizza un tablet con una risoluzione più elevata dall'elenco dei tablet approvati per Camera ITS.
API testate:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGEandroid.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIOandroid.media.CamcorderProfileandroid.media.MediaRecorder
Superato:per superare il test, i controlli AE e AWB devono essere superati. I risultati del controllo AF vengono utilizzati solo per scopi di logging. Di seguito sono riportati i criteri per ogni controllo:
- Controllo AE: la variazione della luminanza (valore Y) tra le immagini degli obiettivi UW e W deve essere inferiore al 4% per tutte le patch di colore se il dispositivo supporta sia
ae_regionssiaawb_regions. Se è supportato soloae_regions, solo i valori della patch di colore grigio devono soddisfare i criteri. - Controllo AWB: la differenza tra i valori rosso-verde e blu-verde per le immagini degli obiettivi UW e W deve essere inferiore al 3% per la patch di colore grigio e inferiore al 10% per le altre patch di colore se il dispositivo supporta sia
ae_regionssiaawb_regions. - Controllo AF: la nitidezza dell'immagine per l'acquisizione con l'obiettivo W deve essere superiore alla nitidezza con l'acquisizione con l'obiettivo UW.
Figura 126. Macchia grigia scattata con obiettivo ultrawide.
Figura 127. Riquadro grigio acquisito con l'obiettivo W.
scene8
scene8 è una cornice rettangolare divisa in quattro aree uguali, ognuna contenente un ritratto scattato con un'esposizione diversa o sovrapposto a una tonalità di colore diversa (tonalità blu, esposizione aumentata, esposizione ridotta, tonalità gialla).
Quattro indicatori ArUco sono allineati ai quattro angoli esterni del rettangolo per ottenere coordinate precise della cornice del rettangolo principale.
Figura 128. Esempio di scene8.
test_ae_awb_regions
Verifica che i valori RGB e luma siano diversi quando si registra l'anteprima in diverse regioni AE e AWB.
Il test registra un'anteprima di 8 secondi, eseguendo la misurazione AE e AWB su ogni quadrante per 2 secondi ciascuno. Il test estrae quindi un frame dalla registrazione di anteprima di ogni regione e utilizza i frame estratti per eseguire i seguenti controlli AE e AWB:
- Controllo AE: verifica che il frame che misura la regione con esposizione ridotta abbia un valore di luma aumentato di oltre l'1% rispetto al frame che misura la regione con esposizione aumentata. In questo modo, si verifica che le immagini vengano illuminate quando si misura una regione scura.
- Controllo AWB: verifica che il rapporto tra rosso e blu (dei valori RGB medi dell'immagine) nel frame con la regione di misurazione blu sia superiore di oltre il 2% rispetto al frame con la regione di misurazione gialla. In questo modo, si verifica che le immagini abbiano un valore RGB bilanciato quando si misura una regione gialla (calda) o blu (fredda).
API testate:
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
Superato:i controlli AE e AWB vengono superati.
Figura 129. Misurazione dell'inquadratura della regione scura con esposizione aumentata.
Figura 130. Regione più chiara della misurazione dell'inquadratura con esposizione ridotta.
Meccanismi di errore:
Il rilevamento accurato di tutti e quattro i marker ArUco è essenziale per questo test. Se il rilevamento iniziale non va a buon fine, il sistema tenta un secondo passaggio di rilevamento utilizzando una versione in bianco e nero dell'immagine. La seguente immagine in scala di grigi rappresenta il passaggio di elaborazione secondario:
Figura 131. Disallineamento dei marker ArUco.
test_color_correction_mode_cct
Esegue test COLOR_CORRECTION_MODE
con diverse temperature di colore e tinte, verificando le variazioni dei rapporti RGB
rispetto alla scena di acquisizione, scene8.
API testate:
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
Superato:i rapporti RGB mostrano gli aumenti o le diminuzioni previsti in relazione alle temperature di colore e alle tonalità selezionate.
Criteri di esclusione dei test
Il test test_color_correction_mode_cct viene saltato se viene soddisfatto uno dei seguenti criteri:
- Il dispositivo ha un primo livello API (
first_api_level) pari o inferiore a 35. - Il dispositivo non annuncia
COLOR_CORRECTION_MODE_CCTinCOLOR_CORRECTION_AVAILABLE_ABERRATION_MODES.
scene9
scene9 è costituito da migliaia di cerchi di dimensioni e colori casuali per creare una scena con una ripetibilità molto bassa per stressare gli algoritmi di compressione JPEG.
Figura 132. Esempio di scene9.
test_jpeg_high_entropy
Verifica che la compressione JPEG della fotocamera funzioni su scene9 con entropia elevata e il fattore di qualità JPEG impostato su 100%. Il fattore di zoom viene aumentato per verificare che la scena visualizzata sul tablet riempia il campo visivo della fotocamera.
API testate:
Superato: il file JPEG è stato compresso correttamente, scritto e letto dal disco.
test_jpeg_quality
Testa la qualità della compressione JPEG della fotocamera. Passa attraverso le qualità JPEG
android.jpeg.quality e verifica che le tabelle di quantizzazione cambino
correttamente.
API testate:
Superato: la matrice di quantizzazione diminuisce con l'aumento della qualità. (La matrice rappresenta il fattore di divisione).
Figura 133. Medie della matrice DQT di luma e croma della fotocamera posteriore di Pixel 4 rispetto alla qualità JPEG.
Figura 134. Esempio di test non riuscito.
scene_extensions
I test scene_extensions sono per le estensioni della fotocamera e devono utilizzare
Camera ITS-in-a-Box,
poiché richiedono un controllo preciso dell'ambiente di test. Inoltre,
tutte le infiltrazioni di luce devono essere controllate. Potrebbe essere necessario coprire il banco di prova, il DUT e il tablet con un telo, nonché eliminare le infiltrazioni di luce dallo schermo anteriore del DUT.
scene_hdr
La scena scene_hdr è composta da un ritratto a sinistra e da un codice QR a basso contrasto a destra.
Figura 135. Esempio di scene_hdr.
test_hdr_extension
Testa l'estensione HDR. Acquisisce immagini con e senza l'estensione abilitata e verifica se l'estensione rende il codice QR più rilevabile.
API testate:
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensionsandroid.hardware.camera2.CameraExtensionSession#capture
Superato:l'estensione HDR riduce il numero di variazioni di contrasto necessarie per rilevare il codice QR o riduce il gradiente nel codice QR.
scene_low_light
La scena scene_low_light è costituita da una griglia di quadrati di varie tonalità di grigio su uno sfondo nero e la griglia di quadrati è delimitata da un contorno rosso. I quadrati sono disposti secondo l'orientamento di una curva di Hilbert.
Figura 136. Esempio di scene_low_light.
test_night_extension
Testa l'estensione Notte. Esegue acquisizioni con l'estensione abilitata e svolge le seguenti operazioni:
- Rileva la presenza di 20 quadrati
- Calcola la luma delimitata da ogni quadrato
- Calcola il valore di luma medio dei primi 6 quadrati in base all'orientamento della griglia della curva di Hilbert
- Calcola la differenza nel valore di luma dei quadrati consecutivi (ad esempio, quadrato2 - quadrato1) fino ai quadrati 5 e 6 (quadrato6 - quadrato5) e trova la media delle cinque differenze calcolate.
Per i dispositivi con Android 16 o versioni successive, la richiesta di acquisizione include una regione di misurazione corrispondente al rettangolo che delimita la griglia di quadrati. Questa aggiunta modifica i criteri di superamento della soglia.
API testate:
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensionsandroid.hardware.camera2.CameraExtensionSession#capture
Pass:
- Per i dispositivi con Android 16 o versioni successive, il valore di luma medio dei primi 6 quadrati deve essere almeno 80 e la differenza media nel valore di luma dei quadrati consecutivi fino ai quadrati 5 e 6 deve essere almeno 18, 75.
- Per i dispositivi con Android 15 e versioni precedenti, il valore medio di luma dei primi 6 quadrati deve essere almeno 85 e la differenza media nel valore di luma dei quadrati consecutivi fino ai quadrati 5 e 6 deve essere almeno 17.
Il seguente grafico della luminanza mostra l'aspetto di un risultato del test positivo.
Figura 137. Esempio di test superato per una scena notturna con scarsa illuminazione.
test_low_light_boost_extension
Testa la modalità AE Aumento luce. Se Camera2 supporta la modalità AE di ottimizzazione in condizioni di scarsa illuminazione, questo test viene eseguito per Camera2. Se l'estensione della fotocamera in modalità notturna è supportata e l'estensione supporta la modalità AE Low Light Boost, questo test viene eseguito anche per l'estensione della fotocamera in modalità notturna. Questo test imposta la modalità AE su Luce scarsa, acquisisce un frame dall'anteprima ed esegue le seguenti operazioni:
- Rileva la presenza di 20 scatole
- Calcola la luma delimitata da ogni riquadro
- Calcola il valore di luma medio dei primi 6 quadrati in base all'orientamento della griglia della curva di Hilbert
- Calcola la differenza nel valore di luma dei quadrati consecutivi (ad esempio, quadrato2 - quadrato1) fino ai quadrati 5 e 6 (quadrato6 - quadrato5) e trova la media delle cinque differenze calcolate.
Per i dispositivi con Android 16 o versioni successive, la richiesta di acquisizione include una regione di misurazione corrispondente al rettangolo che delimita la griglia di quadrati. Questa aggiunta modifica i criteri di superamento della soglia.
API testate:
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:
Per i dispositivi con Android 16 o versioni successive, il valore di luma medio dei primi 6 quadrati deve essere almeno 54 e la differenza media nel valore di luma dei quadrati consecutivi fino ai quadrati 5 e 6 deve essere almeno 17.
Per i dispositivi con Android 15 e versioni precedenti, il valore di luma medio dei primi 6 quadrati deve essere almeno 70 e la differenza media del valore di luma dei quadrati consecutivi fino ai quadrati 5 e 6 deve essere almeno 18.
scene_tele
Un requisito fondamentale per i test scene_tele è che la distanza del grafico deve essere almeno pari alla distanza minima di messa a fuoco del teleobiettivo. Poiché questa distanza minima di messa a fuoco può variare da un dispositivo all'altro, devi configurare la tua configurazione in base alla fotocamera con teleobiettivo specifica.
Figura 138. Configurazione di scene_tele basata sulla distanza di messa a fuoco della fotocamera con grandangolo e teleobiettivo.
Per saperne di più sulla configurazione dell'hardware di test, consulta Configurazione del rig di estensione del teleobiettivo.
scene6_tele
La scena scene6_tele è costituita da una griglia di indicatori ArUco su uno sfondo bianco.
Se le acquisizioni di scene6_tele sembrano sovraesposte nel
rig modulare, rimuovi la
piastra anteriore del
rig modulare.
Scollega la piattaforma di test WFoV dalla prolunga e rimuovi il supporto per lo smartphone.
Figura 139. Scollega la piattaforma di test WFoV dalla prolunga e rimuovi il supporto per lo smartphone.
Figura 140. Rimuovi la piastra anteriore.
test_zoom_tele
Testa il comportamento dello zoom della fotocamera dall'obiettivo grandangolare al teleobiettivo. Il test è identico a test_zoom, ma testa il comportamento dello zoom della fotocamera dall'obiettivo grandangolare al teleobiettivo.
API testate:
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
Superato:le dimensioni relative del marker ArUco acquisito sono accurate rispetto al rapporto di zoom richiesto per verificare che la fotocamera esegua lo zoom correttamente e la distanza del marker dal centro dell'immagine cambia in base ai criteri elencati in test_zoom.
test_preview_zoom_tele
Testa il comportamento dello zoom della fotocamera per i frame di anteprima dall'obiettivo grandangolare al teleobiettivo. Il test è identico a
test_preview_zoom, ma testa il comportamento dello zoom della fotocamera
per i frame di anteprima dall'obiettivo grandangolare al teleobiettivo.
API testate:
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
Superato:le dimensioni relative del marker ArUco acquisito sono accurate rispetto alle proporzioni di zoom richieste per verificare che la fotocamera esegua lo zoom correttamente e la distanza del marker dal centro dell'immagine cambia in base ai criteri elencati in test_preview_zoom.
scene7_tele
scene7_tele è identico a scene7, ma è configurato per i test del teleobiettivo. Si tratta di una cornice rettangolare divisa in quattro quadranti uguali, ciascuno riempito con un colore diverso. Al centro del rettangolo è presente un grafico con bordi inclinati per i controlli della nitidezza. Quattro indicatori ArUco sono allineati ai quattro angoli esterni del rettangolo per facilitare l'ottenimento di coordinate precise della cornice del rettangolo principale con diversi rapporti di zoom.
test_multi_camera_switch_tele
Questo test verifica che durante la registrazione dell'anteprima con diversi rapporti di zoom, il passaggio tra gli obiettivi grandangolare (W) e teleobiettivo (tele) generi valori RGB simili.
Il test utilizza diversi rapporti di zoom all'interno dell'intervallo predefinito per eseguire una registrazione di anteprima dinamica e identificare il punto in cui la fotocamera fisica cambia. Questo punto segna il passaggio dall'obiettivo W al teleobiettivo.
I frame acquisiti in corrispondenza e prima del punto di crossover vengono analizzati per AE, AWB e AF.
Il controllo AE verifica che la variazione di luma rientri nell'intervallo previsto per le immagini degli obiettivi W e teleobiettivo. Il controllo AWB verifica che i rapporti rosso-verde e blu-verde rientrino nei valori di soglia per le immagini degli obiettivi W e teleobiettivo. Il controllo AF valuta il valore di stima della nitidezza in base alla grandezza del gradiente medio tra le immagini degli obiettivi W e teleobiettivo.
API testate:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGEandroid.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIOandroid.media.CamcorderProfileandroid.media.MediaRecorder
Superato:per superare il test, è necessario superare tutti i controlli AE, AWB e AF. Di seguito sono riportati i criteri per ogni controllo:
- Controllo AE: la variazione di luma tra le immagini dell'obiettivo W e del teleobiettivo deve essere inferiore al 4%.
- Controllo AWB: nello spazio dei colori LAB, il delta C tra rosso-verde e blu-verde per grandangolo e teleobiettivo non può superare 10.
- Controllo AF: la nitidezza dell'immagine del teleobiettivo deve essere superiore a quella dell'obiettivo W.
scene_video
scene_video è una scena video composta da quattro cerchi di colori diversi che si muovono avanti e indietro con frequenze fotogrammi diverse su uno sfondo bianco.
Figura 141. Esempio di scene_video.
test_preview_frame_drop
Verifica che la frequenza fotogrammi di anteprima richiesta venga mantenuta con una scena dinamica. Questo test viene eseguito su tutte le fotocamere esposte ad app di terze parti.
API testate:
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
Superato:la frequenza fotogrammi dell'anteprima è al massimo dell'intervallo della frequenza fotogrammi richiesto e la variazione media tra fotogrammi consecutivi è inferiore alla tolleranza relativa impostata nel test.
Scene di test basate su rig Gen2 / sensor_fusion
feature_combination
I test feature_combination verificano che le funzionalità funzionino correttamente quando
sono attive più funzionalità della fotocamera contemporaneamente. Questi test utilizzano la stessa immagine a scacchiera utilizzata nella scena di fusione dei sensori.
test_feature_combination
Testa tutte le combinazioni di flussi, modalità di stabilizzazione video, intervallo di FPS target, video HDR a 10 bit e Ultra HDR supportate dal dispositivo della fotocamera.
Per Android 16 e versioni successive, il test esegue tutte le combinazioni di funzionalità supportate e registra i risultati in un file proto. Le asserzioni di errore vengono chiamate solo per le combinazioni di caratteristiche per le quali isSessionConfigurationSupported restituisce True.
API testate:
android.hardware.camera2.CameraDevice.CameraDeviceSetup#isSessionConfigurationSupportedandroid.hardware.camera2.CameraDevice.CameraDeviceSetup#createCaptureRequest
Pass: per ogni combinazione di funzionalità supportata:
- Lo stream di anteprima è stabilizzato se la stabilizzazione dell'anteprima è attiva.
- La frequenza fotogrammi dell'anteprima rientra nell'intervallo
AE_TARGET_FPS_RANGEconfigurato. - Lo spazio dei colori dello stream di anteprima registrato corrisponde a quello impostato.
- L'acquisizione Ultra HDR ha una mappa di guadagno valida.
scene_flash
I test scene_flash richiedono una scena scura nella scatola di fusione dei sensori.
In Android 17 e versioni successive, i test scene_flash
possono essere eseguiti utilizzando il
rig Gen2.
test_auto_flash
Verifica che il flash automatico venga attivato in una scena buia per le fotocamere posteriori e anteriori. Per le fotocamere anteriori, il flash automatico utilizza lo schermo per illuminare la scena, non un'unità flash fisica. Il test verifica che il flash automatico venga attivato controllando che il centro dell'immagine della sezione sia più luminoso con il flash automatico attivato. Per attivare il flash automatico, le luci della piattaforma di test devono essere spente. Le luci possono essere spente automaticamente con il controller Arduino. Perché il test funzioni correttamente, la scena deve essere completamente buia. L'app Jetpack Camera (JCA) deve essere installata sul dispositivo prima del test. Il flash automatico per le fotocamere posteriori si basa sullo stato AE per l'attivazione, mentre il flash automatico per le fotocamere anteriori non si basa su AE e viene sempre attivato.
In Android 17 e versioni successive, testa i livelli di zoom diversi da 1x per verificare il corretto funzionamento in tutti gli intervalli di zoom supportati.
API testate:
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
Superato:il centro dell'immagine della sezione con il flash automatico attivato è più luminoso dell'immagine della scena originale per tutte le fotocamere.
test_flash_strength
Verifica che il controllo dell'intensità del flash in modalità SINGLE sia implementato correttamente.
Verifica che, se il dispositivo supporta il controllo dell'intensità del flash durante l'utilizzo della fotocamera
in modalità SINGLE, l'intensità del flash cambi in base ai diversi livelli di intensità
richiesti. Verifica che il controllo dell'intensità del flash funzioni con diversi
AE_MODES.
Ad esempio, se la modalità di esposizione automatica è ON o OFF, il livello di intensità del flash influisce sulla luminosità, mentre se la modalità è ON_AUTO_FLASH, il livello di intensità del flash non influisce sulla luminosità.
Per eseguire il test, le luci nella piattaforma di test devono essere spente. Le luci possono essere spente automaticamente con il controller Arduino. Perché il test funzioni correttamente, la scena deve essere completamente buia.
API testate:
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:
Quando la modalità di esposizione automatica è ON o OFF, la luminosità delle patch dell'immagine aumenta man mano che il livello di intensità del flash aumenta da nessun flash a FLASH_SINGLE_STRENGTH_MAX_LEVEL.
Quando la modalità di esposizione automatica è ON_AUTO_FLASH, la differenza di luminosità delle patch dell'immagine rientra nella tolleranza, poiché il livello di intensità del flash aumenta da nessun flash a FLASH_SINGLE_STRENGTH_MAX_LEVEL.
test_led_snapshot
Verifica che le istantanee LED non saturino o colorino l'immagine.
Questo test aggiunge un controller di illuminazione alla Sensor Fusion Box per controllare le luci. Con le luci impostate su OFF, il test acquisisce un'immagine con la modalità AUTO_FLASH impostata su ON. Durante questa acquisizione, il test esegue una sequenza di pre-acquisizione con il trigger aePrecapture impostato su START e imposta l'intent di acquisizione su Preview per eseguire l'acquisizione con il flash.
Poiché l'acquisizione ha un hotspot distintivo dovuto al flash, il test calcola la media dell'immagine flash dell'intera acquisizione e verifica se il valore rientra nell'intervallo (68, 102). Per verificare se l'immagine ha un bilanciamento del bianco ragionevole, il test calcola i rapporti rosso-verde e blu-verde e verifica se i rapporti sono compresi tra 0,95 e 1,05.
API testate:
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLEandroid.hardware.camera2.CaptureRequest#CONTROL_AE_MODEandroid.hardware.camera2.CaptureRequest#FLASH_MODE
Superato:i rapporti rosso-verde e blu-verde sono compresi tra 0,95 e 1,05. La media dell'immagine con flash rientra nell'intervallo (68, 102).
test_night_mode_indicator
Verifica la funzionalità dell'indicatore della modalità notturna, una funzionalità che indica se la fotocamera sta funzionando in condizioni di scarsa illuminazione e se trarrà vantaggio dall'acquisizione di immagini fisse dell'estensione della modalità notturna della fotocamera. Questa funzionalità è disponibile solo sui dispositivi che supportano le estensioni della fotocamera per la modalità notturna.
Questo test verifica che l'indicatore della modalità notturna rifletta correttamente le condizioni di illuminazione durante l'anteprima della fotocamera. Il test esegue i seguenti passaggi:
- Inizializzazione: il test inizializza un
ItsSessione recupera le proprietà della videocamera. Inoltre, stabilisce una connessione con il controller dell'illuminazione. - Condizioni di salto:il test viene saltato se il dispositivo non supporta il livello API richiesto o la funzionalità dell'indicatore della modalità notturna.
- Sessione Camera2:
- Il test avvia una sessione di acquisizione dell'anteprima utilizzando una sessione
Camera2. - La luce si accende e viene acquisito un frame di anteprima.
- Il test verifica che l'indicatore della modalità notturna sia nello stato
OFF. - La luce viene spenta e viene acquisito un fotogramma di anteprima.
- Il test verifica che l'indicatore della modalità notturna sia nello stato
ON.
- Il test avvia una sessione di acquisizione dell'anteprima utilizzando una sessione
- Sessione di estensione della videocamera:
- Il test ripete la stessa procedura della sessione
Camera2, ma utilizza una sessioneCameraExtensioncon l'estensioneEXTENSION_NIGHT.
- Il test ripete la stessa procedura della sessione
- Pulizia: il test chiude
ItsSessione rilascia il controller dell'illuminazione.
API testate:
Pass:
- Quando la luce è accesa, l'indicatore della modalità notturna deve essere nello stato
OFF. - Quando la luce è spenta, l'indicatore della modalità notturna deve essere nello stato
ON. - Si applica alle sessioni
Camera2eCameraExtension.
test_preview_min_frame_rate
Verifica che la frequenza fotogrammi dell'anteprima diminuisca correttamente in una scena buia. Affinché questo test funzioni correttamente, le luci nella piattaforma di test devono essere spente dal controller o manualmente dall'operatore del test.
API testate:
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
Superato:la frequenza fotogrammi di anteprima è al minimo dell'intervallo di frequenza fotogrammi richiesto e la variazione tra i fotogrammi è inferiore alla tolleranza assoluta impostata nel test.
test_torch_strength
Verifica che il controllo dell'intensità del flash in modalità TORCH sia implementato correttamente.
Verifica che, se il dispositivo supporta il controllo dell'intensità del flash durante l'utilizzo della fotocamera
in modalità TORCH, l'intensità della torcia cambi in base ai diversi livelli di intensità
richiesti. Verifica che il controllo dell'intensità del flash funzioni con diversi
AE_MODES.
Ad esempio, se la modalità di esposizione automatica è ON o OFF, il livello di intensità del flash influisce sulla luminosità, mentre se la modalità è ON_AUTO_FLASH, il livello di intensità del flash non influisce sulla luminosità.
Verifica che l'intensità della torcia rimanga invariata per tutta la durata di una raffica, simulando una sessione di acquisizione video. Per eseguire il test, le luci nel banco di prova devono essere spente. Le luci possono essere spente automaticamente con il controller Arduino. Perché il test funzioni correttamente, la scena deve essere completamente buia.
API testate:
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:
Quando la modalità di esposizione automatica è ON o OFF, la luminosità delle patch della sequenza di immagini aumenta man mano che il livello di intensità del flash aumenta da nessun flash a FLASH_TORCH_STRENGTH_MAX_LEVEL.
Quando la modalità di esposizione automatica è ON_AUTO_FLASH, la differenza di luminosità delle patch della sequenza di immagini rientra nella tolleranza man mano che il livello di intensità del flash aumenta da nessun flash a FLASH_TORCH_STRENGTH_MAX_LEVEL.
scene_gen2_chart
In Android 17 e versioni successive, scene_gen2_chart utilizza il grafico cartaceo Gen2.
Questo grafico di test è composto da campioni di volti, un codice QR, patch in scala di grigi, una stella di Siemens, un grafico dei colori e quadrati inclinati.
Figura 142. Esempio di grafico Gen2.
test_tonemap_sequence
Questo test valuta la curva di mappatura tonale predefinita di un dispositivo rispetto a una curva lineare e a due curve esponenziali (una con punti uniformi e l'altra con punti non uniformi). Per un risultato positivo, la luminosità della curva predefinita deve superare quella delle curve lineare ed esponenziale. Inoltre, la curva lineare deve essere più luminosa delle curve esponenziali e le due curve esponenziali devono avere livelli di luminosità simili.
Il test verifica anche l'accuratezza della curva predefinita del dispositivo. Per farlo, estrae la curva predefinita, la inserisce di nuovo e poi confronta la luminosità dell'immagine risultante con quella dell'immagine della curva predefinita originale.
Figura 143. Traccia della sequenza di mappatura dei toni di test.
API testate:
android.hardware.camera2.CameraMetadata#TONEMAP_MODE_CONTRAST_CURVEandroid.hardware.camera2.CameraMetadata#TONEMAP_MODE_FASTandroid.hardware.camera2.CaptureRequest#TONEMAP_CURVEandroid.hardware.camera2.CaptureRequest#TONEMAP_MODE
Superato: la differenza di luminosità tra le curve predefinita e lineare è superiore al 15%, mentre la differenza tra le due curve esponenziali è inferiore all'8%.
test_multi_camera_switch
Questo test verifica la coerenza di colore ed esposizione durante le transizioni di zoom dinamico. Verifica che il passaggio tra gli obiettivi ultrawide (UW) e grandangolare (W) durante la registrazione dell'anteprima mantenga valori CIELAB quasi identici, evitando variazioni visibili nell'esperienza utente.
L'esecuzione del test esegue una registrazione di anteprima dinamica in un intervallo di zoom predefinito per attivare il punto di "crossover" della fotocamera fisica, in cui l'obiettivo ultrawide passa all'obiettivo grandangolare. Il test identifica il frame esatto in cui avviene il cambio di obiettivo. I frame immediatamente precedenti e successivi a questo punto di crossover vengono acquisiti e analizzati per verificare la stabilità dell'esposizione automatica (AE) e del bilanciamento del bianco automatico (AWB).
Il controllo AE conferma che le fluttuazioni di Luma rimangono entro un intervallo accettabile durante il passaggio dell'obiettivo. Il controllo AWB verifica che i rapporti rosso-verde e blu-verde rientrino nelle soglie definite di neutralità del colore.
API testate:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGEandroid.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIOandroid.media.CamcorderProfileandroid.media.MediaRecorder
Superato:per superare il test, è necessario superare i seguenti controlli AE e AWB:
- Controllo AE: la variazione della luminanza (valore Y) tra le immagini degli obiettivi UW e W deve essere inferiore al 4% per tutte le patch di colore se il dispositivo supporta sia
ae_regionssiaawb_regions. Se è supportato soloae_regions, solo i valori della patch di colore grigio devono soddisfare i criteri. - Controllo AWB: la differenza tra i valori rosso-verde e blu-verde per le immagini degli obiettivi UW e W deve essere inferiore al 3% per la patch di colore grigio e inferiore al 10% per le altre patch di colore se il dispositivo supporta sia
ae_regionssiaawb_regions.
Figura 144. Macchia grigia scattata con obiettivo ultrawide.
Figura 145. Riquadro grigio acquisito con l'obiettivo W.
scene_ip
In Android 16 e versioni successive, la scena scene_ip consente di eseguire controlli di parità delle immagini tra l'app Fotocamera predefinita e l'app Jetpack Camera (JCA) per identificare le differenze principali tra le immagini acquisite. La JCA replica le acquisizioni delle app di social media e fornisce un'immagine di base che le app di social media elaborano e perfezionano.
Requisiti per la configurazione dell'hardware
Per i test scene_ip è necessaria la seguente configurazione hardware:
- I test vengono eseguiti nella scatola ITS per fotocamera di 2ª generazione.
- I controller di illuminazione e dei servomotori che fanno parte del rig Gen2 vengono utilizzati per controllare l'ambiente di test.
- All'interno del rig Gen2 è presente un grafico delle funzionalità di test.
Figura 146. Esempio di Gen2chart_sample.
Criteri di esclusione dei test
I test scene_ip vengono saltati se viene soddisfatto uno dei seguenti criteri:
- Il dispositivo ha un primo livello API (
first_api_level) pari o inferiore a 35. - Il dispositivo non è uno smartphone con fotocamere principali anteriore e posteriore (ad esempio, un tablet o una TV).
test_default_jca_ip
Acquisisce immagini del grafico delle funzionalità di test in condizioni di illuminazione controllate utilizzando l'app Fotocamera predefinita e l'API Camera2 di Jetpack ed esegue i seguenti controlli:
FoV:verifica che l'app Fotocamera predefinita e le acquisizioni JCA abbiano lo stesso FoV. Questo controllo utilizza la funzionalità del codice QR centrale estratta dall'immagine del grafico acquisita.
Luminosità:verifica che la differenza di luminosità misurata tra l'app fotocamera predefinita e JCA non superi 10. Questo controllo utilizza la patch della gamma dinamica per la misurazione della luminosità.
Bilanciamento del bianco:verifica che la differenza di bilanciamento del bianco tra l'app Fotocamera predefinita e JCA non superi 4. Questo controllo utilizza la patch della gamma dinamica per la misurazione della luminosità.
Rendering dei colori:verifica che la differenza di rendering dei colori tra l'app della fotocamera predefinita e JCA non superi 6.
Superato:il test supera i controlli di FoV, luminosità e bilanciamento del bianco. In Android 16, questo test non è obbligatorio (NOT_YET_MANDATED). Per Android 17 e versioni successive, i controlli di parità di FoV, luminosità e bilanciamento del bianco sono obbligatori. Il controllo del rendering dei colori non è obbligatorio
(NOT_YET_MANDATED) in Android 17.
test_jca_jpegr_ip
Verifica che la differenza di bilanciamento del bianco tra l'istantanea di anteprima JCA JPEG_R e le immagini acquisite non superi 4.
API testate:
Superato:la differenza di bilanciamento del bianco tra l'istantanea di anteprima JCA e l'immagine JPEG_R acquisita rientra nella soglia (il valore predefinito è 4).
sensor_fusion
I test di fusione dei sensori richiedono un movimento specifico dello smartphone davanti a un pattern a scacchiera e a indicatori ArUco. Per risultati ottimali, verifica che il grafico di test sia montato in piano. I grafici non piatti influiscono sui calcoli della rotazione per molti dei test. Il grafico deve riempire il retro della scatola di fusione dei sensori stampando
a 43,18 x 43,18 cm. (43x43 cm). I test sensor_fusion possono essere automatizzati con la Sensor Fusion Box.
Figura 147. Grafico di fusione dei sensori.
Figura 148. Grafico di fusione dei sensori che riempie il retro della scatola di fusione dei sensori.
test_lens_intrinsic_calibration
Verifica che il centro ottico dell'obiettivo intrinseco cambi quando l'obiettivo si muove a causa della stabilizzazione ottica dell'immagine (OIS). Se sono supportati i campioni intrinseci dell'obiettivo, verifica che il centro ottico dei campioni intrinseci dell'obiettivo cambi quando l'obiettivo si sposta a causa dell'OIS.
API testate:
android.hardware.camera2.CameraCharacteristics#LENS_INTRINSIC_CALIBRATIONandroid.media.MediaRecorderandroid.media.CamcorderProfile
Superato:il centro ottico dell'obiettivo intrinseco cambia di 1 pixel o più. Se sono supportati i campioni intrinseci dell'obiettivo, i centri ottici dei campioni intrinseci dell'obiettivo cambiano di almeno 1 pixel.
La figura seguente è un grafico test_lens_intrinsic_calibration di esempio
che mostra le modifiche dei punti principali in pixel per ogni frame:
Figura 149. Esempio di grafico test_lens_intrinsic_calibration che mostra le variazioni dei punti principali in pixel per ogni frame.
test_multi_camera_frame_sync
Verifica che i timestamp dei frame acquisiti dalla fotocamera logica siano entro 10 ms calcolando gli angoli dei quadrati all'interno della scacchiera per determinare il timestamp.
API testate:
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()
Superato:l'angolo tra le immagini di ogni fotocamera non cambia in modo significativo quando lo smartphone viene ruotato.
test_preview_distortion
Verifica che la distorsione venga corretta in ogni frame di anteprima acquisito a vari livelli di zoom. Per ogni frame di anteprima, il test calcola i punti ideali in base ai parametri intrinseci ed estrinseci della fotocamera.
Nell'immagine di esempio, i punti ideali sono mostrati in verde, mentre i punti effettivi sono mostrati in rosso. L'errore di distorsione viene calcolato in base alla distanza in pixel RMS tra i punti effettivi e quelli ideali. Le aree verdi e rosse sull'immagine vengono utilizzate per rilevare visivamente l'area dell'errore di distorsione.
Figura 150. Immagine di una scacchiera con i punti ideali in verde e i punti effettivi in rosso.
API testate:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGEandroid.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIOandroid.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()android.media.CamcorderProfileandroid.media.MediaRecorder
Superato:l'errore di distorsione normalizzato di ogni frame di anteprima è inferiore alla soglia impostata nel test.
test_preview_stabilization
Verifica che il video di anteprima stabilizzato ruoti meno del giroscopio.
API testate:
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASESandroid.media.MediaRecorderandroid.media.CamcorderProfile
Superato:la rotazione angolare massima sui frame è inferiore al 70% della rotazione del giroscopio.
Di seguito sono riportati alcuni video di esempio con e senza stabilizzazione:
Figura 151. Video di esempio con stabilizzazione.
Figura 152. Video di esempio senza stabilizzazione.
test_sensor_fusion
Verifica la differenza di timestamp tra la fotocamera e il giroscopio per le applicazioni AR
e VR. Lo smartphone viene ruotato di 90 gradi 10 volte davanti al motivo a scacchiera. Il movimento dura circa 2 secondi per l'andata e il ritorno. Questo test viene ignorato se non è incluso un giroscopio o se il parametro REALTIME dell'origine del timestamp non è attivato.
Il test test_sensor_fusion genera una serie di grafici. I due grafici più importanti per il debug sono:
test_sensor_fusion_gyro_events: mostra gli eventi del giroscopio per lo smartphone durante il test. Il movimento nella direzione x e y indica che lo smartphone non è montato saldamente sulla piastra di montaggio, riducendo la probabilità che il test venga superato. Il numero di cicli nel grafico dipende dalla velocità di scrittura per il salvataggio dei frame.
Figura 153. Esempio di eventi del giroscopio test_sensor_fusion.
test_sensor_fusion_plot_rotations: mostra l'allineamento del giroscopio e degli eventi della videocamera. Questo grafico deve mostrare un movimento corrispondente tra la fotocamera e il giroscopio con un margine di +/-1 ms.
Figura 154. Esempio di rotazioni del grafico test_sensor_fusion.
API testate:
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
Superato:l'offset dei timestamp della fotocamera e del giroscopio è inferiore a 1 ms, come indicato nella sezione 7.3.9 Sensori ad alta fedeltà del CDD.
Meccanismi di errore:
- Errore di offset: l'offset della fotocamera-giroscopio non è calibrato correttamente entro +/-1 ms.
- Frame persi: la pipeline non è abbastanza veloce da acquisire 200 frame consecutivamente.
- Errori di socket:
adbnon riesce a connettersi in modo affidabile al DUT per un tempo sufficiente per eseguire il test. - Il grafico non è montato in piano. Il grafico
test_sensor_fusion_plot_rotationscontiene fotogrammi in cui la rotazione del giroscopio e della fotocamera varia notevolmente man mano che la fotocamera ruota nelle parti del grafico che non sono piatte. - La videocamera non è montata in piano. Il grafico
test_sensor_fusion_gyro_eventsmostra il movimento nei piani X e Y. Questo errore è più comune nelle fotocamere anteriori, poiché la fotocamera posteriore spesso presenta una sporgenza rispetto al resto del corpo dello smartphone, creando un'inclinazione quando si monta la parte posteriore dello smartphone sulla piastra di montaggio.
test_video_stabilization
Deprecato: questo test è stato deprecato da Android 17. Per Android 17 e versioni successive, questo test viene sostituito da test_video_stabilization_jca.
Verifica che il video stabilizzato ruoti meno del giroscopio.
API testate:
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASESandroid.media.MediaRecorderandroid.media.CamcorderProfile
Superato:la rotazione dell'angolo massimo sui frame è inferiore al 60% della rotazione del giroscopio.
Di seguito sono riportati alcuni video di esempio con e senza stabilizzazione.
Figura 155. Video di esempio con stabilizzazione.
Figura 156. Video di esempio senza stabilizzazione.
test_video_stabilization_jca
Verifica che il video stabilizzato acquisito utilizzando l'API JCA ruoti meno del giroscopio. Il JCA deve essere installato sul dispositivo prima del test.
API testate:
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASESandroid.media.CamcorderProfileandroid.media.MediaRecorder
Superato:la rotazione massima dell'angolo sui frame estratti dal video acquisito utilizzando l'API JCA è inferiore al 70% delle rotazioni del giroscopio 4).
Scena di test basata su diffusore
scene5
scene5 richiede una scena grigia illuminata in modo uniforme. Questo risultato si ottiene grazie a un diffusore posizionato sopra l'obiettivo della fotocamera. Ti consigliamo il seguente diffusore:
http://www.edmundoptics.com/optics/windows-diffusers/optical-diffusers/opal-diffusing-glass/46168/.
Per preparare la scena, collega un diffusore davanti alla fotocamera e puntala verso una sorgente di illuminazione di circa 2000 lux. Le immagini acquisite per scene5 richiedono un'illuminazione diffusa senza caratteristiche evidenti. Di seguito è riportata un'immagine di esempio:
Figura 157. Esempio di acquisizione di scene5.
Poiché per questa scena non sono necessari tablet o controller, i test utilizzano il testbed TEST_BED_MANUAL. Per un esempio, consulta
File config.yml per i test manuali.
Il file config.yml predefinito non include TEST_BED_MANUAL, ma puoi modificarlo per includerne uno.
test_lens_shading_and_color_uniformity
Verifica che la correzione dell'ombreggiatura dell'obiettivo sia applicata correttamente e che il colore di una scena uniforme monocromatica sia distribuito in modo uniforme. Esegue questo test su un frame YUV con 3A automatico. L'ombreggiatura dell'obiettivo viene valutata in base al canale Y. Misura il valore y medio per ogni blocco di campioni specificato e determina l'esito positivo o negativo confrontandolo con il valore y centrale. Il test di uniformità del colore viene valutato nello spazio rosso-verde e blu-verde.
API testate:
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODEandroid.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
Superato:al raggio specificato dell'immagine, la varianza del valore rosso-verde e blu-verde deve essere inferiore al 20% per superare il test.
Meccanismi di errore:
- Vignettatura eccessiva nelle immagini
- Artefatti con bordi neri nelle immagini
Figura 158. test_lens_shading_and_color_uniformity_y_plane.
Figura 159. test_lens_shading_and_color_uniformity_color_uniformity.
Figura 160. test_lens_shading_and_color_uniformity_lens_shading_result.
Scena di test basata su tablet con ampia gamma cromatica
scene_wide_gamut
scene_wide_gamut è una cornice rettangolare divisa in quattro quadranti uguali,
ciascuno di un colore diverso. Ciò richiede che il tablet visualizzi il grafico in un'ampia gamma e che il DUT acquisisca una fotografia dello schermo con un'ampia gamma.
Questi test verificano che l'immagine acquisita rispetti il profilo colore e la gamma di colori corretti.
test_display_p3
Testa l'acquisizione Display P3 in JPEG utilizzando l'API ColorSpaceProfiles. Verifica che il JPEG acquisito abbia un profilo ICC appropriato nell'intestazione e che l'immagine contenga una determinata percentuale di colori al di fuori della gamma sRGB.
API testate:
android.hardware.camera2.params.ColorSpaceProfilesandroid.hardware.camera2.params.SessionConfiguration#setColorSpace
Superato:il JPEG contiene un profilo ICC Display P3 e più dell'1% di colori al di fuori della gamma sRGB.
Figura 161. Esempio di test_display_p3.