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: Hardwareebene, 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 korrekten 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, 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 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 erhöhte 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 weisen 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 auf.

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

Szene3 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 Grenzen wie die Bilder für die Szenen 1, 2 oder 4, sondern nur das Diagramm. Das Diagramm muss in der richtigen Ausrichtung sein, damit der Diagrammfinder optimal funktioniert.

test_3a_consisity

Tests auf 3a Konsistenz.

APIs getestet:

Pass: 3a konvergiert dreimal in der Toleranz für Exposition, Verstärkung, AWB (Auto -Weißabgleich) und FD (Fokusabstand).

test_edge_enhancement

Tests, dass der Parameter android.edge.mode korrekt angewendet wird. Erfasst nicht reprozessende Bilder für jeden Kantenmodus und gibt die Schärfe des Ausgabebildes und der Capture-Ergebnismetadaten zurück. Verarbeitet eine Erfassungsanforderung mit einem bestimmten Kantenmodus, Empfindlichkeit, Belichtungszeit, Fokusabstand und Ausgangsoberfläche.

Pass: 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.

APIs getestet:

Begriffene Kameraparameter:

  • EDGE_MODE

test_edge_enhancement_edge = 0

test_edge_enhancement_edge = 0.JPG

test_edge_enhancement_edge = 1

test_edge_enhancement_edge = 1.jpg (Schneller Modus)

test_edge_enhancement_edge = 2

test_edge_enhancement_edge = 2.jpg (hoher Qualitätsmodus)

test_flip_mirror

Tests, wenn das Bild ordnungsgemäß gemäß CDD-Abschnitt 7.5.2 vorne mit der Frontkamera [C-1-5] ausgerichtet ist.

Spiegelte, gedrehte oder gedrehte Bilder können durch die Diamantfunktion in der Nähe des Mitte identifiziert werden.

Pass: Das Bild ist nicht umgedreht, gespiegelt oder gedreht.

test_flip_mirror_scene_patch

test_flip_mirror_scene_patch.jpg

test_landscape_to_portrait

Tests, wenn die Landschaft zu Porträt für landschaftsorientierte Sensoren korrekt funktioniert.

APIs getestet:

Pass: Der Test kann ein Diagramm mit der erwarteten Rotation lokalisieren (0 Grad, wenn die Überschreibung von Landschaft zu Porträt deaktiviert ist, 90 Grad, wenn es aktiviert ist).

test_landscape_to_portrait

test_landscape_to_portrait.png

test_lens_movement_reporting

Tests, wenn die Linsenbewegungsflagge ordnungsgemäß gemeldet wird. Erfasst einen Burst von 24 Bildern mit den ersten 12 Frames mit dem optimalen Fokusabstand (wie von 3A gefunden) und den letzten 12 Frames mit minimaler Fokusentfernung. Um Rahmen 12 bewegt sich die Linse, wodurch die Schärfe sinkt. Die Schärfe stabilisiert sich schließlich, wenn sich die Linse in die endgültige Position bewegt. Die Flagge der Linsenbewegung sollte in allen Frames geltend gemacht werden, bei denen die Schärfe in den ersten Frames mit der Schärfe mit der Schärfe mit dem Objektiv mit optimaler Brennweite und den letzten Frames, in denen das Objektiv stationär in minimaler Brennweite stationiert ist, mittelgroß ist. Der genaue Rahmen, den das Objektiv bewegt, ist nicht wichtig: Was überprüft wird, ist, dass die Bewegungsflagge bei der Bewegung des Objektivs geltend gemacht wird.

APIs getestet:

Pass: Die Flagge der Linsenbewegung True im Rahmen mit Schärfeänderung.

