Auf dieser Seite finden Sie eine umfassende Liste der Tests der Camera Image Test Suite (ITS), die Teil des Android Compatibility Test Suite (CTS) Verifier ist. Bei ITS-Tests handelt es sich um Funktionstests, das heißt, sie messen nicht die Bildqualität, sondern prüfen, ob alle beworbenen Kamerafunktionen wie erwartet funktionieren. In diesem Dokument können Entwickler und Tester verstehen, was die einzelnen Tests bewirken und wie Testfehler behoben werden können.
Kamera-ITS-Gates-Tests nach erforderlichen Kameraeigenschaften, API-Ebene und Medienleistungsklassenebene (MPC). Für die API-Ebene verwendet ITS ro.product.first_api_level
, um in einer bestimmten API-Ebene hinzugefügte Tests zu steuern, die auf negative Benutzererfahrungen für die Funktionalität in niedrigeren API-Ebenen testen. ITS verwendet ro.vendor.api_level
, um Tests für Funktionen durchzuführen, 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, erfordert ITS die Ausführung spezifischer Tests abhängig von der MPC-Ebene.
Die Tests sind nach Szene wie folgt gruppiert:
- scene0 : Erfassen Sie Metadaten, Jitter, Gyroskop und Vibration
- Szene 1 : Belichtung, Empfindlichkeit, EV-Korrektur, YUV vs. JPEG/RAW
- Szene 2 : Gesichtserkennung, Tests, die Farbszenen oder völlige Dunkelheit erfordern
- Szene 3 : Kantenverstärkung, Linsenbewegung
- Szene4 : Seitenverhältnis, Zuschnitt, Sichtfeld
- Szene 5 : Linsenabschattung
- Szene 6 : Zoom
- scene_extensions : Kameraerweiterungen
- sensor_fusion : Kamera-/Gyroskop-Timing-Offset
Eine Beschreibung jeder Szene finden Sie in den einzelnen Abschnitten.
Szene0
Für Scene0-Tests sind keine spezifischen Szeneninformationen erforderlich. Für Gyroskop- und Vibrationstests muss das Telefon jedoch stationär sein.
test_burst_capture
Überprüft, ob die gesamte Capture-Pipeline mit der Geschwindigkeit der Fullsize-Capture und der CPU-Zeit mithalten kann.
Getestete APIs:
Bestanden: Nimmt eine Reihe von Bildern in voller Größe auf und die Kamera ist schnell genug, um eine Zeitüberschreitung zu vermeiden.
test_capture_result_dump
Testet, ob ein Erfassungsergebnis von einer manuellen Erfassung zurückgegeben wird, und gibt es dann aus.
Getestete APIs:
Bestanden: Schließt die Erfassung ab und gibt die Erfassungsergebnisse aus.
test_gyro_bias
Testet, ob der Kreisel einen stabilen Ausgang hat, wenn das Gerät stationär ist. Die Daten werden als Durchschnitt von 20 Datenpunkten dargestellt.
Getestete APIs:
Bestanden: Das Delta des Kreiselmesswerts beträgt über die Zeit weniger als 0,01.
test_gyro_bias_plot.png
test_jitter
Misst Jitter in Kamera-Zeitstempeln.
Getestete APIs:
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
Bestanden: Zwischen den Frames liegt ein Abstand von mindestens 30 ms.
test_jitter_plot.png (Beachten Sie den kleinen Y-Achsenbereich. Jitter ist in diesem Diagramm tatsächlich gering.)
test_metadata
Testet die Gültigkeit von Metadateneinträgen. Betrachtet die Aufnahmeergebnisse und die Kameraeigenschaften von Objekten. Dieser Test verwendet auto_capture_request
Belichtungs- und Verstärkungswerte, 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
Bestanden: Hardware-Level, rollingShutterSkew
, frameDuration
Tags, timestampSource
, croppingType
, blackLevelPattern
, pixel_pitch
, FoV und Hyperfokalabstand sind vorhanden und haben gültige Werte.
test_param_sensitivity_burst
Testet, ob der Parameter android.sensor.sensitivity
im Burst ordnungsgemäß angewendet wird. Überprüft nur die Ausgabemetadaten.
Getestete APIs:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Bestanden: Ausgabedaten haben eine Fehlertoleranz von weniger als 0,2 %.
test_read_write
Testet, ob das Gerät die richtigen Belichtungs- und Verstärkungswerte schreibt, indem es die Erfassungsmetadaten zurückliest.
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 über alle Schüsse hinweg überein.
test_sensor_events
Testet, dass das Gerät Sensorereignisse für Geräte abfragt und ausgibt, die die Unterstützung der Sensorfusion ankündigen. Die erwarteten Sensoren sind Beschleunigungsmesser, Gyroskop und Magnetometer. Dieser Test funktioniert nur, wenn der Bildschirm eingeschaltet ist, das Gerät sich also nicht im Standby-Modus befindet.
Getestete APIs:
Bestanden: Es werden Ereignisse für jeden Sensor empfangen.
test_solid_color_test_pattern
Testet, ob einfarbige Testmuster ordnungsgemäß für die Stummschaltung der Kamera generiert werden. Wenn die Stummschaltung der Kamera unterstützt wird, müssen einfarbige Testmuster unterstützt werden. Wenn die Stummschaltung der Kamera nicht unterstützt wird, werden einfarbige Testmuster nur getestet, wenn die Funktion angekündigt wird.
Wenn RAW-Bilder unterstützt werden, wird auch die Farbzuordnung 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
Bestanden: Die unterstützten Volltonmuster haben die richtige Farbe und die Abweichung im Bild ist gering.
test_test_pattern
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:
- Erfasst Bilder für alle unterstützten Testmuster.
- Führt eine einfache Korrektheitsprüfung für Volltontestmuster und Farbbalken durch.
Getestete APIs:
-
android.hardware.camera2.CameraCharacteristic#SENSOR_AVAILABLE_TEST_PATTERN_MODES
-
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
Bestanden: Unterstützte Testmuster werden korrekt generiert.
test_test_patterns_2.jpg
test_tonemap_curve
Testet die Konvertierung des Testmusters von RAW in YUV mit linearer Tonemap. Dieser Test erfordert android.sensor.testPatternMode = 2
(COLOR_BARS), um ein perfektes Bildmuster für die Tonemap-Konvertierung zu generieren. Stellt sicher, dass die Pipeline ordnungsgemäße Farbausgaben mit linearer Tonemap und idealer Bildeingabe hat (basiert auf 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
Passen: YUV und RAW sehen einander ähnlich aus.
test_tonemap_curve_raw_2.jpg
test_tonemap_curve_yuv_2.jpg
test_unified_timestamp
Testet, 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
Bestanden: 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
Bestanden: Das Gerät vibriert nicht, wenn es durch die Audiobeschränkungs-API der Kamera stummgeschaltet wird.
Szene 1
Szene1 ist ein graues Diagramm. Die graue Karte muss die mittleren 30 % des Sichtfelds der Kamera abdecken. Es wird erwartet, dass die Graukarte 3A (automatische Belichtung, automatischer Weißabgleich, Autofokus) mäßig herausfordert, da der mittlere Bereich keine Funktionen aufweist. Die Erfassungsanforderung gibt jedoch die gesamte Szene an, die ausreichende Merkmale für die Konvergenz von 3A enthält.
RFoV-Kameras können im WFoV oder im RFoV-Teststand getestet werden. Wenn eine RFoV-Kamera im WFoV-Teststand getestet wird, wird das Diagramm um ⅔ skaliert, um einige Grenzen für das Graudiagramm im FoV sicherzustellen, um die 3A-Konvergenz zu unterstützen. Ausführlichere Beschreibungen der Kameraprüfstände finden Sie unter Kamera ITS-in-a-box .
Szene 1: Diagramm in voller Größe (links). ⅔ skaliertes Diagramm (rechts).
test_3a
Testet die Konvergenz von 3A mit einem mäßig anspruchsvollen Ziel.
Getestete APIs:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
Bestanden: 3A konvergiert und die zurückgegebenen 3A-Werte sind gültig.
test_ae_af
Testet die 3A-Algorithmen für automatische Belichtung (AE) und 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
Bestanden: 3A konvergiert und die zurückgegebenen 3A-Werte sind zulässig.
test_ae_precapture_trigger
Testet die AE-Zustandsmaschine bei Verwendung des Precapture-Triggers. 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
Pass: AE konvergiert.
test_auto_vs_manual
Tests, bei 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
Bestanden: Die in jedem Aufnahmeergebnis gemeldeten manuellen Weißabgleichsgewinne und -transformationen stimmen mit der estimate
des automatischen Weißabgleichs aus dem 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 Schwarzweißbilder erzeugt. Macht zwei Aufnahmen, die erste mit extrem geringer Verstärkung und kurzer Belichtung, was zu einem schwarzen Foto führt, und die zweite mit extrem hoher Verstärkung und langer Belichtung, was zu einem weißen Foto führt.
Getestete APIs:
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Pass: Erzeugt Schwarzweißbilder. Gesättigte Kanäle von Weißbildern haben RGB-Werte von [255, 255, 255] mit einer Fehlertoleranz von weniger als 1 % Differenz.
test_black_white_black.jpg | test_black_white_white.jpg |
test_black_white_plot_means.png
test_burst_sameness_manual
Nimmt 5 Serien mit je 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 unterschiedlich verarbeitet werden oder Artefakte aufweisen.
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.
Fehlschlag: Zeigt einen Anstieg oder Abfall 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_burst_sameness_manual_mean.jpg
test_burst_sameness_manual_plot_means.png
test_capture_result
Testet, ob gültige Daten in CaptureResult
Objekten zurückkommen. Führt eine automatische, manuelle und automatische Erfassung durch.
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
Bestanden: Metadaten sind für alle Aufnahmen gültig und die manuellen Einstellungen dringen nicht in die zweite automatische Aufnahme ein. Stellt die Korrektur der Linsenschattierung für die Aufnahmen dar.
test_capture_result_plot_lsc_auto_ch0.png
test_crop_region_raw
Testet, dass 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
Bestanden: YUV-Bilder werden mittig beschnitten, 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
Testet, ob Anbauregionen funktionieren. Nimmt ein vollständiges Bild auf und erstellt Patches aus 5 verschiedenen Regionen (Ecken und Mitte). Nimmt Bilder mit einem für die 5 Regionen festgelegten Zuschnitt auf. Vergleicht die Patch- und Zuschneidebildwerte.
Getestete APIs:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
Bestanden: Das Bild des zugeschnittenen Bereichs entspricht dem Patch, der dem zugeschnittenen Bild entspricht.
test_dng_noise_model
Überprüft, ob die DNG-Rohmodellparameter korrekt sind. Das Diagramm zeigt die gemessene Varianz eines mittleren Bereichs der Graukarte in Rohaufnahmen, die über einen Bereich von Empfindlichkeiten aufgenommen wurden, und vergleicht diese Werte mit der Varianz, die bei jeder Empfindlichkeit vom DNG-Rauschmodell im Kamera-HAL erwartet wird (basierend auf O,S-Parameter, die in den Capture-Ergebnisobjekten zurückgegeben werden). Für weitere Einzelheiten zum DNG-Lärmmodell laden Sie das folgende Dokument zum DNG-Lärmmodell herunter.
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
Bestanden: DNG-Rohmodellparameter 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 Belichtungswertkorrektur (EV) 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 EV-Kompensation berechnet und der erwartete Wert wird gesättigt, wenn die berechneten Werte den tatsächlichen Bildwertebereich überschreiten. Der Test schlägt fehl, wenn die erwarteten Werte und die gemessenen Werte nicht übereinstimmen oder Bilder innerhalb von fünf Schritten überbelichtet sind.
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
Bestanden: Bilder zeigen eine zunehmende Belichtung ohne Überbelichtung innerhalb von fünf Schritten.
test_ev_compensation_advanced_plot_means.png
test_ev_compensation_basic
Testet, ob die EV-Kompensation mithilfe eines mit CONTROL_AE_COMPENSATION_STEP
erstellten Bereichs angewendet wird. Bei jedem Kompensationswert werden acht Bilder 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
Passen: Die Luma-Werte der Aufnahmen nehmen mit erhöhter EV-Kompensationseinstellung zu, und die acht Bilder, die für jede EV-Kompensationseinstellung aufgenommen wurden, weisen stabile Luma-Werte auf.
test_ev_compensation_basic.png
test_exposure
Testet, ob eine konstante Belichtung erreicht wird, da ISO und Belichtungszeit variieren. Nimmt eine Reihe von Aufnahmen auf, bei denen ISO und Belichtungszeit aufeinander abgestimmt sind. Die Ergebnisse sollten die gleiche Helligkeit haben, aber im Laufe der Sequenz sollte das Bild verrauschter werden. Überprüft, ob die Mittelwerte der Stichprobenpixel nahe beieinander liegen. Stellt sicher, dass die Bilder nicht auf 0 oder 1 beschränkt sind (wodurch sie wie flache Linien aussehen würden). Der Test kann auch mit RAW-Bildern ausgeführt werden, indem Sie das debug
Flag in Ihrer Konfigurationsdatei setzen.
Getestete APIs:
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Bestanden: Bilder haben die gleiche Helligkeit, werden aber mit höherem ISO-Wert stärker verrauscht. RGB-Ebenen sind flach, wenn der Wert von ISO*Belichtung ü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 und Geräte-JPEG-Bilder konvertiert wurden, sehen gleich aus. Der Test nimmt die mittleren 10 % des Bildes, berechnet den RGB-Wert und überprüft, ob sie übereinstimmen.
Getestete APIs:
Bestanden: Der durchschnittliche RGB-Unterschied zwischen den einzelnen Bildern beträgt weniger als 3 %.
test_jpeg_fmt=jpg.jpg | test_jpeg=fmt=yuv.jpg |
test_latching
Testet, ob die Einstellungen (Belichtung und Verstärkung) für FULL
und LEVEL_3
Kameras im richtigen Bild einrasten. Nimmt eine Reihe von Aufnahmen mit aufeinanderfolgenden Anfragen auf und variiert die Parameter der Aufnahmeanfrage zwischen den Aufnahmen. Überprüft, ob die Bilder die erwarteten Eigenschaften haben.
Getestete APIs:
Bestanden: Bilder [2, 3, 6, 8, 10, 12, 13] haben einen erhöhten ISO-Wert oder eine höhere Belichtung und werden mit höheren RGB-Mittelwerten auf test_latching_plot_means.png
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 |
test_latching_plot_means.png
test_linearität
Testet, ob die Geräteverarbeitung in lineare Pixel invertiert werden kann. Erfasst eine Folge von Schüssen, 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
Bestanden: R-, G- und B-Werte müssen mit zunehmender Empfindlichkeit linear ansteigen.
test_linearity_plot_means.png
test_locked_burst
Testet 3A-Sperre und YUV-Burst (mit automatischer Einstellung). Dieser Test ist so konzipiert, dass er auch auf eingeschränkten Geräten besteht, die nicht über MANUAL_SENSOR
oder PER_FRAME_CONTROLS
verfügen. Der Test prüft die YUV-Bildkonsistenz, während die Bildratenprüfung in CTS erfolgt.
Getestete APIs:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
Bestanden: Die Aufnahmen sehen konsistent aus.
test_locked_burst_frame0.jpg
test_locked_burst_frame1.jpg
test_locked_burst_frame2.jpg
test_param_color_correction
Testet, ob die android.colorCorrection.*
Parameter angewendet werden, wenn sie festgelegt sind. Nimmt Aufnahmen mit unterschiedlichen Transformations- und Verstärkungswerten auf und prüft, ob sie entsprechend unterschiedlich aussehen. Die Transformation und die Verstärkungen werden so gewählt, dass die Ausgabe zunehmend rot oder blau wird. Verwendet eine lineare Tonemap. Tone Mapping ist eine Technik, die in der Bildverarbeitung verwendet wird, um einen Farbsatz einem anderen zuzuordnen, um das Erscheinungsbild von Bildern mit hohem Dynamikumfang in einem Medium mit einem begrenzteren Dynamikumfang 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
Bestanden: R- und B-Werte erhöhen sich entsprechend der Transformation.
test_param_color_correction_plot_means.png
*Die x-Achse stellt die Erfassungsanforderungen dar: 0 = Einheit, 1 = roter Boost, 2 = blauer Boost
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: Jeder Schuss ist heller als der vorherige Schuss.
test_param_exposure_time_frame0.jpg
test_param_exposure_time_plot.png
test_param_flash_mode
Testet, ob der Parameter android.flash.mode
angewendet wird. Stellt die Belichtung manuell auf die dunkle Seite ein, sodass klar ist, ob der Blitz ausgelöst wurde oder nicht, und verwendet eine lineare Tontabelle. Überprüft die Mitte des Kachelbilds, um festzustellen, ob ein großer Farbverlauf erstellt wurde, um zu überprüfen, ob der Blitz ausgelöst wurde.
Getestete APIs:
Bestanden: Die Mitte des Kachelbildes weist einen großen Farbverlauf auf, was bedeutet, dass der Blitz 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
test_param_noise_reduction
Testet, ob der Parameter android.noiseReduction.mode
korrekt angewendet wird, wenn er festgelegt ist. Nimmt Bilder mit schwach beleuchteter Kamera auf. Verwendet eine hohe analoge Verstärkung, um sicherzustellen, dass das aufgenommene Bild verrauscht ist. Nimmt drei Bilder auf: NR aus, „schnell“ und „hohe Qualität“. Erfasst außerdem ein Bild mit geringer Verstärkung und ausgeschalteter Rauschunterdrückung und verwendet dessen Varianz als Basislinie. Je höher das SNR (Signal-Rausch-Verhältnis) ist, desto besser ist die Bildqualität.
Getestete APIs:
Bestanden: SNR variiert je nach Rauschunterdrückungsmodus und verhält sich ähnlich wie in der folgenden Grafik.
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
test_param_sensitivity
Testet, ob der Parameter android.sensor.sensitivity
angewendet wird. Der Test erhöht die Empfindlichkeit in 5 Stufen mit fester Belichtung für jede Aufnahme.
Getestete APIs:
Bestanden: RGB bedeutet, dass die Mitte 10 % mit erhöhter Empfindlichkeit heller wird.
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
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
Bestanden: Die Schattierungsmodi werden umgeschaltet und die Linsenschattierungskarten werden wie erwartet geändert.
test_param_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
test_param_tonemap_mode
Testet, ob der Parameter android.tonemap.mode angewendet wird. Wendet unterschiedliche Tonemap-Kurven auf jeden R-, G- und B-Kanal an und prüft, ob die Ausgabebilder wie erwartet geändert werden. 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
Passieren:
- 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. Bilder sind gleich.
test_param_tonemap_mode_n=0.jpg | test_param_tonemap_mode_n=1.jpg |
test_post_raw_sensitivity_boost
Überprüft die Erhöhung der RAW-Empfindlichkeit. Erfasst eine Reihe von RAW- und YUV-Bildern mit unterschiedlicher Empfindlichkeit, veröffentlicht die Kombination zur Erhöhung der RAW-Empfindlichkeit und prüft, ob der Ausgabepixelmittelwert mit den Anforderungseinstellungen ü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
Passen: RAW-Bilder werden mit zunehmender Verstärkung dunkler, während YUV-Bilder in der Helligkeit konstant bleiben
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
test_raw_burst_sensitivity
Erfasst eine Reihe von Rohbildern mit zunehmender Verstärkung und misst das Rauschen. Nimmt nur Rohdaten in einer Serie 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: Jeder Schuss ist lauter als der vorherige Schuss, da die Verstärkung zunimmt.
Verwendet die Varianz der mittleren Statistik-Rasterzelle.
test_raw_burst_sensitivity_variance.png
test_raw_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
Passen: Durch Erhöhen der ISO (Verstärkung) werden die Pixel lichtempfindlicher, sodass sich die Darstellung nach links verschiebt.
test_raw_exposure_s=55.png
(10⁰ ist 1 ms, 10¹ ist 10 ms, 10⁻¹ 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_raw_sensitivity
Erfasst eine Reihe von Rohbildern mit zunehmender Empfindlichkeit und misst das Rauschen (Varianz) in den mittleren 10 % des Bildes. Testet, ob jeder Schuss lauter ist als der 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
Pass: Die Varianz nimmt mit jedem Schuss zu.
test_raw_sensitivity_variance.png
test_reprocess_noise_reduction
Testet, ob android.noiseReduction.mode
auf Wiederverarbeitungsanforderungen angewendet wird. Erfasst erneut verarbeitete Bilder bei schwach beleuchteter Kamera. Verwendet eine hohe analoge Verstärkung, um sicherzustellen, dass das Aufnahmebild verrauscht ist. Erfasst drei neu verarbeitete Bilder: NR aus, „schnell“ und „hohe Qualität“. Erfasst ein erneut verarbeitetes Bild mit geringer Verstärkung und deaktivierter Rauschunterdrückung und verwendet dessen Varianz als Basislinie.
Getestete APIs:
Pass: FAST >= OFF, HQ >= FAST, HQ >> OFF
Typisches SNR-gegen-NR_MODE-Diagramm
test_tonemap_sequence
Testet eine Folge von Aufnahmen mit unterschiedlichen Tonemap-Kurven. Erfasst 3 manuelle Aufnahmen mit einer linearen Tonemap. Erfasst 3 manuelle Aufnahmen mit Standard-Tonemap. Berechnet das Delta zwischen jedem aufeinanderfolgenden Frame-Paar.
Getestete APIs:
Bestanden: 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 gemeldeten Größen und Formate für die Bilderfassung funktionieren. Verwendet eine manuelle Anfrage mit einer linearen Tonemap, sodass YUV und JPEG bei der Konvertierung durch das Modul image_processing_utils
gleich aussehen. Bilder werden nicht standardmäßig gespeichert, können aber durch Aktivieren von debug_mode
gespeichert werden.
Getestete APIs:
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
-
android.graphics.ImageFormat#JPEG
Bestanden: Alle Bildzentren haben einen maximalen RMS-Unterschied (Root-Mean-Square-Wert eines Signals) in RGB-konvertierten Bildern mit 3 % des YUV-Bildes mit der höchsten Auflösung.
test_yuv_jpeg_all.png
test_yuv_plus_dng
Testet, ob die angegebenen Größen und Formate für die Bilderfassung funktionieren.
Getestete APIs:
Bestanden: Der Test wird abgeschlossen und die angeforderten Bilder werden zurückgegeben.
test_yuv_plus_dng.jpg
test_yuv_plus_jpeg
Testet die Erfassung eines einzelnen Frames sowohl als YUV- als auch als JPEG-Ausgabe. Verwendet eine manuelle Anfrage mit einer linearen Tonemap, sodass YUV und JPEG 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
Bestanden: YUV- und JPEG-Bilder sind ähnlich und weisen einen RMS-Unterschied (Effektivwert eines Signals) von weniger als 1 % auf.
test_yuv_plus_jpg_jpg.jpg | test_yuv_plus_jpeg_yuv.jpg |
test_yuv_plus_raw
Testet die Erfassung eines einzelnen Frames als RAW/RAW10/RAW12- und YUV-Ausgabe, sofern unterstützt. Verwendet eine manuelle Anfrage mit linearer Tonemap, sodass Roh- und YUV voraussichtlich gleich sind. Vergleicht die mittleren 10 %-RGB-Werte von RGB-konvertierten Bildern. Protokolliert android.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
Bestanden: YUV- und Rohbilder sind ähnlich und weisen einen RMS-Unterschied (Effektivwert eines Signals) von weniger als 3,5 % auf.
test_yuv_plus_raw_shading=1_raw.jpg | test_yuv_plus_raw_shading=1_yuv.jpg |
scene2_a
scene2_a hat drei Gesichter mit grauem Hintergrund und neutraler Kleidung. Die Gesichter sind so ausgewählt, dass sie eine breite Palette an Hauttönen aufweisen. Damit die Gesichtserkennung optimal funktioniert, muss das Diagramm die richtige Ausrichtung haben.
scene2_a
test_auto_flash
Testet, ob der automatische Blitz in einer dunklen Szene ausgelöst wird. Überprüft, ob der automatische Blitz ausgelöst wird, indem überprüft wird, ob die Mitte des Kachelbilds einen großen Farbverlauf aufweist. Um den automatischen Blitz auszulösen, müssen das Tablet und die Lichter im Prüfstand ausgeschaltet sein. Das Tablet wird durch den Test ausgeschaltet und die Lichter können mit dem Arduino-Controller automatisch ausgeschaltet werden. Damit der Test ordnungsgemäß funktioniert, muss die Szene vollständig dunkel sein. Daher muss die hintere Tablet-Öffnung vollständig vom Szenen-Tablet abgedeckt werden und die vordere Öffnung muss von einer Blende und dem DUT-Telefon abgedeckt werden, um das Eindringen von Streulicht in das Rig zu verhindern.
Getestete APIs:
-
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#FLASH_MODE
Bestanden: Die Mitte des Kachelbildes weist einen großen Farbverlauf auf, was bedeutet, dass der automatische Blitz ausgelöst wurde.
test_autoframing
Testet das Autoframing-Verhalten des Kamerageräts. Führt einen großen Zoom durch, sodass keines der Gesichter in der Szene sichtbar ist, aktiviert den Autoframing-Modus, indem AUTOFRAMING
in CaptureRequest
auf True
gesetzt wird, und überprüft, ob alle Gesichter in der Originalszene erkannt werden können, wenn der Zustand konvergiert (d. h. wann AUTOFRAMING_STATE
in CaptureResult
ist auf AUTOFRAMING_STATE_CONVERGED
gesetzt.
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
Tests zeigen die P3 -Aufnahme in JPEG mithilfe der ColorSpaceProfiles
API an. Testet, ob das erfasste JPEG im Header ein geeignetes ICC-Profil aufweist und dass das Bild Farben außerhalb des sRGB-Farbraums enthält.
Getestete APIs:
-
android.hardware.camera2.params.ColorSpaceProfiles
-
android.hardware.camera2.params.SessionConfiguration#setColorSpace
Bestanden: Das JPEG enthält ein Display P3 ICC-Profil und Farben außerhalb des sRGB-Farbraums.
test_effekte
Erfasst Frames für unterstützte Kameraeffekte und prüft, ob diese korrekt generiert werden. Der Test überprü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
Pass: Erfasst das Szenenbild mit OFF
Effekten und ein monochromes Bild mit auf MONO
eingestellten Effekten.
test_effects_MONO.jpg
test_format_combos
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 erfolgreich erfasst.
test_jpeg_quality
Testet die JPEG-Komprimierungsqualität der Kamera. Schritten Sie JPEG-Qualitäten durch android.jpeg.quality
und stellen Sie sicher, dass sich die Quantisierungstabellen korrekt ändern.
Getestete APIs:
Bestanden: Die Quantisierungsmatrix nimmt mit steigender Qualität ab. (Matrix stellt den Teilungsfaktor dar.)
Luma/Chroma-DQT-Matrix-Durchschnitt der Pixel 4-Rückkamera im Vergleich zur JPEG-Qualität
Beispiel für einen fehlgeschlagenen Test
Beachten Sie, dass es bei Bildern mit sehr geringer Qualität (jpeg.quality < 50) zu keiner Erhöhung der Komprimierung in der Quantisierungsmatrix kommt.
test_num_faces
Testet die Gesichtserkennung.
Getestete APIs:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Passen: Findet drei Gesichter.
test_num_faces_fd_mode_1.jpg
test_preview_min_frame_rate
Testet, ob die Vorschaubildrate in einer dunklen Szene korrekt abnimmt. Damit dieser Test ordnungsgemäß funktioniert, müssen die Lichter im Prüfstand durch die Steuerung oder manuell durch den Prüfer 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
Bestanden: Die Vorschaubildrate liegt am Minimum des angeforderten Bildratenbereichs und die Abweichung zwischen den Bildern ist geringer als die im Test festgelegte absolute Toleranz.
test_reprocess_uv_swap
Testet, dass bei der YUV-Wiederverarbeitung die U- und V-Ebenen nicht vertauscht werden. Dies wird durch die Berechnung der Summe der absoluten Differenzen (SAD) zwischen dem erneut verarbeiteten Bild und einer nicht erneut verarbeiteten Aufnahme erkannt. Wenn das Vertauschen der U- und V-Ausgabeebenen der erneut verarbeiteten Erfassung zu einem erhöhten SAD führt, wird davon ausgegangen, dass die Ausgabe die richtigen U- und V-Ebenen aufweist.
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
Bestanden: Die U- und V-Ebenen werden nicht vertauscht.
test_reprocess_uv_swap.png
scene2_b
test_num_faces
Testet die Gesichtserkennung mit erhöhter Hauttonvielfalt in Gesichtsszenen.
Getestete APIs:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Bestanden: Findet 3 Gesichter.
test_num_faces_fd_mode_1.jpg
test_yuv_jpeg_capture_sameness
Erfasst zwei Bilder mit den größten gängigen YUV- und JPEG-Formaten mit demselben Seitenverhältnis wie das größte JPEG-Format und einer Auflösung von nicht mehr als 1920 x 1440. Setzt jpeg.quality
auf 100 und erfasst eine Dual-Surface-Anfrage. Konvertiert beide Bilder in RGB-Arrays und berechnet die 3D-Effektivwertdifferenz (RMS) 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
Bestanden: YUV- und JPEG-Bilder sind ähnlich und weisen einen RMS-Unterschied (Effektivwert eines Signals) von weniger als 1 % auf.
scene2_c
test_num_faces
Testet die Gesichtserkennung mit erhöhter Hauttonvielfalt in Gesichtsszenen.
Getestete APIs:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Bestanden: Findet 3 Gesichter.
test_num_faces_fd_mode_1.jpg
test_jpeg_capture_perf_class
Testet die JPEG-Aufnahmelatenz für die S-Leistungsklasse, wie in Abschnitt 2.2.7.2 Kamera im CDD angegeben.
Bestanden: Die JPEG-Aufnahmelatenz von Kamera2 MUSS bei 1080p-Auflösung < 1000 ms betragen, gemessen durch den CTS-Kamera-PerformanceTest unter ITS-Lichtbedingungen (3000 K) für beide Primärkameras.
test_camera_launch_perf_class
Testet die Kamerastartlatenz für die S-Leistungsklasse gemäß Abschnitt 2.2.7.2 Kamera im CDD.
Bestanden: Die Startlatenz von Kamera2 (geöffnete Kamera bis zum ersten Vorschaubild) muss < 600 ms betragen, gemessen durch den CTS-Kamera-Leistungstest unter ITS-Lichtbedingungen (3000 K) für beide Primärkameras.
scene2_d
test_num_faces
Testet die Gesichtserkennung mit erhöhter Hauttonvielfalt in Gesichtsszenen.
Getestete APIs:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Bestanden: Findet 3 Gesichter.
scene2_e
test_continuous_picture
50 Frames mit VGA-Auflösung werden mit der ersten Einstellung der Aufnahmeanforderung 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
Bestanden: 3A-System beruhigt sich am Ende einer 50-Frame-Aufnahme.
test_num_faces
Testet die Gesichtserkennung mit erhöhter Hauttonvielfalt in Gesichtsszenen.
Getestete APIs:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Bestanden: Findet 3 Gesichter.
scene2_f
scene2_f hat drei Gesichter mit weißem Hintergrund und weißer Kleidung. Die Gesichter haben eine breite Palette an Hauttönen und einen hohen Kontrast zum Hintergrund.
scene2_f
test_num_faces
Testet die Gesichtserkennung mit erhöhter Hauttonvielfalt in Gesichtsszenen.
Getestete APIs:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Bestanden: Findet 3 Gesichter.
test_num_faces_fd_mode_1.jpg
Szene3
Scene3 verwendet das ISO12233-Diagramm und die meisten Tests verwenden eine Diagrammextraktionsmethode, um das Diagramm in der Szene zu finden. Aus diesem Grund haben die meisten gespeicherten Bilder keine Ränder wie die Bilder für die Szenen 1, 2 oder 4, sondern nur das Diagramm. Damit der Kartenfinder optimal funktioniert, muss die Karte richtig ausgerichtet sein.
test_3a_consistency
Prüft 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
Bestanden: 3A konvergiert für Belichtung, Verstärkung, awb (automatischer Weißabgleich) und fd (Fokusentfernung) dreimal innerhalb der Toleranz.
test_edge_enhancement
Testet, ob der Parameter android.edge.mode
korrekt angewendet wird. Erfasst nicht erneut verarbeitete Bilder für jeden Kantenmodus und gibt die Schärfe des Ausgabebilds und die Metadaten des Erfassungsergebnisses zurück. Verarbeitet eine Aufnahmeanforderung mit einem bestimmten Kantenmodus, einer bestimmten Empfindlichkeit, einer Belichtungszeit, einem Fokusabstand und einem Ausgabeoberflächenparameter.
Bestanden: HQ
Modus (2) schärfer als OFF
Modus (0). FAST
Modus (1) schärfer 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 (Schnellmodus)
test_edge_enhancement_edge=2.jpg (Hochqualitätsmodus)
test_flip_mirror
Testet, 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.
Bestanden: Das Bild wird nicht gespiegelt, gespiegelt oder gedreht.
test_flip_mirror_scene_patch.jpg
test_landscape_to_portrait
Testet, ob die Überschreibung von Querformat zu Hochformat für querformatige 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
Bestanden: Der Test kann ein Diagramm mit der erwarteten Drehung finden (0 Grad, wenn die Überschreibung von Querformat zu Hochformat deaktiviert ist, 90 Grad, wenn sie aktiviert ist).
test_landscape_to_portrait.png
test_lens_movement_reporting
Testet, ob das Objektivbewegungsflag ordnungsgemäß gemeldet wird. Nimmt eine Serie von 24 Bildern auf, wobei die ersten 12 Bilder im optimalen Fokusabstand (gemäß 3A) und die letzten 12 Bilder im minimalen Fokusabstand liegen. Bei Bild 12 bewegt sich das Objektiv, wodurch die Schärfe abnimmt. Die Schärfe stabilisiert sich schließlich, wenn sich das Objektiv in die endgültige Position bewegt. Das Objektivbewegungsflag sollte in allen Bildern aktiviert sein, bei denen die Schärfe in den ersten paar Bildern, bei denen das Objektiv bei optimaler Brennweite stationär ist, und bei den letzten paar Bildern, bei denen das Objektiv bei minimaler Brennweite stationär ist, zwischen der Schärfe liegt. Der genaue Rahmen, in dem sich das Objektiv bewegt, ist nicht wichtig: Es wird überprüft, ob das Bewegungsflag aktiviert ist, wenn sich das Objektiv bewegt.
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
Bestanden: Die Markierung für die Objektivbewegung ist im Bild True
, mit Änderung der Schärfe.
Fehlermechanismen:
-
lens_moving: True
(android.hardware.camera2.CaptureResult#LENS_STATE
= 1) intest_log.DEBUG
wird nur in Bildern bestätigt, in denen sich die Schärfe nicht ändert. - Frames mit
lens_moving: False
(android.hardware.camera2.CaptureResult#LENS_STATE
= 0) intest_log.DEBUG
weisen einen Schärfeunterschied im Vergleich zu den ersten Frames bei optimaler Brennweite oder den letzten Frames bei minimaler Fokusentfernung auf.
test_reprocess_edge_enhancement
Testet, ob unterstützte Neuverarbeitungsmethoden zur Kantenverbesserung ordnungsgemäß funktionieren. Verarbeitet eine Erfassungsanforderung mit einem bestimmten Kantenwiederverarbeitungsmodus und vergleicht verschiedene zu erfassende Modi mit deaktivierten Kantenwiederverarbeitungsmodi.
Getestete APIs:
-
android.hardware.camera2.CaptureRequest#EDGE_MODE
-
android.hardware.camera2.CaptureRequest#REPROCESS_EFFECTIVE_EXPOSURE_FACTOR
Bestanden: Die Schärfe für die verschiedenen Kantenmodi ist korrekt. HQ
(Modus 2) ist schärfer als OFF
(Modus 0) und die Verbesserung zwischen den verschiedenen Modi ist ähnlich.
test_reprocess_edge_enhancement_plot.png
Szene4
Szene 4 besteht aus einem schwarzen Kreis auf weißem Hintergrund innerhalb eines Quadrats.
Szene4
test_aspect_ratio_and_crop
Testet, ob Bilder in der Bildpipeline verzerrt oder unerwartet beschnitten sind. Nimmt Bilder eines Kreises in allen Formaten auf. Stellt sicher, dass der Kreis nicht verzerrt ist, sich nicht aus der Bildmitte bewegt und die Größe des Kreises bei unterschiedlichen Seitenverhältnissen oder Auflösungen nicht falsch ändert.
Getestete APIs:
-
android.hardware.camera2.CaptureResult#LENS_DISTORTION
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
-
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
Bestanden: Bilder werden nicht gestreckt, die Bildmitte unterscheidet sich nicht um mehr als 3 % und das maximal mögliche FoV (Sichtfeld) bleibt erhalten.
Fehlermechanismen:
- Der Kreis im aufgenommenen Bild wird durch die Verarbeitungspipeline verzerrt.
- Bilder mit niedrigerer Auflösung werden in der Bildpipeline doppelt zugeschnitten, wodurch unterschiedliche FoVs zwischen Bildern mit hoher und niedriger Auflösung entstehen.
- Der Kreis im aufgenommenen Bild wird aufgrund einer Aufnahmeanfrage mit extremem Seitenverhältnis abgeschnitten, wodurch die Höhe oder Breite des Bildes verringert wird.
- Der Kreis im aufgenommenen Bild weist in der Mitte eine Spiegelung auf und erscheint nicht vollständig ausgefüllt.
test_multi_camera_alignment
Testet die Kamerakalibrierungsparameter im Zusammenhang mit der Kamerapositionierung für Systeme mit mehreren Kameras. Nimmt mithilfe der physischen Unterkameras mit mehreren Kameras ein Bild mit einer der physischen Kameras auf. Findet den Kreismittelpunkt. Projiziert den Kreismittelpunkt für jede Kamera auf die Weltkoordinaten. Vergleicht den Unterschied zwischen den Kreismittelpunkten der Kameras in Weltkoordinaten. Projiziert die Weltkoordinate zurück in Pixelkoordinaten und vergleicht sie zur Gültigkeitsprüfung mit den Originalen. Vergleicht die Kreisgrößen und prüft, ob die Brennweiten 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
Bestanden: Kreismittelpunkte und -größen entsprechen den Erwartungen in projizierten Bildern im Vergleich zu aufgenommenen Bildern unter Verwendung von Kamerakalibrierungsdaten und Brennweiten.
Fehlermechanismen:
-
LENS_INTRINSIC_CALIBRATION
,LENS_POSE_TRANSLATION
oderLENS_POSE_ROTATION
sind Entwurfswerte und keine tatsächlichen Kalibrierungsdaten. - Das Kamerasystem ist für den Testaufbau nicht geeignet. Beispielsweise der Test eines Wide- und eines Ultra-Wide-Kamerasystems mit dem RFoV-Teststand. Weitere Informationen finden Sie unter Häufig gestellte Fragen zu Kamera-ITS-in-a-box1 .
test_preview_aspect_ratio_and_crop
Ähnlich wie der test_aspect_ratio_and_crop -Test für Standbilder überprüft dieser Test die unterstützten Vorschauformate, um sicherzustellen, dass die Vorschaubilder nicht unangemessen gestreckt oder zugeschnitten werden. Stellt sicher, dass sich das Seitenverhältnis des Kreises nicht ändert, die zugeschnittenen Bilder den Kreis in der Mitte des Rahmens behalten und sich die Kreisgröße bei einem konstanten Format oder bei unterschiedlichen Auflösungen nicht ändert (Sichtfeldprüfung).
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
Bestanden: Bilder werden nicht gestreckt, die Bildmitte unterscheidet sich nicht um mehr als 3 % und das maximal mögliche FoV (Sichtfeld) bleibt erhalten.
test_preview_stabilization_fov
Überprüft die unterstützten Vorschaugrößen, um sicherzustellen, dass das FoV richtig zugeschnitten ist. Der Test erfasst zwei Videos, eines mit ON
Vorschaustabilisierung und eines mit OFF
Vorschaustabilisierung. Aus jedem Video wird ein repräsentativer Frame ausgewählt und analysiert, um sicherzustellen, dass die FoV-Änderungen in den beiden Videos innerhalb der Spezifikationen liegen.
Getestete APIs:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Bestanden: Das Seitenverhältnis des Kreises bleibt ungefähr konstant, die Mittelpunktposition des Kreises bleibt stabil und die Größe des Kreises ändert sich nicht mehr als 20 %.
test_video_aspect_ratio_and_crop
Nimmt Videos eines Kreises innerhalb eines Quadrats in allen Videoformaten auf. Extrahiert die Schlüsselbilder und stellt sicher, dass sich das Seitenverhältnis des Kreises nicht ändert, die zugeschnittenen Bilder den Kreis in der Mitte halten und die Kreisgröße sich bei einem konstanten Format oder mit unterschiedlicher Auflösung nicht ändert (Sichtfeldprüfung).
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
Bestanden: Videobilder werden nicht gestreckt, die Bildmitte weicht nicht um mehr als 3 % ab und das maximal mögliche FoV (Sichtfeld) bleibt erhalten.
Szene 5
Szene 5 erfordert eine gleichmäßig beleuchtete graue Szene. Dies wird durch einen Diffusor erreicht, der über dem Kameraobjektiv angebracht ist. Wir empfehlen den folgenden Diffusor: www.edmundoptics.com/optics/window-diffusers/optical-diffusers/opal-diffusing-glass/46168
.
Um die Szene vorzubereiten, befestigen Sie einen Diffusor vor der Kamera und richten Sie die Kamera auf eine Lichtquelle von etwa 2000 Lux. Für Szene 5 aufgenommene Bilder erfordern eine diffuse Beleuchtung ohne erkennbare Merkmale. Das Folgende ist ein Beispielbild:
Aufnahme von Szene 5
test_lens_shading_and_color_uniformity
Testet, ob die Linsenschattierungskorrektur ordnungsgemäß angewendet wird und die Farbe einer monochromen, einheitlichen Szene gleichmäßig verteilt wird. Führt diesen Test an einem YUV-Frame mit Auto 3A durch. Die Linsenabschattung wird anhand des y-Kanals ausgewertet. Misst den durchschnittlichen Y-Wert für jeden angegebenen Beispielblock und bestimmt durch Vergleich mit dem mittleren Y-Wert, ob er bestanden oder nicht bestanden wurde. Der Farbgleichmäßigkeitstest wird im r/g- und b/g-Raum ausgewertet.
Getestete APIs:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
Bestanden: Beim angegebenen Radius des Bildes muss die Varianz des r/g- und b/g-Werts weniger als 20 % betragen, um den Test zu bestehen.
Szene6
Szene6 ist ein Raster aus kleinen Kreisen mit einem Quadrat in einer Ecke, um die Ausrichtung anzuzeigen. Die kleinen Kreise werden benötigt, um die Zoomfunktion über einen großen Bereich zu testen.
Szene6
test_in_sensor_zoom
Testet das Verhalten der Kamera-In-Sensor-Zoomfunktion, die zugeschnittene RAW-Bilder erzeugt.
Wenn der Stream-Anwendungsfall auf CROPPED_RAW
eingestellt ist, erstellt der Test zwei Aufnahmen über den Zoombereich, ein RAW-Bild mit vollem Sichtfeld (FoV) und ein zugeschnittenes RAW-Bild. 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 herunter und berechnet die 3D-Effektivwertdifferenz (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
Bestanden: Die 3D-Root-Mean-Square-Differenz (RMS) zwischen dem herunterskalierten, 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 gesamten Zoombereich auf und prüft, ob die Kreise größer werden, wenn die Kamera heranzoomt.
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
Bestanden: Die relative Größe des erfassten Kreises stimmt mit dem angeforderten Zoomverhältnis überein, um sicherzustellen, dass die Kamera korrekt zoomt.
test_zoom, um die Kontur des Kreises zu finden, der der Mitte am nächsten liegt.
test_low_latency_zoom
Testet das Zoomverhalten der Kamera mit geringer Latenz. Nimmt Aufnahmen über den Zoombereich mit android.control.settingsOverride = 1 (SETTINGS_OVERRIDE_ZOOM)
und prüft, ob die Kreise in den Ausgabebildern mit den Zoomverhältnissen in den Aufnahmemetadaten ü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
Bestanden: Die relative Größe des erfassten Kreises stimmt mit den Ergebnismetadaten des Zoomverhältnisses überein.
test_preview_video_zoom_match
Testet, ob beim Aufnehmen und Zoomen, in der Videovorschau und der Videoausgabe die gleiche Ausgabe angezeigt und aufgezeichnet wird. Berechnet die Größe des Kreises, der der Mitte am nächsten liegt, bei verschiedenen Zoomverhältnissen und prüft, ob die Größe des Kreises mit zunehmendem Zoomverhältnis 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
Bestanden: Die relative Größe des erfassten Kreises stimmt mit dem angeforderten Zoomverhältnis im Video und in der Vorschau überein.
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)
scene_extensions
Die scene_extensions
Tests sind für Kameraerweiterungen gedacht und müssen Camera ITS-in-a-Box verwenden, da sie eine genaue Kontrolle der Testumgebung erfordern.
scene_hdr
Die Szene scene_hdr
besteht aus einem Porträt links und einem kontrastarmen QR-Code rechts.
scene_hdr
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
Bestanden: Die HDR-Erweiterung reduziert die Anzahl der Kontraständerungen, die zur Erkennung des QR-Codes erforderlich sind, oder verringert den Gradienten über den QR-Code.
scene_night
Die Szene scene_night
besteht aus einem weißen Kreis mit vier kleineren Kreisen darin, alle vor einem schwarzen Hintergrund. Der kleinere Kreis in der oberen rechten Ecke ist dunkler als die anderen, um die Orientierung anzuzeigen.
scene_night
test_night_extension
Testet die Nachterweiterung . Erfasst Aufnahmen mit und ohne aktivierter Erweiterung und prüft Folgendes:
- Die Aufnahme mit aktivierter Nachterweiterung dauert länger.
- Die Aufnahme mit aktivierter Nachterweiterung ist heller oder weist Szenenartefakte mit einem verbesserten Erscheinungsbild auf.
Getestete APIs:
-
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
-
android.hardware.camera2.CameraExtensionSession#capture
Bestanden: 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 Pixelwerte niedriger sein als der Mittelpunkt des umgebenden Kreises.
sensor_fusion
Sensorfusionstests erfordern eine spezifische Telefonbewegung vor einem Schachbrettmuster. Um optimale Ergebnisse zu erzielen, stellen Sie sicher, dass das Testchart flach montiert ist. Diagramme, die nicht flach sind, wirken sich bei vielen 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 der logischen Kamera erfassten Frame-Zeitstempel innerhalb von 10 ms liegen, indem die Winkel der Quadrate innerhalb des Schachbretts berechnet werden, um den Zeitstempel zu bestimmen.
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()
Bestanden: Der Winkel zwischen den Bildern der einzelnen Kameras ändert sich nicht nennenswert, wenn das Telefon gedreht wird.
test_preview_stabilization
Testet, dass sich das stabilisierte Vorschauvideo weniger dreht als das Gyroskop.
Getestete APIs:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Bestanden: Die maximale Winkeldrehung über Frames 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 der Kamera und dem Gyroskop für AR- und VR-Anwendungen. Das Telefon wird vor dem Schachbrettmuster zehnmal um 90 Grad gedreht. Die Bewegung dauert etwa 2 s hin und zurück. 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 zum Debuggen sind:
test_sensor_fusion_gyro_events
: Zeigt die Gyroskopereignisse für das Telefon während des Tests an. Eine Bewegung in x- und y-Richtung bedeutet, dass das Telefon nicht sicher auf der Montageplatte montiert ist, was die Wahrscheinlichkeit verringert, dass der Test bestanden wird. Die Anzahl der Zyklen im Plot 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 Kameraereignisse an. Dieser Plot muss die übereinstimmende Bewegung zwischen Kamera und Gyroskop mit einer Genauigkeit von +/-1 ms anzeigen.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
Bestanden: Der Versatz der Kamera- und Gyroskop-Zeitstempel beträgt weniger als 1 ms gemäß CDD-Abschnitt 7.3.9 High-Fidelity-Sensoren [C-2-14] .
Fehlermechanismen:
- Offset-Fehler: Der Kamera-Gyroskop-Offset ist nicht korrekt auf +/-1 ms kalibriert.
- Frame-Drops: Die Pipeline ist nicht schnell genug, um 200 Frames hintereinander zu erfassen.
- Socket-Fehler:
adb
kann nicht lange genug zuverlässig eine Verbindung zum DUT herstellen, um den Test auszuführen. - Die Karte ist nicht flach montiert. Der Plot
test_sensor_fusion_plot_rotations
enthält Frames, in denen das Gyroskop und die Kameradrehung erheblich variieren, wenn die Kamera durch die Teile des Diagramms rotiert, die nicht flach sind. - Die Kamera ist nicht flach montiert. Der Plot
test_sensor_fusion_gyro_events
zeigt Bewegungen in der X- und Y-Ebene. Dieser Fehler tritt häufiger bei nach vorne gerichteten Kameras auf, da die hintere Kamera oft eine erhabene Erhebung zum Rest des Telefongehäuses aufweist, was zu einer Neigung führt, wenn die Rückseite des Telefons an der Montageplatte befestigt wird.
test_video_stabilization
Testet, dass sich stabilisierte Videos weniger drehen als Gyroskope.
Getestete APIs:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Bestanden: Die maximale Winkeldrehung über Frames beträgt weniger als 60 % der Gyroskopdrehung.
Im Folgenden finden Sie Beispielvideos mit und ohne Stabilisierung.
Beispielvideo mit Stabilisierung
Beispielvideo ohne Stabilisierung
test_led_snapshot
Prüft, ob die LED-Schnappschüsse das Bild nicht übersättigen oder verfärben.
Dieser Test fügt der Sensorfusionsbox einen Beleuchtungscontroller hinzu, um die Lichter zu steuern. Wenn die Lichter auf OFF
eingestellt sind, wird beim Test eine Aufnahme durchgeführt, wobei der AUTO_FLASH
Modus auf ON
eingestellt ist. Während dieser Erfassung führt der Test eine Vorerfassungssequenz aus, wobei der aePrecapture
Trigger auf START
gesetzt ist, und setzt die Erfassungsabsicht auf Preview
, um die Erfassung mit Flash durchzuführen.
Da die Aufnahme aufgrund des Blitzes einen besonderen Hotspot aufweist, berechnet der Test den Mittelwert des Blitzbildes der gesamten Aufnahme und überprüft, ob der Wert im Bereich (68, 102) liegt. Um zu überprüfen, ob das Bild einen angemessenen Weißabgleich aufweist, berechnet der Test die R/G- und B/G-Verhältnisse und überprü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
Bestanden: Die R/G- und B/G-Verhältnisse liegen zwischen 0,95 und 1,05. Der Mittelwert des Blitzbildes liegt im Bereich (68, 102).