Test ITS della videocamera

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, vibrazione
  • scene1: esposizione, sensibilità, compensazione del valore di esposizione (EV), YUV rispetto a JPEG e RAW
  • scene2: rilevamento dei volti, test che richiedono scene a colori
  • scene3: miglioramento dei contorni, movimento dell'obiettivo
  • scene4: proporzioni, ritaglio, campo visivo
  • scene5: ombreggiatura dell'obiettivo
  • scene6: zoom
  • scene7: opzione per più fotocamere
  • scene8: misurazione della regione per l'esposizione automatica (AE) e il bilanciamento del bianco automatico (AWB)
  • scene9: compressione JPEG
  • scene_extensions: estensioni della videocamera
  • scene_tele: passaggio al teleobiettivo
  • scene_flash: flash automatico, frequenza fotogrammi minima
  • scene_video: frame drop
  • sensor_fusion: offset dei tempi della fotocamera e del giroscopio
  • feature_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:

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.

Grafico test_jitter

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:

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:

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:

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:

  1. Acquisisce immagini per tutti i pattern di test supportati.
  2. Esegue un controllo di correttezza per il pattern di test a tinta unita e le barre di colore.

API testate:

Passato: gli schemi di test supportati vengono generati correttamente.

Esempio di test_test_patterns

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:

Passaggio: i file YUV e RAW sono simili tra loro.

Esempio non elaborato di test_tonemap_curve

Figura 3. Esempio non elaborato di test_tonemap_curve.

Esempio di test_tonemap_curve YUV

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:

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:

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.

Esempio di scena1

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:

Passa: l'AE converge.

test_auto_vs_manual

I test che hanno acquisito foto automatiche e manuali sono uguali.

API testate:

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.

Esempio di test automatico test_auto_vs_manual

Figura 6. Esempio di test automatico test_auto_vs_manual.

Esempio di bilanciamento del bianco test_auto_vs_manual

Figura 7. Esempio di bilanciamento del bianco test_auto_vs_manual.

Esempio di trasformazione del bilanciamento del bianco manuale 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:

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%.

test_black_white, esempio di nero

Figura 9. test_black_white, esempio di nero.

Esempio di trasformazione del bilanciamento del bianco manuale test_auto_vs_manual

Figura 10. Esempio di test_black_white, bianco.

Esempio di significato del grafico test_black_white

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:

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

test_burst_sameness_manual_mean

Figura 12. Esempio di media di test_burst_sameness_manual.

test_burst_sameness_manual_plot_means

Figura 13. test_burst_sameness_manual_plot_means

test_crop_region_raw

Verifica che gli stream RAW non siano ritagliabili.

API testate:

Passa:le immagini YUV vengono ritagliate al centro, ma non le immagini RAW.

test_crop_region_raw comp raw crop example

Figura 14. Esempio di ritaglio non elaborato di test_crop_region_raw.

test_crop_region_raw comp raw full example

Figura 15. Esempio completo di comp raw test_crop_region_raw.

Esempio di ritaglio YUV della composizione test_crop_region_raw

Figura 16. Esempio di ritaglio YUV di comp test_crop_region_raw.

Esempio di test_crop_region_raw_yuv_full

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:

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:

Passaggio di sezione di base: le immagini mostrano un'esposizione crescente senza sovraesposizione in cinque passaggi.

test_ev_compensation_basic

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.

test_ev_compensation_advanced_plot_means

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:

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.

test_exposure_plot_means

Figura 20. test_exposure_plot_means.

test_exposure_mult=1.00.jpg

Figura 21. test_exposure_mult=1.00.

test_exposure_mult=64.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.

Esempio di grafico test_latching

Figura 23. Il grafico test_latching indica un esempio.

test_latching i=00

Figura 24. test_latching i=00.

test_latching i=01

Figura 25. test_latching i=01.

test_latching i=02

Figura 26. test_latching i=02.

test_latching i=03

Figura 27. test_latching i=03.

test_latching i=04

Figura 28. test_latching i=04.

test_latching i=05

Figura 29. test_latching i=05.

test_latching i=06

Figura 30. test_latching i=06.

test_latching i=07

Figura 31. test_latching i=07.

test_latching i=08

Figura 32. test_latching i=08.

test_latching i=09

Figura 33. test_latching i=09.

test_latching i=10

Figura 34. test_latching i=10.

test_latching i=11

Figura 35. test_latching i=11.

test_latching i=12

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:

Pass: i valori R, G, B devono aumentare in modo lineare con l'aumento della sensibilità.

Esempio di grafico di test_linearity

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:

Passaggio: le acquisizioni sembrano coerenti.

Esempio di frame0 di test_locked_burst

