ITS-Tests der Kamera

Diese Seite enthält eine umfassende Liste der Tests der Camera Image Test Suite (ITS), die Teil der CTS Verifier (Android Compatibility Test Suite) ist. ITS-Tests sind Funktionstests. Das bedeutet, dass die Bildqualität nicht gemessen wird, aber alle beworbenen Kamerafunktionen wie erwartet funktionieren. In diesem Dokument erfahren Entwickler und Tester, was die einzelnen Tests bewirken und wie Testfehler behoben werden können.

ITS-Gatter-Tests der Kamera richten sich nach den erforderlichen Kameraeigenschaften, dem API-Level und der MPC-Ebene (Media Performance Class). Für die API-Ebene verwendet ITS ro.product.first_api_level, um Tests zu steuern, die auf einer bestimmten API-Ebene hinzugefügt wurden und die auf negative Nutzerfreundlichkeit hinsichtlich der Funktionalität auf niedrigeren API-Ebenen getestet werden. ITS verwendet ro.vendor.api_level, um Tests für Funktionen zu steuern, die in einer bestimmten API-Ebene hinzugefügt wurden und neue Hardwarefunktionen erfordern. Wenn ro.odm.build.media_performance_class für ein Gerät definiert ist, muss ITS je nach MPC-Level bestimmte Tests ausführen.

Tests sind wie folgt nach Szenen gruppiert:

  • scene0:Metadaten, Jitter, Gyroskop, Vibration erfassen
  • Szene 1:Belichtung, Empfindlichkeit, EV-Kompensation, YUV im Vergleich zu JPEG/RAW
  • scene2:Gesichtserkennung, Tests, die Farbszenen oder vollständige Dunkelheit erfordern
  • scene3:Kantenoptimierung, Objektivbewegung
  • scene4:Seitenverhältnis, Zuschnitt, Sichtfeld
  • scene5:Objektivschatten
  • scene6:Zoom
  • scene_extensions:Kameraerweiterungen
  • sensor_fusion:Zeitverschiebung der Kamera/Gyroskope

Eine Beschreibung der einzelnen Szenen finden Sie in den einzelnen Abschnitten.

Szene 0

Scene0-Tests erfordern keine spezifischen Szeneninformationen. Für das Testen des Gyroskops und der Vibration muss das Smartphone jedoch unbeweglich sein.

Test-Burst-Erfassung

Überprüft, ob die gesamte Erfassungspipeline mit der Geschwindigkeit der Fullsize-Aufnahme und der CPU-Zeit Schritt halten kann.

Getestete APIs:

Erfolgreich:Nimmt eine Bilderserie in Originalgröße auf und die Kamera ist schnell genug, um eine Zeitüberschreitung zu vermeiden.

Test_Erfassungsergebnis_Dump

Testet, ob ein Erfassungsergebnis von einer manuellen Erfassung zurückgegeben wird, und gibt es dann aus.

Getestete APIs:

Bestanden:Die Erfassung wird abgeschlossen und die Erfassungsergebnisse werden gespeichert.

Gyro-Bias-Test

Testet, ob das Gyroskop bei stehendem Gerät eine stabile Ausgabe liefert. Die Daten werden als durchschnittlich 20 Datenpunkte dargestellt.

Getestete APIs:

Bestanden: Das Delta der Gyroskopwerte beträgt weniger als 0,01 im Zeitverlauf.

Test_Gyro-Bias-Diagramm.png

Test_Gyro-Bias-Diagramm.png

Testjitter

Misst den Jitter in den Kamerazeitstempeln.

Getestete APIs:

Erfolgreich:Zwischen den Frames liegt ein Delta von mindestens 30 ms.

Test-Jitterdiagramm.png

test_jitter_plot.png (Beachten Sie den kleinen Bereich der Y-Achse. Jitter ist in diesem Diagramm eigentlich klein.)

Testmetadaten

Testet die Gültigkeit von Metadateneinträgen. Sieht sich die Aufnahmeergebnisse und die Eigenschaften der Kamera an. Für diesen Test werden die Belichtungs- und Verstärkungswerte von auto_capture_request verwendet, da der Bildinhalt nicht wichtig ist.

Getestete APIs:

Erfolgreich:Hardwareebene, rollingShutterSkew, frameDuration-Tags, timestampSource, croppingType, blackLevelPattern, pixel_pitch, FoV, Hyperfokale Entfernung sind vorhanden und haben gültige Werte.

test_param_Empfindlichkeit_Burst

Prüft, ob der Parameter android.sensor.sensitivity im Burst ordnungsgemäß angewendet wird. Prüft nur die Ausgabemetadaten.

Getestete APIs:

Erfolgreich:Ausgabedaten haben eine Fehlertoleranz von weniger als 0,2%.

test_read_write

Testet, ob das Gerät die richtigen Belichtungs- und Verstärkungswerte schreibt. Dazu werden die Erfassungsmetadaten gelesen.

Getestete APIs:

Bestanden:Lese- und Schreibwerte stimmen in allen Aufnahmen überein.

test_sensor_events

Testet, bei dem das Gerät Sensorereignisse für Geräte abfragt und ausgibt, die die Sensor Fusion-Unterstützung bewerben. Die erwarteten Sensoren sind Beschleunigungsmesser, Gyroskop und Magnetometer. Dieser Test funktioniert nur bei eingeschaltetem Bildschirm, d. h., das Gerät befindet sich nicht im Stand-by-Modus.

Getestete APIs:

Bestanden:Ereignisse für jeden Sensor werden empfangen.

test_solid_color_test_pattern

Testet, ob einfarbige Testmuster für das Stummschalten von Kameras korrekt generiert werden. Wenn das Stummschalten der Kamera unterstützt wird, müssen auch Vollfarben-Testmuster unterstützt werden. Wenn das Stummschalten der Kamera nicht unterstützt wird, werden Vollfarbentestmuster nur getestet, wenn die entsprechende Funktion beworben wird.

Wenn RAW-Bilder unterstützt werden, wird auch die Farbzuweisung getestet. Die getesteten Farben sind Schwarz, Weiß, Rot, Blau und Grün. Bei Kameras, die keine RAW-Bilder unterstützen, wird nur Schwarz getestet.

Getestete APIs:

Erfolgreich:Unterstützte feste Testmuster haben die richtige Farbe und eine geringe Varianz im Bild.

Test_Testmuster

Testet den Parameter android.sensor.testPatternMode, um Frames für jedes gültige Testmuster zu erfassen, und prüft, ob die Frames für Volltonfarben und Farbbalken korrekt generiert werden. Dieser Test umfasst die folgenden Schritte:

  1. Es werden Bilder für alle unterstützten Testmuster erfasst.
  2. Führt eine einfache Richtigkeitsprüfung für einfarbiges Testmuster und -farbbalken durch.

Getestete APIs:

Erfolgreich:Unterstützte Testmuster werden korrekt generiert.

test_test_muster_2

test_test_muster_2.jpg

test_tonemap_kurve

Testet die Konvertierung des Testmusters von RAW in YUV mit einer linearen Tonemap. Für diesen Test muss mit android.sensor.testPatternMode = 2 (COLOR_BARS) ein perfektes Bildmuster für die Tonemap-Konvertierung generiert werden. Sorgt dafür, dass die Pipeline korrekte Farbausgaben mit linearer Tonemap und idealer Bildeingabe hat (abhängig von test_test_patterns).

Getestete APIs:

Bestanden:Die YUV und der RAW sehen einander ähnlich aus.

test_tonemap_kurve_roh_2

test_tonemap_curve_raw_2.jpg

test_tonemap_curve_yuv_2.jpg

test_tonemap_curve_yuv_2.jpg

test_unified_timestamp

Prüft, ob Bild- und Bewegungssensorereignisse im selben Zeitbereich liegen.

Getestete APIs:

Erfolgreich:Die Bewegungszeitstempel liegen zwischen den beiden Bildzeitstempeln.

test_vibration_restriction

Testet, ob die Vibration des Geräts wie erwartet funktioniert.

Getestete APIs:

Erfolgreich:Das Gerät vibriert nicht, wenn es durch die Camera Audio Einschränkungs API stummgeschaltet wird.

Szene 1

Scene1 ist ein graues Diagramm. Das graue Diagramm muss die mittleren 30% des Sichtfelds der Kamera abdecken. Es wird erwartet, dass das graue Diagramm 3A (automatische Belichtung, automatischer Weißabgleich, Autofokus) in hohem Maße herausfordert, da der mittlere Bereich keine Funktionen hat. Die Erfassungsanfrage gibt jedoch die gesamte Szene an, die genügend Merkmale enthält, damit 3A konvergieren kann.

