Kamera-ITS-Tests

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_gyro_bias_plot.png

test_jitter

Misst Jitter in Kamera-Zeitstempeln.

Getestete APIs:

Bestanden: Zwischen den Frames liegt ein Abstand von mindestens 30 ms.

test_jitter_plot.png

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:

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:

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:

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:

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:

  1. Erfasst Bilder für alle unterstützten Testmuster.
  2. Führt eine einfache Korrektheitsprüfung für Volltontestmuster und Farbbalken durch.

Getestete APIs:

Bestanden: Unterstützte Testmuster werden korrekt generiert.

test_test_patterns_2

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:

Passen: YUV und RAW sehen einander ähnlich aus.

test_tonemap_curve_raw_2

test_tonemap_curve_raw_2.jpg

test_tonemap_curve_yuv_2.jpg

test_tonemap_curve_yuv_2.jpg

test_unified_timestamp

Testet, ob Bild- und Bewegungssensorereignisse im selben Zeitbereich liegen.

Getestete APIs:

Bestanden: Bewegungszeitstempel liegen zwischen den beiden Bildzeitstempeln.

test_vibration_restriction

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

Getestete APIs:

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

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:

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:

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:

Pass: AE konvergiert.

test_auto_vs_manual

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

Getestete APIs:

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

test_auto_vs_manual_auto.jpg

test_auto_vs_manual_wb

test_auto_vs_manual_wb.jpg

test_auto_vs_manual_manual_wb_tm

test_auto_vs_manual_manual_wb_tm.jpg

test_black_white

Testet, ob das Gerät vollständige 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:

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_blacktest_black_white_black
test_black_white_black.jpg test_black_white_white.jpg

test_black_white_plot_means

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:

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

test_burst_sameness_manual_mean.jpg

test_burst_sameness_manual_plot_means

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:

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

test_capture_result_plot_lsc_auto_ch0.png

test_crop_region_raw

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

Getestete APIs:

Bestanden: YUV-Bilder werden mittig beschnitten, RAW-Bilder jedoch nicht.

test_crop_region_raw_comp_raw_crop

test_crop_region_raw_comp_raw_crop.jpg

test_crop_region_raw_comp_raw_full

test_crop_region_raw_comp_raw_full.jpg

test_crop_region_raw_comp_yuv_crop

test_crop_region_raw_comp_yuv_crop.jpg

test_crop_region_raw_yuv_full

test_crop_region_raw_yuv_full.jpg

test_crop_regions

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:

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:

Bestanden: DNG-Rohmodellparameter sind korrekt. Die erwarteten RGB-Werte stimmen mit den tatsächlich gemessenen RGB-Werten überein.

test_dng_noise_model_plog

test_dng_noise_model_plog.png

test_ev_compensation_advanced

Testet, ob die 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:

Bestanden: Bilder zeigen eine zunehmende Belichtung ohne Überbelichtung innerhalb von fünf Schritten.

test_ev_compensation_advanced_plot_means

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:

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

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:

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

test_exposure_plot_means.png

test_exposure_mult=1,00test_exposure_mult=64,00
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.jpgtest_jpeg=fmt=yuv.jpg
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.jpgtest_latching_i=01.jpgtest_latching_i=02.jpg
test_latching_i=00.jpg test_latching_i=01.jpg test_latching_i=02.jpg
test_latching_i=03.jpgtest_latching_i=04.jpgtest_latching_i=05.jpg
test_latching_i=03.jpg test_latching_i=04.jpg test_latching_i=05.jpg
test_latching_i=06.jpgtest_latching_i=07.jpgtest_latching_i=08.jpg
test_latching_i=06.jpg test_latching_i=07.jpg test_latching_i=08.jpg
test_latching_i=09.jpgtest_latching_i=10.jpgtest_latching_i=11.jpg
test_latching_i=09.jpg test_latching_i=10.jpg test_latching_i=11.jpg
test_latching_i=12.jpg
test_latching_i=12.jpg

test_latching_plot_means

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:

Bestanden: R-, G- und B-Werte müssen mit zunehmender Empfindlichkeit linear ansteigen.

test_linearity_plot_means

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:

Bestanden: Die Aufnahmen sehen konsistent aus.

test_locked_burst_frame0

test_locked_burst_frame0.jpg

test_locked_burst_frame1

test_locked_burst_frame1.jpg

test_locked_burst_frame2

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:

Bestanden: R- und B-Werte erhöhen sich entsprechend der Transformation.

