Questa pagina fornisce un elenco completo dei test nell'ambito del Camera Image Test Suite (ITS), che fa parte del Verifier del Compatibility Test Suite (CTS) di Android. I test ITS sono test funzionali, il che significa che non misurano la qualità dell'immagine, ma verificano che tutte le funzioni della fotocamera pubblicizzate funzionino come previsto. Questo documento consente a sviluppatori e tester di capire cosa fanno i singoli test e come eseguire il debug degli errori di test.
I controlli ITS della fotocamera filtrano i test in base alle proprietà della fotocamera richieste, al livello API e al livello della classe di prestazioni media (MPC). Per il livello API, ITS utilizza
ro.product.first_api_level
per eseguire i test di blocco aggiunti in un livello API specifico che
testano le esperienze negative degli utenti per le funzionalità nei livelli API inferiori. ITS
utilizza ro.vendor.api_level
per eseguire test di controllo per le funzionalità aggiunte in un livello
dell'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 come segue:
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 contorni, movimento dell'obiettivoscene4
: proporzioni, ritaglio, campo visivoscene5
: ombreggiatura dell'obiettivoscene6
: zoomscene7
: opzione per più fotocamerescene8
: misurazione della regione per l'esposizione automatica (AE) e il bilanciamento del bianco automatico (AWB)scene9
: compressione JPEGscene_extensions
: estensioni della videocamerascene_tele
: passaggio al teleobiettivoscene_flash
: flash automatico, frequenza fotogrammi minimascene_video
: frame dropsensor_fusion
: offset dei tempi della fotocamera e del giroscopiofeature_combination
: combinazioni di funzionalitàscene_ip
: parità delle 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 statico per i test del giroscopio e delle vibrazioni.
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
Passa:tra un frame e l'altro deve esserci almeno un delta di 30 ms.
Nella figura seguente, nota l'intervallo ridotto dell'asse Y. Il jitter è in realtà ridotto in questo grafico.
Figura 1. Grafico di test_jitter.
test_metadata
Verifica la validità delle voci dei metadati, esaminando i risultati di acquisizione e gli oggetti delle caratteristiche della fotocamera. Questo test utilizza i valori di esposizione e guadagno auto_capture_request
perché i contenuti delle immagini 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
Passaggio: a livello di hardware, i tag rollingShutterSkew
, frameDuration
,
timestampSource
, croppingType
, blackLevelPattern
, pixel_pitch
,
campo visivo (FoV) e distanza iperfocale sono presenti e hanno valori validi.
test_request_capture_match
Verifica che il dispositivo scriva i valori di esposizione e guadagno corretti leggendo nuovamente 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
Passaggio: i valori dei metadati richiesti e acquisiti corrispondono in tutti gli scatti.
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 del sensore. I sensori previsti sono accelerometro, giroscopio e magnetometro. Questo test funziona solo se lo schermo è attivo, ovvero se il dispositivo non è in modalità standby.
API testate:
Pass: vengono ricevuti gli eventi per ciascun sensore.
test_solid_color_test_pattern
Verifica che i pattern di prova a colori uniformi vengano generati correttamente per la disattivazione dell'audio 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 RAW sono supportate, viene testata anche l'assegnazione del colore. I colori testati sono nero, bianco, rosso, blu e verde. Per le fotocamere che non supportano le immagini RAW, viene testato solo il nero.
API testate:
android.hardware.camera2.CameraCharacteristic#SENSOR_AVAILABLE_TEST_PATTERN_MODES
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_DATA
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
Passato:i pattern di test solidi supportati sono del colore corretto e l'immagine presenta una bassa variabilità.
test_test_pattern
Testa il parametro android.sensor.testPatternMode
per acquisire i frame per ogni pattern di prova valido e controlla che i frame vengano generati correttamente per i colori a tinta unita e le barre di colore. Questo test include i seguenti passaggi:
- Acquisisce immagini per tutti i pattern di test supportati.
- Esegue un controllo di correttezza per il pattern di test a tinta unita e le barre di colore.
API testate:
android.hardware.camera2.CameraCharacteristic#SENSOR_AVAILABLE_TEST_PATTERN_MODES
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
Passato: gli schemi di test supportati vengono generati correttamente.
Figura 2. Esempio di test_test_patterns.
test_tonemap_curve
Testa la conversione del pattern di prova da raw a YUV con mappatura tonale lineare. Questo test richiede android.sensor.testPatternMode = 2
(COLOR_BARS
) per generare un pattern di immagine perfetto per la conversione della mappatura tonale. Verifica che la pipeline abbia output di colore adeguati con mappatura tonale 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
Passaggio: i file 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 dell'immagine e del sensore di movimento 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
Pass: i timestamp dei movimenti sono compresi tra i due timestamp delle 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
Passa:il dispositivo non vibra quando viene disattivato dall'API di limitazione audio della fotocamera.
scene1_1
scene1
è un grafico grigio. Il grafico grigio deve coprire il 30% centrale del FOV della fotocamera. Il grafico grigio dovrebbe presentare una sfida moderata per 3A (AE,
AWB e AF) in quanto la regione centrale non presenta elementi.
Tuttavia, la richiesta di acquisizione specifica l'intera scena, che include funzionalità sufficienti per la convergenza della tecnologia 3A.
Le videocamere RFoV possono essere testate nell'apparecchiatura di test WFoV o RFoV. Se una videocamera RFoV viene testata nell'apparecchiatura di test WFoV, il grafico viene scalato per 2/3 per specificare alcuni limiti per il grafico grigio nel FOV per favorire la convergenza del 3A. Per descrizioni più dettagliate delle piattaforme di test delle videocamere, consulta ITS-in-a-box per videocamere.
Figura 5. Grafico della scena 1 a grandezza naturale (a sinistra), grafico con scala 2/3 (a destra).
test_ae_precapture_trigger
Testa la macchina a stati AE quando si utilizza l'attivatore di preacquisizione. Acquisisci cinque richieste manuali con l'AE disattivato. L'ultima richiesta ha un attivatore AE preacquisizione, che deve essere ignorato perché l'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
Passa: l'AE converge.
test_auto_vs_manual
I test che hanno acquisito foto automatiche e manuali sono uguali.
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
Passaggio: i guadagni e la trasformazione del bilanciamento del bianco manuale registrati in ogni risultato di acquisizione corrispondenti al bilanciamento del bianco automatico estimate
dell'algoritmo 3A della fotocamera.
Figura 6. Esempio di test automatico test_auto_vs_manual.
Figura 7. Esempio di bilanciamento del bianco test_auto_vs_manual.
Figura 8. Esempio di trasformazione del bilanciamento del bianco manuale test_auto_vs_manual.
test_black_white
Verifica che il dispositivo produca immagini completamente in bianco e nero. Scatta due foto: la prima con guadagno estremamente basso ed esposizione breve, che produce una foto nera, e la seconda con guadagno estremamente elevato ed esposizione lunga, che produce una foto bianca.
API testate:
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Pass: produce immagini in bianco e nero. I canali saturi delle immagini bianche hanno valori RGB di [255, 255, 255] con un margine di errore inferiore all'1%.
Figura 9. test_black_white, esempio di nero.
Figura 10. Esempio di test_black_white, 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 il tempo della CPU.
API testate:
Passa:acquisisce una raffica di immagini a grandezza naturale, controlla la luminosità delle immagini e gli eventuali cali di frame.
test_burst_sameness_manual
Scatta 5 foto simili con l'impostazione di acquisizione manuale e controlla che siano tutte uguali. Utilizza questo test per identificare se sono presenti fotogrammi 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
Pass: le immagini sono identiche visivamente e nei valori RGB.
Non riuscito: mostra un picco o un calo del grafico medio RGB all'inizio di ogni burst
- La tolleranza è del 3% per
first_API_level
< 30 - La tolleranza è del 2% per
first_API_level
>= 30
Figura 12. Esempio di media di test_burst_sameness_manual.
Figura 13. test_burst_sameness_manual_plot_means
test_crop_region_raw
Verifica che gli stream RAW non siano ritagliabili.
API testate:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
android.hardware.camera2.CaptureResult#SCALER_CROP_REGION
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
Passa:le immagini YUV vengono ritagliate al centro, ma non le immagini RAW.
Figura 14. Esempio di ritaglio non elaborato di test_crop_region_raw.
Figura 15. Esempio completo di comp raw test_crop_region_raw.
Figura 16. Esempio di ritaglio YUV di comp test_crop_region_raw.
Figura 17. Esempio completo di test_crop_region_raw YUV.
test_crop_regions
Verifica il funzionamento delle regioni di ritaglio. Acquisisce 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 dell'immagine ritagliata.
API testate:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
Pass: 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 è costituito da una sezione di base e una avanzata.
La sezione di base verifica che la compensazione EV venga applicata utilizzando un intervallo creato con CONTROL_AE_COMPENSATION_STEP
. Vengono acquisiti otto frame 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 in base alla luminosità dell'immagine senza compensazione EV applicata e il valore previsto si satura se i valori calcolati superano l'intervallo di valori dell'immagine effettiva. Il test non va a buon fine se i valori previsti e quelli 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 del luma man mano che l'impostazione di compensazione EV aumenta. Gli otto frame acquisiti per ogni impostazione di compensazione EV hanno valori di luma stabili.
Figura 19. test_ev_compensation_advanced_plot_means.
test_exposure_x_iso
Verifica che venga raggiunta un'esposizione costante man mano che ISO e tempo di esposizione variano. Scatta
una serie di foto con ISO e tempo di esposizione scelti in modo da bilanciarsi a vicenda.
I risultati dovrebbero avere la stessa luminosità, ma nel corso della sequenza l'immagine dovrebbe diventare più rumorosa. Verifica che i valori medi dei pixel del campione siano vicini tra loro. Verifica che le immagini non siano limitate a 0 o 1 (il che le farebbe apparire come 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
Passa:le immagini hanno la stessa luminosità, ma diventano più rumorose con un ISO più elevato. I piani RGB sono piatti quando il valore di ISO*esposizione è costante nell'intervallo di guadagno testato.
Meccanismo di errore: nella figura seguente, con l'aumento dei valori del moltiplicatore di guadagno (asse x), i valori medi del piano RGB normalizzato (asse y) iniziano a deviare dai valori del moltiplicatore di guadagno basso.
Figura 20. test_exposure_plot_means.
Figura 21. test_exposure_mult=1.00.
Figura 22. test_exposure_mult=64.00.
test_latching
Verifica che le impostazioni (esposizione e guadagno) si aggancino al frame corretto per le videocamere FULL
e
LEVEL_3
. Scatta una serie di foto utilizzando richieste consecutive, variando i parametri di richiesta di acquisizione tra una foto e l'altra. Verifica che le immagini abbiano le proprietà previste.
API testate:
Passaggio: le immagini [2, 3, 6, 8, 10, 12, 13] hanno un'ISO o un'esposizione aumentate e vengono visualizzate con medie RGB più elevate nel grafico nella figura seguente.
Figura 23. Il grafico test_latching indica un esempio.
Figura 24. test_latching i=00.
Figura 25. test_latching i=01.
Figura 26. test_latching i=02.
Figura 27. test_latching i=03.
Figura 28. test_latching i=04.
Figura 29. test_latching i=05.
Figura 30. test_latching i=06.
Figura 31. test_latching i=07.
Figura 32. test_latching i=08.
Figura 33. test_latching i=09.
Figura 34. test_latching i=10.
Figura 35. test_latching i=11.
Figura 36. test_latching i=12.
test_linearity
Verifica che l'elaborazione del dispositivo possa essere invertita in pixel lineari. Acquisisci una sequenza di scatti con il dispositivo puntato a 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
Pass: i valori R, G, B devono aumentare in modo lineare con l'aumento della sensibilità.
Figura 37. Il grafico di test_linearity indica un esempio.
test_locked_burst
Testa il blocco 3A e lo scatto YUV (utilizzando l'impostazione automatica). Questo test è progettato per essere superato anche su dispositivi con limitazioni che non dispongono di MANUAL_SENSOR
o PER_FRAME_CONTROLS
.
Il test controlla la coerenza delle immagini YUV, mentre il controllo della frequenza frame è in CTS.
API testate:
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
Passaggio: 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 sottoscena per ridurre la durata estesa di scene 1
.
test_param_color_correction
Verifica che i parametri android.colorCorrection.*
vengano applicati quando sono 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 per rendere l'output sempre più rosso o blu. Utilizza una mappatura tonale lineare.
La mappatura tonale è una tecnica utilizzata nell'elaborazione delle immagini per mappare un insieme di colori a un altro in modo da 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
Passa:i valori 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 indica le richieste di acquisizione: 0 = unità, 1 = boost rosso e 2 = boost blu.
Figura 42. Esempio di unità test_param_color_correction req=0.
Figura 43. Esempio di boost rosso test_param_color_correctness req=1.
Figura 44. Esempio di test_param_color_correction req=2 con aumento del blu.
test_param_flash_mode
Verifica che il parametro android.flash.mode
venga applicato. Imposta manualmente l'esposizione sul lato scuro, in modo che sia evidente se il flash è stato attivato o meno, e utilizza una mappatura tonale lineare. Controlla il centro con l'immagine a riquadri per vedere se viene creato un gradiente ampio per verificare se il flash è stato attivato.
API testate:
Pass: il centro dell'immagine del riquadro presenta un ampio gradiente, 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 se impostato. Scatta foto con la fotocamera poco illuminata. Utilizza un guadagno analogico elevato per contribuire a garantire che l'immagine acquisita sia rumorosa. Acquisisce tre immagini, con NR disattivato, rapida e di alta qualità. Acquisisce anche un'immagine con guadagno basso e NR disattivato e utilizza la varianza di questa come linea di base. Maggiore è il rapporto segnale/rumore (SNR), migliore è la qualità dell'immagine.
API testate:
Passa: il rapporto SNR varia in base alle diverse modalità di riduzione del rumore e si comporta in modo simile al grafico seguente:
Figura 49. Esempio di grafico SNR di test_param_noise_reduction.
0: OFF, 1: FAST, 2: HQ, 3: MIN , 4: ZSL
Figura 50. Esempio di guadagno elevato test_param_noise_reduction nr=0.
Figura 51. Esempio di test_param_noise_reduction con guadagno elevato nr=1.
Figura 52. Esempio di test_param_noise_reduction con guadagno elevato nr=2.
Figura 53. Esempio di test_param_noise_reduction con guadagno elevato nr=3.
Figura 54. Esempio di guadagno basso per test_param_noise_reduction.
test_param_shading_mode
Verifica che il parametro android.shading.mode
venga 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 ombreggiamento dell'obiettivo test_param_shading_mode, esempio di modalità 0, ciclo 0.
Figura 56. Mappa di ombreggiamento dell'obiettivo test_param_shading_mode, esempio di modalità 1, ciclo 0.
Figura 57.Mappa di ombreggiamento dell'obiettivo test_param_shading_mode, esempio di loop 0 in modalità 2.
test_param_tonemap_mode
Verifica che il parametro android.tonemap.mode
venga applicato. Applica curve di mappatura tonale diverse a ciascun canale R, G, B e controlla 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 sfumatura più accentuata. Il canale G (verde) è più luminoso per l'immaginen=1
.test2
: stessa mappatura tonale, ma lunghezza diversa. Le immagini sono uguali.
Figura 58. test_param_tonemap_mode con n=0.
Figura 59. test_param_tonemap_mode con n=1.
test_post_raw_sensitivity_boost
Controlla l'aumento della sensibilità non elaborata del post. Acquisisce un insieme di immagini RAW e YUV con sensibilità diversa, pubblica la combinazione di aumento della sensibilità RAW e controlla se la media dei pixel di output corrisponde alle impostazioni della richiesta.
API testate:
android.hardware.camera2.CameraCharacteristics#CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
android.hardware.camera2.CaptureRequest#CONTROL_POST_RAW_SENSITIVITY_BOOST
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Passa:le immagini RAW diventano più scure man mano che l'aumento aumenta, mentre la luminosità delle immagini YUV rimane costante.
Figura 60. Esempio di test_post_raw_sensitivity_boost raw s=3583 boost=0100.
Figura 61. Esempio di test_post_raw_sensitivity_boost raw s=1792 boost=0200.
Figura 62. Esempio di test_post_raw_sensitivity_boost raw s=0896 boost=0400.
Figura 63. Esempio di test_post_raw_sensitivity_boost raw s=0448 boost=0800.
Figura 64. Esempio di test_post_raw_sensitivity_boost raw s=0224 boost=1600.
Figura 65. Esempio di test_post_raw_sensitivity_boost raw s=0112 boost=3199.
Figura 66. Grafico non elaborato di test_post_raw_sensitivity_boost: esempio.
Figura 67. Esempio di test_post_raw_sensitivity_boost YUV s=0112 boost=3199.
Figura 68. Esempio di test_post_raw_sensitivity_boost YUV s=0448 boost=0800.
Figura 69. Esempio di test_post_raw_sensitivity_boost YUV s=0896 boost=0400.
Figura 70. Esempio di test_post_raw_sensitivity_boost YUV s=1792 boost=0200.
Figura 71. Esempio di test_post_raw_sensitivity_boost YUV s=3585 boost=0100.
Figura 72. test_post_raw_sensitivity_boost_yuv_plot_means
test_raw_exposure
Acquisisce un insieme di immagini RAW con un tempo di esposizione crescente e misura i valori dei pixel.
API testate:
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
Passaggio: 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 test_raw_exposure ISOs=286.
Figura 77. Esempio di test_raw_exposure ISO=363.
Figura 78. Esempio di test_raw_exposure ISO=440.
test_reprocess_noise_reduction
Test che verificano che android.noiseReduction.mode
venga applicato per le richieste di rielaborazioni.
Acquisisce immagini riprocessate con la fotocamera poco illuminata. Utilizza un guadagno analogico elevato per verificare che l'immagine acquisita sia rumorosa. Acquisisce tre immagini riprocessate,
per NR off, veloce e di alta qualità. Acquisisce un'immagine elaborata nuovamente con guadagno basso
e NR disattivato e utilizza la varianza di questa come base di riferimento.
API testate:
Passa:VELOCE >= OFF, HD >= VELOCE e HD >> OFF.
Figura 79. Esempio di grafico SNR rispetto alla modalità NR.
test_tonemap_sequence
Testa una sequenza di scatti con curve di mappatura tonale diverse. Acquisisce 3 scatti manuali con una mappatura tonale lineare. Scatta 3 foto manuali con la mappatura tonale predefinita. Calcola il delta tra ogni coppia di frame consecutivi.
API testate:
Passaggio: sono presenti tre frame identici seguiti da un altro insieme di tre frame identici.
Figura 80. Esempio di test_tonemap_sequence i=0.
Figura 81. Esempio di test_tonemap_sequence i=1.
Figura 82. Esempio di test_tonemap_sequence i=2.
Figura 83. Esempio di test_tonemap_sequence i=3.
Figura 84. Esempio di test_tonemap_sequence i=4.
Figura 85. Esempio di test_tonemap_sequence i=5.
test_yuv_jpeg_all
Verifica che tutte le dimensioni e i formati segnalati per l'acquisizione delle immagini funzionino. 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
Passaggio: tutti i centri delle immagini hanno una differenza massima quadratica media (RMS) (valore di un segnale) nelle immagini RGB convertite con il 3% dell'immagine YUV con la risoluzione più alta.
Figura 86.Esempio di test_yuv_jpeg_all.
test_yuv_plus_dng
Verifica che le dimensioni e i formati segnalati per l'acquisizione delle immagini funzionino.
API testate:
Passato:il test viene completato e restituisce le immagini richieste.
Figura 87. Esempio di test_yuv_plus_dng.
scene1_3
scene 1_3
è una copia funzionalmente identica di scene 1_1
, che implementa una struttura di sottoscena per ridurre la durata estesa di scene 1
.
test_capture_result
Verifica che i dati validi vengano restituiti 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
Pass: i metadati sono validi per tutte le acquisizioni e le impostazioni manuali non vengono trasferite alla seconda acquisizione automatica. Grafica la correzione dell'ombreggiatura dell'obiettivo per le acquisizioni.
Figura 88. test_capture_result_plot_lsc_auto_ch0.
test_dng_noise_model
Verifica che i parametri del modello RAW DNG siano corretti. Il grafico mostra la variazione misurata di una patch centrale della scheda grigia negli scatti RAW acquisiti su un intervallo di sensibilità e confronta questi valori con la variazione prevista per ogni sensibilità dal modello di rumore DNG nell'HAL della fotocamera (in base ai parametri O,S. restituiti negli oggetti del risultato di acquisizione). Per ulteriori 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
Passaggio: i parametri del modello RAW DNG sono corretti. I valori RGB previsti corrispondono ai valori RGB effettivi misurati.
Figura 89. test_dng_noise_model_plog.
test_jpeg
I test hanno dimostrato che le immagini YUV convertite e le immagini JPEG del dispositivo hanno lo stesso aspetto. Il test prende il 10% centrale dell'immagine, ne calcola il valore RGB e verifica che corrispondano.
API testate:
Passaggio: la differenza RGB media tra ogni immagine è inferiore al 3%.
Figura 90. test_jpeg_fmt=jpg.jpg.
Figura 91. test_jpeg=fmt=yuv.jpg.
test_raw_burst_sensitivity
Acquisisce un insieme di immagini RAW con guadagni crescenti e misura il rumore. Acquisisce solo in formato 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 centrali.
Figura 92. test_raw_burst_sensitivity_variance.
test_raw_sensitivity
Acquisisce un insieme di immagini RAW con sensibilità crescenti e misura il rumore (varianza) nel 10% centrale dell'immagine. Verifica che ogni scatto sia più rumoroso del precedente.
API testate:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_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 con ogni scatto.
Figura 93. test_raw_sensitivity_variance.
test_yuv_plus_jpeg
Testa l'acquisizione di un singolo frame come output YUV e JPEG. Utilizza una richiesta manuale con una mappatura 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
Passaggio: 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
Verifica l'acquisizione di un singolo frame sia come output raw (10 bit e 12 bit) sia come YUV, se supportato. Utilizza una richiesta manuale con mappatura tonale lineare, pertanto i file RAW e YUV dovrebbero essere uguali. Confronta i valori RGB del 10% al centro delle immagini RGB convertite. 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
Passaggio: le immagini YUV e RAW sono simili e hanno una differenza RMS (valore quadratico medio della radice 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
su varie impostazioni ISO per confermare una correlazione tra un valore ISO più elevato e livelli di rumore più elevati.
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
Passa:un ISO più elevato comporta un aumento dei livelli di rumore.
Testare i criteri di salto
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 pubblicizza
CONTROL_AE_PRIORITY_MODE_SENSOR_SENSITIVITY_PRIORITY
inCONTROL_AE_AVAILABLE_PRIORITY_MODES
.
test_exposure_time_priority
Esegue test CONTROL_AE_PRIORITY_MODE_SENSOR_EXPOSURE_TIME_PRIORITY
su vari tempi di esposizione, controllando 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
Passaggio: la luminosità è stabile (entro i limiti di tolleranza) per tutti i tempi di esposizione se l'ISO rientra nell'intervallo di compensazione.
Testare i criteri di salto
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 pubblicizza
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 abbigliamento neutro. I
volti sono scelti per avere un'ampia gamma di tonalità della pelle. Il grafico deve avere l'orientamento corretto per il funzionamento ottimale del rilevamento dei volti.
Figura 98. Esempio di scene2_a.
test_autoframing
Testa il comportamento del riquadro automatico della videocamera. Esegue uno zoom elevato in modo che nessuno dei volti nella scena sia visibile, attiva la modalità di inquadratura automatica impostando AUTOFRAMING
in CaptureRequest
su True
e verifica se tutti i volti nella scena originale possono essere rilevati quando lo stato converge (ovvero quando AUTOFRAMING_STATE
in CaptureResult
è impostato su AUTOFRAMING_STATE_CONVERGED
).
API testate:
android.hardware.camera2.CameraCharacteristics#CONTROL_AUTOFRAMING_AVAILABLE
android.hardware.camera2.CaptureRequest#CONTROL_AUTOFRAMING
android.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMING
android.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMING_STATE
Passa:sono stati rilevati tutti e tre i volti.
test_display_p3
Testa la cattura in JPEG del Display P3 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
Pass: il file JPEG contiene un profilo ICC Display P3 e colori al di fuori della gamma sRGB.
test_effects
Acquisisce il frame per gli effetti della fotocamera supportati e controlla se vengono generati correttamente. Il test controlla solo gli effetti OFF
e MONO
, ma salva le immagini per tutti gli effetti supportati.
API testate:
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_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 il luma medio di un'acquisizione con AE abilitata con un'acquisizione con AE disabilitata che applica manualmente i parametri di esposizione (sensibilità, tempo di esposizione, durata del fotogramma, aumento della sensibilità post-raw) ricevuti nel CaptureResult
della cattura con AE abilitata.
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
Passaggio: la differenza relativa di luma tra le due acquisizioni è inferiore al 4 percento.
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()
Pass: tutte le combinazioni sono state acquisite correttamente.
test_num_faces
Testa il rilevamento dei volti.
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 1 di test_num_faces.
test_reprocess_uv_swap
Verifica che il ricalcolo YUV non scambi i piani U e V. Questo viene rilevato calcolando la somma delle differenze assolute (SAD) tra l'immagine elaborata nuovamente e un'acquisizione non elaborata nuovamente. Se lo scambio dei piani U e V dell'acquisizione elaborata nuovamente comporta un aumento dell'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 sono 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
Passa: trova tre volti con punti di riferimento del viso nelle relative caselle delimitanti.
Figura 102. Esempio di modalità di rilevamento dei volti 1 di test_num_faces.
test_yuv_jpeg_capture_sameness
Acquisisce due immagini utilizzando i formati YUV e JPEG più comuni con le stesse proporzioni del formato JPEG più grande e una risoluzione non superiore a 1920 x 1440.
Imposta jpeg.quality
su 100 e acquisisce una richiesta per due dispositivi. Converte entrambe le immagini in array RGB e calcola la differenza quadratica media (RMS) 3D tra le due immagini.
Inoltre, questo test verifica che le uscite YUV per tutti i casi d'uso dello stream supportati siano ragionevolmente simili a quelle 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
Passaggio: 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
Verifica la latenza di acquisizione JPEG per la classe di prestazioni S come specificato nella sezione 2.2.7.2 Fotocamera nel CDD.
Passaggio: DEVE avere una latenza di acquisizione JPEG della fotocamera 2 inferiore a 1000 ms per la risoluzione 1080p, misurata dal test di prestazioni della fotocamera CTS in condizioni di illuminazione ITS (3000 K) per entrambe le fotocamere principali.
test_camera_launch_perf_class
Testa la latenza di avvio della fotocamera per la classe di prestazioni S come specificato nella sezione 2.2.7.2 Fotocamera del CDD.
Passaggio: la latenza di avvio della fotocamera 2 (apertura della fotocamera al primo frame di anteprima) DEVE essere inferiore a 600 ms, misurata dal test di prestazioni della fotocamera CTS in condizioni di illuminazione ITS (3000 K) per entrambe le fotocamere principali.
test_default_camera_hdr
Verifica che l'acquisizione della fotocamera predefinita sia Ultra HDR per la classe di prestazioni 15 come specificato nella sezione 2.2.7.2 Fotocamera del CDD.
Pass: l'acquisizione dei pacchetti della videocamera predefinita 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
Passa: trova tre volti con punti di riferimento del viso nelle relative caselle delimitanti.
scene2_e
test_continuous_picture
Vengono acquisiti 50 frame con risoluzione VGA con l'impostazione di primo piano 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
Pass: il sistema 3A si stabilizza al termine 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
Passa:trova 3 volti.
scene2_f
scene2_f
ha tre facce con sfondo e abbigliamento bianchi. I volti hanno un'ampia gamma di tonalità della pelle e un alto contrasto 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
Passa: trova tre volti con punti di riferimento del viso nelle relative caselle delimitanti.
Figura 105. Esempio di test_num_faces_fd_mode_1.
scene2_g
scene2_g
ha tre volti di profilo con sfondo e abbigliamento bianchi.
I volti hanno un'ampia gamma di tonalità della pelle e un alto contrasto 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
Passa: trova tre volti con punti di riferimento del viso nelle relative caselle delimitanti.
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 trovarlo nella scena. Per questo motivo, la maggior parte delle immagini salvate non ha bordi come le immagini per le scene 1, 2 o 4, ma solo il grafico. Il
grafico deve essere nell'orientamento corretto per il corretto funzionamento del Ricerca grafici.
test_edge_enhancement
Verifica che il parametro android.edge.mode
venga applicato correttamente. Acquisisce immagini non sottoposte a elaborazione 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 un determinato parametro di modalità di sfocatura, sensibilità, tempo di esposizione, distanza di messa a fuoco e superficie di output.
Passa: la modalità HQ
(2) è più nitida della modalità OFF
(0). La modalità FAST
(1) è più nitida
della modalità OFF
. La modalità HQ
sia più nitida o uguale alla modalità FAST
.
API testate:
Parametri della fotocamera interessati:
EDGE_MODE
Figura 108. Esempio di test_edge_enhancement edge=0.
Figura 109. Esempio di test_edge_enhancement edge=1 (modalità rapida).
Figura 110. Esempio di test_edge_enhancement edge=2 (modalità di alta qualità).
test_flip_mirror
Verifica se l'immagine è correttamente orientata come indicato nella sezione 7.5.2 Fotocamera anteriore del CDD.
Le immagini speculari, capovolte o ruotate possono essere identificate dalla forma a diamante nei pressi del centro.
Pass: l'immagine non è capovolta, speculare 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'uscita 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 del test.
- La varianza della lettura del giroscopio è inferiore a 1E-7 rad2/s2/Hz durante il tempo del test.
- Il drift del vettore di rotazione è inferiore a 0,01 rad durante il tempo di test.
- (Non ancora obbligatorio) Il drift 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
Passato: il test individua un grafico con la rotazione prevista (0 gradi se l'override da paesaggio a ritratto è disattivato, 90 gradi se è attivato).
Figura 114. Esempio di test_landscape_to_portrait.
test_lens_movement_reporting
Verifica se l'indicatore del movimento dell'obiettivo viene segnalato correttamente. Acquisisce una raffica di 24 immagini con i primi 12 fotogrammi alla distanza di messa a fuoco ottimale (rilevata da 3A) e gli ultimi 12 fotogrammi alla distanza di messa a fuoco minima. Intorno al fotogramma 12, l'obiettivo si muove causando un calo della nitidezza. La nitidezza si stabilizza quando l'obiettivo si sposta nella posizione finale.
L'indicatore del movimento dell'obiettivo deve essere impostato su true in tutti i fotogrammi in cui la nitidezza è intermedia rispetto alla nitidezza nei primi fotogrammi con l'obiettivo fermo alla distanza focale ottimale e negli ultimi fotogrammi in cui l'obiettivo è fermo alla distanza focale minima. Il frame esatto in cui si muove l'obiettivo non è importante: ciò che conta è che l'indicatore di movimento venga attivato quando l'obiettivo si muove.
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
Pass: l'indicatore del movimento dell'obiettivo è True
nell'inquadratura con variazione di nitidezza.
Meccanismi di errore:
lens_moving: True
(android.hardware.camera2.CaptureResult#LENS_STATE
= 1) intest_log.DEBUG
viene affermato 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 con distanza focale ottimale o agli ultimi frame con distanza focale minima.
test_reprocess_edge_enhancement
Verifica se i metodi di elaborazione supportati per il miglioramento dei bordi funzionano correttamente. Elabora una richiesta di acquisizione con una determinata modalità di elaborazione di sbordo e confronta diverse modalità di acquisizione con le modalità di elaborazione di sbordo disattivate.
API testate:
android.hardware.camera2.CaptureRequest#EDGE_MODE
android.hardware.camera2.CaptureRequest#REPROCESS_EFFECTIVE_EXPOSURE_FACTOR
Passaggio: la nitidezza per le diverse modalità di bordo è corretta. HQ
(modalità 2) è più nitido 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 del DUT e dell'allineamento del grafico.
Figura 116. Esempio di file scene4.
test_30_60fps_preview_fov_match
Verifica che i video di anteprima a 30 FPS e 60 FPS abbiano lo stesso FOV. Il test acquisisce due video, uno a 30 f/s e l'altro a 60 f/s. Da ogni video viene selezionato un frame rappresentativo e analizzato per verificare che le variazioni dell'angolo di campo 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
Passaggio: le immagini non sono allungate, il centro delle immagini non differisce per più del 3% e la variazione massima delle proporzioni tra i video a 30 FPS e a 60 FPS non supera il 7,5%
Meccanismi di errore:
- Il cerchio del video a 30 f/s è molto più grande rispetto a quello del video a 60 f/s.
- Il cerchio nell'immagine acquisita è distorto dalla pipeline di elaborazione.
- Il cerchio nell'immagine acquisita è stato ritagliato a causa di una richiesta di acquisizione con proporzioni estreme che riduce l'altezza o la larghezza dell'immagine.
- Il cerchio nell'immagine acquisita presenta un riflesso al centro e non appare completamente pieno.
test_aspect_ratio_and_crop
Verifica se le immagini sono distorte o ritagliate in modo imprevisto nella pipeline di 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
Passaggio: le immagini non sono allungate, il centro delle immagini non differisce di più del 3% e viene mantenuto il FOV massimo possibile.
Meccanismi di errore:
- La fotocamera non è allineata al cerchio visualizzato sul centro del tablet nella scena acquisita.
- Il cerchio nell'immagine acquisita è distorto dalla pipeline di elaborazione.
- L'immagine a bassa risoluzione viene ritagliata due volte nella pipeline di immagini, creando un FOV diverso tra le immagini ad alta e bassa risoluzione.
- Il cerchio nell'immagine acquisita è stato ritagliato a causa di una richiesta di acquisizione con proporzioni estreme che riduce l'altezza o la larghezza dell'immagine.
- Il cerchio nell'immagine acquisita presenta un riflesso al centro e non appare completamente pieno.
test_multi_camera_alignment
Testa i parametri di calibrazione della videocamera relativi al posizionamento della videocamera per i sistemi con più videocamere. Utilizzando le fotocamere secondarie fisiche con più fotocamere, scatta una foto con una delle fotocamere fisiche. Trova il centro del cerchio. Proietta il centro del cerchio sulle coordinate mondiali per ogni videocamera. Confronta la differenza tra i centri dei cerchi delle videocamere in coordinate mondiali. Riproduce le coordinate mondiali in coordinate pixel e le confronta con quelle 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
Passaggio: i centri e le dimensioni dei cerchi sono come previsti nelle immagini proiettate rispetto alle immagini acquisite utilizzando i dati di calibrazione della fotocamera e le lunghezze focali.
Meccanismi di errore:
LENS_INTRINSIC_CALIBRATION
,LENS_POSE_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 per testare un sistema di fotocamere wide e ultrawide con il banco di prova RFoV. Per ulteriori informazioni, consulta Domande frequenti sulla videocamera ITS-in-a-box (1° trimestre).
test_preview_aspect_ratio_and_crop
Analogamente al test test_aspect_ratio_and_crop
per le acquisizioni di immagini, controlla i formati di anteprima supportati per verificare che i frame di anteprima non siano allungati o ritagliati in modo inappropriato. Verifica che le proporzioni del cerchio non cambino, che le immagini ritagliate mantengano il cerchio al centro dell'inquadratura e che le dimensioni del cerchio non cambino per un formato costante o con risoluzioni diverse (controllo del FOV).
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
Passaggio: le immagini non sono allungate, il centro delle immagini non differisce di più del 3% e viene mantenuto il FOV massimo possibile.
test_preview_stabilization_fov
Controlla le dimensioni di anteprima supportate per assicurarti che il FOV sia ritagliato in modo appropriato. Il test acquisisce due video, uno con la stabilizzazione dell'anteprimaON
e un altro con la stabilizzazione dell'anteprima OFF
. Da ogni video viene selezionato un frame rappresentativo, che viene analizzato per verificare che le variazioni dell'angolo di campo nei due video rientrino nelle specifiche.
API testate:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
Passaggio: le proporzioni del cerchio rimangono pressoché costanti, la posizione del centro del cerchio rimane stabile e le dimensioni del cerchio non cambiano più del 20%.
test_video_aspect_ratio_and_crop
Scatta 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, le immagini ritagliate mantengano il cerchio al centro e le dimensioni del cerchio non variino per un formato costante o con una risoluzione diversa (controllo del FOV).
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
Passaggio: i fotogrammi video non sono allungati, il centro dei fotogrammi non differisce di più del 3% e il FOV massimo possibile viene mantenuto.
scene5
scene5
richiede una scena grigia illuminata in modo uniforme. Questo viene ottenuto con un diffusore collocato sull'obiettivo della fotocamera. Ti consigliamo il seguente diffusore:
www.edmundoptics.com/optics/window-diffusers/optical-diffusers/opal-diffusing-glass/46168
.
Per preparare la scena, attacca un diffusore davanti alla fotocamera e puntala verso una fonte di illuminazione di circa 2000 lux. Le immagini acquisite perscene5
richiedono un'illuminazione diffusa senza elementi 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 monocromatica uniforme sia distribuito uniformemente. Esegui 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 se il test è superato o meno confrontandolo con il valore di y del centro. 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
Passaggio: 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 indicatori ArUco identificabili in modo univoco.
I test in scene6
possono essere sensibili all'allineamento, quindi a partire dalla versione 15 puoi utilizzare check_alignment.py
nella directory degli strumenti per attivare un controllo del DUT e dell'allineamento del grafico.
Figura 118. Esempio di scene6.
test_in_sensor_zoom
Testa il comportamento della funzionalità di zoom in-sensor della fotocamera, che produce immagini RAW ritagliate.
Con il caso d'uso dello stream impostato su
CROPPED_RAW
,
il test acquisisce due foto nell'intervallo di zoom, un'immagine RAW con FoV completo e un'immagine RAW ritagliata. Il test converte le immagini in array RGB, riduce le dimensioni dell'immagine non elaborata ritagliata a grandezza originale 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
Passato: la differenza RMS 3D tra l'immagine non elaborata ritagliata e ridimensionata e l'immagine non elaborata completa del FOV è inferiore alla soglia impostata nel test.
test_zoom
Verifica il comportamento dello zoom della fotocamera dall'obiettivo ultrawide all'obiettivo grandangolare. Acquisisce riprese nell'intervallo di zoom e controlla se gli indicatori ArUco aumentano di dimensioni man mano che la fotocamera aumenta lo zoom. Il test controlla anche se la posizione dell'indicatore centrale cambia in modo prevedibile in ogni acquisizione. La distanza dal centro dell'indicatore di centro al centro dell'immagine può cambiare a una velocità costante rispetto al rapporto di zoom fino a un cambio fisico della fotocamera oppure può cambiare in modo monotono verso la posizione dello stesso indicatore dopo un cambio fisico della fotocamera. 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
Passato: le dimensioni relative dell'indicatore ArUco acquisito sono precise rispetto al rapporto di zoom richiesto per verificare che lo zoom della fotocamera sia corretto e la distanza dell'indicatore dal centro dell'immagine cambia in base ai criteri indicati nella descrizione del test.
Figura 119. test_zoom per trovare il contorno dell'indicatore ArUco più vicino al centro.
test_low_latency_zoom
Verifica il comportamento dello zoom a bassa latenza della fotocamera. Acquisisce le immagini nell'intervallo di zoom con android.control.settingsOverride = 1 (SETTINGS_OVERRIDE_ZOOM)
e controlla se gli indicatori nelle immagini di output corrispondono ai rapporti di zoom nei metadati delle acquisizioni. La stessa sessione di acquisizione della fotocamera viene utilizzata per convergere 3A e acquisire le 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
Pass: le dimensioni relative dell'indicatore acquisito sono accurate rispetto ai metadati del risultato del rapporto di zoom.
test_preview_video_zoom_match
Verifica che durante la registrazione e lo zoom, l'anteprima e l'uscita video mostrino e registrino lo stesso output. Calcola le dimensioni dell'indicatore più vicino al centro con diversi rapporti di zoom e controlla se le dimensioni dell'indicatore aumentano con l'aumento 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
Pass: le dimensioni relative dell'indicatore acquisito sono accurate rispetto al rapporto di zoom richiesto nel video e nell'anteprima.
Figura 120. HD_1280x720_key_frame.png (prima dello zoom).
Figura 121. preview_1280x720_key_frame.png (prima dello zoom).
Figura 122. HD_1280x720_key_frame.png (dopo lo zoom).
Figura 123. preview_1280x720_key_frame.png (dopo lo zoom).
test_preview_zoom
Verifica che il rapporto di zoom di ogni frame di anteprima corrisponda ai metadati di acquisizione corrispondenti dall'obiettivo ultrawide all'obiettivo grandangolare. Il test acquisisce i frame di anteprima nell'intervallo di zoom e trova l'indicatore ArUco più vicino al centro. Il test controlla quindi se la posizione dell'indicatore centrale cambia in modo prevedibile in ogni acquisizione. La distanza dal centro dell'indicatore di centro al centro dell'immagine può cambiare a una velocità costante rispetto al rapporto di zoom fino a un cambio fisico della fotocamera oppure può cambiare in modo monotono verso la posizione dello stesso indicatore dopo un cambio fisico della fotocamera.
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
Pass: le dimensioni relative dell'indicatore ArUco selezionato sono accurate per il rapporto di zoom riportato del risultato di acquisizione corrispondente per tutti i frame di anteprima. La distanza relativa dell'indicatore selezionato dal centro dell'immagine è accurata per il rapporto di zoom registrato del risultato di acquisizione corrispondente di tutti i frame di anteprima.
Figura 124. Immagini di test_preview_zoom che mostrano l'indicatore selezionato più vicino al centro
test_session_characteristics_zoom
Testa l'intervallo del rapporto di zoom per tutte le configurazioni delle sessioni supportate elencate in
CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION
.
Per ciascuna di queste configurazioni, se
CameraDeviceSetup#isSessionConfigurationSupported
restituisce true
, il test verifica che l'intervallo di rapporti di zoom restituito in
CameraDeviceSetup#getSessionCharacteristics
possa essere raggiunto.
API testate:
android.hardware.camera2.CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION
android.hardware.camera2.CameraDevice.CameraDeviceSetup#isSessionConfigurationSupported
android.hardware.camera2.CameraDevice.CameraDeviceSetup#getSessionCharacteristics
Passa:è possibile raggiungere sia i rapporti di zoom minimi che massimi per ogni SessionConfiguration
supportato elencato in CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION
.
scene7
scene7
è un riquadro rettangolare diviso in quattro quadranti uguali, ciascuno riempito con un colore diverso. Al centro del rettangolo è presente un grafico con bordi inclinati per i controlli della nitidezza. Quattro indicatori ArUco sono allineati ai quattro angoli esterni
del rettangolo per contribuire a ottenere coordinate precise del frame del
rettangolo principale con rapporti di zoom diversi.
Figura 125. scene7.
test_multi_camera_switch
Questo test verifica che durante la registrazione dell'anteprima con rapporti di zoom diversi, il passaggio dagli obiettivi ultrawide (UW) a quelli wide (W) generi valori RGB simili.
Il test utilizza diversi rapporti di zoom nell'intervallo predefinito per eseguire una registrazione dell'anteprima dinamica e identificare il punto in cui cambia la fotocamera fisica. Questo punto segna il passaggio dall'obiettivo UW a quello W.
I fotogrammi acquisiti al punto di crossover e prima vengono analizzati per l'esposizione automatica (AE), il bilanciamento del bianco automatico (AWB) e l'autofocus (AF).
Il controllo AE verifica che la variazione di luminosità rientri nell'intervallo previsto sia per le immagini dell'obiettivo UW che per quelle dell'obiettivo W. Il controllo AWB verifica che i rapporti tra rosso e verde e blu e verde rientrino nei valori di soglia sia per le immagini con obiettivo UW che per quelle con obiettivo W. Il controllo AF valuta il valore della stima della nitidezza in base all'intensità 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 una risoluzione più elevata dall'elenco di tablet approvati per ITS della fotocamera.
API testate:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.media.CamcorderProfile
android.media.MediaRecorder
Passato:per superare il test, i controlli AE e AWB devono essere superati. I risultati del controllo AF vengono utilizzati solo per la 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
cheawb_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 la foto con l'obiettivo W deve essere superiore a quella della foto con l'obiettivo UW.
Figura 126. Macchia grigia scattata con obiettivo UW.
Figura 127. Macchia grigia scattata con l'obiettivo W.
scene8
scene8
è un riquadro rettangolare diviso in quattro regioni uguali, ciascuna contenente un ritratto scattato con un'esposizione diversa o sovrapposto a una tonalità di colore diversa (tinta blu, esposizione aumentata, esposizione diminuita, tinta gialla).
Quattro indicatori ArUco sono allineati ai quattro angoli esterni del rettangolo per ottenere coordinate precise del frame del rettangolo principale.
Figura 128. Esempio di scene8.
test_ae_awb_regions
Verifica che i valori RGB e luma siano diversi durante la registrazione dell'anteprima in regioni AE e AWB diverse.
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 dell'anteprima di ogni regione e utilizza i frame estratti per eseguire i seguenti controlli AE e AWB:
- Controllo AE: verifica che il fotogramma che misura la regione con esposizione ridotta abbia un valore di luminosità aumentato di oltre l'1% rispetto al fotogramma che misura la regione con esposizione aumentata. In questo modo viene verificato che le immagini vengano illuminate quando viene misurata una regione scura.
- Controllo AWB: verifica che il rapporto tra rosso e blu (dei valori RGB medi dell'immagine) nell'inquadratura con la regione di misurazione blu sia superiore al 2% rispetto all'inquadratura con la regione di misurazione gialla. In questo modo viene verificato che le immagini abbiano un valore RGB bilanciato quando viene misurata 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
Passaggio: i controlli AE e AWB superano entrambi.
Figura 129. Misurazione della regione scura del fotogramma con maggiore esposizione.
Figura 130. Misurazione dell'inquadratura della regione più chiara con esposizione ridotta.
Meccanismi di errore:
Per questo test è essenziale il rilevamento accurato di tutti e quattro gli indicatori ArUco. Se il rilevamento iniziale non va a buon fine, il sistema tenta un secondo passaggio di rilevamento utilizzando una versione in bianco e nero dell'immagine. La seguente immagine in scala di grigi rappresenta il passaggio di elaborazione secondario:
Figura 131. Mancata allineamento degli indicatori ArUco.
test_color_correction_mode_cct
Test COLOR_CORRECTION_MODE
su diverse temperature e tonalità di colore, verificando le variazioni dei rapporti RGB rispetto alla scena di acquisizione scena8.
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
Passa:i rapporti RGB mostrano gli aumenti o le diminuzioni previsti rispetto alle temperature e alle tonalità di colore selezionate.
Testare i criteri di salto
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 pubblicizza
COLOR_CORRECTION_MODE_CCT
inCOLOR_CORRECTION_AVAILABLE_ABERRATION_MODES
.
scene9
scene9
è costituito da migliaia di cerchi di dimensioni e colori casuali per creare una scena con ripetibilità molto bassa per sottoporre a stress gli algoritmi di compressione JPEG.
Figura 132. Esempio di scene9.
test_jpeg_high_entropy
Verifica che la compressione JPEG della fotocamera funzioni su scene9
con elevata entropia e il fattore di qualità JPEG impostato su 100%. Il fattore di zoom viene aumentato per verificare che la scena visualizzata sul tablet riempia il FOV della fotocamera.
API testate:
Pass: il file JPEG viene compresso correttamente, scritto e letto di nuovo dal disco.
test_jpeg_quality
Testa la qualità della compressione JPEG della fotocamera. Passa le qualità JPEG tramite
android.jpeg.quality
e verifica che le tabelle di quantizzazione cambino
correttamente.
API testate:
Passa:la matrice di quantizzazione diminuisce con l'aumento della qualità. La matrice rappresenta il fattore di divisione.
Figura 133. Medie della matrice DQT di luma e crominanza 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 frequenze diverse su sfondo bianco.
Figura 135. Esempio di scene_video.
test_preview_frame_drop
Verifica che la frequenza fotogrammi dell'anteprima richiesta venga mantenuta 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
Passato: la frequenza frame dell'anteprima è al massimo dell'intervallo richiesto e la variazione media tra i frame consecutivi è inferiore alla tolleranza relativa impostata nel test.
scene_extensions
I test scene_extensions
sono destinati alle estensioni della videocamera e richiedono l'uso di ITS-in-a-Box per la videocamera, poiché richiedono un controllo preciso dell'ambiente di test. Inoltre, deve essere controllata tutta la fuoriuscita di luce. Potrebbe essere necessario coprire il banco di prova, il DUT e il tablet con un telo e eliminare la fuoriuscita di luce dallo schermo anteriore del DUT.
scene_hdr
La scena scene_hdr
è composta da un ritratto a sinistra e da un codice QR a basso contrasto a destra.
Figura 136. Esempio di scene_hdr.
test_hdr_extension
Testa l'estensione HDR. Acquisisce foto con e senza l'estensione abilitata e controlla se l'estensione rende il codice QR più rilevabile.
API testate:
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
android.hardware.camera2.CameraExtensionSession#capture
Pass: l'estensione HDR riduce il numero di modifiche del contrasto necessarie per rilevare il codice QR o riduce il gradiente all'interno del 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 contorni rosso. I quadrati sono disposti in un orientamento della curva di Hilbert.
Figura 137. Esempio di scene_low_light.
test_night_extension
Testa l'estensione Notte. Acquisisce le acquisizioni con l'estensione abilitata ed esegue quanto segue:
- Rileva la presenza di 20 quadrati
- Calcola la luminanza delimitata da ogni quadrato
- Calcola il valore di luma medio dei primi 6 quadrati in base all'orientamento della griglia della curva di Hilbert
- Calcola la differenza del valore di luma dei quadrati consecutivi (ad esempio, quadrato2 - quadrato1) fino ai quadrati 5 e 6 (quadrato6 - quadrato5) e trova la media delle cinque differenze calcolate.
Per i dispositivi con Android 16 o versioni successive, la richiesta di acquisizione include una regione 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 luma medio dei primi 6 riquadri deve essere almeno 80 e la differenza media del valore di luma dei riquadri consecutivi fino ai riquadri 5 e 6 deve essere almeno 18, 75.
- Per i dispositivi con Android 15 e versioni precedenti, il valore di luma medio dei primi 6 riquadri deve essere almeno 85 e la differenza media nel valore di luma dei riquadri consecutivi fino ai riquadri 5 e 6 deve essere almeno 17.
Il seguente grafico di luminanza mostra l'aspetto di un risultato del test positivo.
Figura 138. Esempio di test superato di una scena notturna in condizioni di scarsa illuminazione.
test_low_light_boost_extension
Testa la modalità AE con aumento luce. Se Camera2 supporta la modalità AE con aumento della luminosità, questo test viene eseguito per Camera2. Se l'estensione della fotocamera con modalità notturna è supportata e supporta la modalità AE con potenziamento in condizioni di scarsa illuminazione, questo test viene eseguito anche per l'estensione della fotocamera con modalità notturna. Questo test imposta la modalità AE su Boost in condizioni di scarsa illuminazione, acquisisce un fotogramma dall'anteprima ed esegue le seguenti operazioni:
- Rileva la presenza di 20 scatole
- Calcola la luminanza delimitata da ogni riquadro
- Calcola il valore di luma medio dei primi 6 quadrati in base all'orientamento della griglia della curva di Hilbert
- Calcola la differenza del valore di luma dei quadrati consecutivi (ad esempio, quadrato2 - quadrato1) fino ai quadrati 5 e 6 (quadrato6 - quadrato5) e trova la media delle cinque differenze calcolate.
Per i dispositivi con Android 16 o versioni successive, la richiesta di acquisizione include una regione 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 luma medio dei primi 6 riquadri deve essere almeno 54 e la differenza media del valore di luma dei riquadri consecutivi fino ai riquadri 5 e 6 deve essere almeno 17.
Per i dispositivi con Android 15 e versioni precedenti, il valore di luma medio dei primi 6 riquadri deve essere almeno 70 e la differenza media nel valore di luma dei riquadri consecutivi fino ai riquadri 5 e 6 deve essere almeno 18.
scene_tele
Un requisito fondamentale per i test scene_tele
è che la distanza della carta deve essere almeno uguale alla distanza minima di messa a fuoco dell'obiettivo teleobiettivo. Poiché questa distanza minima di messa a fuoco può variare da un dispositivo all'altro, devi configurare la configurazione in base alla fotocamera con teleobiettivo specifica.
Figura 139. Impostazione di scene_tele in base alla distanza di messa a fuoco della fotocamera grandangolare e del teleobiettivo.
Per ulteriori informazioni sulla configurazione dell'hardware di test, consulta Configurazione del rig di estensione tele.
scene6_tele
La scena scene6_tele
è costituita da una griglia di indicatori ArUco su uno sfondo
bianco.
Se le acquisizioni scene6_tele
sembrano sovraesposte nel
rig modulare, rimuovi la
piastra frontale del
rig modulare.
Scollega il banco di prova WFoV dall'estensione e rimuovi il supporto dello smartphone.
Figura 140. Scollega il banco di prova WFoV dall'estensione e rimuovi il supporto dello smartphone.
Figura 141. Rimuovi la piastra anteriore.
test_zoom_tele
Verifica il 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
Pass: le dimensioni relative dell'indicatore ArUco acquisito sono precise rispetto al rapporto di zoom richiesto per verificare che lo zoom della fotocamera sia corretto e la distanza dell'indicatore dal centro dell'immagine cambia in base ai criteri elencati in test_zoom
.
test_preview_zoom_tele
Testa il comportamento dello zoom della fotocamera per i frame di anteprima dall'obiettivo grandangolare al
teleobiettivo. Il test è identico a
test_preview_zoom
, ma 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
Passato: le dimensioni relative dell'indicatore ArUco acquisito sono precise rispetto al rapporto di zoom richiesto per verificare che lo zoom della fotocamera sia corretto e la distanza dell'indicatore 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 un riquadro rettangolare diviso in quattro quadranti uguali, ciascuno riempito con un colore diverso. Al centro del rettangolo è presente un grafico con bordi inclinati per i controlli della nitidezza. Quattro indicatori ArUco sono allineati ai quattro angoli esterni
del rettangolo per contribuire a ottenere coordinate precise del frame del
rettangolo principale con rapporti di zoom diversi.
test_multi_camera_switch_tele
Questo test verifica che durante la registrazione dell'anteprima con rapporti di zoom diversi, il passaggio dall'obiettivo grandangolare (W) a quello teleobiettivo (tele) generi valori RGB simili.
Il test utilizza diversi rapporti di zoom nell'intervallo predefinito per eseguire una registrazione dell'anteprima dinamica e identificare il punto in cui cambia la fotocamera fisica. Questo punto indica il passaggio dall'obiettivo grandangolare all'obiettivo tele.
I fotogrammi acquisiti al punto di crossover e prima vengono analizzati per AE, AWB e AF.
Il controllo AE verifica che la variazione di luminosità rientri nell'intervallo previsto sia per le immagini con obiettivo grandangolare sia per quelle con obiettivo tele. Il controllo AWB verifica che i rapporti tra rosso e verde e blu e verde rientrino nei valori di soglia sia per le immagini con obiettivo W che per quelle con obiettivo tele. Il controllo AF valuta il valore della stima della nitidezza in base all'intensità media del gradiente tra le immagini dell'obiettivo grandangolare e dell'obiettivo tele.
API testate:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.media.CamcorderProfile
android.media.MediaRecorder
Passato:affinché il test venga superato, i controlli AE, AWB e AF devono essere tutti superati. Di seguito sono riportati i criteri per ogni controllo:
- Controllo AE: la variazione di luminosità tra le immagini dell'obiettivo grandangolare e dell'obiettivo 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 dell'obiettivo tele deve essere superiore a quella dell'obiettivo W.
scene_flash
I test scene_flash
richiedono una scena buia nella casella di fusione dei sensori.
test_auto_flash
Verifica che il flash automatico venga attivato in una scena buia per le fotocamere anteriori e posteriori. Per le fotocamere anteriori, il flash automatico utilizza lo schermo per illuminare la scena, non un'unità flash fisica. Il test verifica che il flash automatico venga attivato controllando che il centro dell'immagine del riquadro sia più luminoso con il flash automatico abilitato. Per attivare il flash automatico, 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. L'app Jetpack Camera (JCA) deve essere installata sul dispositivo prima del test. Il flash automatico per le fotocamere rivolte all'indietro si basa sullo stato AE per essere attivato, ma il flash automatico per le fotocamere rivolte in avanti non si basa su 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
Passaggio: il centro dell'immagine del riquadro con il flash automatico abilitato è più luminoso rispetto all'immagine della scena originale per tutte le videocamere.
test_flash_strength
Verifica che il controllo dell'intensità del flash in modalità
SINGLE
sia implementato correttamente.
Verifica che se il dispositivo supporta il controllo dell'intensità del flash durante l'uso della fotocamera in modalità SINGLE
, l'intensità del flash cambi con 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à e, se la modalità è ON_AUTO_FLASH
, il livello di intensità del flash non influisce sulla luminosità.
Per eseguire il test, le spie nel banco di prova devono essere spente. Le spie 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 l'intensità del flash aumenta da nessuna a FLASH_SINGLE_STRENGTH_MAX_LEVEL
.
Quando la modalità di esposizione automatica è ON_AUTO_FLASH
, la differenza di luminosità delle patch dell'immagine è entro i limiti di tolleranza man mano che l'intensità del flash aumenta da nessun flash a FLASH_SINGLE_STRENGTH_MAX_LEVEL
.
test_led_snapshot
Verifica che gli istantanei LED non saturino o colorino l'immagine.
Questo test aggiunge un controller di illuminazione alla cassetta di derivazione Sensor Fusion 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 l'attivatore aePrecapture
impostato su START
e imposta l'intenzione di acquisizione su Preview
per acquisire l'immagine con il flash.
Poiché l'acquisizione ha un hotspot distintivo dovuto al flash, il test calcola la media dell'immagine flash dell'intera acquisizione e verifica se il valore rientra nell'intervallo (68, 102). Per verificare se l'immagine è ragionevolmente bilanciata in bianco, il test calcola i rapporti rosso-verde e blu-verde e verifica se rientrano nell'intervallo compreso 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
Passaggio: i rapporti rosso-verde e blu-verde rientrano tra 0,95 e 1,05. La media dell'immagine con flash rientra nell'intervallo (68, 102).
test_night_mode_indicator
Verifica la funzionalità dell'indicatore della modalità notturna, una funzionalità che indica se la fotocamera è in funzione in condizioni di scarsa illuminazione e può trarre vantaggio da un'acquisizione statica con l'estensione della modalità notturna. Questa funzionalità è disponibile solo su dispositivi che supportano le estensioni della videocamera in modalità Notte.
Questo test verifica che l'indicatore della modalità notturna rifletta correttamente le condizioni di illuminazione durante l'anteprima della fotocamera. Il test esegue i seguenti passaggi:
- Inizialezzazione: il test inizializza un
ItsSession
e recupera le proprietà della videocamera. Inoltre, stabilisce una connessione con il controller di illuminazione. - Condizioni di salto:il test viene ignorato se il dispositivo non supporta il livello API richiesto o la funzionalità dell'indicatore della modalità notturna.
- Sessione Camera2:
- Il test avvia una sessione di acquisizione di anteprime utilizzando una sessione
Camera2
. - La spia si accende e viene acquisito un frame di anteprima.
- Il test verifica che l'indicatore della modalità notturna sia nello stato
OFF
. - La spia si spegne 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 di anteprime 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 controllore di illuminazione.
API testate:
Pass:
- Quando la spia è accesa, l'indicatore della modalità notturna dovrebbe 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
Verifica che la frequenza dei fotogrammi dell'anteprima diminuisca correttamente in una scena buia. Affinché questo esame funzioni correttamente, le spie nell'apparecchiatura di prova devono essere disattivate dal controllore 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
Passaggio: 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
Verifica che il controllo dell'intensità del flash in modalità
TORCH
sia implementato correttamente.
Verifica che se il dispositivo supporta il controllo dell'intensità del flash durante l'uso della fotocamera in modalità TORCH
, l'intensità della torcia cambi con 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à e, 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 un'esplosione, simulando una sessione di acquisizione video. 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_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 raffica di immagini aumenta man mano che l'intensità del flash aumenta da nessuna illuminazione
a
FLASH_TORCH_STRENGTH_MAX_LEVEL
.
Quando la modalità di esposizione automatica è ON_AUTO_FLASH
, la differenza di luminosità delle patch di raffica di immagini rientra nei limiti di tolleranza man mano che l'intensità del flash aumenta da nessuna a FLASH_TORCH_STRENGTH_MAX_LEVEL
.
sensor_fusion
I test di fusione dei sensori richiedono movimenti specifici dello smartphone davanti a un motivo a scacchi e a indicatori ArUco. Per risultati ottimali, verifica che il grafico di prova sia montato in piano. I grafici non piatti influiscono sui calcoli di rotazione per molti
tra i test. Il grafico deve riempire il retro della cassetta di fusione dei sensori stampandolo con una dimensione di 43 x 43 cm. (43 x 43 cm). I test sensor_fusion
possono essere automatizzati con la Sensor Fusion Box.
Figura 142. Grafico di fusione dei sensori.
Figura 143. Grafico di fusione dei sensori che riempie il retro della casella di fusione dei sensori.
test_lens_intrinsic_calibration
Verifica che il centro ottico dell'obiettivo cambi in modo intrinseco quando l'obiettivo si sposta a causa della stabilizzazione ottica dell'immagine (OIS). Se i campioni intrinseci dell'obiettivo sono supportati, verifica che il centro ottico dei campioni intrinseci dell'obiettivo cambi quando l'obiettivo si muove a causa dell'OIS.
API testate:
android.hardware.camera2.CameraCharacteristics#LENS_INTRINSIC_CALIBRATION
android.media.MediaRecorder
android.media.CamcorderProfile
Passa:il centro ottico dell'obiettivo cambia in modo intrinseco di 1 pixel o più. Se i campioni intrinseci dell'obiettivo sono supportati, i centri ottici dei campioni intrinseci dell'obiettivo cambiano di almeno 1 pixel.
La figura seguente è un esempio di test_lens_intrinsic_calibration
plot
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 fotogramma.
test_multi_camera_frame_sync
Verifica che i timestamp dei frame acquisiti dalla videocamera logica rientrino in un intervallo di 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()
Passa:l'angolo tra le immagini di ogni fotocamera non cambia in modo significativo quando lo smartphone viene ruotato.
test_preview_distortion
Verifica che la distorsione venga corretta in ogni frame di anteprima acquisito a vari livelli di zoom. Per ogni frame di anteprima, il test calcola i punti ideali in base ai dati intrinseci ed estrinseci della videocamera.
Nell'immagine di esempio, i punti ideali sono mostrati in verde, mentre quelli effettivi sono in rosso. L'errore di distorsione viene calcolato in base alla distanza RMS dei pixel tra i punti effettivi e quelli ideali. Gli evidenziatori verdi e rossi sull'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
Passato: l'errore di distorsione normalizzato di ogni frame di anteprima è inferiore alla soglia impostata nel test.
test_preview_stabilization
Verifica che il video di anteprima stabilizzato ruoti meno del giroscopio.
API testate:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
Passaggio: la rotazione angolare massima nei frame è inferiore al 70% della rotazione del giroscopio.
Di seguito sono riportati 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 del timestamp tra la fotocamera e il giroscopio per le applicazioni AR
e VR. Lo smartphone viene ruotato di 90 gradi 10 volte davanti al motivo a scacchiera. Il movimento è di circa 2 secondi andata e ritorno. Questo
test viene ignorato se non è incluso alcun giroscopio o se il parametro REALTIME
della fonte del timestamp non è abilitato.
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 dello smartphone durante il test. Il movimento nelle direzioni x e y implica che lo smartphone non è montato saldamente sulla piastra di montaggio, riducendo la probabilità di superare il test. 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 gli eventi della videocamera. Questo grafico deve mostrare un movimento corrispondente tra la fotocamera 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
Pass: l'offset dei timestamp della fotocamera e del giroscopio è inferiore a 1 ms come indicato in 7.3.9 Sensori ad alta fedeltà nel CDD.
Meccanismi di errore:
- Errore di offset: l'offset della fotocamera e del giroscopio non è calibrato correttamente entro +/-1 ms.
- Cadute di frame: la pipeline non è abbastanza veloce per acquisire 200 frame consecutivamente.
- Errori di socket:
adb
non riesce a connettersi in modo affidabile al DUT per un tempo sufficiente per eseguire il test. - Il grafico non è montato in piano. Il grafico
test_sensor_fusion_plot_rotations
contiene fotogrammi in cui la rotazione del giroscopio e della fotocamera varia notevolmente man mano che la fotocamera ruota nelle parti del grafico non piane. - 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 perché la fotocamera posteriore spesso ha un rilievo 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
Verifica che il video stabilizzato ruoti meno del giroscopio.
API testate:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
Passaggio: la rotazione angolare massima nei frame è inferiore al 60% della rotazione del giroscopio.
Di seguito sono riportati 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 dimostrano che il video stabilizzato acquisito utilizzando il JCA gira meno del giroscopio. 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
Pass: la rotazione angolare massima dei fotogrammi estratti dal video acquisito con il JCA è inferiore al 70% della rotazione del giroscopio.
feature_combination
I test feature_combination
verificano che le funzionalità funzionino correttamente quando sono attivate contemporaneamente più funzionalità della fotocamera. Questi test utilizzano la stessa
immagine a scacchiera utilizzata nella scena di fusione dei sensori.
test_feature_combination
Testa tutte le combinazioni di diversi stream, modalità di stabilizzazione video, intervallo di FPS target, video HDR a 10 bit e Ultra HDR supportati dal dispositivo della fotocamera.
Per Android 16 e versioni successive, il test esegue tutte le combinazioni di funzionalità supportate e registra i risultati in un file proto. Le asserzioni di errore vengono chiamate solo per combinazioni di funzionalità per le quali isSessionConfigurationSupported
restituisce True
.
API testate:
android.hardware.camera2.CameraDevice.CameraDeviceSetup#isSessionConfigurationSupported
android.hardware.camera2.CameraDevice.CameraDeviceSetup#createCaptureRequest
Passaggio: per ogni combinazione di funzionalità supportata:
- Lo stream di anteprima viene stabilizzato se la stabilizzazione dell'anteprima è attiva.
- La frequenza fotogrammi dell'anteprima rientra nei limiti di
AE_TARGET_FPS_RANGE
configurati. - 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, la scena scene_ip
abilita i 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. JCA replica le acquisizioni delle app di social media e fornisce un'immagine di riferimento che le app di social media poi elaborano e perfezionano.
Requisiti per la configurazione dell'hardware
Per i test scene_ip
è necessaria la seguente configurazione hardware:
- I test vengono eseguiti nella videocamera ITS-in-a-box di 2ª generazione.
- I controller di illuminazione e servo che fanno parte del rig di 2ª generazione 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.
Testare i criteri di salto
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 anteriori e posteriori principali (ad esempio un tablet o una TV).
test_default_jca_ip
Acquisisce le immagini del grafico delle funzionalità di test in condizioni di illuminazione controllate utilizzando l'app Fotocamera predefinita e il 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 della fotocamera predefinita e JCA non superi 10. Questo controllo utilizza la patch dinamica per la misurazione della luminosità.
Bilanciamento del bianco:verifica che la differenza di bilanciamento del bianco tra l'app della fotocamera predefinita e JCA non superi 4. Questo controllo utilizza la patch dinamica per la misurazione della luminosità.
Superamento della sezione di base: il test supera i controlli di FoV, luminosità e bilanciamento del bianco. In Android 16, questo test non è obbligatorio
(NOT_YET_MANDATED
).