Questa pagina fornisce un elenco completo dei test della suite di test delle immagini della fotocamera (ITS), che fa parte di Android Compatibility Test Suite (CTS) Verifier. I test ITS sono test funzionali, il che significa che non misurano la qualità dell'immagine, ma che tutte le funzioni della videocamera pubblicizzate funzionano come previsto. Questo documento consente a sviluppatori e tester di comprendere la funzione dei singoli test e come eseguire il debug degli errori di test.
Test ITS della fotocamera 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 controllare i test aggiunti a un livello API specifico che
testano le esperienze utente negative per le funzionalità nei livelli API inferiori. ITS
utilizza ro.vendor.api_level
per controllare i test delle funzionalità aggiunte a 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 nel seguente modo:
scene0
: acquisisci metadati, jitter, giroscopio, vibrazionescene1
: esposizione, sensibilità, compensazione del valore di esposizione (EV), YUV rispetto a JPEG e RAWscene2
: rilevamento dei volti, test che richiedono scene a coloriscene3
: miglioramento dei bordi, movimento dell'obiettivoscene4
: proporzioni, ritaglio, campo visivoscene5
: ombreggiatura dell'obiettivoscene6
: Zoomscene7
: sensore multicamerascene8
: misurazione dell'esposizione automatica (AE) e del bilanciamento del bianco automatico (AWB) della regionescene9
: compressione JPEGscene_extensions
: estensioni della videocamerascene_tele
: passaggio al teleobiettivoscene_flash
: flash automatico, frame rate minimoscene_video
: cali di framesensor_fusion
: offset di sincronizzazione della videocamera e del giroscopiofeature_combination
: combinazioni di funzionalitàscene_ip
: parità di immagini tra l'app fotocamera predefinita e l'app fotocamera Jetpack (JCA)
Consulta le singole sezioni per una descrizione di ogni scena.
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_TIMESTAMP
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
Superato:c'è un delta di almeno 30 ms tra i frame.
Nella figura seguente, nota il piccolo intervallo dell'asse Y. Il jitter è in realtà piccolo in questo grafico.
Figura 1. Grafico test_jitter.
test_metadata
Verifica la validità delle voci di metadati esaminando i risultati
dell'acquisizione e gli oggetti delle caratteristiche della videocamera. Questo test utilizza
valori di esposizione e guadagno auto_capture_request
perché i contenuti dell'immagine non sono
importanti.
API testate:
android.hardware.camera2.CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL
android.hardware.camera2.CameraCharacteristics#SCALER_CROPPING_TYPE
android.hardware.camera2.CameraCharacteristics#SENSOR_BLACK_LEVEL_PATTERN
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
android.hardware.camera2.CaptureResult#SENSOR_ROLLING_SHUTTER_SKEW
Superato:i tag a livello di hardware rollingShutterSkew
, frameDuration
,
timestampSource
, croppingType
, blackLevelPattern
, pixel_pitch
,
il campo visivo e la distanza iperfocale sono presenti e hanno valori validi.
test_request_capture_match
Test che verifica che il dispositivo scriva i valori di esposizione e guadagno corretti leggendo i metadati di acquisizione.
API testate:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_EXPOSURE_TIME_RANGE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
android.hardware.camera2.CaptureResult#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureResult#SENSOR_SENSITIVITY
Superato:i valori dei metadati della richiesta e dell'acquisizione corrispondono in tutte le inquadrature.
test_sensor_events
Per i dispositivi che pubblicizzano 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 il dispositivo non è in modalità standby.
API testate:
Superato:vengono ricevuti gli eventi per ogni sensore.
test_solid_color_test_pattern
Test che verificano che i pattern di test a tinta unita vengano generati correttamente per la disattivazione della videocamera. Se la disattivazione dell'audio della videocamera è supportata, devono essere supportati i pattern di test a tinta unita. Se la disattivazione dell'audio della videocamera non è supportata, i pattern di test a tinta unita vengono testati solo se la funzionalità è pubblicizzata.
Se le immagini non elaborate sono supportate, viene testata anche l'assegnazione dei colori. I colori testati sono nero, bianco, rosso, blu e verde. Per le videocamere che non supportano le immagini RAW, viene testato solo il nero.
API testate:
android.hardware.camera2.CameraCharacteristic#SENSOR_AVAILABLE_TEST_PATTERN_MODES
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_DATA
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
Superato:i pattern di test solidi supportati hanno il colore corretto e la varianza nell'immagine è bassa.
test_test_pattern
Esegue il test del parametro android.sensor.testPatternMode
per
acquisire i fotogrammi per ogni pattern di test valido e verifica che i fotogrammi
vengano generati correttamente per i colori pieni e le barre dei colori. 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 dei colori.
API testate:
android.hardware.camera2.CameraCharacteristic#SENSOR_AVAILABLE_TEST_PATTERN_MODES
android.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 grezzo a YUV con la mappatura dei toni lineare. Questo test
richiede android.sensor.testPatternMode = 2
(COLOR_BARS
) per generare
un pattern di immagine 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 immagine ideale (si basa su
test_test_patterns
).
API testate:
android.hardware.camera2.CaptureRequest#DISTORTION_CORRECTION_MODE
android.hardware.camera2.CaptureRequest#SENSOR_TEST_PATTERN_MODE
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Superato:i formati YUV e RAW sono simili tra loro.
Figura 3. Esempio non elaborato di test_tonemap_curve.
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.
API testate:
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
android.hardware.Sensor
android.hardware.SensorEvent
android.hardware.Sensor#TYPE_ACCELEROMETER
android.hardware.Sensor#TYPE_GYROSCOPE
Passaggio:i timestamp del movimento si trovano tra i timestamp delle due immagini.
test_vibration_restriction
Verifica se la vibrazione del dispositivo funziona come previsto.
API testate:
android.hardware.Sensor
android.hardware.SensorEvent
android.hardware.Sensor#TYPE_ACCELEROMETER
android.os.Vibrator
android.hardware.camera2.CameraDevice#setCameraAudioRestriction
Superato:il dispositivo non vibra quando l'audio della videocamera viene disattivato dall'API di limitazione.
scene1_1
scene1
è un grafico grigio. Il grafico grigio deve coprire il 30% centrale del campo visivo della videocamera. Il grafico grigio dovrebbe mettere alla prova moderatamente 3A (AE,
AWB e AF), poiché la regione centrale non ha funzionalità.
Tuttavia, la richiesta di acquisizione specifica l'intera scena, che include
funzionalità sufficienti per la convergenza 3A.
Le videocamere RFoV possono essere testate nel banco di prova WFoV o RFoV. Se una videocamera RFoV viene testata nel banco di prova WFoV, il grafico viene scalato di 2/3 per specificare alcuni limiti per il grafico grigio nel FoV per facilitare la convergenza 3A. Per descrizioni più dettagliate dei banchi di prova della videocamera, vedi Camera ITS-in-a-box.
Figura 5. Grafico della scena 1 a grandezza naturale (a sinistra), grafico in scala 2/3 (a destra).
test_ae_precapture_trigger
Esegue il test della macchina a stati AE quando si utilizza il trigger di preacquisizione. Acquisisce cinque richieste manuali con AE disattivato. L'ultima richiesta ha un trigger di acquisizione preliminare AE, che deve essere ignorato perché AE è disattivato.
API testate:
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
Passaggio:AE converge.
test_auto_vs_manual
I test che hanno acquisito scatti automatici e manuali hanno lo stesso aspetto.
API testate:
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
android.hardware.camera2.CaptureResult#TONEMAP_CURVE
android.hardware.camera2.CaptureResult#TONEMAP_MODE
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
Test che verificano che il dispositivo produca immagini in bianco e nero complete. Acquisisce due scatti, il primo con un guadagno estremamente basso e un'esposizione breve, che produce una foto nera, e il secondo con un guadagno estremamente elevato e un'esposizione lunga, che produce una foto bianca.
API testate:
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Passaggio: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 bianco.
Figura 11. test_black_white, esempio di grafico delle medie.
test_burst_capture
Verifica che l'intera pipeline di acquisizione possa tenere il passo con la velocità di acquisizione a grandezza naturale e con il tempo della CPU.
API testate:
Passaggio:acquisisce una sequenza di immagini a grandezza naturale, verifica la presenza di frame persi e la luminosità dell'immagine.
test_burst_sameness_manual
Scatta 5 raffiche di 50 immagini con l'impostazione di acquisizione manuale e verifica che siano tutte identiche. Utilizza questo test per identificare se ci sono frame sporadici che vengono elaborati in modo diverso o presentano artefatti.
API testate:
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR
android.hardware.camera2.CameraMetadata#SYNC_MAX_LATENCY_PER_FRAME_CONTROL
Superato:le immagini sono identiche visivamente e nei valori RGB.
Errore:mostra un picco o un calo del grafico della media RGB all'inizio di ogni raffica
- La tolleranza è del 3% per
first_API_level
< 30 - La tolleranza è del 2% per
first_API_level
>= 30
Figura 12. Esempio di media manuale di test_burst_sameness.
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_SIZE
android.hardware.camera2.CaptureResult#SCALER_CROP_REGION
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
Passaggio:le immagini YUV vengono ritagliate al centro, ma non le immagini RAW.
Figura 14. test_crop_region_raw comp raw crop example.
Figura 15. test_crop_region_raw comp raw full example.
Figura 16. Esempio di ritaglio YUV test_crop_region_raw.
Figura 17. Esempio completo di test_crop_region_raw YUV.
test_crop_regions
Verifica che le regioni di ritaglio funzionino. Prende un'immagine completa e crea patch di cinque regioni diverse (angoli e centro). Scatta foto con il ritaglio impostato per le cinque regioni. Confronta i valori dell'immagine patch e ritagliata.
API testate:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
Superato:l'immagine della regione ritagliata corrisponde alla patch che corrisponde all'immagine ritagliata.
test_ev_compensation
Verifica che la compensazione del valore di esposizione (EV) sia applicata. 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 controlla la luminosità misurata rispetto a quella prevista. I valori previsti vengono calcolati a partire dalla luminosità dell'immagine senza compensazione dell'esposizione applicata e il valore previsto si satura se i valori calcolati superano l'intervallo di valori dell'immagine effettiva. Il test non riesce se i valori previsti e i valori misurati non corrispondono o se le immagini sono sovraesposte entro cinque passaggi.
API testate:
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_COMPENSATION_STEP
android.hardware.camera2.CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
android.hardware.camera2.CaptureResult#TONEMAP_CURVE
android.hardware.camera2.CaptureResult#TONEMAP_MODE
Passaggio di sezione di base: le immagini mostrano un'esposizione crescente senza sovraesposizione in cinque passaggi.
Figura 18. test_ev_compensation_basic.
Passaggio della sezione avanzata:acquisisce un aumento della luminanza all'aumentare dell'impostazione di compensazione dell'esposizione. 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
Test che garantiscono un'esposizione costante al variare di ISO e tempo di esposizione. Scatta
una serie di scatti con ISO e tempo di esposizione scelti in modo che si bilancino 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 campione 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_TIME
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Superato:le immagini hanno la stessa luminosità, ma diventano più rumorose con ISO più elevati. 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 discostarsi dai valori bassi del moltiplicatore di guadagno.
Figura 20. test_exposure_plot_means.
Figura 21. test_exposure_mult=1.00.
Figura 22. test_exposure_mult=64.00.
test_latching
Test che impostano (esposizione e guadagno) il blocco sul frame destro per le videocamere 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. Verifica che le immagini
abbiano le proprietà previste.
API testate:
Superato:le immagini [2, 3, 6, 8, 10, 12, 13] hanno una sensibilità ISO o un'esposizione maggiori e mostrano valori RGB medi più elevati nel grafico della figura seguente.
Figura 23.Esempio di media del 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
Test che l'elaborazione del dispositivo può essere invertita in pixel lineari. Acquisisce una sequenza di scatti con il dispositivo puntato su un bersaglio uniforme.
API testate:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CaptureRequest#BLACK_LEVEL_LOCK
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Superato:i valori R, G e B devono aumentare linearmente con l'aumento della sensibilità.
Figura 37.Esempio di grafico test_linearità.
test_locked_burst
Esegue il test del blocco 3A e della raffica 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 controlla la coerenza dell'immagine YUV mentre il controllo del frame rate è in CTS.
API testate:
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
Superato:le acquisizioni sembrano coerenti.
Figura 38. Esempio di frame0 di test_locked_burst.
Figura 39. Esempio di frame1 di test_locked_burst.
Figura 40. Esempio di frame2 di test_locked_burst.
scene1_2
scene 1_2
è una copia funzionalmente identica di scene 1_1
, che implementa una
struttura di sottoscene per alleviare la durata estesa di scene 1
.
test_param_color_correction
Verifica che i parametri android.colorCorrection.*
vengano applicati quando vengono impostati.
Scatta foto con valori di trasformazione e guadagno diversi e verifica che abbiano un aspetto
corrispondentemente diverso. La trasformazione e i guadagni vengono scelti in modo che l'output
diventi sempre più rosso o blu. Utilizza una mappatura dei toni lineare.
La mappatura della tonalità è una tecnica utilizzata nell'elaborazione delle immagini per mappare un insieme di colori a un altro per approssimare l'aspetto delle immagini ad alta gamma dinamica in un mezzo con una gamma dinamica più limitata.
API testate:
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
Passaggio:i valori di R e B vengono aumentati in base alla trasformazione.
Figura 41. Esempio di media del grafico test_param_color_correction.
Nelle figure seguenti, l'asse x rappresenta le richieste di acquisizione: 0 = unità, 1 = potenziamento del rosso e 2 = potenziamento del blu.
Figura 42. Esempio di test_param_color_correction req=0 unity.
Figura 43. Esempio di test_param_color_correctness req=1 red boost.
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 ovvio se il flash è scattato
o meno, e utilizza una mappatura tonale lineare. Controlla il centro con l'immagine del riquadro per vedere
se è presente un gradiente ampio creato per verificare se il flash è stato attivato.
API testate:
Pass:il centro dell'immagine della tessera presenta un'ampia sfumatura, 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 è impostato. Acquisisce immagini con la fotocamera poco illuminata. Utilizza un guadagno analogico elevato per
contribuire a garantire che l'immagine acquisita sia rumorosa. Acquisisce tre immagini per NR disattivato, veloce e di alta qualità. Acquisisce anche un'immagine con guadagno basso e NR disattivato e utilizza
la varianza di questa come base di riferimento. Maggiore è il rapporto segnale/rumore (SNR),
migliore è la qualità dell'immagine.
API testate:
Pass: il rapporto segnale/rumore varia in base alle diverse modalità di riduzione del rumore e si comporta in modo simile al seguente grafico:
Figura 49. Grafico SNR di 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 con guadagno elevato 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_MODE
android.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
Passaggio:le modalità di ombreggiatura vengono cambiate e le mappe di ombreggiatura dell'obiettivo vengono modificate come previsto.
Figura 55. Mappa di ombreggiatura dell'obiettivo test_param_shading_mode, esempio di ciclo 0 della modalità 0.
Figura 56: mappa dell'ombreggiatura dell'obiettivo test_param_shading_mode, esempio di ciclo 0 della modalità 1.
Figura 57: mappa di ombreggiatura dell'obiettivo test_param_shading_mode, esempio di ciclo 0 della modalità 2.
test_param_tonemap_mode
Verifica che il parametro android.tonemap.mode
sia applicato. Applica curve di
mappatura dei toni diverse a ogni canale R, G, B e verifica che le immagini di output vengano
modificate come previsto. Questo test è composto da due test, test1
e test2
.
API testate:
android.hardware.camera2.CameraMetadata#TONEMAP_MODE_CONTRAST_MODE
android.hardware.camera2.CameraMetadata#TONEMAP_MODE_FAST
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Pass:
test1
: Entrambe le immagini hanno una mappatura tonale lineare, man=1
ha una pendenza maggiore. 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à grezza del post. Acquisisce un insieme di immagini RAW e YUV con sensibilità diversa, pubblica la combinazione di aumento della sensibilità RAW e verifica se la media dei pixel di output corrisponde alle impostazioni della richiesta.
API testate:
android.hardware.camera2.CameraCharacteristics#CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
android.hardware.camera2.CaptureRequest#CONTROL_POST_RAW_SENSITIVITY_BOOST
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Passaggio:le immagini non elaborate diventano più scure man mano che l'incremento aumenta, mentre la luminosità delle immagini YUV rimane costante.
Figura 60. test_post_raw_sensitivity_boost raw s=3583 boost=0100 example.
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.
Il Figura 66 test_post_raw_sensitivity_boost raw plot significa esempio.
Figura 67. test_post_raw_sensitivity_boost YUV s=0112 boost=3199 example.
Figura 68. test_post_raw_sensitivity_boost YUV s=0448 boost=0800 example.
Figura 69. test_post_raw_sensitivity_boost YUV s=0896 boost=0400 example.
Figura 70. Esempio di test_post_raw_sensitivity_boost YUV s=1792 boost=0200.
Figura 71. test_post_raw_sensitivity_boost YUV s=3585 boost=0100 example.
Figura 72. test_post_raw_sensitivity_boost_yuv_plot_means
test_raw_exposure
Acquisisce un insieme di immagini non elaborate con tempi di esposizione crescenti e misura i valori dei pixel.
API testate:
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
Superato: 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⁰ è 1 ms, 10¹ è 10 ms e 10⁻¹ è 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 ISO test_raw_exposure=286.
Figura 77. Esempio di test_raw_exposure ISO=363.
Figura 78. Esempio di test_raw_exposure ISO=440.
test_reprocess_noise_reduction
Test a cui viene applicato android.noiseReduction.mode
per le richieste di rielaborazione.
Acquisisce immagini rielaborate con la fotocamera poco illuminata. Utilizza un guadagno analogico elevato
per verificare che l'immagine acquisita sia rumorosa. Acquisisce tre immagini rielaborate,
per NR disattivato, veloce e di alta qualità. Acquisisce un'immagine rielaborata con guadagno basso
e NR disattivato e utilizza la varianza di questa immagine come base di riferimento.
API testate:
Pass: FAST >= OFF, HQ >= FAST e HQ >> OFF.
Figura 79. Esempio tipico di grafico della modalità SNR rispetto alla modalità NR.
test_tonemap_sequence
Esegue il test di una sequenza di scatti con diverse curve di mappatura dei toni. Acquisisce tre scatti manuali con una mappatura dei toni lineare. Acquisisce tre scatti manuali con la mappatura dei toni predefinita. Calcola il delta tra ogni coppia di frame consecutivi.
API testate:
Superato:sono presenti tre fotogrammi identici seguiti da un diverso insieme di tre fotogrammi identici.
Figura 80. test_tonemap_sequence i=0 example.
Figura 81. Esempio di test_tonemap_sequence i=1.
Figura 82. Esempio di test_tonemap_sequence i=2.
Figura 83. test_tonemap_sequence i=3 example.
Figura 84. test_tonemap_sequence i=4 example.
Figura 85. Esempio di test_tonemap_sequence i=5.
test_yuv_jpeg_all
Test che verificano il funzionamento di tutte le dimensioni e i formati segnalati per l'acquisizione delle immagini. Utilizza una richiesta manuale con una mappatura tonale 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_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
android.graphics.ImageFormat#JPEG
Superato: tutti i centri immagine hanno una differenza quadratica media (RMS) massima (valore di un segnale) nelle immagini convertite in RGB con il 3% dell'immagine YUV con la risoluzione più alta.
Figura 86. Esempio test_yuv_jpeg_all.
test_yuv_plus_dng
Test che verificano il funzionamento delle dimensioni e dei formati segnalati per l'acquisizione delle immagini.
API testate:
Superato:il test viene completato e restituisce le immagini richieste.
Figura 87. Esempio test_yuv_plus_dng.
scene1_3
scene 1_3
è una copia funzionalmente identica di scene 1_1
, che implementa una
struttura di sottoscene per alleviare la durata estesa di scene 1
.
test_capture_result
Test che restituiscono 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_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AE_REGIONS
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AF_REGIONS
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AWB_REGIONS
android.hardware.camera2.CaptureRequest#CONTROL_MODE
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
android.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Superato:i metadati sono validi per tutte le acquisizioni e le impostazioni manuali non vengono trasferite 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 DNG raw siano corretti. Il grafico mostra la varianza misurata di una patch centrale della scheda grigia negli scatti raw acquisiti in un intervallo di sensibilità e confronta questi valori con la varianza prevista a ogni sensibilità dal modello di rumore DNG nell'HAL della fotocamera (in base ai parametri O e 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_RANGE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
android.hardware.camera2.CaptureResult#SENSOR_NOISE_PROFILE
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Superato:i parametri del modello DNG raw sono corretti. I valori RGB previsti corrispondono a quelli 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 corrispondano.
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 una serie di immagini grezze con guadagni crescenti e misura il rumore. Acquisisce solo file RAW, in una raffica.
API testate:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
Passaggio:ogni scatto è più rumoroso del precedente, poiché il guadagno aumenta.
Utilizza la varianza della cella della griglia delle statistiche del centro.
Figura 92. test_raw_burst_sensitivity_variance.
test_raw_sensitivity
Acquisisce una serie di immagini grezze con sensibilità crescenti e misura il rumore (varianza) nel 10% centrale dell'immagine. Test che dimostrano che ogni scatto è più rumoroso del precedente.
API testate:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
Passaggio:la varianza aumenta a ogni tiro.
Figura 93. test_raw_sensitivity_variance.
test_yuv_plus_jpeg
Test che acquisiscono un singolo frame come output YUV e JPEG. Utilizza una richiesta manuale con una mappatura tonale 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_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
android.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
Esegue test di acquisizione di un singolo frame come output sia raw (raw a 10 bit e 12 bit) sia YUV, se supportato. Utilizza una richiesta manuale con mappatura tonale lineare, quindi i formati raw e
YUV dovrebbero essere identici. Confronta i valori RGB centrali del 10% delle immagini convertite in RGB. Logandroid.shading.mode
.
API testate:
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
android.hardware.camera2.CaptureRequest#CONTROL_MODE
android.hardware.camera2.CaptureRequest#SHADING_MODE
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
android.hardware.graphics.ImageFormat#RAW10
android.hardware.graphics.ImageFormat#RAW12
Superato:le immagini YUV e grezze 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 ISO più elevata e
livelli di rumore maggiori.
API testate:
android.hardware.camera2.CameraMetadata#CONTROL_AE_PRIORITY_MODE_SENSOR_SENSITIVITY_PRIORITY
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
android.hardware.camera2.CaptureResult#SENSOR_SENSITIVITY
android.hardware.camera2.CaptureRequest#CONTROL_AE_PRIORITY_MODE
android.hardware.camera2.CaptureResult#CONTROL_AE_PRIORITY_MODE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureResult#CONTROL_AE_MODE
android.hardware.camera2.CameraMetadata#CONTROL_AE_MODE_ON
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_PRIORITY_MODES
Superato:un ISO più elevato comporta un aumento dei livelli di rumore.
Criteri di ignoramento dei test
Il test test_sensitivity_priority.py
viene ignorato 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 fa pubblicità
CONTROL_AE_PRIORITY_MODE_SENSOR_SENSITIVITY_PRIORITY
inCONTROL_AE_AVAILABLE_PRIORITY_MODES
.
test_exposure_time_priority
Test CONTROL_AE_PRIORITY_MODE_SENSOR_EXPOSURE_TIME_PRIORITY
con vari tempi di esposizione, verificando la luminosità stabile nell'intervallo
in cui la sensibilità ISO può compensare.
API testate:
android.hardware.camera2.CameraMetadata#CONTROL_AE_PRIORITY_MODE_SENSOR_EXPOSURE_TIME_PRIORITY
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureResult#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureRequest#CONTROL_AE_PRIORITY_MODE
android.hardware.camera2.CaptureResult#CONTROL_AE_PRIORITY_MODE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CaptureResult#SENSOR_SENSITIVITY
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureResult#CONTROL_AE_MODE
android.hardware.camera2.CameraMetadata#CONTROL_AE_MODE_ON
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_PRIORITY_MODES
Superato:la luminosità è stabile (entro la tolleranza) per tutti i tempi di esposizione se l'ISO rientra nel suo intervallo di compensazione.
Criteri di ignoramento dei test
Il test test_exposure_time_priority
viene ignorato 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 fa pubblicità
CONTROL_AE_PRIORITY_MODE_SENSOR_EXPOSURE_TIME_PRIORITY
inCONTROL_AE_AVAILABLE_PRIORITY_MODES
.
scene2_a
scene2_a
ha tre volti con uno sfondo grigio e abiti neutri. I volti
sono scelti in modo da avere un'ampia gamma di tonalità della pelle. Il grafico deve avere l'orientamento
corretto per il funzionamento ottimale del rilevamento del volto.
Figura 98. Esempio di scene2_a.
test_autoframing
Esegue il test del comportamento di inquadratura automatica del dispositivo videocamera. Esegue uno zoom elevato in modo che
nessun volto 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_AVAILABLE
android.hardware.camera2.CaptureRequest#CONTROL_AUTOFRAMING
android.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMING
android.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMING_STATE
Superato:tutti e tre i volti vengono rilevati.
test_display_p3
Test
Display P3
Acquisizione in formato 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.ColorSpaceProfiles
android.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 verifica che vengano 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_EFFECTS
android.hardware.camera2.CaptureRequest#CONTROL_EFFECT_MODE
Passaggio:acquisisce l'immagine della scena con effetti OFF
e un'immagine monocromatica
con effetti impostati su MONO
.
Figura 99. test_effects_MONO.
test_exposure_keys_consistent
Questo test confronta la luminanza 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 nel
CaptureResult
dell'acquisizione con AE attivata.
API testate:
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
android.hardware.camera2.CaptureRequest#CONTROL_POST_RAW_SENSITIVITY_BOOST
android.hardware.camera2.CaptureResult#SENSOR_SENSITIVITY
android.hardware.camera2.CaptureResult#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureResult#SENSOR_FRAME_DURATION
android.hardware.camera2.CaptureResult#CONTROL_POST_RAW_SENSITIVITY_BOOST
Superato:la differenza relativa di luminanza 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_MAP
android.hardware.camera2.params.StreamConfigurationMap#getOutputSizes()
android.hardware.camera2.CameraCaptureSession#captureBurst()
Superata:tutte le combinazioni sono state acquisite correttamente.
test_num_faces
Testa il rilevamento facciale.
API testate:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: trova tre volti.
Figura 100. Esempio di modalità di rilevamento dei volti test_num_faces 1.
test_reprocess_uv_swap
Test che dimostrano che il rielaborazione YUV non scambia 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 dell'output della rielaborazione della cattura comporta un aumento della SAD, si presume che l'output abbia i piani U e V corretti.
API testate:
android.hardware.camera2.CameraDevice#createCaptureSession
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_YUV_REPROCESSING
android.hardware.camera2.CaptureRequest#EDGE_MODE
android.hardware.camera2.CaptureResult#NOISE_REDUCTION_MODE
Pass:i piani U e V non vengono scambiati.
Figura 101. Esempio di test_reprocess_uv_swap.
scene2_b
test_preview_num_faces
Testa il rilevamento dei volti in anteprima con una maggiore diversità di tonalità della pelle nelle scene con volti.
API testate:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: trova tre volti con punti di riferimento del viso nei riquadri di selezione del viso.
Figura 102. Esempio della modalità di rilevamento dei volti 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 che non superi una risoluzione di 1920x1440.
Imposta jpeg.quality
su 100 e acquisisce una richiesta a doppia superficie. Converte entrambe
le immagini in array RGB e calcola la differenza quadratica media (RMS) tridimensionale
tra le due immagini.
Inoltre, questo test verifica che gli output YUV per tutti i casi d'uso di streaming supportati siano ragionevolmente simili all'YUV con il caso d'uso STILL_CAPTURE
.
API testate:
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASES
android.hardware.camera2.CaptureRequest#JPEG_QUALITY
android.graphics.ImageFormat#JPEG
Superato:le immagini YUV e JPEG per il caso d'uso STILL_CAPTURE
presentano una differenza RMS (valore quadratico medio di un segnale) inferiore al 3%; le immagini YUV per tutti i casi d'uso supportati presentano una differenza RMS inferiore al 10% rispetto alle immagini YUV con il caso d'uso STILL_CAPTURE
.
scene2_c
test_num_faces
Testa il rilevamento dei volti con una maggiore diversità di tonalità della pelle nelle scene con volti.
API testate:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: trova tre volti.
Figura 103. Esempio di modalità di rilevamento dei volti test_num_faces.
test_jpeg_capture_perf_class
Esegue il test della latenza di acquisizione JPEG per la classe di prestazioni S come specificato nella sezione 2.2.7.2 Fotocamera nel CDD.
Superato:DEVE avere una latenza di acquisizione JPEG camera2 < 1000 ms per una risoluzione di 1080p misurata dal test delle prestazioni della videocamera CTS in condizioni di illuminazione ITS (3000 K) per entrambe le fotocamere principali.
test_camera_launch_perf_class
Esegue test sulla latenza di avvio della videocamera per la classe di prestazioni S come specificato nella sezione 2.2.7.2 Videocamera della CDD.
Superato:DEVE avere una latenza di avvio di camera2 (apertura della videocamera al primo frame di anteprima) < 600 ms misurata dal test delle prestazioni della videocamera CTS in condizioni di illuminazione ITS (3000 K) per entrambe le fotocamere principali.
test_default_camera_hdr
Testa 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 videocamera predefinito DEVE essere Ultra HDR per un dispositivo di classe di prestazioni 15.
scene2_d
test_preview_num_faces
Testa il rilevamento dei volti in anteprima con una maggiore diversità di tonalità della pelle nelle scene con volti.
API testate:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: trova tre volti con punti di riferimento del viso nei riquadri di selezione del viso.
scene2_e
test_continuous_picture
50 frame con risoluzione VGA vengono acquisiti con la prima impostazione della richiesta di acquisizione
android.control.afMode = 4 (CONTINUOUS_PICTURE).
API testate:
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
android.hardware.camera2.CaptureResult#CONTROL_AF_STATE
android.hardware.camera2.CaptureResult#CONTROL_AWB_STATE
Passaggio:il sistema 3A si stabilizza entro la fine di un'acquisizione di 50 fotogrammi.
test_num_faces
Testa il rilevamento dei volti con una maggiore diversità di tonalità della pelle nelle scene con volti.
API testate:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Superato: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 rilevamento dei volti con una maggiore diversità di tonalità della pelle nelle scene con volti.
API testate:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: trova tre volti con punti di riferimento del viso nei riquadri di selezione del viso.
Figura 105. Esempio di test_num_faces_fd_mode_1.
scene2_g
scene2_g
ha tre profili con 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 rilevamento dei volti con una maggiore diversità di tonalità della pelle nelle scene con volti.
API testate:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: trova tre volti con punti di riferimento del viso nei riquadri di selezione del viso.
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
hanno 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.
test_edge_enhancement
Verifica che il parametro android.edge.mode
sia applicato correttamente. Acquisisce
immagini non rielaborate per ogni modalità di bordo e restituisce la nitidezza dell'immagine di output e i metadati del risultato di acquisizione. Elabora una richiesta di acquisizione con una determinata modalità
edge, sensibilità, tempo di esposizione, distanza di messa a fuoco e parametro
della superficie di output.
Passaggio:modalità HQ
(2) più nitida della modalità OFF
(0). FAST
(1) più nitida
della modalità OFF
. Modalità HQ
più nitida o uguale alla modalità FAST
.
API testate:
Parametri della videocamera interessati:
EDGE_MODE
Figura 108. Esempio di test_edge_enhancement edge=0.
Figura 109. Esempio di test_edge_enhancement edge=1 (modalità veloce).
Figura 110.Esempio di test_edge_enhancement edge=2 (modalità di alta qualità).
test_flip_mirror
Verifica che l'immagine sia orientata correttamente in base alla sezione 7.5.2 Fotocamera anteriore del CDD.
Le immagini specchiate, capovolte o ruotate possono essere identificate dalla funzionalità a forma di rombo vicino al centro.
Superato:l'immagine non è capovolta, specchiata o ruotata.
Figura 111. 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.Sensor
android.hardware.SensorEvent
android.hardware.Sensor#TYPE_GYROSCOPE
android.hardware.Sensor#TYPE_ROTATION_VECTOR
Pass:
- La deriva del giroscopio è inferiore a 0,01 rad durante il tempo di test.
- La varianza della lettura del giroscopio è inferiore a 1E-7 rad2/s2/Hz durante il tempo di test.
- La deriva del vettore di rotazione è inferiore a 0,01 rad durante il periodo di test.
- (Non ancora obbligatorio) La deriva del giroscopio è inferiore a 1 grado al secondo.
Figura 112. Esempio di deriva del giroscopio test_imu_drift.
Figura 113. Esempio di deriva del vettore di rotazione test_imu_drift.
test_landscape_to_portrait
Verifica se l'override da orizzontale a verticale funziona correttamente per i sensori orientati orizzontalmente.
API testate:
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_ROTATE_AND_CROP_MODES
android.hardware.camera2.CameraCharacteristics#SENSOR_ORIENTATION
android.hardware.camera2.CameraCharacteristics#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 114. Esempio di test_landscape_to_portrait.
test_lens_movement_reporting
Verifica se il flag di movimento dell'obiettivo viene segnalato correttamente. Acquisisce una raffica 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 sposta, causando una diminuzione della nitidezza. La nitidezza si stabilizza quando l'obiettivo raggiunge la posizione finale.
Il flag di movimento dell'obiettivo deve essere impostato in tutti i frame in cui la nitidezza è intermedia rispetto alla nitidezza dei primi frame con l'obiettivo fermo alla distanza focale ottimale e degli ultimi frame in cui l'obiettivo è fermo alla distanza focale minima. Il frame esatto in cui si sposta l'obiettivo non è importante: ciò che conta è che il flag di movimento venga asserito quando l'obiettivo è in movimento.
API testate:
android.hardware.camera2.CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCE
android.hardware.camera2.CaptureResult#LENS_STATE
android.hardware.camera2.CaptureResult#LENS_FOCUS_DISTANCE
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
android.hardware.camera2.CaptureRequest#LENS_FOCUS_DISTANCE
Superato:il flag di movimento dell'obiettivo è True
nel frame con variazione di nitidezza.
Meccanismi di errore:
lens_moving: True
(android.hardware.camera2.CaptureResult#LENS_STATE
= 1) intest_log.DEBUG
viene asserito solo nei frame in cui la nitidezza non cambia.- I frame con
lens_moving: False
(android.hardware.camera2.CaptureResult#LENS_STATE
= 0) intest_log.DEBUG
presentano 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 contorni funzionano correttamente. Elabora una richiesta di acquisizione con una determinata modalità edge di rielaborazione e confronta diverse modalità di acquisizione con le modalità edge di rielaborazione disattivate.
API testate:
android.hardware.camera2.CaptureRequest#EDGE_MODE
android.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 115. 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 116. Esempio di scene4.
test_30_60fps_preview_fov_match
Test che dimostrano che i video di anteprima a 30 FPS e 60 FPS hanno 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 fotogramma rappresentativo e analizzato per verificare che le modifiche al 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_RANGE
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureResult#LENS_DISTORTION
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
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 FPS ha dimensioni molto diverse rispetto a quello del video a 60 FPS.
- Il cerchio nell'immagine acquisita è distorto dalla pipeline di elaborazione.
- Il cerchio nell'immagine acquisita viene ritagliato a causa di una richiesta di acquisizione con proporzioni estreme che riducono l'altezza o la larghezza dell'immagine.
- Il cerchio nell'immagine acquisita ha un riflesso al centro e non appare completamente riempito.
test_aspect_ratio_and_crop
Verifica se le immagini sono distorte o ritagliate in modo imprevisto nella pipeline di elaborazione 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_DISTORTION
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
Superato:le immagini non vengono allungate, il centro delle immagini non differisce di più del 3% e il campo visivo massimo possibile viene mantenuto.
Meccanismi di errore:
- La videocamera 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 risoluzione inferiore viene ritagliata due volte nella pipeline di elaborazione delle 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 riducono l'altezza o la larghezza dell'immagine.
- Il cerchio nell'immagine acquisita ha un riflesso al centro e non appare completamente riempito.
test_multi_camera_alignment
Esegue il test dei parametri di calibrazione della videocamera relativi al posizionamento della videocamera per sistemi multi-camera. Utilizzando le fotocamere secondarie fisiche multi-camera, scatta una foto con una delle fotocamere fisiche. Trova il centro del cerchio. Proietta il centro del cerchio sulle coordinate mondiali di ogni videocamera. Confronta la differenza tra i centri dei cerchi delle videocamere in coordinate mondiali. Esegue la riproiezione della coordinata mondiale in coordinate pixel e la confronta con gli originali come controllo di validità. Confronta le dimensioni dei cerchi per verificare se le lunghezze focali delle videocamere sono diverse.
API testate:
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
android.hardware.camera2.CameraCharacteristics#LENS_DISTORTION
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
android.hardware.camera2.CameraCharacteristics#LENS_INTRINSIC_CALIBRATION
android.hardware.camera2.CameraCharacteristics#LENS_POSE_ROTATION
android.hardware.camera2.CameraCharacteristics#LENS_POSE_TRANSLATION
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
android.hardware.camera2.CaptureRequest#DISTORTION_CORRECTION_MODE
Superato:i centri e le dimensioni dei cerchi sono come previsto 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_TRANSLATION
eLENS_POSE_ROTATION
sono valori di progettazione e non dati di calibrazione effettivi.- Il sistema di fotocamere non è appropriato per la configurazione del test, ad esempio, testare un sistema di fotocamere grandangolare e ultrawide con il banco di prova RFoV. Per ulteriori informazioni, consulta le Domande frequenti su ITS-in-a-box per le videocamere, domanda 1.
test_preview_aspect_ratio_and_crop
Analogamente al test test_aspect_ratio_and_crop
per le acquisizioni statiche, controlla i formati di anteprima supportati per verificare che i fotogrammi 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 del frame e che le dimensioni del cerchio non cambino per un formato costante o con risoluzioni diverse (controllo del campo visivo).
API testate:
android.hardware.camera2.CaptureResult#LENS_DISTORTION
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
Superato:le immagini non vengono allungate, il centro delle immagini non differisce di più del 3% e il campo visivo massimo possibile viene mantenuto.
test_preview_stabilization_fov
Controlla le dimensioni dell'anteprima supportate per assicurarsi che il campo visivo venga ritagliato
in modo appropriato. Il test acquisisce due video, uno con la stabilizzazione dell'anteprima
ON
e l'altro senza OFF
. Un frame rappresentativo viene
selezionato da ogni video e analizzato per verificare che le modifiche al campo visivo nei
due video rientrino nelle specifiche.
API testate:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
Superato:le proporzioni del cerchio rimangono pressoché costanti, la posizione del centro del cerchio rimane stabile e le dimensioni del cerchio non cambiano di oltre il 20%.
test_video_aspect_ratio_and_crop
Mostra 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 risoluzioni diverse (controllo del campo visivo).
API testate:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.hardware.camera2.CaptureResult#LENS_DISTORTION
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
android.media.MediaRecorder
android.media.CamcorderProfile
Superato:i fotogrammi video non vengono allungati, il centro dei fotogrammi non differisce di più del 3% e il campo visivo massimo possibile viene mantenuto.
scene5
scene5
richiede una scena grigia illuminata in modo uniforme. Ciò si ottiene tramite un diffusore
posizionato sopra l'obiettivo della videocamera. Ti consigliamo il seguente diffusore:
www.edmundoptics.com/optics/window-diffusers/optical-diffusers/opal-diffusing-glass/46168
.
Per preparare la scena, collega un diffusore davanti alla videocamera e punta quest'ultima verso una fonte luminosa di circa 2000 lux. Le immagini acquisite per
scene5
richiedono un'illuminazione diffusa senza caratteristiche evidenti. Di seguito è riportata
un'immagine di esempio:
Figura 117. Esempio di acquisizione di scene5.
test_lens_shading_and_color_uniformity
Verifica che la correzione dell'ombreggiatura dell'obiettivo venga applicata in modo appropriato 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 medio di y per ogni blocco di campioni specificato e determina l'esito positivo o negativo del test confrontandolo con il valore di 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_MODE
android.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.
scene6
scene6
è una griglia di marker ArUco identificabili in modo univoco.
I test in scene6
possono essere sensibili all'allineamento, quindi a partire da
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
Esegue il test del comportamento della funzionalità di zoom nel sensore della videocamera, che produce immagini raw ritagliate.
Con lo scenario d'uso dello stream impostato su
CROPPED_RAW
,
il test esegue due acquisizioni nell'intervallo di zoom, un'immagine raw con campo visivo completo e un'immagine raw ritagliata. Il test converte le immagini in array RGB, ridimensiona l'immagine raw ritagliata a grandezza naturale alle dimensioni riportate da SCALER_RAW_CROP_REGION
e calcola la differenza RMS 3D tra le due immagini.
API testate:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.hardware.camera2.CameraMetadata#SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CaptureResult#SCALER_RAW_CROP_REGION
Superato:la differenza RMS 3D tra l'immagine grezza ritagliata ridimensionata e l'immagine grezza con campo visivo completo è inferiore alla soglia impostata nel test.
test_zoom
Esegue il test del comportamento dello zoom della fotocamera dall'obiettivo ultrawide all'obiettivo grandangolare. Acquisisce acquisizioni nell'intervallo di zoom e controlla se i marcatori ArUco diventano più grandi man mano che la fotocamera esegue lo zoom. Il test verifica anche se la posizione del marcatore centrale cambia in modo prevedibile a ogni acquisizione. La distanza dal centro del marcatore centrale al centro dell'immagine può variare a un tasso costante rispetto al rapporto di zoom fino a un cambio di videocamera fisica oppure può variare in modo monotono verso la posizione dello stesso marcatore dopo un cambio di videocamera fisica. L'app Jetpack Camera (JCA) deve essere installata sul dispositivo prima del test.
API testate:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Superato:le dimensioni relative del marcatore ArUco acquisito sono accurate rispetto al rapporto di zoom richiesto per verificare che la videocamera esegua lo zoom correttamente e la distanza del marcatore 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
Esegue il test del comportamento dello zoom a bassa latenza della videocamera. Acquisisce immagini nell'intervallo di zoom
con android.control.settingsOverride = 1 (SETTINGS_OVERRIDE_ZOOM)
e verifica
se i marcatori nelle immagini di output corrispondono ai rapporti di zoom nei metadati
dell'acquisizione. La stessa sessione di acquisizione della videocamera viene utilizzata per la convergenza 3A e
per scattare foto.
API testate:
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_SETTINGS_OVERRIDES
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CaptureRequest#CONTROL_SETTINGS_OVERRIDE
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CaptureResult#CONTROL_SETTINGS_OVERRIDE
Superato:la dimensione relativa del marcatore acquisito è accurata rispetto ai metadati dei risultati del rapporto di zoom.
test_preview_video_zoom_match
Test che durante la registrazione e lo zoom, l'anteprima video e l'output video visualizzano e registrano lo stesso output. Calcola le dimensioni del marcatore più vicino al centro a diversi rapporti di zoom e verifica se le dimensioni del marcatore aumentano all'aumentare del rapporto di zoom.
API testate:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Superato:le dimensioni relative del marcatore 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
Test che verificano che il rapporto di zoom di ogni frame di anteprima corrisponda ai metadati di acquisizione corrispondenti dall'obiettivo ultrawide all'obiettivo grandangolare. Il test acquisisce i fotogrammi di anteprima nell'intervallo di zoom e trova il marcatore ArUco più vicino al centro. Il test verifica quindi se la posizione del marcatore centrale cambia in modo prevedibile a ogni acquisizione. La distanza dal centro del marcatore centrale al centro dell'immagine può variare a un tasso costante rispetto al rapporto di zoom fino a un cambio di videocamera fisica oppure può variare in modo monotono verso la posizione dello stesso marcatore dopo un cambio di videocamera fisica.
API testate:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Superato:la dimensione relativa del marcatore ArUco selezionato è precisa per il rapporto di zoom segnalato del risultato di acquisizione corrispondente per tutti i frame di anteprima. La distanza relativa del marcatore selezionato dal centro dell'immagine è precisa per il rapporto di zoom segnalato del risultato di acquisizione corrispondente di tutti i frame di anteprima.
Figura 124. test_preview_zoom immagini che mostrano il marcatore selezionato più vicino al centro
test_session_characteristics_zoom
Esegue il test dell'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 sia possibile raggiungere l'intervallo del rapporto di zoom restituito in
CameraDeviceSetup#getSessionCharacteristics
.
API testate:
android.hardware.camera2.CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION
android.hardware.camera2.CameraDevice.CameraDeviceSetup#isSessionConfigurationSupported
android.hardware.camera2.CameraDevice.CameraDeviceSetup#getSessionCharacteristics
Superato:è possibile raggiungere sia il rapporto di zoom minimo che quello 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 si trova un grafico con bordo inclinato
per i controlli della nitidezza. Quattro marker ArUco sono allineati ai quattro angoli esterni
del rettangolo per facilitare l'ottenimento di coordinate precise del frame
rettangolare principale a diversi rapporti di zoom.
Figura 125. scene7.
test_multi_camera_switch
Questo test verifica che durante la registrazione dell'anteprima a rapporti di zoom variabili, il passaggio tra gli obiettivi ultra grandangolare (UW) e grandangolare (W) produca 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 di luminanza rientri nell'intervallo previsto per le immagini degli obiettivi UW e W. Il controllo del bilanciamento del bianco verifica che i rapporti tra rosso e verde e tra blu e 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 magnitudo media del gradiente tra le immagini dell'obiettivo UW e W.
Durante l'esecuzione di questo test, se l'effetto moiré interferisce con i risultati, utilizza un tablet con risoluzione più elevata dall'elenco dei tablet approvati da ITS per la fotocamera.
API testate:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.media.CamcorderProfile
android.media.MediaRecorder
Superato:per superare il test, devono essere superati i controlli AE e AWB. I risultati del controllo AF vengono utilizzati solo a scopo di registrazione. Di seguito sono riportati i criteri per ogni controllo:
- Controllo AE: la variazione di luminanza (valore Y) tra le immagini dell'obiettivo UW e W deve
essere inferiore al 4% per tutte le patch di colore se il dispositivo supporta sia
ae_regions
siaawb_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
dell'obiettivo 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_regions
cheawb_regions
. - Controllo AF: la nitidezza dell'immagine per l'acquisizione con l'obiettivo W deve essere superiore a quella con l'acquisizione UW.
Figura 126. Patch grigia scattata con l'obiettivo ultrawide.
Figura 127. Patch grigia scattata con l'obiettivo W.
scene8
scene8
è una cornice rettangolare divisa in quattro regioni uguali, ognuna contenente
un ritratto scattato con un'esposizione diversa o sovrapposto a una tonalità di colore diversa (tonalità blu, maggiore esposizione, minore esposizione, tonalità gialla).
Quattro marker ArUco sono allineati ai quattro angoli esterni del rettangolo
per ottenere coordinate precise del frame del rettangolo principale.
Figura 128. Esempio di scena8.
test_ae_awb_regions
Verifica che i valori RGB e di luminanza differiscano durante la registrazione dell'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 luminanza superiore di oltre l'1% rispetto al frame che misura la regione con esposizione aumentata. In questo modo viene verificato che le immagini vengano schiarite durante la misurazione di 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 durante la misurazione di una regione gialla (calda) o blu (fredda).
API testate:
android.hardware.camera2.CaptureRequest#CONTROL_AWB_REGIONS
android.hardware.camera2.CaptureRequest#CONTROL_AE_REGIONS
android.hardware.camera2.CameraCharacteristics#CONTROL_MAX_REGIONS_AE
android.hardware.camera2.CameraCharacteristics#CONTROL_MAX_REGIONS_AWB
Superato:entrambi i controlli AE e AWB vengono superati.
Figura 129. Misurazione del frame della regione scura con maggiore esposizione.
Figura 130. Regione più chiara della misurazione del frame 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 riesce, 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 la fase di elaborazione secondaria:
Figura 131. Disallineamento dei marker ArUco.
test_color_correction_mode_cct
Test COLOR_CORRECTION_MODE
con diverse temperature e tonalità di colore, verificando le variazioni dei rapporti RGB
rispetto alla scena di acquisizione, scene8.
API testate:
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
android.hardware.camera2.CaptureResult#COLOR_CORRECTION_MODE
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_COLOR_TEMPERATURE
android.hardware.camera2.CaptureResult#COLOR_CORRECTION_COLOR_TEMPERATURE
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_COLOR_TINT
android.hardware.camera2.CaptureResult#COLOR_CORRECTION_COLOR_TINT
android.hardware.camera2.CameraCharacteristics#COLOR_CORRECTION_COLOR_TEMPERATURE_RANGE
android.hardware.camera2.CameraMetadata#COLOR_CORRECTION_MODE_CCT
android.hardware.camera2.CameraCharacteristics#COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES
Superato:i rapporti RGB mostrano gli aumenti o le diminuzioni previsti rispetto alle temperature e alle tonalità di colore selezionate.
Criteri di ignoramento dei test
Il test test_color_correction_mode_cct
viene ignorato 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 fa pubblicità
COLOR_CORRECTION_MODE_CCT
inCOLOR_CORRECTION_AVAILABLE_ABERRATION_MODES
.
scene9
scene9
è composto da migliaia di cerchi di dimensioni e colori casuali per creare una
scena con una ripetibilità molto bassa per mettere alla prova gli algoritmi di compressione JPEG.
Figura 132. Esempio di scene9.
test_jpeg_high_entropy
Test che verificano il funzionamento della compressione JPEG della fotocamera su scene9
con entropia elevata e
il fattore di qualità JPEG impostato al 100%. Il fattore di zoom viene aumentato per verificare che
la scena visualizzata sul tablet riempia il campo visivo della videocamera.
API testate:
Superato:il file JPEG viene compresso, scritto e letto correttamente dal disco.
test_jpeg_quality
Verifica la qualità della compressione JPEG della fotocamera. Scorre le qualità JPEG tramite
android.jpeg.quality
e verifica che le tabelle di quantizzazione cambino
correttamente.
API testate:
Pass:la matrice di quantizzazione diminuisce con l'aumentare della qualità. (La matrice rappresenta il fattore di divisione.)
Figura 133. Medie della matrice DQT di luma e chroma della fotocamera posteriore di Pixel 4 rispetto alla qualità JPEG.
Figura 134. Esempio di test non riuscito.
scene_video
scene_video
è una scena video composta da quattro cerchi di colori diversi che si muovono avanti e indietro a frame rate diversi su uno sfondo bianco.
Figura 135. Esempio di scene_video.
test_preview_frame_drop
Test che verifica che il frame rate di anteprima richiesto venga mantenuto con una scena dinamica. Questo test viene eseguito su tutte le videocamere esposte ad app di terze parti.
API testate:
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.hardware.camera2.CaptureResult#CONTROL_AE_TARGET_FPS_RANGE
android.media.CamcorderProfile
android.media.MediaRecorder
Superato:il frame rate dell'anteprima è al massimo dell'intervallo di frame rate richiesto e la variazione media tra i frame consecutivi è inferiore alla tolleranza relativa impostata nel test.
scene_extensions
I test scene_extensions
sono per le estensioni della fotocamera e devono utilizzare
Camera ITS-in-a-Box,
in quanto 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 dispositivo in test e il tablet con un telo protettivo, nonché eliminare la fuoriuscita di luce dallo
schermo anteriore del dispositivo in test.
scene_hdr
La scena scene_hdr
è costituita da un ritratto a sinistra e da un codice QR a basso contrasto a destra.
Figura 136. Esempio di scene_hdr.
test_hdr_extension
Esegue il test dell'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#getSupportedExtensions
android.hardware.camera2.CameraExtensionSession#capture
Superato:l'estensione HDR riduce il numero di modifiche del 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 della curva di Hilbert.
Figura 137. Esempio di scene_low_light.
test_night_extension
Testa l'estensione Night. Acquisisce le acquisizioni con l'estensione abilitata ed esegue le seguenti operazioni:
- Rileva la presenza di 20 quadrati
- Calcola la luminanza delimitata da ogni quadrato
- Calcola il valore di luminanza medio dei primi 6 quadrati in base all'orientamento della griglia della curva di Hilbert
- Calcola la differenza nel valore di luminanza di 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 misurata corrispondente al rettangolo che delimita la griglia di quadrati. Questa aggiunta modifica i criteri di superamento della soglia.
API testate:
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
android.hardware.camera2.CameraExtensionSession#capture
Pass:
- Per i dispositivi con Android 16 o versioni successive, il valore di luminanza medio dei primi 6 quadrati deve essere almeno 80 e la differenza media nel valore di luminanza 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 luminanza dei primi 6 quadrati deve essere almeno 85 e la differenza media nel valore di luminanza 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 superato.
Figura 138. Esempio di test superato per una scena notturna in condizioni di scarsa illuminazione.
test_low_light_boost_extension
Esegue il test della modalità AE Aumento luce. Se Camera2 supporta la modalità AE Low Light Boost, questo test viene eseguito per Camera2. Se l'estensione della modalità notturna è supportata e supporta la modalità AE Low Light Boost, questo test viene eseguito anche per l'estensione della modalità notturna. Questo test imposta la modalità AE su miglioramento in condizioni di scarsa illuminazione, acquisisce un frame dall'anteprima ed esegue le seguenti operazioni:
- Rileva la presenza di 20 scatole
- Calcola la luminanza delimitata da ogni riquadro
- Calcola il valore di luminanza medio dei primi 6 quadrati in base all'orientamento della griglia della curva di Hilbert
- Calcola la differenza nel valore di luminanza di 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 misurata 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_MODES
android.hardware.camera2.CameraMetadata#CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
Pass:
Per i dispositivi con Android 16 o versioni successive, il valore di luminanza medio dei primi 6 quadrati deve essere almeno 54 e la differenza media nel valore di luminanza dei quadrati consecutivi fino ai quadrati 5 e 6 deve essere almeno 17.
Per i dispositivi con Android 15 e versioni precedenti, il valore medio di luminanza dei primi 6 quadrati deve essere almeno 70 e la differenza media nel valore di luminanza 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 la distanza minima di messa a fuoco del teleobiettivo. Poiché questa distanza minima di messa a fuoco
può variare a seconda del dispositivo, devi configurare la configurazione
in base alla telecamera teleobiettivo specifica.
Figura 139. Configurazione di scene_tele in base alla distanza di messa a fuoco della videocamera grandangolare e tele.
Per maggiori informazioni 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 marcatori ArUco su uno sfondo bianco.
Se le acquisizioni di scene6_tele
appaiono sovraesposte nel
rig modulare, rimuovi la
piastra anteriore del
rig modulare.
Scollega il banco di prova WFoV dall'estensione e rimuovi il supporto per lo smartphone.
Figura 140. Scollega il banco di prova WFoV dall'estensione e rimuovi il supporto per lo smartphone.
Figura 141. Rimuovi la piastra anteriore.
test_zoom_tele
Esegue il test del comportamento dello zoom della fotocamera dall'obiettivo grandangolare al teleobiettivo. Il
test è identico a test_zoom
, ma verifica il comportamento dello zoom della fotocamera
dall'obiettivo grandangolare al teleobiettivo.
API testate:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Superato:le dimensioni relative del marker ArUco acquisito sono accurate rispetto al rapporto di zoom richiesto per verificare che la videocamera 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
Esegue il test del comportamento dello zoom della videocamera per i frame di anteprima dall'obiettivo grandangolare al
teleobiettivo. Il test è identico a
test_preview_zoom
, ma verifica 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_RANGE
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Superato:le dimensioni relative del marcatore ArUco acquisito sono accurate rispetto al rapporto di zoom richiesto per verificare che la fotocamera esegua lo zoom correttamente e la distanza del marcatore dal centro dell'immagine cambia in base ai criteri elencati in test_preview_zoom.
scene7_tele
scene7_tele
è identico a scene7
, ma configurato per il test del teleobiettivo. Si tratta di una cornice rettangolare divisa in quattro quadranti uguali, ciascuno riempito
con un colore diverso. Al centro del rettangolo si trova un grafico con bordo inclinato
per i controlli della nitidezza. Quattro marker ArUco sono allineati ai quattro angoli esterni
del rettangolo per facilitare l'ottenimento di coordinate precise del frame
rettangolare principale a diversi rapporti di zoom.
test_multi_camera_switch_tele
Questo test verifica che durante la registrazione dell'anteprima a diversi rapporti di zoom, il passaggio tra gli obiettivi grandangolare (W) e teleobiettivo (tele) produca 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 luminanza rientri nell'intervallo previsto per le immagini dell'obiettivo W e tele. Il controllo AWB verifica che i rapporti tra rosso-verde e blu-verde rientrino nei valori di soglia per le immagini dell'obiettivo W e tele. Il controllo AF valuta il valore di stima della nitidezza in base alla magnitudo media del gradiente tra le immagini dell'obiettivo grandangolare e di quello teleobiettivo.
API testate:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.media.CamcorderProfile
android.media.MediaRecorder
Superato:per superare il test, devono essere superati tutti i controlli AE, AWB e AF. Di seguito sono riportati i criteri per ogni controllo:
- Controllo AE: la variazione di luminanza tra le immagini dell'obiettivo grandangolare e di quello tele deve essere inferiore al 4%.
- Controllo AWB: nello spazio colore 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 grandangolare.
scene_flash
I test scene_flash
richiedono una scena buia nella casella di fusione dei sensori.
test_auto_flash
Test che verificano l'attivazione del flash automatico in una scena buia per le fotocamere posteriori e anteriori. Per le fotocamere frontali, il flash automatico utilizza lo schermo per illuminare la scena, non un flash fisico. Il test verifica che il flash automatico venga attivato controllando che il centro dell'immagine del riquadro sia più luminoso con il flash automatico attivato. Per attivare il flash automatico, le luci del 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. L'app Jetpack Camera (JCA) deve essere installata sul dispositivo prima del test. Il flash automatico per le videocamere posteriori si basa sull'attivazione dello stato AE, mentre il flash automatico per le videocamere anteriori non si basa sull'AE e viene sempre attivato.
API testate:
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLE
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
android.hardware.camera2.CaptureRequest#FLASH_MODE
Superato:il centro dell'immagine della tessera con il flash automatico attivato è più luminoso dell'immagine della scena originale per tutte le videocamere.
test_flash_strength
Test che controllano 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 del banco di prova devono essere spente. Le luci possono essere spente automaticamente con il controller Arduino. Affinché il test funzioni correttamente, la scena deve essere completamente buia.
API testate:
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_DEFAULT_LEVEL
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_MAXIMUM_LEVEL
android.hardware.camera2.CameraCharacteristics#FLASH_SINGLE_STRENGTH_DEFAULT_LEVEL
android.hardware.camera2.CameraCharacteristics#FLASH_SINGLE_STRENGTH_MAX_LEVEL
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 man mano che il livello di intensità del flash aumenta da
nessun flash a FLASH_SINGLE_STRENGTH_MAX_LEVEL
.
test_led_snapshot
Verifica che gli scatti LED non saturino o colorino l'immagine.
Questo test aggiunge un controller di illuminazione alla scatola di fusione dei sensori 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 preacquisizione con il trigger aePrecapture
impostato su START
e imposta
l'intento di acquisizione su Preview
per acquisire con il flash.
Poiché l'acquisizione ha un hotspot distintivo dovuto al flash, il test calcola la media dell'immagine del flash dell'intera acquisizione e verifica se il valore rientra nell'intervallo (68, 102). Per verificare se il bilanciamento del bianco dell'immagine è 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_AVAILABLE
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.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 del flash rientra nell'intervallo (68, 102).
test_night_mode_indicator
Verifica la funzionalità dell'indicatore della modalità notturna, una funzionalità che indica se la videocamera funziona in condizioni di scarsa illuminazione e se trarrà vantaggio da un'acquisizione con l'estensione della modalità notturna. Questa funzionalità è disponibile solo sui dispositivi che supportano le estensioni della fotocamera in modalità Notte.
Questo test verifica che l'indicatore della modalità notturna rifletta correttamente le condizioni di illuminazione durante l'anteprima della videocamera. Il test esegue i seguenti passaggi:
- Inizializzazione:il test inizializza un
ItsSession
e recupera le proprietà della videocamera. Stabilisce anche una connessione con il controller dell'illuminazione. - Condizioni di ignoramento:il test viene ignorato se il dispositivo non supporta il livello API richiesto o la funzionalità di indicatore della modalità notturna.
- Sessione Camera2:
- Il test avvia una sessione di acquisizione dell'anteprima utilizzando una sessione
Camera2
. - La luce è accesa 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 frame 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 utilizzando una sessioneCameraExtension
con l'estensioneEXTENSION_NIGHT
.
- Il test ripete la stessa procedura della sessione
- Pulizia: il test si chiude
ItsSession
e rilascia il controller dell'illuminazione.
API testate:
Pass:
- Quando la spia è accesa, l'indicatore della modalità notturna deve essere nello stato
OFF
. - Quando la spia è spenta, l'indicatore della modalità notturna deve essere nello stato
ON
. - Si applica sia alle sessioni
Camera2
sia a quelleCameraExtension
.
test_preview_min_frame_rate
Test che verificano che il frame rate dell'anteprima diminuisca correttamente in una scena buia. Affinché questo test funzioni correttamente, le luci del banco di prova devono essere spente dal controller o manualmente dall'operatore del test.
API testate:
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.hardware.camera2.CaptureResult#CONTROL_AE_TARGET_FPS_RANGE
android.media.CamcorderProfile
android.media.MediaRecorder
Superato:la frequenza fotogrammi dell'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
Test che controllano 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 videocamera
in modalità TORCH
, l'intensità della torcia cambi con i 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_LEVEL
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_MAXIMUM_LEVEL
android.hardware.camera2.CameraCharacteristics#FLASH_TORCH_STRENGTH_DEFAULT_LEVEL
android.hardware.camera2.CameraCharacteristics#FLASH_TORCH_STRENGTH_MAX_LEVEL
Pass:
Quando la modalità di esposizione automatica è ON
o OFF
, la luminosità delle patch di scatto a raffica dell'immagine 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 di scatto a raffica dell'immagine rientra nella tolleranza
man mano che il livello di intensità del flash aumenta da nessun flash a
FLASH_TORCH_STRENGTH_MAX_LEVEL
.
sensor_fusion
I test di fusione dei sensori richiedono movimenti specifici dello smartphone davanti a un motivo a scacchiera
e a marcatori ArUco. Per risultati ottimali, verifica che la tabella di test sia
montata 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 17 x 17 pollici. (43x43 cm). I test sensor_fusion
possono essere automatizzati
con la scatola di fusione dei sensori.
Figura 142. Grafico di fusione dei sensori.
Figura 143. Grafico di fusione dei sensori che riempie la parte posteriore della casella di fusione dei sensori.
test_lens_intrinsic_calibration
Test che verifica che il centro ottico delle modifiche intrinseche dell'obiettivo quando l'obiettivo si sposta a causa della stabilizzazione ottica dell'immagine (OIS). Se sono supportati campioni intrinseci dell'obiettivo, i test che il centro ottico dei campioni intrinseci dell'obiettivo cambia quando l'obiettivo si sposta a causa della stabilizzazione ottica dell'immagine.
API testate:
android.hardware.camera2.CameraCharacteristics#LENS_INTRINSIC_CALIBRATION
android.media.MediaRecorder
android.media.CamcorderProfile
Passaggio:il centro ottico delle modifiche intrinseche dell'obiettivo di 1 pixel o più. Se sono supportati campioni intrinseci dell'obiettivo, i centri ottici dei campioni intrinseci dell'obiettivo cambiano di 1 pixel o più.
La figura seguente è un esempio di grafico test_lens_intrinsic_calibration
che mostra le variazioni dei punti principali in pixel per ogni frame:
Figura 144. Esempio di grafico test_lens_intrinsic_calibration che mostra le variazioni dei punti principali in pixel per ogni frame.
test_multi_camera_frame_sync
Test che inquadrano i timestamp acquisiti dalla videocamera logica 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_TYPE
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
android.hardware.camera2.params.OutputConfiguration#setPhysicalCameraId()
Superato:l'angolo tra le immagini di ciascuna fotocamera non cambia in modo significativo quando lo smartphone viene ruotato.
test_preview_distortion
Test che dimostrano che la distorsione viene 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 videocamera.
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 RMS in pixel tra i punti effettivi e quelli ideali. I colori verde e rosso evidenziati nell'immagine vengono utilizzati per rilevare visivamente l'area dell'errore di distorsione.
Figura 145. 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_RANGE
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
android.media.CamcorderProfile
android.media.MediaRecorder
Superato:l'errore di distorsione normalizzato di ogni frame di anteprima è inferiore alla soglia impostata nel test.
test_preview_stabilization
Test in cui il video di anteprima stabilizzato ruota meno del giroscopio.
API testate:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.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 146. Video di esempio con stabilizzazione.
Figura 147. Video di esempio senza stabilizzazione.
test_sensor_fusion
Verifica la differenza di timestamp tra la videocamera 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 andata e ritorno. Questo
test viene ignorato se non è incluso alcun giroscopio o se il parametro
REALTIME
di 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 nelle direzioni x e y implica che lo smartphone non è montato in modo sicuro 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 148. 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 videocamera e il giroscopio con una precisione di +/-1 ms.Figura 149. Esempio di rotazioni del grafico test_sensor_fusion.
API testate:
android.hardware.camera2.CameraCharacteristics#LENS_FACING
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE
android.hardware.camera2.CameraMetadata#SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
android.hardware.camera2.CaptureRequest#SENSOR_TIMESTAMP
android.hardware.camera2.CaptureResult#SENSOR_ROLLING_SHUTTER_SKEW
Superato:l'offset dei timestamp della videocamera 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 giroscopio-videocamera non è calibrato correttamente entro +/-1 ms.
- Frame persi: la pipeline non è abbastanza veloce per acquisire 200 frame consecutivi.
- Errori di socket:
adb
non riesce a connettersi in modo affidabile al DUT per un periodo di tempo sufficiente a eseguire il test. - Il grafico non è montato in piano. Il grafico
test_sensor_fusion_plot_rotations
ha frame in cui la rotazione del giroscopio e della videocamera varia notevolmente man mano che la videocamera ruota attraverso le parti del grafico che non sono piatte. - La videocamera non è montata in piano. Il grafico
test_sensor_fusion_gyro_events
mostra il movimento nei piani X e Y. Questo guasto è più comune nelle fotocamere anteriori, poiché la fotocamera posteriore spesso ha un rigonfiamento 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
Test in cui il video stabilizzato ruota meno del giroscopio.
API testate:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
Superato:la rotazione angolare massima sui frame è inferiore al 60% della rotazione del giroscopio.
Di seguito sono riportati alcuni video di esempio con e senza stabilizzazione.
Figura 150. Video di esempio con stabilizzazione.
Figura 151. Video di esempio senza stabilizzazione.
test_video_stabilization_jca
I test che stabilizzano il video acquisito utilizzando l'JCA ruotano meno del giroscopio. Il JCA deve essere installato sul dispositivo prima del test.
API testate:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.CamcorderProfile
android.media.MediaRecorder
Superato: la rotazione angolare massima sui frame estratti dal video acquisito utilizzando la JCA è inferiore al 70% della rotazione del giroscopio.
feature_combination
I test feature_combination
verificano che le funzionalità funzionino correttamente quando
più funzionalità della videocamera sono attive contemporaneamente. Questi test utilizzano la stessa
immagine a scacchiera utilizzata nella scena di fusione dei sensori.
test_feature_combination
Esegue test su tutte le combinazioni di diversi flussi, modalità di stabilizzazione video, intervallo di FPS target, video HDR a 10 bit e Ultra HDR supportati dal dispositivo della videocamera.
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 funzionalità per le quali
isSessionConfigurationSupported
restituisce True
.
API testate:
android.hardware.camera2.CameraDevice.CameraDeviceSetup#isSessionConfigurationSupported
android.hardware.camera2.CameraDevice.CameraDeviceSetup#createCaptureRequest
Superato:per ogni combinazione di funzionalità supportata:
- Lo stream di anteprima viene stabilizzato se la stabilizzazione dell'anteprima è attiva.
- La frequenza fotogrammi dell'anteprima rientra nel
AE_TARGET_FPS_RANGE
configurato. - Lo spazio colore dello stream di anteprima registrato corrisponde a quello impostato.
- L'acquisizione Ultra HDR ha una mappa di guadagno valida.
scene_ip
In Android 16 e versioni successive, lo scenario scene_ip
consente di eseguire controlli di parità delle immagini tra l'app Fotocamera predefinita e l'app Fotocamera Jetpack (JCA) per identificare le principali differenze 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 di configurazione dell'hardware
Per i test scene_ip
è necessaria la seguente configurazione hardware:
- I test vengono eseguiti nella videocamera Gen2 ITS-in-a-box.
- I controller di illuminazione e servo 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 152. Esempio di Gen2chart_sample.
Criteri di ignoramento dei test
I test scene_ip
vengono ignorati 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 della funzionalità di test in condizioni di illuminazione controllata utilizzando l'app Fotocamera predefinita e JCA 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 delle acquisizioni.
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à.
Superamento della sezione di base: il test supera i controlli di campo visivo, luminosità e bilanciamento del bianco. In Android 16, questo test non è obbligatorio
(NOT_YET_MANDATED
).