RFoV-Kameras können im WFoV- oder RFoV-Testsystem getestet werden. Wenn eine RFoV-Kamera auf dem WFoV-Testsystem getestet wird, wird das Diagramm um 2⁄3 skaliert, um sicherzustellen, dass einige Grenzen für das graue Diagramm im FoV für die Konvergierung von 3A verwendet werden. Ausführliche Beschreibungen der Kamerateststände finden Sie unter Camera ITS-in-a-box.

Szene 1

Scene1: Diagramm in Originalgröße (links). 2⁄3 skaliertes Diagramm (rechts)

Test_3a

Testet die Konvergenz von 3A mit einem mäßig schwierigen Ziel.

Getestete APIs:

Erfolgreich:3A konvergiert und die zurückgegebenen 3A-Werte sind gültig.

Test_Ae_af

Testet die 3A-Algorithmen für die automatische Belichtung (AE) und den Autofokus (AF) einzeln.

Getestete APIs:

Erfolgreich:3A konvergiert und die zurückgegebenen 3A-Werte sind zulässig.

test_ae_precapture_trigger

Testet den AE-Zustandsautomaten, wenn der Auslöser für die Aufnahme verwendet wird. Erfasst fünf manuelle Anfragen mit deaktivierter AE. Die letzte Anfrage hat einen AE-Precapture-Trigger, der ignoriert werden sollte, da AE deaktiviert ist.

Getestete APIs:

Erfolgreich:AE konvergiert.

test_auto_vs_manual

Tests, mit denen automatische und manuelle Aufnahmen gemacht wurden, sehen gleich aus.

Getestete APIs:

Erfolgreich:In den einzelnen Aufnahmeergebnissen gemeldete manuelle Weißabgleicherhöhungen und manuelle Transformationen stimmen mit dem automatischen Weißabgleich estimate des 3A-Algorithmus der Kamera überein.

test_auto_vs_manual_auto

test_auto_vs_manual_auto.jpg

test_auto_vs_manual_wb

test_auto_vs_manual_wb.jpg

test_auto_vs_manual_manual_wb_tm

test_auto_vs_manual_manual_wb_tm.jpg

test_black_white

Testet, ob das Gerät vollständige Schwarz-Weiß-Bilder erzeugt. Es werden zwei Aufnahmen gemacht: die erste mit einer extrem niedrigen Verstärkung und kurzen Belichtung, wodurch ein schwarzes Foto entsteht, und die zweite mit einer extrem hohen Verstärkung und langen Belichtung, wodurch ein weißes Foto entsteht.

Getestete APIs:

Erfolgreich:Schwarz-Weiß-Bilder werden erstellt. Gesättigte Kanäle von weißen Bildern haben RGB-Werte von [255, 255, 255] mit einer Fehlerspanne von weniger als 1 % Differenz.

test_schwarz_weiß_schwarz test_schwarz_weiß_schwarz
test_schwarz_weiß_schwarz.jpg test_schwarz_weiß_weiß.jpg

test_schwarze_weiße_darstellung_mittel

test_black_white_plot_means.png

test_burst_gleichheit_manuell

Nimmt fünf Bilderserien mit 50 Bildern mit manueller Aufnahmeeinstellung auf und prüft, ob alle identisch sind. Mit diesem Test kann festgestellt werden, ob es sporadische Frames gibt, die anders verarbeitet werden oder Artefakte haben.

Getestete APIs:

Bestanden:Bilder sind optisch und in RGB-Werten identisch.

Fehlgeschlagen: Zeigt einen Anstieg oder Rückgang des RGB-Durchschnittsdiagramms zu Beginn jedes Bursts an

  • Die Toleranz beträgt 3% für first_API_level < 30
  • Die Toleranz beträgt 2% für first_API_level ≥ 30

test_burs_sameness_manual_mean

test_burs_sameness_manual_mean.jpg

test_burst_gleichheit_manueller_plot_means

test_burst_sameness_manual_plot_means.png

Testaufnahmeergebnis

Testet, ob gültige Daten in CaptureResult-Objekten zurückgegeben werden. Es gibt automatische, manuelle und automatische Aufnahmen.

Getestete APIs:

Erfolgreich:Metadaten sind für alle Aufnahmen gültig und die manuellen Einstellungen gehen nicht in die zweite automatische Aufnahme ein. Zeichnet die Objektivschattenkorrektur für die Aufnahmen auf.

test_erfassungsergebnis_plot_lsc_auto_ch0

test_capture_result_plot_lsc_auto_ch0.png

test_crop_region_raw

Testet, ob die RAW-Streams nicht zugeschnitten werden können.

Getestete APIs:

Erfolgreich:YUV-Bilder werden mittig zugeschnitten, RAW-Bilder jedoch nicht.

test_crop_region_raw_comp_raw_crop

test_crop_region_raw_comp_raw_crop.jpg

test_crop_region_raw_comp_raw_full

test_crop_region_raw_comp_raw_full.jpg

test_crop_region_raw_comp_yuv_crop

test_crop_region_raw_comp_yuv_crop.jpg

test_crop_region_raw_yuv_full

test_crop_region_raw_yuv_full.jpg

test_crop_regions

Tests zum Zuschneiden von Bereichen. Es wird ein vollständiges Bild aufgenommen und Flecken aus fünf verschiedenen Bereichen (Ecken und Mitte) werden erstellt. Nimmt Bilder mit Zuschnitteinstellung für die 5 Regionen auf. Vergleicht die Werte für Patch und Bild zum Zuschneiden.

Getestete APIs:

Erfolgreich:Das Bild des zugeschnittenen Bereichs stimmt mit dem Bereich überein, der dem zugeschnittenen Bild entspricht.

test_dng_noise_model

Überprüft, ob die Parameter des DNG-Rohmodells korrekt sind. Das Diagramm zeigt die gemessene Varianz eines mittleren Flecks der grauen Karte in Rohaufnahmen, die über einen Bereich von Empfindlichkeiten aufgenommen wurden, und vergleicht diese Werte mit der Varianz, die für jede Empfindlichkeit vom DNG-Rauschmodell im Kamera-HAL erwartet wird (basierend auf den O,S-Parametern, die in den Erfassungsergebnisobjekten zurückgegeben werden). Weitere Informationen zum DNG-Rauschmodell finden Sie im folgenden Dokument zum DNG-Rauschmodell.

Getestete APIs:

Erfolgreich:Die Parameter des DNG-Rohmodells sind korrekt. Die erwarteten RGB-Werte stimmen mit den tatsächlich gemessenen RGB-Werten überein.

test_dng_noise_model_plog

test_dng_noise_model_plog.png

test_ev_compensation_advanced

Testet, ob die Belichtungswert-Kompensation (LW) angewendet wird. Der Test erhöht die Belichtung in acht Schritten und vergleicht die gemessene Helligkeit mit der erwarteten Helligkeit. Die erwarteten Werte werden aus der Bildhelligkeit des Bildes ohne angewendete Lichtwertkompensation berechnet. Der erwartete Wert wird gesättigt, wenn die berechneten Werte den tatsächlichen Bildwertbereich überschreiten. Der Test schlägt fehl, wenn die erwarteten Werte und Messwerte nicht übereinstimmen oder Bilder innerhalb von fünf Schritten überbelichtet werden.

Getestete APIs:

Richtig:Bilder zeigen in fünf Schritten eine stärkere Belichtung ohne Überbelichtung.

test_ev_compensation_advanced_plot_means

test_ev_compensation_advanced_plot_means.png.

test_ev_compensation_basic

Testet, ob die Lichtwertkompensation angewendet wird. Dazu wird ein Bereich verwendet, der mit CONTROL_AE_COMPENSATION_STEP erstellt wurde. Bei jedem Vergütungswert werden acht Frames erfasst.

Getestete APIs:

Erfolgreich:Erfasst eine Steigerung der Luma mit erhöhter EV-Kompensationseinstellung. Die acht Frames, die für jede EV-Kompensationseinstellung erfasst wurden, haben stabile Luma-Werte.

test_ev_compensation_basic

test_ev_compensation_basic.png

Testkontakt

Testet, dass bei unterschiedlichen ISO-Werten und Belichtungszeiten eine konstante Belastung erreicht wird. Nimmt eine Reihe von Aufnahmen auf, bei denen ISO und Belichtungszeit ausgewählt sind, um ein ausgewogenes Verhältnis zu erreichen. Die Ergebnisse sollten die gleiche Helligkeit haben, aber mit der Zeit sollte das Bild lauter werden. Überprüft, ob die Mittelwerte der Stichprobenpixel nah beieinander liegen. Die Bilder dürfen nicht an 0 oder 1 gebunden sein, wodurch sie wie flache Linien aussehen würden. Der Test kann auch mit RAW-Bildern ausgeführt werden. Dazu geben Sie in der Konfigurationsdatei das Flag debug an.

Getestete APIs:

Bestanden:Bilder haben die gleiche Helligkeit, werden aber bei höherem ISO-Wert noch lauter. RGB-Ebenen sind flach, wenn der Wert von ISO*exposure über den getesteten Verstärkungsraum konstant ist.