Figura 38. Esempio di frame0 di test_locked_burst.

Esempio di frame1 di test_locked_burst

Figura 39. Esempio di frame1 di test_locked_burst.

test_locked_burst_frame2

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:

Passa:i valori R e B vengono aumentati in base alla trasformazione.

Esempio di grafico test_param_color_correction

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.

test_param_color_correction req=0 unity example

Figura 42. Esempio di unità test_param_color_correction req=0.

Esempio di boost rosso per test_param_color_correctness req=1

Figura 43. Esempio di boost rosso test_param_color_correctness req=1.

Esempio di test_param_color_correction req=2 blue boost

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.

Esempio di test_param_flash_mode 1

Figura 45. Esempio di test_param_flash_mode 1.

Esempio di riquadro test_param_flash_mode 1

Figura 46. Esempio di un riquadro test_param_flash_mode.

Esempio di test_param_flash_mode_2

Figura 47. Esempio di test_param_flash_mode 2.

Esempio di riquadro 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:

Esempio di grafico SNR di test_param_noise_reduction

Figura 49. Esempio di grafico SNR di test_param_noise_reduction.

0: OFF, 1: FAST, 2: HQ, 3: MIN , 4: ZSL

test_param_noise_reduction high gain nr=0 example

Figura 50. Esempio di guadagno elevato test_param_noise_reduction nr=0.

Esempio di test_param_noise_reduction high gain nr=1

Figura 51. Esempio di test_param_noise_reduction con guadagno elevato nr=1.

Esempio di test_param_noise_reduction ad alto guadagno nr=2

Figura 52. Esempio di test_param_noise_reduction con guadagno elevato nr=2.

Esempio di test_param_noise_reduction high gain nr=3

Figura 53. Esempio di test_param_noise_reduction con guadagno elevato nr=3.

Esempio di guadagno basso test_param_noise_reduction

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:

Passaggio: le modalità di ombreggiatura vengono cambiate e le mappe di ombreggiatura dell'obiettivo vengono modificate come previsto.

test_param_shading_mode mappa di ombreggiatura dell&#39;obiettivo, modalità 0 loop 0 esempio

Figura 55.Mappa di ombreggiamento dell'obiettivo test_param_shading_mode, esempio di modalità 0, ciclo 0.

test_param_shading_mode mappa di ombreggiatura dell&#39;obiettivo, modalità 1 loop 0 esempio

Figura 56. Mappa di ombreggiamento dell'obiettivo test_param_shading_mode, esempio di modalità 1, ciclo 0.

test_param_shading_mode mappa di ombreggiatura dell&#39;obiettivo, modalità 2 loop 0 esempio

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:

Pass:

  • test1: entrambe le immagini hanno una mappatura tonale lineare, ma n=1 ha una sfumatura più accentuata. Il canale G (verde) è più luminoso per l'immagine n=1.
  • test2: stessa mappatura tonale, ma lunghezza diversa. Le immagini sono uguali.

test_param_tonemap_mode con n=0

Figura 58. test_param_tonemap_mode con n=0.

test_param_tonemap_mode con n=1

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:

Passa:le immagini RAW diventano più scure man mano che l'aumento aumenta, mentre la luminosità delle immagini YUV rimane costante.

test_post_raw_sensitivity_boost raw s=3583 boost=0100 example

Figura 60. Esempio di test_post_raw_sensitivity_boost raw s=3583 boost=0100.

Esempio di test_post_raw_sensitivity_boost raw s=1792 boost=0200

Figura 61. Esempio di test_post_raw_sensitivity_boost raw s=1792 boost=0200.

test_post_raw_sensitivity_boost raw s=0896 boost=0400 example

Figura 62. Esempio di test_post_raw_sensitivity_boost raw s=0896 boost=0400.

test_post_raw_sensitivity_boost raw s=0448 boost=0800 example

Figura 63. Esempio di test_post_raw_sensitivity_boost raw s=0448 boost=0800.

Esempio di test_post_raw_sensitivity_boost raw s=0224 boost=1600

Figura 64. Esempio di test_post_raw_sensitivity_boost raw s=0224 boost=1600.

test_post_raw_sensitivity_boost raw s=0112 boost=3199 example

Figura 65. Esempio di test_post_raw_sensitivity_boost raw s=0112 boost=3199.

Esempio di significato del grafico non elaborato test_post_raw_sensitivity_boost

Figura 66. Grafico non elaborato di test_post_raw_sensitivity_boost: esempio.

Esempio di test_post_raw_sensitivity_boost YUV s=0112 boost=3199

Figura 67. Esempio di test_post_raw_sensitivity_boost YUV s=0112 boost=3199.

Esempio di test_post_raw_sensitivity_boost YUV s=0448 boost=0800

