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
Testjitter
Misst den Jitter in den Kamerazeitstempeln.
Getestete APIs:
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
Erfolgreich:Zwischen den Frames liegt ein Delta von mindestens 30 ms.
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:
android.hardware.camera2.CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL
android.hardware.camera2.CameraCharacteristics#SCALER_CROPPING_TYPE
android.hardware.camera2.CameraCharacteristics#SENSOR_BLACK_LEVEL_PATTERN
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
android.hardware.camera2.CaptureResult#SENSOR_ROLLING_SHUTTER_SKEW
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:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
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:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_EXPOSURE_TIME_RANGE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
android.hardware.camera2.CaptureResult#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureResult#SENSOR_SENSITIVITY
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:
android.hardware.camera2.CameraCharacteristic#SENSOR_AVAILABLE_TEST_PATTERN_MODES
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_DATA
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
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:
- Es werden Bilder für alle unterstützten Testmuster erfasst.
- Führt eine einfache Richtigkeitsprüfung für einfarbiges Testmuster und -farbbalken durch.
Getestete APIs:
android.hardware.camera2.CameraCharacteristic#SENSOR_AVAILABLE_TEST_PATTERN_MODES
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
Erfolgreich:Unterstützte Testmuster werden korrekt generiert.
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:
android.hardware.camera2.CaptureRequest#DISTORTION_CORRECTION_MODE
android.hardware.camera2.CaptureRequest#SENSOR_TEST_PATTERN_MODE
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Bestanden:Die YUV und der RAW sehen einander ähnlich aus.
test_tonemap_curve_raw_2.jpg
test_tonemap_curve_yuv_2.jpg
test_unified_timestamp
Prüft, ob Bild- und Bewegungssensorereignisse im selben Zeitbereich liegen.
Getestete APIs:
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
android.hardware.Sensor
android.hardware.SensorEvent
android.hardware.Sensor#TYPE_ACCELEROMETER
android.hardware.Sensor#TYPE_GYROSCOPE
Erfolgreich:Die Bewegungszeitstempel liegen zwischen den beiden Bildzeitstempeln.
test_vibration_restriction
Testet, ob die Vibration des Geräts wie erwartet funktioniert.
Getestete APIs:
android.hardware.Sensor
android.hardware.SensorEvent
android.hardware.Sensor#TYPE_ACCELEROMETER
android.os.Vibrator
android.hardware.camera2.CameraDevice#setCameraAudioRestriction
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.
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:
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
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:
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
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:
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
Erfolgreich:AE konvergiert.
test_auto_vs_manual
Tests, mit denen automatische und manuelle Aufnahmen gemacht wurden, sehen gleich aus.
Getestete APIs:
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
android.hardware.camera2.CaptureResult#TONEMAP_CURVE
android.hardware.camera2.CaptureResult#TONEMAP_MODE
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.jpg
test_auto_vs_manual_wb.jpg
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:
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
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.jpg | test_schwarz_weiß_weiß.jpg |
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:
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR
android.hardware.camera2.CameraMetadata#SYNC_MAX_LATENCY_PER_FRAME_CONTROL
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.jpg
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:
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AE_REGIONS
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AF_REGIONS
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AWB_REGIONS
android.hardware.camera2.CaptureRequest#CONTROL_MODE
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
android.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
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_capture_result_plot_lsc_auto_ch0.png
test_crop_region_raw
Testet, ob die RAW-Streams nicht zugeschnitten werden können.
Getestete APIs:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
android.hardware.camera2.CaptureResult#SCALER_CROP_REGION
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
Erfolgreich:YUV-Bilder werden mittig zugeschnitten, RAW-Bilder jedoch nicht.
test_crop_region_raw_comp_raw_crop.jpg
test_crop_region_raw_comp_raw_full.jpg
test_crop_region_raw_comp_yuv_crop.jpg
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:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
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:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
android.hardware.camera2.CaptureResult#SENSOR_NOISE_PROFILE
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
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.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:
android.hardware.camera2.CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
android.hardware.camera2.CaptureResult#TONEMAP_CURVE
android.hardware.camera2.CaptureResult#TONEMAP_MODE
Richtig:Bilder zeigen in fünf Schritten eine stärkere Belichtung ohne Überbelichtung.
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:
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_COMPENSATION_STEP
android.hardware.camera2.CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
android.hardware.camera2.CaptureResult#CONTROL_AE_EXPOSURE_COMPENSATION
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
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.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:
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
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.png
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_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=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=09.jpg | test_latching_i=10.jpg | test_latching_i=11.jpg | |
test_latching_i=12.jpg |
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:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CaptureRequest#BLACK_LEVEL_LOCK
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Erfolgreich:R-, G- und B-Werte müssen linear mit erhöhter Empfindlichkeit zunehmen.
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:
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
Erfolgreich:Aufnahmen sehen einheitlich aus.
test_locked_burs_frame0.jpg
Test_Locked_Burst_Frame1.jpg
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:
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
Erfolgreich:Die R- und B-Werte werden gemäß der Transformation erhöht.
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.jpg
test_param_color_Correctness_req=1.jpg (R-Boost)
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.jpg
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.jpg
test_param_flash_mode_1_tile.jpg
test_param_flash_mode_2.jpg
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.png
0: AUS, 1: SCHNELL, 2: HQ, 3: MIN , 4: ZSL
test_param_noise_reduction_high_gain_nr=0.jpg
test_param_noise_reduction_high_gain_nr=1.jpg
test_param_noise_reduction_high_gain_nr=2.jpg
test_param_noise_reduction_high_gain_nr=3.jpg
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.jpg
test_param_sensitivity_iso=1819.jpg
test_param_sensitivity_iso=3583.jpg
test_param_sensitivity_iso=5347.jpg
test_param_sensitivity_iso=7111.jpg
test_param_sensitivity_plot.png
test_param_shading_mode (Testparameter-Shading-Modus)
Testet, ob der Parameter android.shading.mode
angewendet wird.
Getestete APIs:
android.hardware.camera2.CaptureRequest#SHADING_MODE
android.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
Erfolgreich:Die Schattierungsmodi werden gewechselt und die Objektivschattierungskarten werden wie erwartet geändert.
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.png
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:
android.hardware.camera2.CameraMetadata#TONEMAP_MODE_CONTRAST_MODE
android.hardware.camera2.CameraMetadata#TONEMAP_MODE_FAST
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
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_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:
android.hardware.camera2.CameraCharacteristics#CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
android.hardware.camera2.CaptureRequest#CONTROL_POST_RAW_SENSITIVITY_BOOST
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
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.jpg
test_post_raw_sensitivity_boost_raw_s=1792_boost=0200.jpg
test_post_raw_sensitivity_boost_raw_s=0896_boost=0400.jpg
test_post_raw_sensitivity_boost_raw_s=0448_boost=0800.jpg
test_post_raw_sensitivity_boost_raw_s=0224_boost=1600.jpg
test_post_raw_sensitivity_boost_raw_s=0112_boost=3199.jpg
test_post_raw_sensitivity_boost_raw_plot_means.png.
test_post_raw_sensitivity_boost_yuv_s=0112_boost=3199.jpg
test_post_raw_sensitivity_boost_yuv_s=0448_boost=0800.jpg
test_post_raw_sensitivity_boost_yuv_s=0896_boost=0400.jpg
test_post_raw_sensitivity_boost_yuv_s=1792_boost=0200.jpg
test_post_raw_sensitivity_boost_yuv_s=3585_boost=0100.jpg
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:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
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.png
test_roh_exposure
Erfasst eine Reihe von Rohbildern mit zunehmender Belichtungszeit und misst die Pixelwerte.
Getestete APIs:
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
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.png
(100 ist 1 ms, 101 ist 10 ms, 10−1 ist 0,1 ms.)
test_raw_exposure_s=132.png
test_raw_exposure_s=209.png
test_raw_exposure_s=286.png
test_raw_exposure_s=363.png
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:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
Bestanden:Die Varianz erhöht sich mit jeder Aufnahme.
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
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.jpg
test_tonemap_Sequence_i=1.jpg
test_tonemap_Sequence_i=2.jpg
test_tonemap_Sequence_i=3.jpg
test_tonemap_Sequence_i=4.jpg
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:
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
android.graphics.ImageFormat#JPEG
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.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.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:
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
android.graphics.ImageFormat#JPEG
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_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:
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
android.hardware.camera2.CaptureRequest#CONTROL_MODE
android.hardware.camera2.CaptureRequest#SHADING_MODE
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
android.hardware.graphics.ImageFormat#RAW10
android.hardware.graphics.ImageFormat#RAW12
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 |
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
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:
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLE
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#FLASH_MODE
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:
android.hardware.camera2.CameraCharacteristics#CONTROL_AUTOFRAMING_AVAILABLE
android.hardware.camera2.CaptureRequest#CONTROL_AUTOFRAMING
android.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMING
android.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMING_STATE
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:
android.hardware.camera2.params.ColorSpaceProfiles
android.hardware.camera2.params.SessionConfiguration#setColorSpace
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:
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_EFFECTS
android.hardware.camera2.CaptureRequest#CONTROL_EFFECT_MODE
Erfolgreich:Das Szenenbild wird mit den Effekten OFF
und einem monochromen Bild mit den Effekten MONO
aufgenommen.
Test-Effekte_MONO.jpg
Testformat-Kombinationen
Testet verschiedene Kombinationen von Ausgabeformaten.
Getestete APIs:
android.hardware.camera2.CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP
android.hardware.camera2.params.StreamConfigurationMap#getOutputSizes()
android.hardware.camera2.CameraCaptureSession#captureBurst()
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.)
Durchschnittswerte der Rückkamera von Pixel 4 (Luma/Chroma DQT Matrix im Vergleich zur JPEG-Qualität)
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:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Weiter:Findet drei Gesichter.
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:
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.hardware.camera2.CaptureResult#CONTROL_AE_TARGET_FPS_RANGE
android.media.CamcorderProfile
android.media.MediaRecorder
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:
android.hardware.camera2.CameraDevice#createCaptureSession
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_YUV_REPROCESSING
android.hardware.camera2.CaptureRequest#EDGE_MODE
android.hardware.camera2.CaptureResult#NOISE_REDUCTION_MODE
Richtig:Die U- und V-Flugzeuge werden nicht vertauscht.
test_reprocess_uv_Swap.png
Szene2_b
Testnummer_Gesichter
Testet die Gesichtserkennung mit erhöhter Vielfalt der Hauttöne in Gesichtsszenen.
Getestete APIs:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Richtig:Findet drei Gesichter.
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:
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASES
android.hardware.camera2.CaptureRequest#JPEG_QUALITY
android.graphics.ImageFormat#JPEG
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:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Richtig:Findet drei Gesichter.
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:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
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:
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
android.hardware.camera2.CaptureResult#CONTROL_AF_STATE
android.hardware.camera2.CaptureResult#CONTROL_AWB_STATE
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:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
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
Testnummer_Gesichter
Testet die Gesichtserkennung mit erhöhter Vielfalt der Hauttöne in Gesichtsszenen.
Getestete APIs:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Richtig:Findet drei Gesichter.
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:
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
android.hardware.camera2.CaptureRequest#LENS_FOCUS_DISTANCE
android.hardware.camera2.CaptureResult#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureResult#SENSOR_SENSITIVITY
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.jpg
test_edge_enhancement_edge=1.jpg (schneller Modus)
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.jpg
Test_Querformat_nach_Hochformat
Prüft, ob die Überschreibung von Querformat in Hochformat bei querformatorientierten Sensoren korrekt funktioniert.
Getestete APIs:
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_ROTATE_AND_CROP_MODES
android.hardware.camera2.CameraCharacteristics#SENSOR_ORIENTATION
android.hardware.camera2.CameraCharacteristics#getCameraCharacteristics
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_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:
android.hardware.camera2.CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCE
android.hardware.camera2.CaptureResult#LENS_STATE
android.hardware.camera2.CaptureResult#LENS_FOCUS_DISTANCE
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
android.hardware.camera2.CaptureRequest#LENS_FOCUS_DISTANCE
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) intest_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) intest_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:
android.hardware.camera2.CaptureRequest#EDGE_MODE
android.hardware.camera2.CaptureRequest#REPROCESS_EFFECTIVE_EXPOSURE_FACTOR
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_enhancement_plot.png
Szene 4
Szene 4 besteht aus einem schwarzen Kreis auf weißem Hintergrund in einem Quadrat.
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:
android.hardware.camera2.CaptureResult#LENS_DISTORTION
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
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:
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
android.hardware.camera2.CameraCharacteristics#LENS_DISTORTION
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
android.hardware.camera2.CameraCharacteristics#LENS_INTRINSIC_CALIBRATION
android.hardware.camera2.CameraCharacteristics#LENS_POSE_ROTATION
android.hardware.camera2.CameraCharacteristics#LENS_POSE_TRANSLATION
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
android.hardware.camera2.CaptureRequest#DISTORTION_CORRECTION_MODE
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
oderLENS_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:
android.hardware.camera2.CaptureResult#LENS_DISTORTION
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
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:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
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:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.hardware.camera2.CaptureResult#LENS_DISTORTION
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
android.media.MediaRecorder
android.media.CamcorderProfile
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-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:
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
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
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:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.hardware.camera2.CameraMetadata#SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CaptureResult#SCALER_RAW_CROP_REGION
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:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Richtig:Die relative Größe des erfassten Kreises entspricht genau dem angeforderten Zoomverhältnis, damit die Kamera richtig zoomt.
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:
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_SETTINGS_OVERRIDES
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CaptureRequest#CONTROL_SETTINGS_OVERRIDE
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CaptureResult#CONTROL_SETTINGS_OVERRIDE
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:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Erfolgreich:Die relative Größe des aufgenommenen Kreises ist genau in Bezug auf das angeforderte Zoomverhältnis im Video und in der Vorschau.
VGA_640x480_key_frame.png (vor Zoom)
Preview_640x480_key_frame.png (vor dem Zoomen)
VGA_640x480_key_frame.png (nach Zoom)
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
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:
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
android.hardware.camera2.CameraExtensionSession#capture
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
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:
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
android.hardware.camera2.CameraExtensionSession#capture
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.
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:
android.hardware.camera2.CameraCharacteristics#LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
android.hardware.camera2.params.OutputConfiguration#setPhysicalCameraId()
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:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
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
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
Getestete APIs:
android.hardware.camera2.CameraCharacteristics#LENS_FACING
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE
android.hardware.camera2.CameraMetadata#SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
android.hardware.camera2.CaptureRequest#SENSOR_TIMESTAMP
android.hardware.camera2.CaptureResult#SENSOR_ROLLING_SHUTTER_SKEW
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:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
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:
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLE
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#FLASH_MODE
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).