Fail Mechanismen:

  • lens_moving: True ( android.hardware.camera2.CaptureResult#LENS_STATE = 1) in test_log.DEBUG wird nur in Frames geltend gemacht, in denen sich die Schärfe nicht ändert.
  • Frames mit lens_moving: False ( android.hardware.camera2.CaptureResult#LENS_STATE = 0) in test_log.DEBUG hat einen Schärfeunterschied im Vergleich zu den ersten Frames bei optimalem Brennwesen oder den letzten Frames bei minimalem Fokus.

test_represcess_edge_enhancement

Tests, wenn unterstützte Wiederaufbereitungsmethoden für die Kantenverbesserung ordnungsgemäß funktionieren. Verarbeitet eine Erfassungsanforderung mit einem bestimmten Wiederaufbereitungskantenmodus und vergleicht verschiedene Modi mit deaktivierten Wiederaufbereitungskantenmodi.

APIs getestet:

Pass: Die Schärfe für die verschiedenen Kantenmodi ist korrekt. HQ (Modus 2) ist schärfer als OFF (Modus 0), und eine Verbesserung zwischen verschiedenen Modi ist ähnlich.

test_represcess_edge_enhancement_plot

test_represcess_edge_enhancement_plot.png

Szene4

Szene4 besteht aus einem schwarzen Kreis auf einem weißen Hintergrund in einem Quadrat.

Szene4

Szene4

test_aspect_ratio_and_crop

Tests, wenn Bilder in der Bildpipeline unerwartet verzerrt oder beschnitten werden. Macht Fotos von einem Kreis über alle Formate. Überprüft, ob der Kreis nicht verzerrt ist, der Kreis bewegt sich nicht aus der Bildmitte und der Kreis ändert die Größe nicht falsch mit unterschiedlichen Seitenverhältnissen oder Auflösungen.

APIs getestet:

Pass: Bilder sind nicht gestreckt, die Bildermitte unterscheiden sich nicht um mehr als 3%und der maximal mögliche FOV (Sichtfeld) bleibt erhalten.

Fail Mechanismen:

  • Der Kreis im erfassten Bild wird durch die Verarbeitungspipeline verzerrt.
  • Das Bild mit niedrigerer Auflösung wird in der Bildpipeline doppelt beschnitten, wobei zwischen Bildern mit hoher und niedriger Auflösung unterschiedliche FOV erzeugt.
  • Der Kreis im erfassten Bild wird aufgrund einer extremen Seitenverhältnis -Erfassungsanforderung beschnitten, wodurch die Höhe oder Breite des Bildes verringert wird.
  • Der Kreis im erfassten Bild hat eine Reflexion in der Mitte und erscheint nicht vollständig gefüllt.

test_multi_camera_alignment

Testen Sie die Camera-Kalibrierungsparameter, die sich auf die Kamera-Positionierung für Multi-Kamera-Systeme beziehen. Wenn Sie die multikamera physischen Sub-Cameras verwenden, macht ein Bild mit einer der physischen Kameras. Findet das Circle Center. Projektiert das Kreiszentrum für jede Kamera zu den Weltkoordinaten. Vergleicht den Unterschied zwischen den Kreiszentren der Kameras in Weltkoordinaten. Reprojekte die Weltkoordinate auf Pixelkoordinaten zurück und vergleicht sich mit Originalen als Gültigkeitsprüfung. Vergleicht die Kreisgrößen, die überprüft werden, ob die Brennweiten der Kameras unterschiedlich sind.

APIs getestet:

Pass: Kreiszentren und -größen sind wie erwartet in projizierten Bildern im Vergleich zu erfassten Bildern unter Verwendung von Kamera -Kalibrierungsdaten und Brennweiten erwartet.

Fail Mechanismen:

  • LENS_INTRINSIC_CALIBRATION , LENS_POSE_TRANSLATION oder LENS_POSE_ROTATION sind Designwerte und nicht tatsächliche Kalibrierungsdaten.
  • Das Kamerasystem ist für das Test -Setup nicht geeignet. Testen Sie beispielsweise ein breites und ein ultra-breites Kamerasystem mit dem RFOV-Test-Rig. Weitere Informationen finden Sie unter der Kamera IT-in-a-Box-FAQ1 .

test_preview_aspect_ratio_and_crop

Ähnlich wie beim Test test_aspect_ratio_and_crop für noch erfassende Tests überprüft dieser Test die unterstützten Vorschaubildformate, um sicherzustellen, dass die Vorschau -Frames nicht unangemessen gestreckt oder beschnitten werden. Überprüft, ob sich das Seitenverhältnis des Kreises nicht ändert, die verkürzten Bilder den Kreis in der Mitte des Rahmens halten und die Kreisgröße für ein konstantes Format oder mit unterschiedlichen Auflösungen (Überprüfung des Sichtfelds) nicht ändert.

APIs getestet:

Pass: Bilder sind nicht gestreckt, die Bildermitte unterscheiden sich nicht um mehr als 3%und der maximal mögliche FOV (Sichtfeld) bleibt erhalten.

test_preview_stabilization_fov

Überprüft die unterstützten Vorschaudergrößen, um sicherzustellen, dass der FOV entsprechend geschnitten wird. Der Test erfasst zwei Videos, eine mit Vorschau ON und eine mit Vorschau OFF . Aus jedem Video wird ein repräsentativer Rahmen ausgewählt und analysiert, um sicherzustellen, dass sich die FOV -Änderungen in den beiden Videos innerhalb der Spezifikation befinden.

APIs getestet:

Pass: Das Kreislaufverhältnis bleibt etwa konstant, die mittlere Position 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 in einem Quadrat über alle Videoformate. Extrahiert die Schlüsselrahmen und überprüft das Seitenverhältnis des Kreises nicht, die verkürzten Bilder halten den Kreis in der Mitte und die Kreisgröße ändert sich nicht für ein konstantes Format oder mit unterschiedlicher Auflösung (Feld der Sichtprüfung).

APIs getestet:

Pass: Videorahmen werden nicht gestreckt, die Mitte der Frames unterscheidet sich nicht um mehr als 3%und der maximal mögliche FOV (Sichtfeld) bleibt erhalten.

Szene5

Szene5 erfordert eine gleichmäßig beleuchtete graue Szene. Dies wird durch einen Diffusor über das Kameraobjektiv erreicht. Wir empfehlen den folgenden Diffusor: www.edmundoptics.com/optics/window-diffusers/optical-diffusers/opal-diffusing-glass/46168 .

Um die Szene vorzubereiten, fügen Sie einen Diffusor vor der Kamera an und richten Sie die Kamera auf eine Beleuchtungsquelle von etwa 2000 Lux. Bilder, die für Szene 5 aufgenommen wurden, erfordern diffuse Beleuchtung ohne offensichtliche Merkmale. Das Folgende ist ein Beispielbild:

Szene5

Szene5 Capture

test_lens_shading_and_color_uniformity

Tests, dass die Korrektur der Linsenschattierung angemessen angewendet wird, und die Farbe einer monochromen einheitlichen Szene gleichmäßig verteilt wird. Führen Sie diesen Test auf einem YUV -Frame mit Auto 3a durch. Die Objektivschattierung wird basierend auf dem Y -Kanal bewertet. Misst den durchschnittlichen y -Wert für jeden angegebenen Stichprobenblock und bestimmt den Durchgang oder fehl, indem sie mit dem mittleren Y -Wert verglichen wird. Der Farb Gleichmäßigkeitstest wird im Raum R/G und B/G bewertet.

APIs getestet:

Pass: Am angegebenen Radius des Bildes muss die Varianz von R/G und B/G -Wert weniger als 20% betragen, um den Test zu bestehen.

Szene6

Szene6 ist ein Gitter kleiner Kreise mit einem Quadrat in einer Ecke, um die Orientierung anzuzeigen. Die kleinen Kreise werden benötigt, um die Zoomfunktion über einen großen Bereich zu testen.

Szene6

Szene6

test_in_sensor_zoom

Testen Sie das Verhalten der Kamera-Feature im Sensor-Zoom, die beschnittene Rohbilder erzeugt.

Mit dem Stream -Anwendungsfall auf CROPPED_RAW setzt der Test zwei Aufnahmen über dem Zoombereich, einem vollständigen RAW -Bild (Field of View) und einem geschnittenen Rohbild. Der Test wandelt die Bilder in RGB-Arrays um, fällt das von SCALER_RAW_CROP_REGION gemeldete Größe in voller Größe in die Größe und berechnet die Differenz zwischen den beiden Bildern.

APIs getestet:

Pass: Die Differenz zwischen 3D -Wurzel mittlerer quadratischer (RMS) zwischen dem heruntergeschnittenen Rohbild und dem vollständigen FOV -Rohbild beträgt weniger als 1%.

test_zoom

Testen Sie das Verhalten der Kamera -Zoom. Nimmt Erfassungen über den Zoombereich und überprüft, ob die Kreise im Zoom der Kamera größer werden.

APIs getestet:

Pass: Die relative Größe des erfassten Kreises ist gegen das angeforderte Zoomverhältnis genau, um sicherzustellen, dass die Kamera korrekt zoomt.

test_zoom

test_zoom, um die Kontur des Kreises zu finden, die der Mitte am nächsten stehen.

test_low_latency_zoom

Testen Sie das Verhalten der Kamera mit geringer Latenz. Erfasst über den Zoombereich mit android.control.settingsOverride = 1 (SETTINGS_OVERRIDE_ZOOM) und prüft, ob die Kreise in den Ausgabebildern den Zoomverhältnissen in den Capture -Metadaten übereinstimmen.

APIs getestet:

Pass: Die relative Größe des erfassten Kreises ist genau gegen die Zoomverhältnisergebnis -Metadaten.

test_preview_video_zoom_match

Testen Sie, dass während des Aufnehmens und Zoomens, der Videovorschau und der Videoausgabe die gleiche Ausgabe aufgezeichnet wird. Berechnet die Größe des Kreises, der dem Zentrum in verschiedenen Zoomverhältnissen am nächsten liegt, und prüft, ob die Größe des Kreises mit zunehmendem Zoomverhältnis zunimmt.

APIs getestet:

Pass: Die relative Größe des erfassten Kreises ist gegen das angeforderte Zoomverhältnis in Video und Vorschau genau.

Vga_640x480_key_frame.png

Vga_640x480_key_frame.png (vor dem Zoom)

preview_640x480_key_frame.png

preview_640x480_key_frame.png (vor dem Zoom)

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)

szene_extensions

Die Tests scene_extensions sind für Kameraverlängerungen und müssen Kamera-IT-in-a-Box verwenden, da sie die Testumgebung eine präzise Steuerung erfordern.

Szene_HDR

Die scene_hdr Szene besteht aus einem Porträt links und einem niedrigen kontrastischen QR-Code auf der rechten Seite.

Szene_HDR

Szene_HDR

test_hdr_extension

Testet die HDR -Erweiterung . Erfassen mit und ohne die aktivierte Erweiterung und prüft, ob die Erweiterung den QR -Code erkennbarer macht.

APIs getestet:

Pass: Die HDR -Erweiterung reduziert die Anzahl der Kontraständerungen, die erforderlich sind, um den QR -Code zu erkennen oder den Gradienten über den QR -Code zu reduzieren.

szene_night

Die scene_night -Szene 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.

szene_night

szene_night

test_night_extension

Tests die Nachtverlängerung . Erfasst erfasst mit und ohne die aktivierte Erweiterung und prüft nach Folgendem:

  • Die Erfassung mit aktivierter Nachtverlängerung dauert länger.
  • Die Erfassung mit der aktiven Nachtverlängerung ist heller oder verfügt über Szenenartefakte mit einem verbesserten Erscheinungsbild.

APIs getestet:

Pass: Im Vergleich zu einer Erfassung ohne aktivierter Nachtverlängerung dauert eine Erfassung mit aktivierter Nachtverlängerung mindestens 0,5 Sekunden länger. Die Erfassung muss mindestens 10% heller sein, oder die grauen Punkte in der Szene müssen 20 Pixelwerte niedriger sein als die Mitte des umgebenden Kreises.

Sensor_fusion

Sensorfusionstests erfordern eine spezifische Telefonbewegung vor einem Schachbrettmuster. Stellen Sie für optimale Ergebnisse sicher, dass das Testdiagramm flach montiert ist. Diagramme, die nicht flach sind, wirken sich für viele Tests auf die Rotationsberechnungen aus. Die sensor_fusion -Tests können mit dem Sensor -Fusion -Box automatisiert werden.

Schachbrett

Bild des Schachbretts

test_multi_camera_frame_sync

Tests, die von der logischen Kamera erfassten Zeitstempel rahmen, liegen innerhalb von 10 ms, indem Quadrate innerhalb des Schachbretts berechnet werden, um den Zeitstempel zu bestimmen.

APIs getestet:

Pass: Der Winkel zwischen den Bildern aus jeder Kamera ändert sich nicht merklich, wenn das Telefon gedreht wird.

test_preview_stabilization

Tests, bei denen die stabilisierte Vorschau -Videos stabilisiert wurde, dreht sich weniger als ein Gyroskop.

APIs getestet:

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

Testen Sie den Zeitstempelunterschied zwischen der Kamera und dem Gyroskop für AR- und VR -Anwendungen. Das Telefon ist 10 -mal um 90 Grad vor dem Schachbrettmuster gedreht. Die Bewegung ist ungefähr 2 s Rundreise. Dieser Test wird übersprungen, wenn kein Gyroskop enthalten ist oder wenn der REALTIME -Parameter für die Zeitstempelquelle nicht aktiviert ist.

Der Test test_sensor_fusion generiert eine Anzahl von Diagrammen. Die beiden wichtigsten Handlungen für das Debuggen sind:

  • test_sensor_fusion_gyro_events : Zeigt die Gyroscope -Ereignisse für das Telefon während des Tests an. Die Bewegung in der x- und y -Richtung impliziert, dass das Telefon nicht sicher auf der Montageplatte montiert ist, was die Wahrscheinlichkeit des Tests verringert. Die Anzahl der Zyklen im Diagramm hängt von der Schreibgeschwindigkeit zum Speichern von Frames ab.

    test_sensor_fusion_gyro_events.png

    test_sensor_fusion_gyro_events

  • test_sensor_fusion_plot_rotations : Zeigt die Ausrichtung des Gyroskop- und Kameraereignisses an. Dieses Diagramm muss eine passende Bewegung zwischen Kamera und Gyroskop auf +/- 1 ms anzeigen.

    test_sensor_fusion_plot_rotations.png

    test_sensor_fusion_plot_rotations

APIs getestet:

Pass: Der Offset von Kamera und Gyroskop ist weniger als 1 ms gemäß CDD-Abschnitt 7.3.9 High-Fidelity-Sensoren [C-2-14] .

Fail Mechanismen:

  • Offset-Fehler: Der Offset der Kamera-Gyroskop ist nicht richtig kalibriert auf +/- 1 ms.
  • Rahmenabfälle: Die Pipeline ist nicht schnell genug, um 200 Frames nacheinander zu erfassen.
  • Socket -Fehler: adb kann nicht zu lang genug herstellen, um den Test auszuführen.
  • Das Diagramm ist nicht flach montiert. Die Plot test_sensor_fusion_plot_rotations enthält Frames, bei denen das Gyroskop und die Kamera -Rotation erheblich variieren, wenn sich die Kamera durch die Teile des Diagramms dreht, die nicht flach sind.
  • Die Kamera ist nicht flach montiert. Das Plot test_sensor_fusion_gyro_events zeigt die Bewegung in den X- und Y -Flugzeugen. Dieser Fehler tritt vorne vorne mit Kameras vor, da die Rückfahrkamera häufig eine erhöhte Beule zum Rest des Telefonkörpers aufweist und eine Neigung bei der Montage des Hecks des Telefons auf den Montageschild erzeugt.

test_video_stabilisierung

Tests, die stabilisierte Videos, dreht sich weniger als Gyroskop.

APIs getestet:

Pass: Die maximale Winkeldrehung über Frames beträgt weniger als 60% der Gyroskop -Drehung.

Im Folgenden finden Sie Beispielvideos mit und ohne Stabilisierung.

  • Beispielvideo mit Stabilisierung

  • Beispielvideo ohne Stabilisierung

test_led_snapshot

Tests, dass die LED -Schnappschüsse das Bild nicht sättigen oder tönt.

Dieser Test fügt dem Sensor -Fusionskasten einen Beleuchtungssteuerung hinzu, um die Lichter zu steuern. Mit den auf OFF eingestellten Lichtern wird der Test mit dem AUTO_FLASH -Modus auf ON erfasst. Während dieser Erfassung führt der Test mit dem aePrecapture -Trigger -Set eine Vornotensequenz aus und setzt die Capture -Absicht für Preview START um die Erfassung mit Blitz zu nehmen.

Da die Erfassung aufgrund von Flash einen unverwechselbaren Hotspot aufweist, berechnet der Test den Mittelwert des Flash -Bildes der gesamten Erfassung und überprüft, ob sich der Wert innerhalb des Bereichs (68, 102) befindet. Um zu überprüfen, ob das Bild einigermaßen weiß ausgeglichen ist, berechnet der Test die R/G- und B/G-Verhältnisse und überprüft, ob die Verhältnisse innerhalb von 0,95 und 1,05 liegen.

APIs getestet:

Pass: Die R/G- und B/G -Verhältnisse liegen innerhalb von 0,95 und 1,05. Der Blitzbildmittelwert befindet sich im Bereich (68, 102).