test_exposure_plot_means

test_exposure_plot_means.png

test_exposure_mult=1.00 test_exposure_mult=64.00
test_exposure_mult=1.00.jpg test_exposure_mult=64.00.jpg

Test-JPEG

Tests, bei denen YUV-Bilder konvertiert wurden, und JPEG-Bilder auf Geräten sehen gleich aus. Der Test ermittelt anhand der mittleren 10% des Bildes den RGB-Wert und überprüft, ob sie übereinstimmen.

Getestete APIs:

Erfolgreich:Die durchschnittliche RGB-Differenz zwischen den einzelnen Bildern beträgt weniger als 3%.

test_jpeg_fmt=jpg.jpg test_jpeg=fmt=yuv.jpg
test_jpeg_fmt=jpg.jpg test_jpeg=fmt=yuv.jpg

Test_Verriegelung

Testet, ob die Einstellungen (Belichtung und Verstärkung) bei den Kameras FULL und LEVEL_3 auf den richtigen Frame angewendet werden. Nimmt eine Reihe von Aufnahmen mit aufeinanderfolgenden Anfragen auf, wobei die Parameter der Erfassungsanfrage zwischen den Aufnahmen variieren. Prüft, ob die Bilder die erwarteten Eigenschaften haben.

Getestete APIs:

Richtig:Die Bilder [2, 3, 6, 8, 10, 12, 13] haben einen höheren ISO-Wert oder eine höhere Belichtung und werden auf test_latching_plot_means.png mit einem höheren RGB-Wert angezeigt.

test_latching_i=00.jpg test_latching_i=01.jpg test_latching_i=02.jpg
test_latching_i=00.jpg test_latching_i=01.jpg test_latching_i=02.jpg
test_latching_i=03.jpg test_latching_i=04.jpg test_latching_i=05.jpg
test_latching_i=03.jpg test_latching_i=04.jpg test_latching_i=05.jpg
test_latching_i=06.jpg test_latching_i=07.jpg test_latching_i=08.jpg
test_latching_i=06.jpg test_latching_i=07.jpg test_latching_i=08.jpg
test_latching_i=09.jpg test_latching_i=10.jpg test_latching_i=11.jpg
test_latching_i=09.jpg test_latching_i=10.jpg test_latching_i=11.jpg
test_latching_i=12.jpg
test_latching_i=12.jpg

Test_Verriegelung_Diagramm

Testverfahren_Zeichendiagramm.png

Testlinearität

Testet, dass die Geräteverarbeitung in lineare Pixel umgekehrt werden kann. Nimmt eine Reihe von Aufnahmen auf, wobei das Gerät auf ein einheitliches Ziel gerichtet ist.

Getestete APIs:

Erfolgreich:R-, G- und B-Werte müssen linear mit erhöhter Empfindlichkeit zunehmen.

test_linearity_plot_means

test_linearity_plot_means.png

Test_Sperrung_Burst

Testet die 3A-Sperre und den YUV-Burst (mithilfe der automatischen Einstellung). Dieser Test ist so konzipiert, dass er auch auf einer begrenzten Anzahl von Geräten ohne MANUAL_SENSOR oder PER_FRAME_CONTROLS bestanden wird. Der Test prüft die YUV-Bildkonsistenz, während die Framerate in CTS geprüft wird.

Getestete APIs:

Erfolgreich:Aufnahmen sehen einheitlich aus.

test_locked_burst_frame0

test_locked_burs_frame0.jpg

test_locked_burst_frame1

Test_Locked_Burst_Frame1.jpg

test_locked_burst_frame2

test_locked_burs_frame2.jpg

test_param_color_korrektur [Testparameter_Farbkorrektur]

Testet, ob die android.colorCorrection.*-Parameter angewendet werden, wenn sie festgelegt sind. Nimmt Aufnahmen mit verschiedenen Transformations- und Verstärkungswerten auf und testet, dass sie entsprechend unterschiedlich aussehen. Die Transformation und die Verstärkungen werden so ausgewählt, dass die Ausgabe ansteigend rot oder blau wird. Verwendet eine lineare Tonemap. Tone Mapping ist ein Verfahren, das in der Bildverarbeitung verwendet wird, um einen Satz von Farben einer anderen Gruppe zuzuordnen, um die Darstellung von Bildern aus hohem Dynamikumfang in einem Medium mit eingeschränktem dynamischen Bereich anzunähern.

Getestete APIs:

Erfolgreich:Die R- und B-Werte werden gemäß der Transformation erhöht.

test_param_color_Correction_plot_means

test_param_color_Correction_plot_means.png

*Die X-Achse stellt die Erfassungsanforderungen dar: 0 = Einheit, 1=Rot Verstärkung, 2= Blau

test_param_color_Correction_req=0

test_param_color_Correction_req=0.jpg

test_param_color_Correctness_req=1

test_param_color_Correctness_req=1.jpg (R-Boost)

test_param_color_Correction_req=2

test_param_color_Correction_req=2.jpg (B-Boost)

test_param_exposure_time

Testet, ob der Parameter android.sensor.exposureTime angewendet wird.

Getestete APIs:

Pass:Jede Aufnahme ist heller als die vorherige Aufnahme.

test_param_exposure_time_frame0

test_param_exposure_time_frame0.jpg

test_param_exposure_time_plot

test_param_exposure_time_plot.png

test_param_flash_mode (testparameter_flash_mode)

Testet, ob der Parameter android.flash.mode angewendet wird. Hiermit wird die Belichtung manuell auf die dunkle Seite gesetzt, sodass klar ist, ob der Blitz ausgelöst wurde oder nicht. Es wird eine lineare Tonemap verwendet. Prüft die Mitte des Kachelbilds, um festzustellen, ob ein großer Farbverlauf erstellt wurde, um zu ermitteln, ob der Blitz ausgelöst wurde.

Getestete APIs:

Erfolgreich:Die Mitte des Kachelbilds hat einen großen Farbverlauf, was bedeutet, dass das Flash ausgelöst wurde.

test_param_flash_mode_1 (Testparameter_Flashmodus_1)

test_param_flash_mode_1.jpg

test_param_flash_mode_1_tile

test_param_flash_mode_1_tile.jpg

test_param_flash_mode_2 (Testparameter_Flashmodus_2)

test_param_flash_mode_2.jpg

test_param_flash_mode_2_tile (Testparameter_Flashmodus_2_Kachel)

test_param_flash_mode_2_tile.jpg

Testparameter_Rauschunterdrückung

Prüft, ob der Parameter android.noiseReduction.mode korrekt angewendet wird, wenn er festgelegt wird. Die Kamera nimmt Bilder mit schwacher Beleuchtung auf. Es wird eine hohe analoge Verstärkung verwendet, um sicherzustellen, dass das aufgenommene Bild verrauscht ist. Es werden drei Bilder für „NRA aus“, „Schnell“ und „Hohe Qualität“ aufgenommen. Erfasst außerdem ein Bild mit niedriger Verstärkung und niedriger NR-Rate und verwendet die Varianz davon als Referenz. Je höher der SNR-Wert (Signal-Rausch-Verhältnis), desto besser ist die Bildqualität.

Getestete APIs:

Erfolgreich:SNR variiert je nach Rauschunterdrückungsmodi und verhält sich ähnlich wie im Diagramm unten.

test_param_noise_reduction_plot_SNRs

test_param_noise_reduction_plot_SNRs.png

0: AUS, 1: SCHNELL, 2: HQ, 3: MIN , 4: ZSL

test_param_noise_reduction_high_gain_nr=0

test_param_noise_reduction_high_gain_nr=0.jpg

test_param_noise_reduction_high_gain_nr=1

test_param_noise_reduction_high_gain_nr=1.jpg

test_param_noise_reduction_high_gain_nr=2

test_param_noise_reduction_high_gain_nr=2.jpg

test_param_noise_reduction_high_gain_nr=3

test_param_noise_reduction_high_gain_nr=3.jpg

test_param_noise_reduction_low_gain (test-param_noise_reduction_low_gain)

test_param_noise_reduction_low_gain.jpg

Testparameterempfindlichkeit

Testet, ob der Parameter android.sensor.sensitivity angewendet wird. Der Test erhöht die Empfindlichkeit in 5 Schritten mit fester Belichtung für jede Aufnahme.

Getestete APIs:

Erfolgreich:Bei RGB wird die Mitte 10% mit erhöhter Empfindlichkeit heller.

test_param_sensitivity_iso=0055

test_param_sensitivity_iso=0055.jpg

test_param_sensitivity_iso=1819

test_param_sensitivity_iso=1819.jpg

test_param_sensitivity_iso=3583

test_param_sensitivity_iso=3583.jpg

test_param_sensitivity_iso=5347

test_param_sensitivity_iso=5347.jpg