test_param_color_correction_plot_means

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

test_param_color_correction_req=0.jpg

test_param_color_correctness_req=1

test_param_color_correctness_req=1.jpg (R-Boost)

test_param_color_correction_req=2

test_param_color_correction_req=2.jpg (B-Boost)

test_param_exposure_time

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

Getestete APIs:

Pass: Jeder Schuss ist heller als der vorherige Schuss.

test_param_exposure_time_frame0

test_param_exposure_time_frame0.jpg

test_param_exposure_time_plot

test_param_exposure_time_plot.png

test_param_flash_mode

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

test_param_flash_mode_1.jpg

test_param_flash_mode_1_tile

test_param_flash_mode_1_tile.jpg

test_param_flash_mode_2

test_param_flash_mode_2.jpg

test_param_flash_mode_2_tile

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

test_param_noise_reduction_plot_SNRs.png

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

test_param_noise_reduction_high_gain_nr=0

test_param_noise_reduction_high_gain_nr=0.jpg

test_param_noise_reduction_high_gain_nr=1

test_param_noise_reduction_high_gain_nr=1.jpg

test_param_noise_reduction_high_gain_nr=2

test_param_noise_reduction_high_gain_nr=2.jpg

test_param_noise_reduction_high_gain_nr=3

test_param_noise_reduction_high_gain_nr=3.jpg

test_param_noise_reduction_low_gain

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

test_param_sensitivity_iso=0055.jpg

test_param_sensitivity_iso=1819

test_param_sensitivity_iso=1819.jpg

test_param_sensitivity_iso=3583

test_param_sensitivity_iso=3583.jpg

test_param_sensitivity_iso=5347

test_param_sensitivity_iso=5347.jpg

test_param_sensitivity_iso=7111

test_param_sensitivity_iso=7111.jpg

test_param_sensitivity_plot

test_param_sensitivity_plot.png

test_param_shading_mode

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

Getestete APIs:

Bestanden: Die Schattierungsmodi werden umgeschaltet und die Linsenschattierungskarten werden wie erwartet geändert.

test_param_shading_mode_ls_maps_mode_0_loop_0

test_param_shading_mode_ls_maps_mode_0_loop_0.png

test_param_shading_mode_ls_maps_mode_1_loop_0

test_param_shading_mode_ls_maps_mode_1_loop_0.png

test_param_shading_mode_ls_maps_mode_2_loop_0

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:

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.jpgtest_param_tonemap_mode_n=1.jpg
test_param_tonemap_mode_n=0.jpg test_param_tonemap_mode_n=1.jpg

test_post_raw_sensitivity_boost

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

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

test_post_raw_sensitivity_boost_raw_s=3583_boost=0100.jpg

test_post_raw_sensitivity_boost_raw_s=1792_boost=0200

test_post_raw_sensitivity_boost_raw_s=1792_boost=0200.jpg

test_post_raw_sensitivity_boost_raw_s=0896_boost=0400

test_post_raw_sensitivity_boost_raw_s=0896_boost=0400.jpg

test_post_raw_sensitivity_boost_raw_s=0448_boost=0800

test_post_raw_sensitivity_boost_raw_s=0448_boost=0800.jpg

test_post_raw_sensitivity_boost_raw_s=0224_boost=1600

test_post_raw_sensitivity_boost_raw_s=0224_boost=1600.jpg

test_post_raw_sensitivity_boost_raw_s=0112_boost=3199

test_post_raw_sensitivity_boost_raw_s=0112_boost=3199.jpg

test_post_raw_sensitivity_boost_raw_plot_means

test_post_raw_sensitivity_boost_raw_plot_means.png

test_post_raw_sensitivity_boost_yuv_s=0112_boost=3199

test_post_raw_sensitivity_boost_yuv_s=0112_boost=3199.jpg

test_post_raw_sensitivity_boost_yuv_s=0448_boost=0800

test_post_raw_sensitivity_boost_yuv_s=0448_boost=0800.jpg

test_post_raw_sensitivity_boost_yuv_s=0896_boost=0400

test_post_raw_sensitivity_boost_yuv_s=0896_boost=0400.jpg

test_post_raw_sensitivity_boost_yuv_s=1792_boost=0200

test_post_raw_sensitivity_boost_yuv_s=1792_boost=0200.jpg

test_post_raw_sensitivity_boost_yuv_s=3585_boost=0100