Figura 68. Esempio di test_post_raw_sensitivity_boost YUV s=0448 boost=0800.

Esempio di test_post_raw_sensitivity_boost YUV s=0896 boost=0400

Figura 69. Esempio di test_post_raw_sensitivity_boost YUV s=0896 boost=0400.

test_post_raw_sensitivity_boost YUV s=1792 boost=0200 example

Figura 70. Esempio di test_post_raw_sensitivity_boost YUV s=1792 boost=0200.

Esempio di test_post_raw_sensitivity_boost YUV s=3585 boost=0100

Figura 71. Esempio di test_post_raw_sensitivity_boost YUV s=3585 boost=0100.

test_post_raw_sensitivity_boost_yuv_plot_means

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:

Passaggio: l'aumento dell'ISO (guadagno) rende i pixel più sensibili alla luce, quindi il grafico si sposta verso sinistra.

Esempio di test_raw_exposure ISO=55

Figura 73. Esempio di test_raw_exposure ISO=55.

10⁰ è 1 ms, 10¹ è 10 ms e 10⁻¹ è 0, 1 ms.

Esempio di test_raw_exposure ISO=132

Figura 74. Esempio di test_raw_exposure ISO=132.

Esempio di test_raw_exposure ISO=209

Figura 75. Esempio di test_raw_exposure ISO=209.

Esempio di test_raw_exposure ISO=286

Figura 76. Esempio di test_raw_exposure ISOs=286.

Esempio di test_raw_exposure ISO=363

Figura 77. Esempio di test_raw_exposure ISO=363.

test_raw_exposure_s=440

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.

Grafico tipico del rapporto SNR rispetto alla modalità NR

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.

Esempio di test_tonemap_sequence i=0

Figura 80. Esempio di test_tonemap_sequence i=0.

Esempio di test_tonemap_sequence i=1

Figura 81. Esempio di test_tonemap_sequence i=1.

Esempio di test_tonemap_sequence i=2

Figura 82. Esempio di test_tonemap_sequence i=2.

Esempio di test_tonemap_sequence i=3

Figura 83. Esempio di test_tonemap_sequence i=3.

Esempio di test_tonemap_sequence_i=4

Figura 84. Esempio di test_tonemap_sequence i=4.

Esempio di test_tonemap_sequence i=5

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:

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.

Esempio di test_yuv_jpeg_all

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.

Esempio di test_yuv_plus_dng

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:

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.

test_capture_result_plot_lsc_auto_ch0

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:

Passaggio: i parametri del modello RAW DNG sono corretti. I valori RGB previsti corrispondono ai valori RGB effettivi misurati.

test_dng_noise_model_plog

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%.

test_jpeg_fmt=jpg.jpg

Figura 90. test_jpeg_fmt=jpg.jpg.

test_jpeg=fmt=yuv.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:

Passaggio: ogni scatto è più rumoroso del precedente, poiché il guadagno aumenta.

Utilizza la varianza della cella della griglia delle statistiche centrali.

test_raw_burst_sensitivity_variance

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:

Passaggio:la varianza aumenta con ogni scatto.

test_raw_sensitivity_variance

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:

Passaggio: le immagini YUV e JPEG sono simili e hanno una differenza RMS (valore di un segnale) inferiore all'1%.

test_yuv_plus_jpeg con formato JPEG

Figura 94. test_yuv_plus_jpeg con formato JPEG.

test_yuv_plus_jpeg con formato YUV

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:

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%.

test_yuv_plus_raw_shading=1_raw.jpg

Figura 96. test_yuv_plus_raw_shading=1_raw.jpg.

test_yuv_plus_raw_shading=1_yuv.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:

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:

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:

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:

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.

Esempio di scene2_a

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:

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:

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:

Passaggio: acquisisce l'immagine della scena con effetti OFF e un'immagine monocromatica con effetti impostati su MONO.

test_effects_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:

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:

Pass: tutte le combinazioni sono state acquisite correttamente.

test_num_faces

Testa il rilevamento dei volti.

API testate:

Pass: trova tre volti.

Esempio di modalità di rilevamento dei volti 1 di test_num_faces

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:

Pass: i piani U e V non sono scambiati.

test_reprocess_uv_swap

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:

Passa: trova tre volti con punti di riferimento del viso nelle relative caselle delimitanti.

test_num_faces_fd_mode_1

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:

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:

Pass: trova tre volti.

test_num_faces_fd_mode_1

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:

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:

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:

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.

Esempio di scene2_f

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:

Passa: trova tre volti con punti di riferimento del viso nelle relative caselle delimitanti.

test_num_faces_fd_mode_1

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.

scene2_g.png

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:

Passa: trova tre volti con punti di riferimento del viso nelle relative caselle delimitanti.

test_preview_num_faces

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

test_edge_enhancement_edge=0

Figura 108. Esempio di test_edge_enhancement edge=0.

Esempio di test_edge_enhancement edge=1

Figura 109. Esempio di test_edge_enhancement edge=1 (modalità rapida).

Esempio di test_edge_enhancement edge=2

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.

Esempio di patch della scena test_flip_mirror

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:

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.

Esempio di deriva del giroscopio test_imu_drift

Figura 112. Esempio di deriva del giroscopio test_imu_drift.

Esempio di deriva del vettore di rotazione 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:

Passato: il test individua un grafico con la rotazione prevista (0 gradi se l'override da paesaggio a ritratto è disattivato, 90 gradi se è attivato).

Esempio di test_landscape_to_portrait

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:

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) in test_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) in test_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:

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.

Esempio di grafico test_reprocess_edge_enhancement

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.

Esempio di scena 4

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:

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:

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:

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 e LENS_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:

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:

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:

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:

Esempio di scene5

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:

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.

scene6

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:

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:

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.

test_zoom per trovare il contorno dell&#39;indicatore ArUco più vicino al centro

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:

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:

Pass: le dimensioni relative dell'indicatore acquisito sono accurate rispetto al rapporto di zoom richiesto nel video e nell'anteprima.

HD_1280x720_key_frame.png

Figura 120. HD_1280x720_key_frame.png (prima dello zoom).

preview_1280x720_key_frame.png

Figura 121. preview_1280x720_key_frame.png (prima dello zoom).

HD_1280x720_key_frame_zoomed.png

Figura 122. HD_1280x720_key_frame.png (dopo lo zoom).

preview_1280x720_key_frame_zoomed.png

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:

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.

Immagini di test_preview_zoom che mostrano l&#39;indicatore selezionato più vicino al centro

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:

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.

scene7

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:

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 che awb_regions. Se è supportato solo ae_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 che awb_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.

test_multi_camera_switch_gray_uw_y

Figura 126. Macchia grigia scattata con obiettivo UW.

test_multi_camera_switch_gray_w_y

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.

Esempio di scena8

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:

Passaggio: i controlli AE e AWB superano entrambi.

test_ae_awb_regions_dark_region

Figura 129. Misurazione della regione scura del fotogramma con maggiore esposizione.

test_ae_awb_regions_light_region

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:

    Mancata allineamento degli indicatori ArUco

    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:

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:

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.

Esempio di scene9

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.

Medie della matrice DQT di luma e crominanza della fotocamera posteriore di Pixel 4 rispetto alla qualità JPEG

Figura 133. Medie della matrice DQT di luma e crominanza della fotocamera posteriore di Pixel 4 rispetto alla qualità JPEG.

Esempio di test non riuscito test_jpeg_quality

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:

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.

scene_hdr

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:

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.

Esempio di scena_low_light

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:

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.

Esempio di test superato di una scena notturna in condizioni di scarsa illuminazione

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:

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.

Configurazione di scene_tele in base alla distanza di messa a fuoco della fotocamera grandangolare e teleobiettivo

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.

Scollega il banco di prova WFoV dall&#39;estensione e rimuovi il supporto dello smartphone

Figura 140. Scollega il banco di prova WFoV dall'estensione e rimuovi il supporto dello smartphone.

remove_front_plate

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:

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:

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:

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:

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:

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:

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:

  1. Inizialezzazione: il test inizializza un ItsSession e recupera le proprietà della videocamera. Inoltre, stabilisce una connessione con il controller di illuminazione.
  2. Condizioni di salto:il test viene ignorato se il dispositivo non supporta il livello API richiesto o la funzionalità dell'indicatore della modalità notturna.
  3. 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.
  4. Sessione di estensione della videocamera:
    • Il test ripete la stessa procedura della sessione Camera2, ma utilizzando una sessione CameraExtension con l'estensione EXTENSION_NIGHT.
  5. 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 quelle CameraExtension.

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:

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:

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.

Grafico di fusione dei sensori

Figura 142. Grafico di fusione dei sensori.

Grafico di fusione dei sensori in Rig

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:

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:

test_lens_intrinsic_calibration_example.png

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:

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.

test_preview_distortion_example.jpg

Figura 145. Immagine di una scacchiera con i punti ideali in verde e i punti effettivi in rosso.

API testate:

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:

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.

    Esempio di eventi del giroscopio test_sensor_fusion

    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.

    Esempio di rotazioni del grafico test_sensor_fusion

    Figura 149. Esempio di rotazioni del grafico test_sensor_fusion.

API testate:

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:

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:

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:

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.

test_chart_gen2

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).