test_param_sensitivity_iso=7111

test_param_sensitivity_iso=7111.jpg

Testparameter_Empfindlichkeitsdiagramm

test_param_sensitivity_plot.png

test_param_shading_mode (Testparameter-Shading-Modus)

Testet, ob der Parameter android.shading.mode angewendet wird.

Getestete APIs:

Erfolgreich:Die Schattierungsmodi werden gewechselt und die Objektivschattierungskarten werden wie erwartet geändert.

test_param_shading_mode_ls_maps_mode_0_loop_0 (Testparameter-Shading-Modus_ls_maps_mode_0_loop_0)

test_param_shading_mode_ls_maps_mode_0_loop_0.png [Testparameter_shading_mode_ls_maps_mode_0_loop_0.png]

test_param_shading_mode_ls_maps_mode_1_loop_0 (Testparameter-Shading-Modus_ls_Kartenmodus_1_Schleife_0)

test_param_shading_mode_ls_maps_mode_1_loop_0.png

test_param_shading_mode_ls_maps_mode_2_loop_0 (Testparameter-Shading-Modus_ls_Kartenmodus_2_Schleife_0)

test_param_shading_mode_ls_maps_mode_2_loop_0.png [Testparameter_shading_mode_ls_maps_mode_2_loop_0.png]

test_param_tonemap_mode (Testparameter-Tonzuordnungsmodus)

Testet, ob der Parameter „android.tonemap.mode“ angewendet wird. Wendet auf jeden R-, G- und B-Kanal unterschiedliche Tonabbildkurven an und überprüft, ob die Ausgabebilder wie erwartet geändert wurden. Dieser Test besteht aus zwei Tests: test1 und test2.

Getestete APIs:

Erfolgreich:

  • Test1: Beide Bilder haben eine lineare Tonemap, aber n=1 hat einen steileren Farbverlauf. Der G-Kanal (grün) ist für das n=1-Bild heller.
  • test2: Gleiche Tonkarte, aber unterschiedliche Länge. Die Bilder sind gleich.
test_param_tonemap_mode_n=0.jpg test_param_tonemap_mode_n=1.jpg
test_param_tonemap_mode_n=0.jpg test_param_tonemap_mode_n=1.jpg

test_post_raw_sensitivity_boost

Prüft nach der Verstärkung der RAW-Empfindlichkeit. Erfasst eine Reihe von RAW- und YUV-Bildern mit unterschiedlicher Empfindlichkeit, sendet die Kombination zur Steigerung der RAW-Empfindlichkeit und prüft, ob der Mittelwert des Ausgabepixels mit den Anfrageeinstellungen übereinstimmt.

Getestete APIs:

Erfolgreich:RAW-Bilder werden mit zunehmender Optimierung dunkler, während YUV-Bilder eine konstante Helligkeit beibehalten.

test_post_raw_sensitivity_boost_raw_s=3583_boost=0100

test_post_raw_sensitivity_boost_raw_s=3583_boost=0100.jpg

test_post_raw_sensitivity_boost_raw_s=1792_boost=0200

test_post_raw_sensitivity_boost_raw_s=1792_boost=0200.jpg

test_post_raw_sensitivity_boost_raw_s=0896_boost=0400

test_post_raw_sensitivity_boost_raw_s=0896_boost=0400.jpg

test_post_raw_sensitivity_boost_raw_s=0448_boost=0800

test_post_raw_sensitivity_boost_raw_s=0448_boost=0800.jpg

test_post_raw_sensitivity_boost_raw_s=0224_boost=1600

test_post_raw_sensitivity_boost_raw_s=0224_boost=1600.jpg

test_post_raw_sensitivity_boost_raw_s=0112_boost=3199.

test_post_raw_sensitivity_boost_raw_s=0112_boost=3199.jpg

test_post_raw_sensitivity_boost_raw_plot_means

test_post_raw_sensitivity_boost_raw_plot_means.png.

test_post_raw_sensitivity_boost_yuv_s=0112_boost=3199

test_post_raw_sensitivity_boost_yuv_s=0112_boost=3199.jpg

test_post_raw_sensitivity_boost_yuv_s=0448_boost=0800.

test_post_raw_sensitivity_boost_yuv_s=0448_boost=0800.jpg

test_post_raw_sensitivity_boost_yuv_s=0896_boost=0400.

test_post_raw_sensitivity_boost_yuv_s=0896_boost=0400.jpg

test_post_raw_sensitivity_boost_yuv_s=1792_boost=0200

test_post_raw_sensitivity_boost_yuv_s=1792_boost=0200.jpg

test_post_raw_sensitivity_boost_yuv_s=3585_boost=0100

test_post_raw_sensitivity_boost_yuv_s=3585_boost=0100.jpg

test_post_raw_sensitivity_boost_yuv_plot_means

test_post_raw_sensitivity_boost_yuv_plot_means.png.

Empfindlichkeit_im_Test_Rohdaten-Burst

Nimmt Rohbilder mit zunehmenden Verstärkungen auf und misst das Rauschen. Nimmt nur Rohaufnahmen in einer Bilderserie auf.

Getestete APIs:

Pass:Jede Aufnahme ist lauter als die vorherige Aufnahme, da die Verstärkung zunimmt.

Verwendet die Varianz der mittleren Statistikrasterzelle.

test_raw_burst_sensitivity_variance

test_raw_burst_sensitivity_variance.png

test_roh_exposure

Erfasst eine Reihe von Rohbildern mit zunehmender Belichtungszeit und misst die Pixelwerte.

Getestete APIs:

Erfolgreich:Wenn Sie den ISO-Wert (Verstärkung) erhöhen, werden die Pixel lichtempfindlicher, sodass sich das Diagramm nach links bewegt.

test_raw_exposure_s=55

test_raw_exposure_s=55.png

(100 ist 1 ms, 101 ist 10 ms, 10−1 ist 0,1 ms.)

test_raw_exposure_s=132

test_raw_exposure_s=132.png

test_raw_exposure_s=209

test_raw_exposure_s=209.png

test_raw_exposure_s=286

test_raw_exposure_s=286.png

test_raw_exposure_s=363

test_raw_exposure_s=363.png

test_raw_exposure_s=440

test_raw_exposure_s=440.png

Test_Rohempfindlichkeit

Erfasst eine Reihe von Rohbildern mit zunehmender Empfindlichkeit und misst das Rauschen (Abweichung) in den mittleren 10% des Bildes. Testet, dass jede Aufnahme rauschender ist als die vorherige.

Getestete APIs:

Bestanden:Die Varianz erhöht sich mit jeder Aufnahme.

test_roh_empfindlichkeit_varianz

test_raw_sensitivity_variance.png

test_reprocess_noise_reduction

Testet, dass android.noiseReduction.mode für die erneute Verarbeitung von Anfragen angewendet wird. Nimmt noch einmal verarbeitete Bilder mit gedimmtem Licht auf. Es wird eine hohe analoge Verstärkung verwendet, um sicherzustellen, dass das Aufnahmebild Rauschrauschen hat. Erfasst drei neu verarbeitete Bilder für „NRA aus“, „Schnell“ und „Hohe Qualität“. Erfasst ein noch einmal verarbeitetes Bild mit geringer Verstärkung und geringer NR-Rate und verwendet die Varianz dieses Bildes als Referenz.

Getestete APIs:

Erfolgreich:SCHNELL >= AUS, HQ >= SCHNELL, HQ > AUS

Typisches Diagramm für SNR im Vergleich zu NR_MODE

Typisches Diagramm für SNR im Vergleich zu NR_MODE

Testtonmap-Sequenz

Testet eine Sequenz von Aufnahmen mit verschiedenen Tonemap-Kurven. Es werden 3 manuelle Aufnahmen mit einer linearen Tonemap gemacht. Es werden drei manuelle Aufnahmen mit einer Standard-Tonemap aufgenommen. Berechnet das Delta zwischen jedem aufeinanderfolgenden Framepaar.

Getestete APIs:

Erfolgreich:Es gibt 3 identische Frames gefolgt von einem anderen Satz von 3 identischen Frames.

test_tonemap_Sequence_i=0

test_tonemap_Sequence_i=0.jpg

test_tonemap_Sequence_i=1

test_tonemap_Sequence_i=1.jpg

test_tonemap_sequenz_i=2

test_tonemap_Sequence_i=2.jpg

test_tonemap_Sequence_i=3

test_tonemap_Sequence_i=3.jpg

test_tonemap_Sequence_i=4

test_tonemap_Sequence_i=4.jpg

test_tonemap_sequenz_i=5

test_tonemap_Sequence_i=5.jpg

test_yuv_jpeg_all