test_post_raw_sensitivity_boost_yuv_s=3585_boost=0100.jpg

test_post_raw_sensitivity_boost_yuv_plot_means

test_post_raw_sensitivity_boost_yuv_plot_means.png

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:

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

test_raw_burst_sensitivity_variance.png

test_raw_exposure

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

Getestete APIs:

Passen: Durch Erhöhen der ISO (Verstärkung) werden die Pixel lichtempfindlicher, sodass sich die Darstellung nach links verschiebt.

test_raw_exposure_s=55

test_raw_exposure_s=55.png

(10⁰ ist 1 ms, 10¹ ist 10 ms, 10⁻¹ ist 0,1 ms)

test_raw_exposure_s=132

test_raw_exposure_s=132.png

test_raw_exposure_s=209

test_raw_exposure_s=209.png

test_raw_exposure_s=286

test_raw_exposure_s=286.png

test_raw_exposure_s=363

test_raw_exposure_s=363.png

test_raw_exposure_s=440

test_raw_exposure_s=440.png

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

Pass: Die Varianz nimmt mit jedem Schuss zu.

test_raw_sensitivity_variance

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

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

test_tonemap_sequence_i=0.jpg

test_tonemap_sequence_i=1

test_tonemap_sequence_i=1.jpg

test_tonemap_sequence_i=2

test_tonemap_sequence_i=2.jpg

test_tonemap_sequence_i=3

test_tonemap_sequence_i=3.jpg

test_tonemap_sequence_i=4

test_tonemap_sequence_i=4.jpg

test_tonemap_sequence_i=5

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:

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

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

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:

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.jpgtest_yuv_plus_jpeg_yuv.jpg
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:

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.jpgtest_yuv_plus_raw_shading=1_yuv.jpg
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

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:

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:

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:

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:

Pass: Erfasst das Szenenbild mit OFF Effekten und ein monochromes Bild mit auf MONO eingestellten Effekten.

test_effects_MONO

test_effects_MONO.jpg

test_format_combos

Testet verschiedene Kombinationen von Ausgabeformaten.

Getestete APIs:

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

test_jpeg_quality

Luma/Chroma-DQT-Matrix-Durchschnitt der Pixel 4-Rückkamera im Vergleich zur JPEG-Qualität

test_jpeg_quality ist fehlgeschlagen

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:

Passen: Findet drei Gesichter.

test_num_faces_fd_mode_1

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:

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:

Bestanden: Die U- und V-Ebenen werden nicht vertauscht.

test_reprocess_uv_swap

test_reprocess_uv_swap.png

scene2_b

test_num_faces

Testet die Gesichtserkennung mit erhöhter Hauttonvielfalt in Gesichtsszenen.

Getestete APIs:

Bestanden: Findet 3 Gesichter.

test_num_faces_fd_mode_1

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:

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:

Bestanden: Findet 3 Gesichter.

test_num_faces_fd_mode_1

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:

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:

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:

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

scene2_f

test_num_faces

Testet die Gesichtserkennung mit erhöhter Hauttonvielfalt in Gesichtsszenen.

Getestete APIs:

Bestanden: Findet 3 Gesichter.

test_num_faces_fd_mode_1

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:

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

test_edge_enhancement_edge=0.jpg

test_edge_enhancement_edge=1

test_edge_enhancement_edge=1.jpg (Schnellmodus)

test_edge_enhancement_edge=2

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

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:

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

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:

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

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

test_reprocess_edge_enhancement_plot.png

Szene4

Szene 4 besteht aus einem schwarzen Kreis auf weißem Hintergrund innerhalb eines Quadrats.

Szene4

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:

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:

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

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:

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:

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:

Szene 5

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:

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

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:

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:

Bestanden: Die relative Größe des erfassten Kreises stimmt mit dem angeforderten Zoomverhältnis überein, um sicherzustellen, dass die Kamera korrekt zoomt.

test_zoom

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:

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:

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

VGA_640x480_key_frame.png (vor Zoom)

Vorschau_640x480_key_frame.png

Preview_640x480_key_frame.png (vor dem Zoomen)

VGA_640x480_key_frame_zoomed.png

VGA_640x480_key_frame.png (nach Zoom)

Preview_640x480_key_frame_zoomed.png

Preview_640x480_key_frame.png (nach Zoom)

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

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:

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

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:

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.

Schachbrett

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:

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:

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

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

    test_sensor_fusion_plot_rotations

Getestete APIs:

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:

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:

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