Diese Seite enthält eine umfassende Liste der Tests unter der Camera Image Test Suite (ITS), die Teil des Android Compatibility Test Suite (CTS) Verifier ist. ITS-Tests sind Funktionstests, das heißt, sie messen nicht die Bildqualität, sondern ob alle beworbenen Kamerafunktionen wie erwartet funktionieren. In diesem Dokument erfahren Entwickler und Tester, was die einzelnen Tests tun und wie Testfehler behoben werden können.
Die Tests sind wie folgt nach Szene gruppiert:
- scene0 : Erfassen Sie Metadaten, Jitter, Gyroskop, Vibration
- Szene1 : Belichtung, Empfindlichkeit, EV-Korrektur, YUV vs. JPEG/RAW
- Szene2 : Gesichtserkennung
- scene3 : Kantenverbesserung, Linsenbewegung
- scene4 : Seitenverhältnis, Zuschneiden, Sichtfeld
- scene5 : Linsenschattierung
- Szene6 : Zoom
- sensor_fusion : Kamera/Gyroskop-Timing-Offset
Eine Beschreibung der einzelnen Szenen finden Sie in den einzelnen Abschnitten.
Szene0
Scene0-Tests erfordern keine spezifischen Szeneninformationen. Für Gyroskop- und Vibrationstests muss das Telefon jedoch stationär sein.
test_burst_capture
Überprüft, ob die gesamte Erfassungspipeline mit der Geschwindigkeit der Erfassung in voller Größe und der CPU-Zeit Schritt halten 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:
Pass: Schließt die Erfassung ab und gibt die Erfassungsergebnisse aus.
test_gyro_bias
Testet, ob der Kreisel eine stabile Ausgabe 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 im Laufe der Zeit weniger als 0,01.
test_gyro_bias_plot.png
test_jitter
Misst Jitter in Kamerazeitstempeln.
Getestete APIs:
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
Bestanden: Zwischen den Frames besteht ein Delta von mindestens 30 ms.
test_jitter_plot.png (Beachten Sie den kleinen Bereich der y-Achse. Jitter ist in diesem Diagramm tatsächlich gering.)
test_metadaten
Testet die Gültigkeit von Metadateneinträgen. Betrachtet die Aufnahmeergebnisse und die Kameraeigenschaften von Objekten. Dieser Test verwendet Belichtungs- und Verstärkungswerte auto_capture_request
, 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: Hardwarelevel, rollingShutterSkew
, frameDuration
Tags, timestampSource
, croppingType
, blackLevelPattern
, pixel_pitch
, FOV, hyperfocal distance sind vorhanden und haben gültige Werte.
test_param_sensitivity_burst
Testet, ob der android.sensor.sensitivity
-Parameter im Burst richtig angewendet wird. Untersucht 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 korrekten 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, ob das Gerät Sensorereignisse für Geräte abfragt und ausgibt, die Sensorfusionsunterstützung ankündigen. Die erwarteten Sensoren sind Beschleunigungsmesser, Gyroskop und Magnetometer. Dieser Test funktioniert nur, wenn der Bildschirm eingeschaltet ist, sich das Gerät also nicht im Standby-Modus befindet.
Getestete APIs:
Bestanden: Ereignisse für jeden Sensor werden empfangen.
test_solid_color_test_pattern
Testet, ob einfarbige Testmuster für die Kamera-Stummschaltung richtig generiert werden. Wenn Kamera-Stummschaltung unterstützt wird, müssen einfarbige Testmuster unterstützt werden. Wenn die Kamera-Stummschaltung nicht unterstützt wird, werden einfarbige Testmuster nur getestet, wenn die Funktion beworben 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 RAW-Bilder nicht 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 soliden Testmuster haben die richtige Farbe und es gibt eine geringe Varianz im Bild.
test_test_pattern
Testet den android.sensor.testPatternMode
Parameter, 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 einfarbige Testmuster 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 zu 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 Tonzuordnung 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
Bestanden: Das YUV und das RAW sehen einander ähnlich.
test_tonemap_curve_raw_2.jpg
test_tonemap_curve_yuv_2.jpg
test_unified_timestamp
Testet, ob Bild- und Bewegungssensorereignisse in der gleichen Zeitdomäne 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 Kamera-Audioeinschränkungs-API 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 das Graudiagramm 3A (automatische Belichtung, automatischer Weißabgleich, Autofokus) moderat herausfordert, da der mittlere Bereich keine Funktionen aufweist. Die Erfassungsanforderung spezifiziert jedoch die gesamte Szene, die ausreichend Merkmale für 3A zum Konvergieren 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 sicherzustellen, dass einige Grenzen für das graue Diagramm im FoV vorhanden sind, um die Konvergenz von 3A zu unterstützen.
Szene1: Größentabelle 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 deaktiviertem 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
Bestanden: AE konvergiert.
test_auto_vs_manual
Tests, bei denen automatische und manuelle Aufnahmen aufgenommen 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 manuellen Weißabgleichsverstärkungen und -transformationen, die in jedem Aufnahmeergebnis gemeldet werden, stimmen mit der automatischen 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_schwarz_weiß
Testet, ob das Gerät vollständige Schwarzweißbilder erzeugt. Nimmt zwei Aufnahmen auf, die erste mit extrem niedriger 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
Bestanden: Erzeugt Schwarzweißbilder. Gesättigte Kanäle von weißen Bildern haben RGB-Werte von [255, 255, 255] mit einer Fehlerspanne von weniger als 1 % Unterschied.
![]() | ![]() | |
test_schwarz_weiss_schwarz.jpg | test_schwarz_weiss_weiss.jpg |
test_black_white_plot_means.png
test_burst_sameness_manual
Nimmt 5 Serien von 50 Bildern mit manueller Aufnahmeeinstellung auf und überprüft, ob sie alle identisch sind. Dieser Test kann verwendet werden, um festzustellen, 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 den RGB-Werten identisch.
Fail: Zeigt eine Spitze oder einen 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ückgegeben werden. 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 fließen nicht in die zweite automatische Aufnahme ein. Zeichnet die Linsenschattierungskorrektur für die Aufnahmen auf.
test_capture_result_plot_lsc_auto_ch0.png
test_crop_region_raw
Testet, dass die RAW-Streams nicht beschnitten 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
Pass: YUV-Bilder werden mittig beschnitten, aber keine RAW-Bilder.
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, dass Anbauregionen funktionieren. Nimmt ein vollständiges Bild auf und erstellt Patches von 5 verschiedenen Regionen (Ecken und Mitte). Nimmt Bilder mit Beschneidungseinstellungen für die 5 Regionen auf. Vergleicht die Patch- und Crop-Bildwerte.
Getestete APIs:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
Bestanden: Das Bild des beschnittenen Bereichs stimmt mit dem Patch überein, der dem beschnittenen Bild entspricht.
test_dng_noise_model
Überprüft, ob die DNG-Rohmodellparameter korrekt sind. Das Diagramm stellt die gemessene Varianz eines Mittelfelds der Graukarte in Rohaufnahmen dar, die über einen Bereich von Empfindlichkeiten aufgenommen wurden, und vergleicht diese Werte mit der Varianz, die bei jeder Empfindlichkeit durch das DNG-Rauschmodell in der Kamera-HAL erwartet wird (basierend auf dem O,S-Parameter, die in den Capture-Ergebnisobjekten zurückgegeben werden). Für weitere Details zum DNG-Geräuschmodell laden Sie das folgende Dokument zum DNG-Geräuschmodell 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 Kompensation des Belichtungswerts (EV) angewendet wird. Der Test erhöht die Belichtung in acht Stufen und vergleicht die gemessene Helligkeit mit der erwarteten Helligkeit. Erwartete 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 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
Bestanden: Bilder zeigen zunehmende Belichtung ohne Überbelichtung innerhalb von fünf Stufen.
test_ev_compensation_advanced_plot_means.png
test_ev_compensation_basic
Testet, ob die EV-Kompensation angewendet wird, indem ein Bereich verwendet wird, der mit CONTROL_AE_COMPENSATION_STEP
erstellt wurde. Bei jedem Kompensationswert 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
Bestanden: Erfasst eine Zunahme der Luma mit erhöhter EV-Kompensationseinstellung, und die acht Bilder, die für jede EV-Kompensationseinstellung aufgenommen wurden, haben stabile Luma-Werte.
test_ev_compensation_basic.png
test_exposition
Testet, ob eine konstante Belichtung erreicht wird, wenn 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 Beispielpixel nahe beieinander liegen. Stellt sicher, dass die Bilder nicht auf 0 oder 1 geklemmt werden (was sie wie flache Linien aussehen lassen würde). 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 verrauschter. RGB-Ebenen sind flach, wenn der Wert von ISO*exposure über den getesteten Verstärkungsbereich konstant ist.
test_exposure_plot_means.png
![]() | ![]() | |
test_exposure_mult=1.00.jpg | test_exposure_mult=64.00.jpg |
test_jpeg
Tests, bei denen konvertierte YUV-Bilder und Geräte-JPEG-Bilder gleich aussehen. Der Test nimmt die mittleren 10 % des Bildes und 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 auf dem rechten Frame einrasten. Nimmt eine Reihe von Aufnahmen mit Back-to-Back-Anforderungen auf, wobei die Aufnahmeanforderungsparameter zwischen den Aufnahmen variiert werden. Überprüft, ob die Bilder die erwarteten Eigenschaften haben.
Getestete APIs:
Bestanden: Bilder [2, 3, 6, 8, 10, 12, 13] haben eine erhöhte ISO oder 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 umgewandelt werden kann. Nimmt eine Schussfolge 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
Bestanden: R-, G-, B-Werte müssen mit zunehmender Empfindlichkeit linear ansteigen.
test_linearity_plot_means.png
test_locked_burst
Testet 3A-Sperre und YUV-Burst (unter Verwendung der automatischen Einstellung). Dieser Test ist so konzipiert, dass er auch auf eingeschränkten Geräten bestanden wird, die nicht über MANUAL_SENSOR
oder PER_FRAME_CONTROLS
verfügen. Der Test überprü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: Captures sehen konsistent aus.
test_locked_burst_frame0.jpg
test_locked_burst_frame1.jpg
test_locked_burst_frame2.jpg
test_multi_camera_match
Tests, um festzustellen, ob mehrere Kameras auf Geräten ähnliche RGB-Werte für einen grauen Fleck liefern.
Getestete APIs:
-
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
-
android.hardware.camera2.CaptureRequest#LENS_FOCAL_LENGTH
Bestanden: Verschiedene Kameras erzeugen ähnliche RGB-Werte für denselben Graubereich.
test_multi_camera+match_yuv_fl=4.38.jpg
test_param_color_correction
Testet, ob die android.colorCorrection.*
Parameter angewendet werden, wenn sie gesetzt sind. Nimmt Aufnahmen mit unterschiedlichen Transformations- und Verstärkungswerten auf und testet, 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 Dynamikbereich in einem Medium mit einem begrenzteren Dynamikbereich 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 ist die Erfassungsanforderungen: 0 = Einheit, 1 = roter Boost, 2 = blauer Boost
test_param_color_correction_req=0.jpg
test_param_color_correctness_req=1.jpg (R-Verstärkung)
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 offensichtlich ist, ob der Blitz ausgelöst wurde oder nicht, und verwendet eine lineare Tonemap. Überprüft die Mitte mit dem Kachelbild, um festzustellen, ob ein großer Verlauf erstellt wurde, um zu überprüfen, ob der Blitz ausgelöst wurde.
Getestete APIs:
Pass: Die Mitte des Kachelbildes hat einen großen Gradienten, 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 gesetzt ist. Nimmt Bilder bei schwach beleuchteter Kamera auf. Verwendet eine hohe analoge Verstärkung, um sicherzustellen, dass das aufgenommene Bild verrauscht ist. Nimmt drei Bilder auf, für NR aus, „schnell“ und „hohe Qualität“. Nimmt auch ein Bild mit niedriger Verstärkung und NR aus auf und verwendet die Varianz davon als Basislinie. Je höher das SNR (Signal to Noise Ratio), desto besser die Bildqualität.
Getestete APIs:
Bestanden: SNR variiert mit verschiedenen Rauschunterdrückungsmodi und verhält sich ähnlich wie in der Grafik 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
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-Mittelwert von Mitte 10 % wird mit zunehmender 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
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: Shading-Modi werden umgeschaltet und die Lens-Shading-Maps werden wie erwartet modifiziert.
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 modifiziert 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 Gradienten. Der G-Kanal (grün) ist heller für das n=1-Bild.
- test2: Gleiche Tonemap, aber unterschiedliche Länge. Bilder sind die gleichen.
![]() | ![]() | |
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 Empfindlichkeit nach RAW. Erfasst eine Reihe von RAW- und YUV-Bildern mit unterschiedlicher Empfindlichkeit, postet die RAW-Empfindlichkeitsverstärkungskombination und prüft, ob der Ausgabepixelmittelwert den Anforderungseinstellungen entspricht.
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
Bestanden: RAW-Bilder werden mit zunehmender Verstärkung dunkler, während YUV-Bilder in ihrer 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. Erfasst nur Rohdaten in einem Burst.
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
Nimmt eine Reihe von Rohbildern mit zunehmender Belichtungszeit auf und misst die Pixelwerte.
Getestete APIs:
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
Pass: Durch Erhöhen des ISO-Werts (Verstärkung) werden die Pixel lichtempfindlicher, sodass sich der Plot nach links bewegt.
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
Nimmt eine Reihe von Rohbildern mit zunehmender Empfindlichkeit auf 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 steigt mit jedem Schuss.
test_raw_sensitivity_variance.png
test_reprocess_noise_reduction
Testet, ob android.noiseReduction.mode
für die erneute Verarbeitung von Anfragen angewendet wird. Nimmt neu verarbeitete Bilder bei schwach beleuchteter Kamera auf. Verwendet eine hohe analoge Verstärkung, um sicherzustellen, dass das erfasste Bild verrauscht ist. Nimmt drei neu verarbeitete Bilder auf, für NR aus, „schnell“ und „hohe Qualität“. Nimmt ein neu verarbeitetes Bild mit niedriger Verstärkung und NR aus auf und verwendet die Varianz davon als Basislinie.
Getestete APIs:
Bestanden: SCHNELL >= AUS, HQ >= SCHNELL, HQ >> AUS
Typisches Diagramm SNR vs. NR_MODE
test_tonemap_sequence
Testet eine Sequenz von Aufnahmen mit unterschiedlichen Tonemap-Kurven. Nimmt 3 manuelle Aufnahmen mit einer linearen Tonemap auf. Nimmt 3 manuelle Aufnahmen mit Standard-Tonzuordnung auf. Berechnet das Delta zwischen jedem aufeinanderfolgenden Rahmenpaar.
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 Anforderung mit einer linearen Tonzuordnung, sodass YUV und JPEG gleich aussehen, wenn sie vom image_processing_utils
-Modul konvertiert werden. Bilder werden standardmäßig nicht 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 eine maximale RMS-Differenz (Effektivwert eines Signals) in RGB-konvertierten Bildern mit 3 % des YUV-Bilds mit der höchsten Auflösung.
test_yuv_jpeg_all.png
test_yuv_plus_dng
Testet, ob die gemeldeten Größen und Formate für die Bilderfassung funktionieren.
Getestete APIs:
Bestanden: Der Test ist abgeschlossen und gibt die angeforderten Bilder zurück.
test_yuv_plus_dng.jpg
test_yuv_plus_jpeg
Tests zur Erfassung eines einzelnen Frames sowohl als YUV- als auch als JPEG-Ausgabe. Verwendet eine manuelle Anforderung mit einer linearen Tonzuordnung, sodass YUV und JPEG gleich aussehen, wenn sie vom image_processing_utils
-Modul konvertiert werden.
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 haben weniger als 1 % RMS-Unterschied (Effektivwert eines Signals).
![]() | ![]() | |
test_yuv_plus_jpg_jpg.jpg | test_yuv_plus_jpeg_yuv.jpg |
test_yuv_plus_raw
Tests, bei denen ein einzelnes Bild sowohl als RAW- als auch als YUV-Ausgabe erfasst wird. Verwendet eine manuelle Anforderung mit linearer Tonzuordnung, sodass RAW 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
Bestanden: YUV- und JPEG-Bilder sind ähnlich und haben weniger als 3,5 % RMS-Unterschied (Effektivwert eines Signals).
![]() | ![]() | |
test_yuv_plus_raw_shading=1_raw.jpg | test_yuv_plus_raw_shading=1_yuv.jpg |
test_yuv_plus_raw10
Tests, bei denen ein einzelnes Bild sowohl als RAW10- als auch als YUV-Ausgabe erfasst wird. Verwendet eine manuelle Anforderung mit linearer Tonzuordnung, sodass RAW 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
Bestanden: RAW10- und YUV-Bilder sind ähnlich und haben weniger als 3,5 % RMS-Unterschied (Effektivwert eines Signals).
![]() | ![]() | |
test_yuv_plus_raw10_shading=1_raw.jpg | test_yuv_plus_raw10_shading=1_yuv.jpg |
test_yuv_plus_raw12
Tests, bei denen ein einzelnes Bild sowohl als RAW12- als auch als YUV-Ausgabe erfasst wird. Verwendet eine manuelle Anforderung mit linearer Tonzuordnung, sodass RAW 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#RAW12
Bestanden: RAW12- und YUV-Bilder sind ähnlich und haben weniger als 3,5 % RMS-Unterschied (Effektivwert eines Signals).
![]() | ![]() | |
test_yuv_plus_raw12_shading=1_raw.jpg | test_yuv_plus_raw12_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 eine breite Palette von Hauttönen aufweisen.
Szene2_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 werden. Das Tablet wird durch den Test ausgeschaltet, und die Lichter können mit dem Arduino-Controller automatisch ausgeschaltet werden. Die Szene muss vollständig dunkel sein, damit der Test richtig funktioniert. Daher muss die hintere Tablet-Öffnung vollständig durch das Szene-Tablet abgedeckt werden, und die vordere Öffnung muss durch eine Öffnung und das DUT-Telefon abgedeckt werden, um zu verhindern, dass Streulicht in das Rig eindringt.
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 hat einen großen Gradienten, was bedeutet, dass der automatische Blitz ausgelöst wurde.
test_effekte
Erfasst Frames für unterstützte Kameraeffekte und prüft, ob sie 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
Bestanden: Nimmt das Szenenbild mit Effekten OFF
und ein monochromes Bild mit auf MONO
eingestellten Effekten auf.
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. Step JPEG-Qualitäten durch android.jpeg.quality
und stellt sicher, dass sich Quantisierungstabellen korrekt ändern.
Getestete APIs:
Bestanden: Die Quantisierungsmatrix nimmt mit zunehmender Qualität ab. (Matrix stellt den Teilungsfaktor dar.)
Luma/Chroma-DQT-Matrix-Mittelwerte der Pixel 4-Rückkamera im Vergleich zur JPEG-Qualität
Fehlerhaftes Testbeispiel
Beachten Sie, dass bei Bildern mit sehr niedriger Qualität (jpeg.quality < 50) die Komprimierung in der Quantisierungsmatrix nicht erhöht wird.
test_num_faces
Testet die Gesichtserkennung.
Getestete APIs:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: Findet drei Gesichter.
test_num_faces_fd_mode_1.jpg
Szene2_b
test_auto_per_frame_control
Testet PER_FRAME_CONTROL
Eigenschaften für automatische Erfassungsanforderungen.
Getestete APIs:
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
-
android.hardware.camera2.CaptureResult#CONTROL_AWB_STATE
-
android.hardware.camera2.CaptureRequest#CONTROL_POST_RAW_SENSITIVITY_BOOST
-
android.hardware.camera2.CaptureRequest#LENS_FOCUS_DISTANCE
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
-
android.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
-
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Bestanden: Alle PER_FRAME_CONTROL
Eigenschaften sind vorhanden.
test_auto_per_frame_control_frame_1.jpg
test_auto_per_frame_control_frame_10.jpg
test_auto_per_frame_control_frame_29.jpg
test_auto_per_frame_control_plot.png
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
Pass: Findet 3 Gesichter.
test_num_faces_fd_mode_1.jpg
test_yuv_jpg_capture_sameness
Nimmt zwei Bilder mit den größten gängigen YUV- und JPEG-Formaten mit demselben Seitenverhältnis wie das größte JPEG-Format auf, das eine Auflösung von 1920 x 1440 nicht überschreitet. 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 haben weniger als 1 % RMS-Unterschied (Effektivwert eines Signals).
Szene2_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
Pass: Findet 3 Gesichter.
test_num_faces_fd_mode_1.jpg
test_jpeg_capture_perf_class
Testet die JPEG-Aufnahmelatenz für die Leistungsklasse S gemäß Abschnitt 2.2.7.2 Kamera im CDD.
Bestanden: MUSS eine JPEG-Aufnahmelatenz von Kamera2 < 1000 ms für eine Auflösung von 1080p haben, gemessen durch den CTS-Kameraleistungstest unter ITS-Beleuchtungsbedingungen (3000 K) für beide Hauptkameras.
test_camera_launch_perf_class
Testet die Kamerastartlatenz für die Leistungsklasse S gemäß Abschnitt 2.2.7.2 Kamera in der CDD.
Bestanden: MUSS Kamera2-Startlatenz (geöffnete Kamera bis zum ersten Vorschaubild) < 600 ms haben, gemessen durch den CTS-Kameraleistungstest unter ITS-Beleuchtungsbedingungen (3000 K) für beide Primärkameras.
Szene2_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
Pass: Findet 3 Gesichter.
Szene2_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: Das 3A-System pendelt sich am Ende einer 50-Frame-Aufnahme ein.
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
Pass: Findet 3 Gesichter.
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.
test_3a_consistency
Tests auf 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 Bilder ohne erneute Verarbeitung für jeden Kantenmodus und gibt die Schärfe des Ausgabebilds und die Metadaten des Erfassungsergebnisses zurück. Verarbeitet eine Aufnahmeanforderung mit einem bestimmten Randmodus, Empfindlichkeit, Belichtungszeit, Fokusabstand und 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 dem 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 (high quality mode)
test_flip_mirror
Tests if image is properly oriented as per CDD section 7.5.2 Front-Facing Camera [C-1-5] .
Mirrored, flipped, or rotated images can be identified by the diamond feature near the center.
Pass: Image isn't flipped, mirrored or rotated.
test_flip_mirror_scene_patch.jpg
test_lens_movement_reporting
Tests if the lens movement flag is properly reported. Captures a burst of 24 images with the first 12 frames at the optimum focus distance (as found by 3A) and the last 12 frames at the minimum focus distance. Around frame 12, the lens moves causing the sharpness to drop. The sharpness eventually stabilize as the lens moves to the final position. The lens movement flag should be asserted in all frames where the sharpness is intermediate to sharpness in the first 10 frames with the lens stationary at optimum focal distance, and the final 10 frames where the lens is stationary in the minimum focal distance. The exact frame the lens moves isn't important: what is checked is that the movement flag is asserted when the lens is moving.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCE
-
android.hardware.camera2.CaptureResult#LENS_STATE
-
android.hardware.camera2.CaptureResult#LENS_FOCUS_DISTANCE
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.camera2.CaptureRequest#LENS_FOCUS_DISTANCE
Pass: Lens movement flag is True
in the frame with sharpness change.
test_reprocess_edge_enhancement
Tests if supported reprocess methods for edge enhancement work properly. Processes a capture request with a given reprocess edge mode and compares different modes to capture with reprocess edge modes disabled.
APIs tested:
-
android.hardware.camera2.CaptureRequest#EDGE_MODE
-
android.hardware.camera2.CaptureRequest#REPROCESS_EFFECTIVE_EXPOSURE_FACTOR
Pass: Sharpness for the different edge modes is correct. HQ
(mode 2) is sharper than OFF
(mode 0), and improvement between different modes is similar.
test_reprocess_edge_enhancement_plot.png
scene4
Scene4 consists of a black circle on a white background inside a square.
scene4
test_aspect_ratio_and_crop
Takes pictures of a circle inside of a square over all formats. Verifies that the aspect ratio of the circle doesn't change, the cropped images keep the circle in center, and the circle size doesn't change for a constant format or with different resolution (field of view check).
APIs tested:
-
android.hardware.camera2.CaptureResult#LENS_DISTORTION
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
-
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
Pass: Images aren't stretched, the center of images don't differ by more than 3%, and the maximum possible FOV (field of view) is preserved.
test_multi_camera_alignment
Tests the multi camera system parameters related to camera spacing. Using the multi-camera physical sub-cameras, takes a picture with one of the physical cameras. Finds the circle center. Projects the circle center to the world coordinates for each camera. Compares the difference between the cameras' circle centers in world coordinates. Reprojects the world coordinate back to pixel coordinates and compares against originals as a validity check. Compares the circle sizes checking if the focal lengths of the cameras are different.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
-
android.hardware.camera2.CameraCharacteristics#LENS_DISTORTION
-
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
Pass: Focal lengths and circles sizes are consistent.
test_preview_stabilization_fov
Checks the supported preview sizes to ensure the FoV is cropped appropriately. The test captures two videos, one with preview stabilization ON
, and another with preview stabilization OFF
. A representative frame is selected from each video, and analyzed to ensure that the FoV changes in the two videos are within spec.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Pass: The circle aspect ratio remains about constant, the center location of the circle remains stable, and the size of circle changes no more that 20%. ie the FOV changes at most 20%
test_video_aspect_ratio_and_crop
Takes videos of a circle inside of a square over all video formats. Extracts the key frames, and verifies the aspect ratio of the circle doesn't change, the cropped images keep the circle in center, and the circle size doesn't change for a constant format or with different resolution (field of view check).
APIs tested:
-
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
Pass: Video frames aren't stretched, the center of frames don't differ by more than 3%, and the maximum possible FoV (field of view) is preserved.
scene5/diffuser
test_lens_shading_and_color_uniformity
Tests that the lens shading correction is applied appropriately, and color of a monochrome uniform scene is evenly distributed. Performs this test on a YUV frame with auto 3A. Lens shading is evaluated based on the y channel. Measures the average y value for each sample block specified, and determines pass or fail by comparing with the center y value. The color uniformity test is evaluated in r/g and b/g space.
APIs tested:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
Pass: At the specified radius of the image, the variance of r/g and b/g value must be less than 20% to pass the test.
scene6
Scene6 is a grid of small circles with a square in one corner to indicate orientation. The small circles are needed to test zoom function over a large range.
scene6
test_zoom
Tests the camera zoom behavior. Takes captures over the zoom range and checks if the circles get bigger as the camera zooms in.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Pass: Relative size of captured circle is accurate against requested zoom ratio to ensure camera is zooming correctly.
test_zoom to find the contour of the circle closest to the center.
sensor_fusion
Sensor fusion tests require specific phone movement in front of a checkerboard pattern. The sensor_fusion
tests can be automated with the Sensor Fusion Box .
Image of checkerboard
test_multi_camera_frame_sync
Tests that frame timestamps captured by logical camera are within 10 ms by computing angles of squares within the checkerboard to determine the timestamp.
APIs tested:
-
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()
Pass: Angle between images from each camera doesn't change appreciably as phone is rotated.
test_preview_stabilization
Tests that stabilized preview video rotates less than gyroscope.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Pass: Max angle rotation over frames is less than 70% of gyroscope rotation.
The following are sample videos with and without stabilization.
Sample video with stabilization
Sample video without stabilization
test_sensor_fusion
Tests the timestamp difference between the camera and the gyroscope for AR and VR applications. Phone is rotated 90 degrees 10 times in front of the checkerboard pattern. Motion is about 2 s round trip. This test is skipped if no gyroscope is included or if the timestamp source REALTIME
parameter is not enabled.
The test_sensor_fusion
test generates a number of plots. The two most important plots for debugging are:
test_sensor_fusion_gyro_events
: Shows the gyroscope events for the phone during the test. Movement in the x and y direction implies the phone isn't securely mounted on the mounting plate, reducing the probability of the test passing. The number of cycles in the plot depends on the write speed for saving frames.test_sensor_fusion_gyro_events
test_sensor_fusion_plot_rotations
: Shows the alignment of the gyroscope and camera events. This plot must show matching movement between camera and gyroscope to +/-1 ms.test_sensor_fusion_plot_rotations
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#LENS_FACING
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE
-
android.hardware.camera2.CameraMetadata#SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
-
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
-
android.hardware.camera2.CaptureRequest#SENSOR_TIMESTAMP
-
android.hardware.camera2.CaptureResult#SENSOR_ROLLING_SHUTTER_SKEW
Pass: Camera and gyroscope timestamps' offset is less than 1 ms as per CDD section 7.3.9 High Fidelity Sensors [C-2-14] .
test_video_stabilization
Tests that stabilized video rotates less than gyroscope.
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Pass: Max angle rotation over frames is less than 60% of gyroscope rotation.
The following are sample videos with and without stabilization.
Sample video with stabilization
Sample video without stabilization