Testet, ob alle für die Bilderfassung gemeldeten Größen und Formate funktionieren. Verwendet eine manuelle Anfrage mit einer linearen Tonemap, sodass die YUV- und JPEG-Dateien bei der Konvertierung durch das Modul image_processing_utils gleich aussehen. Bilder werden nicht standardmäßig gespeichert. Sie können sie aber speichern, wenn Sie debug_mode aktivieren.

Getestete APIs:

Erfolgreich:Alle Bildzentren haben eine maximale RMS-Differenz (Wurzel der mittleren quadratischen Größe eines Signals) in RGB-gewandelten Bildern mit 3% des YUV-Bilds mit der höchsten Auflösung.

test_yuv_jpeg_all

test_yuv_jpeg_all.png

test_yuv_plus_dng

Testet, ob die für die Bilderfassung gemeldeten Größen und Formate funktionieren.

Getestete APIs:

Erfolgreich:Der Test ist abgeschlossen und die angeforderten Bilder werden zurückgegeben.

test_yuv_plus_dng

test_yuv_plus_dng.jpg

test_yuv_plus_jpeg

Testet das Erfassen eines einzelnen Frames als YUV- und JPEG-Ausgabe. Verwendet eine manuelle Anfrage mit einer linearen Tonemap, sodass die YUV- und JPEG-Dateien bei der Konvertierung durch das Modul image_processing_utils gleich aussehen.

Getestete APIs:

Erfolgreich:YUV- und JPEG-Bilder sind ähnlich und haben eine RMS-Unterschiede von weniger als 1 %.

test_yuv_plus_jpg_jpg.jpg test_yuv_plus_jpeg_yuv.jpg
test_yuv_plus_jpg_jpg.jpg test_yuv_plus_jpeg_yuv.jpg

test_yuv_plus_raw

Tests, die einen einzelnen Frame sowohl als RAW/RAW10/RAW12- als auch als YUV-Ausgabe erfassen, sofern unterstützt. Es wird eine manuelle Anfrage mit linearer Tonemap verwendet, sodass RAW und YUV identisch sind. Vergleicht RGB-konvertierte RGB-Werte der Mitte von 10 %. Protokolleandroid.shading.mode.

Getestete APIs:

Erfolgreich:YUV- und Rohbilder sind ähnlich und haben eine RMS-Unterschiede von weniger als 3,5 %.

test_yuv_plus_raw_shading=1_raw.jpg test_yuv_plus_raw_shading=1_yuv.jpg
test_yuv_plus_raw_shading=1_raw.jpg test_yuv_plus_raw_shading=1_yuv.jpg

Szene2_a

Scene2_a hat drei Gesichter mit grauem Hintergrund und neutraler Kleidung. Die Gesichter sind so gewählt, dass sie viele verschiedene Hauttöne haben. Das Diagramm muss die richtige Ausrichtung haben, damit die Gesichtserkennung optimal funktioniert.

Szene2_a

Szene2_a

test_auto_flash

Testet, ob der automatische Blitz in einer dunklen Szene ausgelöst wird. Überprüft, ob das automatische Blitzlicht ausgelöst wurde. Dazu wird überprüft, ob die Mitte des Kachelbildes einen großen Farbverlauf aufweist. Zum Auslösen des automatischen Blitzes müssen das Tablet und die Lichter im Testgerät ausgeschaltet werden. Das Tablet wird durch den Test ausgeschaltet und die Lichter können automatisch mit dem Arduino-Controller ausgeschaltet werden. Die Szene muss vollständig dunkel sein, damit der Test richtig funktioniert. Daher muss die Öffnung des Tablets auf der Rückseite vollständig vom Ambiente-Tablet abgedeckt sein. Die vordere Öffnung muss von einer Blende und dem DUT-Telefon abgedeckt sein, damit Streulicht nicht in das Rig eintritt.

Getestete APIs:

Erfolgreich:Die Mitte des Kachelbilds hat einen großen Farbverlauf, der bedeutet, dass der automatische Blitz ausgelöst wurde.

Test_Automatischer Bildausschnitt

Testet das Verhalten des Kamerageräts für den automatischen Bildausschnitt. Führt einen großen Zoom aus, sodass keines der Gesichter in der Szene sichtbar ist, aktiviert den automatischen Bildausschnitt, indem AUTOFRAMING in CaptureRequest auf True gesetzt wird, und prüft, ob alle Gesichter in der Originalszene beim Konvergen des Zustands erkannt werden können (d. h., wenn AUTOFRAMING_STATE in CaptureResult auf AUTOFRAMING_STATE_CONVERGED gesetzt ist).

Getestete APIs:

Bestanden:Alle drei Gesichter werden erkannt.

Test_Display_p3

Testet die Display P3-Erfassung im JPEG-Format mit der ColorSpaceProfiles API. Prüft, ob die erfasste JPEG-Datei ein geeignetes ICC-Profil im Header hat und ob das Bild Farben außerhalb des sRGB-Farbraums enthält.

Getestete APIs:

Erfolgreich:Die JPEG-Datei enthält ein Display P3-ICC-Profil und Farben außerhalb der sRGB-Farbskala.

Test-Effekte

Zeichnet einen Frame für unterstützte Kameraeffekte auf und prüft, ob sie korrekt generiert wurden. Der Test prüft nur die Effekte OFF und MONO, speichert aber Bilder für alle unterstützten Effekte.

Getestete APIs:

Erfolgreich:Das Szenenbild wird mit den Effekten OFF und einem monochromen Bild mit den Effekten MONO aufgenommen.

test_effekte_MONO

Test-Effekte_MONO.jpg

Testformat-Kombinationen

Testet verschiedene Kombinationen von Ausgabeformaten.

Getestete APIs:

Bestanden:Alle Kombinationen wurden erfasst.

Test_JPEG_Qualität

Testet die Komprimierungsqualität von JPEG-Dateien der Kamera. Führen Sie im Schritt JPEG-Qualitäten mit android.jpeg.quality durch und sorgen Sie dafür, dass sich Quantisierungstabellen korrekt ändern.

Getestete APIs:

Erfolgreich:Die Quantisierungsmatrix nimmt mit der Qualitätssteigerung ab. (Matrix stellt den Divisionsfaktor dar.)

Test_JPEG_Qualität

Durchschnittswerte der Rückkamera von Pixel 4 (Luma/Chroma DQT Matrix im Vergleich zur JPEG-Qualität)

Test_JPEG_Qualität fehlgeschlagen

Beispiel für fehlgeschlagenen Test

Beachten Sie, dass bei Bildern mit sehr niedriger Qualität (jpeg.quality < 50) die Komprimierung in der Quantisierungsmatrix nicht erhöht wird.

Testnummer_Gesichter

Testet die Gesichtserkennung.

Getestete APIs:

Weiter:Findet drei Gesichter.

test_num_faces_fd_mode_1 (Testnummer_fD_Modus_1)

test_num_faces_fd_mode_1.jpg

test_preview_min_frame_rate

Testet, ob die Framerate der Vorschau in einer dunklen Szene korrekt abnimmt. Damit dieser Test korrekt funktioniert, müssen die Lichter am Prüfstand vom Controller oder manuell vom Prüfmitarbeitenden ausgeschaltet werden.

Getestete APIs:

Erfolgreich:Die Vorschau-Framerate entspricht dem Mindestwert des angeforderten Framerate-Bereichs und die Abweichung zwischen den Frames liegt unter der im Test festgelegten absoluten Toleranz.

test_reprocess_uv_Swap

Tests, bei denen die U- und V-Ebene nicht ausgetauscht werden, wenn YUV erneut verarbeitet wird. Um dies zu erkennen, wird die Summe der absoluten Differenzen (SAD) zwischen dem noch einmal verarbeiteten Bild und einer nicht noch einmal verarbeiteten Aufnahme berechnet. Wenn das Vertauschen der U- und V-Ausgabeebenen der neu verarbeiteten Erfassung zu einer erhöhten SAD führt, wird davon ausgegangen, dass die Ausgabe die richtigen U- und V-Ebenen enthält.

Getestete APIs:

Richtig:Die U- und V-Flugzeuge werden nicht vertauscht.

test_reprocess_uv_Swap

test_reprocess_uv_Swap.png

Szene2_b

Testnummer_Gesichter

Testet die Gesichtserkennung mit erhöhter Vielfalt der Hauttöne in Gesichtsszenen.

Getestete APIs:

Richtig:Findet drei Gesichter.

test_num_faces_fd_mode_1 (Testnummer_fD_Modus_1)

test_num_faces_fd_mode_1.jpg

test_yuv_jpeg_capture_ gleichheit

Es werden zwei Bilder im größten gängigen YUV- und JPEG-Format mit demselben Seitenverhältnis wie das größte JPEG-Format mit einer Auflösung von maximal 1920 × 1440 aufgenommen. Legt jpeg.quality auf 100 fest und erfasst eine Dual-Surface-Anfrage. Wandelt beide Bilder in RGB-Arrays um und berechnet die RMS-Differenz (Root Mean Square) zwischen den beiden Bildern.

Getestete APIs:

Erfolgreich:YUV- und JPEG-Bilder sind ähnlich und haben eine RMS-Unterschiede von weniger als 1 %.

Szene2_c

Testnummer_Gesichter

Testet die Gesichtserkennung mit erhöhter Vielfalt der Hauttöne in Gesichtsszenen.

Getestete APIs:

Richtig:Findet drei Gesichter.

test_num_faces_fd_mode_1 (Testnummer_fD_Modus_1)

test_num_faces_fd_mode_1.jpg

test_jpeg_capture_perf_class

Testet die JPEG-Erfassungslatenz für die S-Leistungsklasse, wie im Abschnitt 2.2.7.2 Kamera im CDD angegeben.

Bestanden: MÜSSEN eine JPEG-Aufnahmelatenz von „cam2“ unter 1.000 ms für eine Auflösung von 1080p gemäß der Messung des Leistungstests der CTS-Kamera unter ITS-Beleuchtungsbedingungen (3.000 K) für beide primären Kameras haben.

test_camera_launch_perf_class

Testet die Kamerastartlatenz für die S-Leistungsklasse, wie im Abschnitt 2.2.7.2 Kamera im CDD angegeben.

Erfolgreich:Die Latenz von „Kamera 2“ (Kamera zum ersten Vorschaubild öffnen) muss bei einem Leistungstest der CTS-Kamera unter ITS-Beleuchtungsbedingungen (3.000 K) für beide primären Kameras unter 600 ms liegen.

Szene2_d

Testnummer_Gesichter

Testet die Gesichtserkennung mit erhöhter Vielfalt der Hauttöne in Gesichtsszenen.

Getestete APIs:

Richtig:Findet drei Gesichter.

Szene2_e

test_fortlaufendes_Bild

Mit der Einstellung „Erste Aufnahmeanfrage zuerst“ werden 50 Frames mit VGA-Auflösung erfasst. android.control.afMode = 4 (CONTINUOUS_PICTURE).

Getestete APIs:

Richtig:Das 3A-System reguliert sich am Ende einer Aufnahme mit 50 Bildern.

Testnummer_Gesichter

Testet die Gesichtserkennung mit erhöhter Vielfalt der Hauttöne in Gesichtsszenen.

Getestete APIs:

Richtig:Findet drei Gesichter.

Szene2_f

Scene2_f hat drei Gesichter vor weißem Hintergrund und weißem Kleidungsstück. Die Gesichter haben viele verschiedene Hauttöne und einen hohen Kontrast zum Hintergrund.

Szene2_f.png

Szene2_f

Testnummer_Gesichter

Testet die Gesichtserkennung mit erhöhter Vielfalt der Hauttöne in Gesichtsszenen.

Getestete APIs:

Richtig:Findet drei Gesichter.

test_num_faces_fd_mode_1 (Testnummer_fD_Modus_1)

test_num_faces_fd_mode_1.jpg

Szene 3

Scene3 verwendet das ISO12233-Diagramm und die meisten Tests verwenden eine Diagrammextraktormethode, um das Diagramm in der Szene zu finden. Aus diesem Grund haben die meisten gespeicherten Bilder keine Rahmen wie die Bilder für die Szenen 1, 2 oder 4, sondern nur das Diagramm. Das Diagramm muss so ausgerichtet sein, dass die Diagrammsuche optimal funktioniert.

test_3a_konsistenz

Testet die 3A-Konsistenz.

Getestete APIs:

Erfolgreich:3 A konvergiert für Belichtung, Verstärkung, awb (automatischer Weißabgleich) und fd (Fokusabstand) dreimal innerhalb der Toleranz.

Test-Edge-Optimierung

Testet, ob der Parameter android.edge.mode richtig angewendet wird. Erfasst Bilder, die nicht neu verarbeitet werden, für jeden Randmodus und gibt die Schärfe des Ausgabebilds und der Metadaten der Erfassungsergebnisse zurück. Verarbeitet eine Erfassungsanfrage mit einem bestimmten Edge-Modus, Empfindlichkeit, Belichtungszeit, Fokusabstand und Ausgabeflächenparameter.

Erfolgreich:Modus HQ (2) ist höher als Modus OFF (0). FAST-Modus (1) höher als OFF-Modus. HQ-Modus schärfer oder gleich FAST-Modus.

Getestete APIs:

Betroffene Kameraparameter:

  • EDGE_MODE

test_edge_enhancement_edge=0

test_edge_enhancement_edge=0.jpg

test_edge_enhancement_edge=1

test_edge_enhancement_edge=1.jpg (schneller Modus)

test_edge_enhancement_edge=2

test_edge_enhancement_edge=2.jpg (Modus für hohe Qualität)

test_flip_spiegel

Prüft, ob das Bild gemäß CDD-Abschnitt 7.5.2 Frontkamera [C-1-5] richtig ausgerichtet ist.

Gespiegelte, gespiegelte oder gedrehte Bilder sind an der Raute in der Mitte zu erkennen.

Richtig:Das Bild darf nicht gespiegelt, gespiegelt oder gedreht werden.

test_flip_mirror_scene_patch

test_flip_mirror_scene_patch.jpg

Test_Querformat_nach_Hochformat

Prüft, ob die Überschreibung von Querformat in Hochformat bei querformatorientierten Sensoren korrekt funktioniert.

Getestete APIs:

Erfolgreich:Im Test wird ein Diagramm mit der erwarteten Drehung ermittelt (0 Grad, wenn die Überschreibung von Querformat in Hochformat deaktiviert ist, 90 Grad, wenn aktiviert).

Test_Querformat_nach_Hochformat

test_landscape_to_portrait.png

test_lens_movement_reporting

Prüft, ob die Kennzeichnung der Objektivbewegung korrekt angegeben ist. Es wird eine Bilderserie von 24 Bildern aufgenommen, wobei die ersten 12 Frames bei der optimalen, bei 3A ermittelten Brennweite und die letzten 12 Frames in der minimalen Fokusstrecke enthalten sind. Um Bild 12 bewegt sich das Objektiv, damit die Schärfe sinkt. Die Schärfe stabilisiert sich schließlich, wenn sich das Objektiv in die Endposition bewegt. Das Flag für die Objektivbewegung sollte in allen Frames verwendet werden, in denen die Schärfe in den ersten Frames mit der Schärfe in den ersten paar Frames stabil ist, wobei die Linse bei optimaler Brennweite steht und in den letzten Frames, in denen die Linse in der minimalen Brennweite steht. Der genaue Rahmen, den sich das Objektiv bewegt, ist nicht wichtig. Es wird überprüft, ob die Bewegungsflagge beim Bewegen des Objektivs gesetzt wird.

Getestete APIs:

Richtig:Das Flag für Objektivbewegung ist True im Bild, wobei die Schärfeänderung geändert wird.

Fail-Mechanismen:

  • lens_moving: True (android.hardware.camera2.CaptureResult#LENS_STATE = 1) in test_log.DEBUG wird nur in Frames geltend gemacht, in denen sich die Schärfe nicht ändert.
  • Bei Frames mit lens_moving: False (android.hardware.camera2.CaptureResult#LENS_STATE = 0) in test_log.DEBUG gibt es einen Schärfeunterschied zwischen den ersten Frames bei optimaler Brennweite oder bei der minimalen Brennweite der letzten Frames.

test_reprocess_edge_enhancement

Prüft, ob unterstützte Methoden zur erneuten Verarbeitung für die Edge-Optimierung ordnungsgemäß funktionieren. Verarbeitet eine Erfassungsanfrage mit einem bestimmten Edge-Neuverarbeitungsmodus und vergleicht verschiedene Erfassungsmodi mit deaktivierten Edge-Neuverarbeitungsmodi.

Getestete APIs:

Erfolgreich:Die Schärfe für die verschiedenen Kantenmodi ist korrekt. HQ (Modus 2) ist kleiner als OFF (Modus 0) und die Verbesserung zwischen verschiedenen Modi ist ähnlich.

test_reprocess_edge_optimment_plot

Test_reprocess_edge_enhancement_plot.png

Szene 4

Szene 4 besteht aus einem schwarzen Kreis auf weißem Hintergrund in einem Quadrat.

Szene 4

Szene 4

test_verhältnis_und_zuschnitt

Prüft, ob Bilder in der Bildpipeline verzerrt oder unerwartet zugeschnitten sind. Nimmt Bilder eines Kreises in allen Formaten auf. Überprüft, ob der Kreis verzerrt ist, sich nicht aus der Bildmitte bewegt und die Größe des Kreises bei unterschiedlichen Seitenverhältnissen oder Auflösungen nicht falsch geändert wird.

Getestete APIs:

Erfolgreich:Bilder werden nicht gestreckt, die Bildmitte unterscheidet sich nicht um mehr als 3 % und das maximal mögliche Sichtfeld wird beibehalten.

Fail-Mechanismen:

  • Die Kamera ist nicht mit dem Kreis auf dem Tablet in der Mitte des aufgenommenen Bilds ausgerichtet.
  • Der Kreis im aufgenommenen Bild wird von der Verarbeitungspipeline verzerrt.
  • Ein Bild mit niedrigerer Auflösung wird in der Bildpipeline doppelt zugeschnitten, was ein unterschiedliches FoV zwischen Bildern mit hoher und niedriger Auflösung erzeugt.
  • Der Kreis im aufgenommenen Bild wird aufgrund einer Anfrage zur Aufnahme eines extremen Seitenverhältnisses, bei der die Höhe oder Breite des Bilds reduziert wird, abgeschnitten.
  • Der Kreis im aufgenommenen Bild hat in der Mitte eine Spiegelung und ist nicht vollständig ausgefüllt.

test_multi_kamera_ausrichtung

Testet die Kamerakalibrierungsparameter, die sich auf die Kamerapositionierung von Systemen mit mehreren Kameras beziehen. Nehmen Sie mit den physischen Unterkameras mit mehreren Kameras ein Bild mit einer der physischen Kameras auf. Findet den Mittelpunkt des Kreises Projiziert den Kreismittelpunkt auf die Weltkoordinaten jeder Kamera. Vergleicht den Unterschied zwischen den Kreiszentren der Kameras in Weltkoordinaten. Projiziert die Weltkoordinate zurück zu Pixelkoordinaten und vergleicht sie zur Validierung mit den Originalen. Vergleicht die Kreisgrößen, um zu prüfen, ob die Brennweite der Kameras unterschiedlich sind.

Getestete APIs:

Richtig:Kreismittelpunkte und -größen entsprechen den Erwartungen in den projizierten Bildern im Vergleich zu aufgenommenen Bildern mit Kamerakalibrierungsdaten und Brennweite.

Fail-Mechanismen:

  • LENS_INTRINSIC_CALIBRATION, LENS_POSE_TRANSLATION oder LENS_POSE_ROTATION sind Designwerte und keine tatsächlichen Kalibrierungsdaten.
  • Das Kamerasystem ist für die Testeinrichtung nicht geeignet. Beispiel: Testen eines Weitwinkel- und eines Ultraweitwinkel-Kamerasystems mit dem RFoV-Teststand. Weitere Informationen finden Sie unter FAQs zu ITS-in-a-box-Kamerafunktionen1.

test_preview_Seitenverhältnis_und_zuschnitten

Ähnlich wie beim Test test_aspect_ratio_and_crop für Standbilder werden bei diesem Test die unterstützten Vorschauformate geprüft, um sicherzustellen, dass die Vorschau-Frames nicht unangemessen gestreckt oder abgeschnitten werden. Überprüft, ob sich das Seitenverhältnis des Kreises nicht ändert, die zugeschnittenen Bilder den Kreis in der Mitte des Rahmens halten und die Kreisgröße bei einem konstanten Format oder mit unterschiedlichen Auflösungen (Sichtfeldprüfung) nicht geändert wird.

Getestete APIs:

Erfolgreich:Bilder werden nicht gestreckt, die Bildmitte unterscheidet sich nicht um mehr als 3 % und das maximal mögliche Sichtfeld (Blickfeld) wird beibehalten.

test_preview_stabilization_fov

Prüft die unterstützten Vorschaugrößen, um sicherzustellen, dass das Sichtfeld richtig zugeschnitten ist. Im Test werden zwei Videos erfasst, eines mit ON für die Vorschaustabilisierung und eines mit OFF für die Vorschaustabilisierung. Aus jedem Video wird ein repräsentativer Frame ausgewählt und analysiert, um sicherzustellen, dass die FoV-Änderungen in den beiden Videos den Spezifikationen entsprechen.

Getestete APIs:

Erfolgreich:Das Seitenverhältnis des Kreises bleibt ungefähr gleich, die Mitte des Kreises bleibt stabil und die Größe des Kreises ändert sich nicht mehr um 20%.

test_video_verhältnis_und_zuschnitt

Nimmt Videos eines Kreises innerhalb eines Quadrats über alle Videoformate auf. Es werden die Keyframes extrahiert und es wird überprüft, ob sich das Seitenverhältnis des Kreises nicht ändert, die zugeschnittenen Bilder den Kreis in der Mitte halten und die Kreisgröße bei einem konstanten Format oder mit einer anderen Auflösung (Sichtfeldprüfung) unverändert bleibt.

Getestete APIs:

Erfolgreich:Videoframes werden nicht gestreckt, die Mitte der Frames unterscheidet sich nicht um mehr als 3 % und das maximal mögliche Sichtfeld wird beibehalten.

Szene 5

Für Szene 5 ist eine gleichmäßig ausgeleuchtete graue Szene erforderlich. Dies geschieht durch einen Diffusor über dem Kameraobjektiv. Wir empfehlen den folgenden Diffuser: www.edmundoptics.com/optics/window-diffusers/optical-diffusers/opal-diffusing-glass/46168.

Bringen Sie zur Vorbereitung der Szene einen Diffusor vor der Kamera an und richten Sie die Kamera auf eine Lichtquelle von etwa 2.000 Lux. Für Sce55 aufgenommene Bilder erfordern ein diffuses Licht ohne erkennbare Merkmale. Hier sehen Sie ein Beispielbild:

Szene 5

Szene 5-Aufnahme

test_objektiv_schatten_und_farbe_einheitlich

Prüft, ob die Objektivschattenkorrektur korrekt angewendet wird und die Farbe einer monochromen einheitlichen Szene gleichmäßig verteilt ist. Führt diesen Test mit einem YUV-Frame mit Auto-3A durch. Die Schattierung wird anhand des y-Kanals bewertet. Misst den durchschnittlichen y-Wert für jeden angegebenen Stichprobenblock und ermittelt durch einen Vergleich mit dem mittleren y-Wert, ob die Prüfung bestanden wurde oder nicht. Der Farbgleichmäßigkeitstest wird im r/g- und b/g-Bereich ausgewertet.

Getestete APIs:

Erfolgreich:Im angegebenen Radius des Bildes muss die Varianz der Werte für r/g und b/g kleiner als 20% sein, um den Test zu bestehen.

Szene 6

Szene 6 ist ein Raster kleiner Kreise mit einem Quadrat in einer Ecke, das die Ausrichtung angibt. Die kleinen Kreise werden benötigt, um die Zoomfunktion in einem großen Bereich zu testen.

Szene 6

Szene 6

test_in_sensor_zoom

Testet das Verhalten der Sensor-Zoomfunktion der Kamera, die zugeschnittene RAW-Bilder erzeugt.

Ist der Stream-Anwendungsfall auf CROPPED_RAW gesetzt, werden für den Test zwei Aufnahmen über den Zoombereich, ein RAW-Bild des gesamten Sichtfelds (FoV) und ein zugeschnittenes RAW-Bild vorgenommen. Der Test konvertiert die Bilder in RGB-Arrays, skaliert das zugeschnittene RAW-Bild in voller Größe auf die von SCALER_RAW_CROP_REGION gemeldete Größe und berechnet die 3D-Wurzeldifferenz (Root Mean Square, RMS) zwischen den beiden Bildern.

Getestete APIs:

Erfolgreich:Die Differenz zwischen dem verkleinerten zugeschnittenen RAW-Bild und dem vollständigen FoV-RAW-Bild beträgt weniger als 1%.

Test-Zoom

Testet das Zoomverhalten der Kamera. Nimmt Aufnahmen über den Zoombereich auf und prüft, ob die Kreise beim Heranzoomen größer werden.

Getestete APIs:

Richtig:Die relative Größe des erfassten Kreises entspricht genau dem angeforderten Zoomverhältnis, damit die Kamera richtig zoomt.

Test-Zoom

test_zoom, um die Kontur des Kreises zu ermitteln, der dem Mittelpunkt am nächsten liegt.

test_low_latenz_zoom

Testet das Zoomverhalten der Kamera mit niedriger Latenz. Nimmt Aufnahmen über den Zoombereich mit android.control.settingsOverride = 1 (SETTINGS_OVERRIDE_ZOOM) auf und prüft, ob die Kreise in den Ausgabebildern mit den Zoomverhältnissen in den Erfassungsmetadaten übereinstimmen.

Getestete APIs:

Erfolgreich:Die relative Größe des erfassten Kreises ist genau in Bezug auf die Metadaten der Ergebnisse für das Zoomverhältnis.

test_preview_video_zoom_match

Testet, ob beim Aufnehmen und Zoomen die Videovorschau und die Videoausgabe die gleiche Ausgabe anzeigen und aufzeichnen. Berechnet die Größe des Kreises, der dem Mittelpunkt bei verschiedenen Zoomverhältnissen am nächsten liegt, und überprüft, ob die Größe des Kreises mit zunehmender Zoomstufe zunimmt.

Getestete APIs:

Erfolgreich:Die relative Größe des aufgenommenen Kreises ist genau in Bezug auf das angeforderte Zoomverhältnis im Video und in der Vorschau.

VGA_640 x 480_Schlüsselframe.png

VGA_640x480_key_frame.png (vor Zoom)

Preview_640x480_key_frame.png

Preview_640x480_key_frame.png (vor dem Zoomen)

VGA_640x480_key_frame_zoomed.png

VGA_640x480_key_frame.png (nach Zoom)

Preview_640x480_key_frame_zoomed.png

Preview_640x480_key_frame.png (nach Zoom)

Szenenerweiterungen

Die scene_extensions-Tests beziehen sich auf Kameraerweiterungen und müssen Camera ITS-in-a-Box verwenden, da sie eine präzise Steuerung der Testumgebung erfordern.

Szene_HD

Die Szene scene_hdr besteht aus einem Porträt auf der linken Seite und einem QR-Code mit geringem Kontrast auf der rechten Seite.

Szene_HD

Szene_HD

test_hdr_extension

Testet die HDR-Erweiterung. Nimmt Aufnahmen mit und ohne aktivierter Erweiterung auf und prüft, ob die Erweiterung den QR-Code besser erkennbar macht.

Getestete APIs:

Erfolgreich:Die HDR-Erweiterung reduziert die Anzahl der zur Erkennung des QR-Codes erforderlichen Kontraständerungen oder den Farbverlauf im QR-Code.

Szene_Nacht

Die Szene scene_night besteht aus einem weißen Kreis mit vier kleineren Kreisen, alle vor schwarzem Hintergrund. Der kleinere Kreis oben rechts ist dunkler als die anderen, um die Ausrichtung anzuzeigen.

Szene_Nacht

Szene_Nacht

test_night_verlängerung

Testet die Nachterweiterung. Nimmt mit und ohne aktivierte Erweiterung auf und überprüft Folgendes:

  • Die Aufnahme mit aktivierter Nachterweiterung dauert länger.
  • Die Aufnahme mit der aktivierten Nachterweiterung ist heller oder hat Szenenartefakte mit einem verbesserten Aussehen.

Getestete APIs:

Richtig:Im Vergleich zu einer Aufnahme ohne aktivierte Nachterweiterung dauert eine Aufnahme mit aktivierter Nachterweiterung mindestens 0, 5 Sekunden länger. Die Aufnahme muss mindestens 10% heller sein oder die grauen Punkte in der Szene müssen 20 Pixel unter dem Mittelpunkt des umgebenden Kreises liegen.

Sensorfusion

Für Sensorfusionstests ist eine bestimmte Smartphonebewegung vor einem Schachbrettmuster erforderlich. Für optimale Ergebnisse sollte das Testdiagramm flach montiert sein. Diagramme, die nicht flach sind, wirken sich bei vielen der Tests auf die Rotationsberechnungen aus. Die sensor_fusion-Tests können mit der Sensor Fusion Box automatisiert werden.

Schachbrett

Bild eines Schachbretts

test_multi_camera_frame_sync

Tests, bei denen die von einer logischen Kamera erfassten Zeitstempeln innerhalb von 10 ms liegen, indem Winkel von Quadraten innerhalb der Schachbrett berechnet werden, um den Zeitstempel zu ermitteln.

Getestete APIs:

Erfolgreich:Der Winkel zwischen den Bildern der einzelnen Kameras ändert sich beim Drehen des Smartphones nicht nennenswert.

test_preview_stabilization

Tests, bei denen das Vorschauvideo weniger gedreht wurde als das Gyroskop.

Getestete APIs:

Richtig: Die maximale Winkeldrehung über Rahmen beträgt weniger als 70% der Gyroskopdrehung.

Im Folgenden finden Sie Beispielvideos mit und ohne Stabilisierung.

  • Beispielvideo mit Stabilisierung

  • Beispielvideo ohne Stabilisierung

test_sensor_fusion

Testet den Zeitstempelunterschied zwischen Kamera und Gyroskop für AR- und VR-Anwendungen. Das Smartphone wird vor dem Schachbrettmuster 10-mal um 90 Grad gedreht. Bewegung bedeutet etwa 2 Sekunden Hin- und Rückflug. Dieser Test wird übersprungen, wenn kein Gyroskop enthalten ist oder der Parameter REALTIME der Zeitstempelquelle nicht aktiviert ist.

Der test_sensor_fusion-Test generiert eine Reihe von Diagrammen. Die beiden wichtigsten Diagramme für die Fehlerbehebung sind:

  • test_sensor_fusion_gyro_events: Zeigt die Gyroskopereignisse für das Smartphone während des Tests an. Eine Bewegung in x- und y-Richtung deutet darauf hin, dass das Smartphone nicht sicher auf der Wandhalterung montiert ist. Dadurch sinkt die Wahrscheinlichkeit, dass der Test bestanden wird. Die Anzahl der Zyklen im Diagramm hängt von der Schreibgeschwindigkeit zum Speichern von Frames ab.

    test_sensor_fusion_gyro_events.png

    test_sensor_fusion_gyro_events

  • test_sensor_fusion_plot_rotations: Zeigt die Ausrichtung der Gyroskop- und Kamera-Ereignisse an. Das Diagramm muss eine entsprechende Bewegung zwischen Kamera und Gyroskop auf +/-1 ms zeigen.

    test_sensor_fusion_plot_rotations.png

    test_sensor_fusion_plot_rotations

Getestete APIs:

Erfolgreich:Der Versatz der Kamera- und Gyroskopzeitstempel beträgt weniger als 1 ms gemäß CDD-Abschnitt 7.3.9 High-Fidelity-Sensoren [C-2-14].

Fail-Mechanismen:

  • Offsetfehler: Der Offset des Kamera-Gyroskops ist nicht korrekt auf +/-1 ms kalibriert.
  • Frame Drops: Die Pipeline ist nicht schnell genug, um 200 Frames nacheinander zu erfassen.
  • Socket-Fehler: adb kann keine zuverlässige Verbindung zum DUT lange genug herstellen, um den Test auszuführen.
  • Das Diagramm ist nicht flach montiert. Das Diagramm test_sensor_fusion_plot_rotations enthält Frames, bei denen sich die Drehung des Gyroskops und der Kamera erheblich unterscheiden, da sich die Kamera durch die Teile des Diagramms dreht, die nicht flach sind.
  • Die Kamera ist nicht flach montiert. Das Diagramm test_sensor_fusion_gyro_events zeigt die Bewegung in der X- und Y-Ebene. Dieser Fehler tritt häufiger bei Frontkameras auf, da die Rückkamera häufig eine erhöhte Ausdehnung am restlichen Gehäuse des Smartphones hat, was zu einer Neigung führt, wenn die Rückseite des Smartphones an der Wandhalterung angebracht wird.

test_video_stabilization

Tests, bei denen Videos mit stabilisierter Stabilisierung weniger gedreht werden als mit Gyroskopen.

Getestete APIs:

Richtig: Die maximale Winkeldrehung über Rahmen beträgt weniger als 60% der Gyroskopdrehung.

Im Folgenden finden Sie Beispielvideos mit und ohne Stabilisierung.

  • Beispielvideo mit Stabilisierung

  • Beispielvideo ohne Stabilisierung

Test_gelieferter_Snapshot

Testet, ob das Bild durch die LED-Momentaufnahmen nicht gesättigt oder gefärbt wird.

Bei diesem Test wird dem Sensor-Fusionsbox eine Lichtsteuerung hinzugefügt, um die Lichter zu steuern. Wenn die Lichter auf OFF eingestellt sind, wird mit dem Test eine Aufnahme mit dem Modus AUTO_FLASH aufgenommen, der auf ON eingestellt ist. Während dieser Erfassung wird im Test eine Vorerfassungssequenz ausgeführt, bei der der Trigger aePrecapture auf START gesetzt ist. Außerdem wird der Erfassungs-Intent auf Preview gesetzt, um die Aufnahme mit Blitz aufzunehmen.

Da die Aufnahme aufgrund von Flash einen charakteristischen Hotspot hat, berechnet der Test den Mittelwert des Flash-Bilds der gesamten Aufnahme und prüft, ob der Wert innerhalb des Bereichs (68, 102) liegt. Um zu prüfen, ob das Bild einen angemessenen Weißabgleich aufweist, berechnet der Test die R/G- und B/G-Verhältnisse und prüft, ob die Verhältnisse zwischen 0,95 und 1,05 liegen.

Getestete APIs:

Erfolgreich:Das Verhältnis von R/G und B/G liegt zwischen 0,95 und 1,05. Der Mittelwert des Flash-Bilds liegt innerhalb des Bereichs (68, 102).