Na tej stronie znajduje się obszerna lista testów w ramach pakietu Camera Image Test Suite (ITS), który jest częścią narzędzia Android Compatibility Test Suite (CTS) Verifier. Testy ITS to testy funkcjonalne, co oznacza, że nie mierzą jakości obrazu, ale sprawdzają, czy wszystkie reklamowane funkcje aparatu działają zgodnie z oczekiwaniami. Ten dokument pozwala programistom i testerom zrozumieć, co robią poszczególne testy i jak debugować błędy testów.
Testy bramek ITS kamer pod kątem wymaganych właściwości kamery, poziomu API i poziomu klasy wydajności multimediów (MPC). W przypadku poziomu API ITS używa ro.product.first_api_level
do testów bramkowych dodanych na określonym poziomie API, które sprawdzają negatywne doświadczenia użytkowników w zakresie funkcjonalności na niższych poziomach API. ITS używa ro.vendor.api_level
do testów bramkowych dla funkcji dodanych na określonym poziomie API, które wymagają nowych możliwości sprzętowych. Jeśli dla urządzenia zdefiniowano ro.odm.build.media_performance_class
Performance_class, ITS wymaga przeprowadzenia określonych testów w zależności od poziomu MPC.
Testy są pogrupowane według scen w następujący sposób:
- scena0 : Przechwytywanie metadanych, drgań, żyroskopu, wibracji
- scena 1 : Ekspozycja, czułość, kompensacja EV, YUV vs JPEG/RAW
- scena2 : Wykrywanie twarzy, testy wymagające scen kolorowych lub całkowitej ciemności
- scena 3 : Wzmocnienie krawędzi, ruch soczewki
- scena4 : Proporcje obrazu, kadrowanie, pole widzenia
- scene5 : Cieniowanie obiektywu
- scena 6 : Zoom
- scene_extensions : rozszerzenia aparatu
- sensor_fusion : Przesunięcie taktowania kamery/żyroskopu
Zobacz poszczególne sekcje, aby zapoznać się z opisem każdej sceny.
scena0
Testy Scene0 nie wymagają żadnych konkretnych informacji o scenie. Jednak do testowania żyroskopu i wibracji telefon musi być nieruchomy.
test_burst_capture
Sprawdza, czy cały potok przechwytywania może nadążać za szybkością przechwytywania w pełnym rozmiarze i czasem procesora.
Testowane interfejsy API:
Pass: Przechwytuje serię pełnowymiarowych zdjęć, a aparat jest wystarczająco szybki, aby uniknąć przekroczenia limitu czasu.
test_capture_result_dump
Testuje, czy wynik przechwytywania jest zwracany w wyniku przechwytywania ręcznego, a następnie go zrzuca.
Testowane interfejsy API:
Pass: kończy przechwytywanie i zrzuca wyniki przechwytywania.
test_gyro_bias
Sprawdza, czy żyroskop ma stabilną moc wyjściową, gdy urządzenie jest nieruchome. Dane są wykreślane jako średnia z 20 punktów danych.
Testowane interfejsy API:
Pass: delta odczytu żyroskopu jest mniejsza niż 0,01 w czasie.
test_gyro_bias_plot.png
test_jitter
Mierzy jitter w znacznikach czasu kamery.
Testowane interfejsy API:
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
Pass: Różnica między klatkami wynosi co najmniej 30 ms.
test_jitter_plot.png (Zwróć uwagę na mały zakres osi Y. Jitter na tym wykresie jest w rzeczywistości niewielki.)
test_metadane
Testuje ważność wpisów metadanych. Sprawdza wyniki przechwytywania i obiekty charakteryzujące kamerę. W tym teście wykorzystuje się wartości ekspozycji i wzmocnienia auto_capture_request
, ponieważ treść obrazu nie jest istotna.
Testowane interfejsy API:
-
android.hardware.camera2.CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL
-
android.hardware.camera2.CameraCharacteristics#SCALER_CROPPING_TYPE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_BLACK_LEVEL_PATTERN
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE
-
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
-
android.hardware.camera2.CaptureResult#SENSOR_ROLLING_SHUTTER_SKEW
Pass: Poziom sprzętu, tagi rollingShutterSkew
, frameDuration
, timestampSource
, croppingType
, blackLevelPattern
, pixel_pitch
, FoV, odległość hiperfokalna są obecne i mają prawidłowe wartości.
test_param_sensitivity_burst
Testuje, czy parametr android.sensor.sensitivity
jest prawidłowo stosowany w serii. Sprawdza tylko metadane wyjściowe.
Testowane interfejsy API:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Pass: Dane wyjściowe mają tolerancję błędu mniejszą niż 0,2%.
test_czytaj_zapis
Testuje, czy urządzenie zapisuje prawidłowe wartości ekspozycji i wzmocnienia, odczytując metadane przechwytywania.
Testowane interfejsy API:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_EXPOSURE_TIME_RANGE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
-
android.hardware.camera2.CaptureResult#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureResult#SENSOR_SENSITIVITY
Pass: Wartości odczytu i zapisu są zgodne we wszystkich ujęciach.
zdarzenia_test_sensora
Testuje, czy urządzenie wysyła zapytania i drukuje zdarzenia czujników dla urządzeń reklamujących obsługę fuzji czujników. Oczekiwane czujniki to akcelerometr, żyroskop i magnetometr. Ten test działa tylko wtedy, gdy ekran jest włączony, co oznacza, że urządzenie nie znajduje się w trybie gotowości.
Testowane interfejsy API:
Pass: Odbierane są zdarzenia dla każdego czujnika.
test_solid_color_test_pattern
Sprawdza, czy wzory testowe jednolitego koloru są generowane prawidłowo w przypadku wyciszenia kamery. Jeśli obsługiwane jest wyciszanie kamery, muszą być obsługiwane wzorce testowe w jednolitym kolorze. Jeśli wyciszanie kamery nie jest obsługiwane, wzorce testowe w jednolitym kolorze są testowane tylko wtedy, gdy jest reklamowana taka możliwość.
Jeśli obsługiwane są obrazy RAW, testowane jest również przypisanie kolorów. Testowane kolory to czarny, biały, czerwony, niebieski i zielony. W przypadku aparatów, które nie obsługują obrazów RAW, testowany jest tylko kolor czarny.
Testowane interfejsy API:
-
android.hardware.camera2.CameraCharacteristic#SENSOR_AVAILABLE_TEST_PATTERN_MODES
-
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_DATA
-
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
Wynik pozytywny: obsługiwane wzorce testowe mają prawidłowy kolor, a różnice w obrazie są niewielkie.
wzorzec_testowy
Testuje parametr android.sensor.testPatternMode
w celu przechwytywania klatek dla każdego prawidłowego wzorca testowego i sprawdza, czy ramki są generowane poprawnie dla jednolitych kolorów i pasków kolorów. Ten test obejmuje następujące kroki:
- Przechwytuje obrazy dla wszystkich obsługiwanych wzorców testowych.
- Wykonuje prostą kontrolę poprawności wzoru testowego jednolitego koloru i pasków kolorów.
Testowane interfejsy API:
-
android.hardware.camera2.CameraCharacteristic#SENSOR_AVAILABLE_TEST_PATTERN_MODES
-
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
Pomyślnie: obsługiwane wzorce testowe są generowane poprawnie.
test_test_patterns_2.jpg
test_tonemap_curve
Testuje konwersję wzoru testowego z RAW do YUV z liniową mapą tonów. Ten test wymaga android.sensor.testPatternMode = 2
(COLOR_BARS), aby wygenerować idealny wzór obrazu do konwersji mapy tonalnej. Zapewnia, że potok ma odpowiednie kolory wyjściowe z liniową mapą tonów i idealnym obrazem wejściowym (opiera się na test_test_patterns
).
Testowane interfejsy API:
-
android.hardware.camera2.CaptureRequest#DISTORTION_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#SENSOR_TEST_PATTERN_MODE
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Pass: YUV i RAW wyglądają podobnie.
test_tonemap_curve_raw_2.jpg
test_tonemap_curve_yuv_2.jpg
test_unified_timestamp
Testuje, czy zdarzenia obrazu i czujnika ruchu znajdują się w tej samej dziedzinie czasu.
Testowane interfejsy API:
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.Sensor
-
android.hardware.SensorEvent
-
android.hardware.Sensor#TYPE_ACCELEROMETER
-
android.hardware.Sensor#TYPE_GYROSCOPE
Pass: znaczniki czasu ruchu znajdują się pomiędzy dwoma znacznikami czasu obrazu.
test_ograniczenie_wibracji
Sprawdza, czy wibracje urządzenia działają zgodnie z oczekiwaniami.
Testowane interfejsy API:
-
android.hardware.Sensor
-
android.hardware.SensorEvent
-
android.hardware.Sensor#TYPE_ACCELEROMETER
-
android.os.Vibrator
-
android.hardware.camera2.CameraDevice#setCameraAudioRestriction
Pass: urządzenie nie wibruje po wyciszeniu przez interfejs API ograniczania dźwięku kamery.
scena 1
scena1 to szary wykres. Szara mapa musi pokrywać środkowe 30% pola widzenia kamery. Oczekuje się, że szary wykres będzie stanowić umiarkowane wyzwanie dla 3A (automatyczna ekspozycja, automatyczny balans bieli, automatyczne ustawianie ostrości), ponieważ środkowy obszar nie ma żadnych funkcji. Jednakże żądanie przechwytywania określa całą scenę, która zawiera elementy wystarczające do zbieżności 3A.
Kamery RFoV można testować na stanowisku badawczym WFoV lub RFoV. Jeśli kamera RFoV jest testowana na stanowisku testowym WFoV, wykres jest skalowany o ⅔, aby zapewnić pewne granice szarej mapy w FoV, aby pomóc w zbieżności 3A. Aby uzyskać bardziej szczegółowy opis stanowisk do testowania kamer, zobacz Camera ITS-in-a-box .
scena 1: Tabela pełnych rozmiarów (po lewej). Wykres w skali ⅔ (po prawej).
test_3a
Testuje zbieżność 3A z umiarkowanie trudnym celem.
Testowane interfejsy API:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
Pass: 3A jest zbieżny i zwrócone wartości 3A są prawidłowe.
test_ae_af
Testuje indywidualnie algorytmy automatycznej ekspozycji 3A (AE) i automatycznego ustawiania ostrości (AF).
Testowane interfejsy API:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
Pass: 3A jest zbieżny i zwrócone wartości 3A są prawidłowe.
test_ae_precapture_trigger
Testuje maszynę stanu AE podczas korzystania z wyzwalacza wstępnego przechwytywania. Przechwytuje pięć ręcznych żądań z wyłączoną funkcją AE. Ostatnie żądanie zawiera wyzwalacz wstępnego przechwytywania AE, który należy zignorować, ponieważ AE jest wyłączone.
Testowane interfejsy API:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
Pass: AE zbiega się.
test_auto_vs_manual
Testy, w których zarejestrowano zdjęcia automatyczne i ręczne, wyglądają tak samo.
Testowane interfejsy API:
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureResult#TONEMAP_CURVE
-
android.hardware.camera2.CaptureResult#TONEMAP_MODE
Wynik pozytywny: ręczne wzmocnienie i transformacja balansu bieli zgłaszane w każdym wyniku przechwytywania są zgodne z automatycznym estimate
balansu bieli na podstawie algorytmu 3A aparatu.
test_auto_vs_manual_auto.jpg
test_auto_vs_manual_wb.jpg
test_auto_vs_manual_manual_wb_tm.jpg
test_czarny_biały
Testuje, czy urządzenie generuje całkowicie czarno-białe obrazy. Wykonuje dwa zdjęcia, pierwsze z wyjątkowo niskim wzmocnieniem i krótkim czasem naświetlania, co daje czarne zdjęcie, a drugie z bardzo dużym wzmocnieniem i długim czasem naświetlania, co daje białe zdjęcie.
Testowane interfejsy API:
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Pass: Tworzy obrazy czarno-białe. Nasycone kanały białych obrazów mają wartości RGB [255, 255, 255] z marginesem błędu mniejszym niż 1% różnicy.
test_czarny_biały_czarny.jpg | test_czarny_biały_biały.jpg |
test_black_white_plot_means.png
test_burst_sameness_manual
Wykonuje 5 serii po 50 zdjęć przy ręcznym ustawieniu przechwytywania i sprawdza, czy wszystkie są identyczne. Test ten można wykorzystać do sprawdzenia, czy istnieją sporadyczne klatki, które są przetwarzane w inny sposób lub czy zawierają artefakty.
Testowane interfejsy API:
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR
-
android.hardware.camera2.CameraMetadata#SYNC_MAX_LATENCY_PER_FRAME_CONTROL
Pass: Obrazy są identyczne wizualnie i pod względem wartości RGB.
Niepowodzenie: Pokazuje wzrost lub spadek średniego wykresu RGB na początku każdej serii
- Tolerancja wynosi 3% dla
first_API_level
< 30 - Tolerancja wynosi 2% dla
first_API_level
>= 30
test_burst_sameness_manual_mean.jpg
test_burst_sameness_manual_plot_means.png
test_capture_result
Testuje, czy prawidłowe dane pojawiają się w obiektach CaptureResult
. Wykonuje przechwytywanie automatyczne, ręczne i automatyczne.
Testowane interfejsy API:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_REGIONS
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_REGIONS
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_REGIONS
-
android.hardware.camera2.CaptureRequest#CONTROL_MODE
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
-
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
-
android.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Pass: Metadane są ważne dla wszystkich przechwytów, a ustawienia ręczne nie wyciekają do drugiego automatycznego przechwytywania. Wykreśla korekcję cieniowania obiektywu dla przechwyconych zdjęć.
test_capture_result_plot_lsc_auto_ch0.png
test_crop_region_raw
Sprawdza, czy strumieni RAW nie można przycinać.
Testowane interfejsy API:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CaptureResult#SCALER_CROP_REGION
-
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
Pass: obrazy YUV są przycinane do środka, ale nie obrazy RAW.
test_crop_region_raw_comp_raw_crop.jpg
test_crop_region_raw_comp_raw_full.jpg
test_crop_region_raw_comp_yuv_crop.jpg
test_crop_region_raw_yuv_full.jpg
test_crop_regions
Testuje, czy obszary upraw działają. Wykonuje pełny obraz i tworzy obszary 5 różnych regionów (narożniki i środek). Wykonuje zdjęcia z ustawieniem przycięcia dla 5 regionów. Porównuje poprawkę i wartości przyciętego obrazu.
Testowane interfejsy API:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
Pass: Obraz przyciętego obszaru pasuje do fragmentu odpowiadającego przyciętemu obrazowi.
test_dng_noise_model
Sprawdza, czy parametry surowego modelu DNG są prawidłowe. Wykres przedstawia zmierzoną wariancję środkowego obszaru szarej karty w surowych zdjęciach zarejestrowanych w zakresie czułości i porównuje te wartości z wariancją oczekiwaną przy każdej czułości przez model szumu DNG w aparacie HAL (w oparciu o Parametry O, S zwracane w obiektach wynikowych przechwytywania). Aby uzyskać więcej informacji na temat modelu szumu DNG, pobierz następujący dokument dotyczący modelu szumu DNG .
Testowane interfejsy API:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
-
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
-
android.hardware.camera2.CaptureResult#SENSOR_NOISE_PROFILE
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Wynik pozytywny: parametry surowego modelu DNG są prawidłowe. Oczekiwane wartości RGB odpowiadają rzeczywistym zmierzonym wartościom RGB.
test_dng_noise_model_plog.png
test_ev_compensation_advanced
Sprawdza, czy stosowana jest kompensacja wartości ekspozycji (EV). Test zwiększa ekspozycję w ośmiu krokach i sprawdza zmierzoną jasność w porównaniu z oczekiwaną jasnością. Oczekiwane wartości są obliczane na podstawie jasności obrazu bez zastosowanej kompensacji EV, a oczekiwana wartość ulegnie nasyceniu, jeśli obliczone wartości przekroczą rzeczywisty zakres wartości obrazu. Test kończy się niepowodzeniem, jeśli wartości oczekiwane i zmierzone nie są zgodne lub obrazy są prześwietlone w ciągu pięciu kroków.
Testowane interfejsy API:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
-
android.hardware.camera2.CaptureResult#TONEMAP_CURVE
-
android.hardware.camera2.CaptureResult#TONEMAP_MODE
Pass: Zdjęcia pokazują rosnącą ekspozycję bez prześwietlania w pięciu krokach.
test_ev_compensation_advanced_plot_means.png
test_ev_compensation_basic
Testuje, czy kompensacja EV jest stosowana przy użyciu zakresu utworzonego za pomocą CONTROL_AE_COMPENSATION_STEP
. Dla każdej wartości kompensacji przechwytywanych jest osiem klatek.
Testowane interfejsy API:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_COMPENSATION_STEP
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
-
android.hardware.camera2.CaptureResult#CONTROL_AE_EXPOSURE_COMPENSATION
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
Pass: Przechwytuje wzrost jasności przy zwiększonym ustawieniu kompensacji EV, a osiem klatek zarejestrowanych dla każdego ustawienia kompensacji EV ma stabilne wartości luminacji.
test_ev_compensation_basic.png
test_ekspozycji
Testuje, czy osiągana jest stała ekspozycja przy różnych wartościach ISO i czasie ekspozycji. Wykonuje serię zdjęć, których czułość ISO i czas ekspozycji zostały wybrane tak, aby się równoważyły. Wyniki powinny mieć tę samą jasność, ale w trakcie sekwencji obraz powinien stać się bardziej zaszumiony. Sprawdza, czy średnie wartości pikseli próbki są blisko siebie. Zapewnia, że obrazy nie są zaciśnięte do 0 lub 1 (co sprawiłoby, że wyglądały jak płaskie linie). Test można również uruchomić na obrazach RAW, ustawiając flagę debug
w pliku konfiguracyjnym.
Testowane interfejsy API:
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Pass: obrazy mają tę samą jasność, ale stają się bardziej zaszumione przy wyższej wartości ISO. Płaszczyzny RGB są płaskie, gdy wartość ekspozycji ISO* jest stała w badanej przestrzeni wzmocnienia.
test_exposure_plot_means.png
test_exposure_mult=1.00.jpg | test_exposure_mult=64.00.jpg |
test_jpeg
Testy, w których przekonwertowano obrazy YUV i obrazy JPEG urządzenia, wyglądają tak samo. Test obejmuje 10% środkowego obrazu, oblicza wartość RGB i sprawdza, czy pasują.
Testowane interfejsy API:
Pass: średnia różnica RGB między każdym obrazem jest mniejsza niż 3%.
test_jpeg_fmt=jpg.jpg | test_jpeg=fmt=yuv.jpg |
test_zatrzask
Testuje, czy ustawienia (ekspozycja i wzmocnienie) są blokowane w prawej klatce w przypadku kamer FULL
i LEVEL_3
. Wykonuje serię zdjęć, korzystając z kolejnych żądań, zmieniając parametry żądania przechwytywania pomiędzy zdjęciami. Sprawdza, czy obrazy mają oczekiwane właściwości.
Testowane interfejsy API:
Zaliczony: obrazy [2, 3, 6, 8, 10, 12, 13] mają zwiększoną czułość ISO lub ekspozycję i są wyświetlane z wyższymi średnimi wartościami RGB na test_latching_plot_means.png
.
test_latching_i=00.jpg | test_latching_i=01.jpg | test_latching_i=02.jpg | |
test_latching_i=03.jpg | test_latching_i=04.jpg | test_latching_i=05.jpg | |
test_latching_i=06.jpg | test_latching_i=07.jpg | test_latching_i=08.jpg | |
test_latching_i=09.jpg | test_latching_i=10.jpg | test_latching_i=11.jpg | |
test_latching_i=12.jpg |
test_latching_plot_means.png
test_liniowości
Testuje, czy przetwarzanie urządzenia można odwrócić na piksele liniowe. Rejestruje sekwencję strzałów, gdy urządzenie jest skierowane na jednolity cel.
Testowane interfejsy API:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CaptureRequest#BLACK_LEVEL_LOCK
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Pass: Wartości R, G, B muszą rosnąć liniowo wraz ze zwiększoną czułością.
test_linearity_plot_means.png
test_locked_burst
Testuje blokadę 3A i serię YUV (przy użyciu ustawień automatycznych). Ten test został zaprojektowany tak, aby przejść nawet na ograniczonych urządzeniach, które nie mają MANUAL_SENSOR
lub PER_FRAME_CONTROLS
. Test sprawdza spójność obrazu YUV, podczas gdy kontrola liczby klatek na sekundę odbywa się w CTS.
Testowane interfejsy API:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
Pass: Ujęcia wyglądają spójnie.
test_locked_burst_frame0.jpg
test_locked_burst_frame1.jpg
test_locked_burst_frame2.jpg
test_param_color_correction
Testuje, czy parametry android.colorCorrection.*
są stosowane po ustawieniu. Wykonuje zdjęcia z różnymi wartościami transformacji i wzmocnienia, a następnie sprawdza, czy wyglądają odpowiednio inaczej. Transformację i wzmocnienia wybiera się tak, aby sygnał wyjściowy był coraz bardziej czerwony lub niebieski. Wykorzystuje liniową mapę tonów. Mapowanie tonów to technika stosowana w przetwarzaniu obrazu w celu odwzorowania jednego zestawu kolorów na inny w celu przybliżenia wyglądu obrazów o wysokim zakresie dynamiki w nośniku o bardziej ograniczonym zakresie dynamiki.
Testowane interfejsy API:
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
Pass: Wartości R i B zwiększają się zgodnie z transformacją.
test_param_color_correction_plot_means.png
*Oś x to żądania przechwytywania: 0 = jedność, 1 = czerwone wzmocnienie, 2 = niebieskie wzmocnienie
test_param_color_correction_req=0.jpg
test_param_color_correctness_req=1.jpg (wzmocnienie R)
test_param_color_correction_req=2.jpg (wzmocnienie B)
test_param_exposure_time
Testuje, czy zastosowano parametr android.sensor.exposureTime
.
Testowane interfejsy API:
Pass: Każde zdjęcie jest jaśniejsze od poprzedniego.
test_param_exposure_time_frame0.jpg
test_param_exposure_time_plot.png
test_param_flash_mode
Testuje, czy zastosowano parametr android.flash.mode
. Ręcznie ustawia ciemną ekspozycję, tak aby było oczywiste, czy lampa błyskowa została wyzwolona, czy nie, i wykorzystuje liniową mapę tonów. Sprawdza środek obrazu kafelka, aby sprawdzić, czy powstał duży gradient w celu sprawdzenia, czy lampa błyskowa została wyzwolona.
Testowane interfejsy API:
Pass: Środek obrazu kafelkowego ma duży gradient, co oznacza, że lampa błyskowa została wyzwolona.
test_param_flash_mode_1.jpg
test_param_flash_mode_1_tile.jpg
test_param_flash_mode_2.jpg
test_param_flash_mode_2_tile.jpg
test_param_noise_redukcja
Testuje, czy parametr android.noiseReduction.mode
jest poprawnie stosowany, gdy jest ustawiony. Robi zdjęcia przy słabo oświetlonym aparacie. Wykorzystuje wysokie wzmocnienie analogowe, aby zapewnić, że przechwycony obraz będzie zaszumiony. Rejestruje trzy obrazy, przy wyłączonej redukcji szumów, „szybkim” i „wysokiej jakości”. Przechwytuje także obraz z niskim wzmocnieniem i wyłączoną redukcją szumów i wykorzystuje jego wariancję jako linię bazową. Im wyższy współczynnik SNR (stosunek sygnału do szumu), tym lepsza jakość obrazu.
Testowane interfejsy API:
Pass: SNR zmienia się w zależności od różnych trybów redukcji szumów i zachowuje się podobnie jak na poniższym wykresie.
test_param_noise_reduction_plot_SNRs.png
0: WYŁ., 1: SZYBKO, 2: HQ, 3: MIN., 4: ZSL
test_param_noise_reduction_high_gain_nr=0.jpg
test_param_noise_reduction_high_gain_nr=1.jpg
test_param_noise_reduction_high_gain_nr=2.jpg
test_param_noise_reduction_high_gain_nr=3.jpg
test_param_noise_reduction_low_gain.jpg
test_param_czułość
Testuje, czy zastosowano parametr android.sensor.sensitivity
. Test zwiększa czułość w 5 krokach przy stałej ekspozycji dla każdego zdjęcia.
Testowane interfejsy API:
Pass: RGB oznacza centrum 10% staje się jaśniejsze ze zwiększoną czułością.
test_param_sensitivity_iso=0055.jpg
test_param_sensitivity_iso=1819.jpg
test_param_sensitivity_iso=3583.jpg
test_param_sensitivity_iso=5347.jpg
test_param_sensitivity_iso=7111.jpg
test_param_sensitivity_plot.png
test_param_shading_mode
Testuje, czy zastosowano parametr android.shading.mode
.
Testowane interfejsy API:
-
android.hardware.camera2.CaptureRequest#SHADING_MODE
-
android.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
-
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
Pass: tryby cieniowania są przełączane, a mapy cieniowania obiektywu modyfikowane zgodnie z oczekiwaniami.
test_param_shading_mode_ls_maps_mode_0_loop_0.png
test_param_shading_mode_ls_maps_mode_1_loop_0.png
test_param_shading_mode_ls_maps_mode_2_loop_0.png
test_param_tonemap_mode
Testuje, czy zastosowano parametr android.tonemap.mode. Stosuje różne krzywe mapy tonów do każdego kanału R, G i B i sprawdza, czy obrazy wyjściowe są modyfikowane zgodnie z oczekiwaniami. Test ten składa się z dwóch testów, testu 1 i testu 2.
Testowane interfejsy API:
-
android.hardware.camera2.CameraMetadata#TONEMAP_MODE_CONTRAST_MODE
-
android.hardware.camera2.CameraMetadata#TONEMAP_MODE_FAST
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Przechodzić:
- test1: Oba obrazy mają liniową mapę tonów, ale n=1 ma bardziej stromy gradient. Kanał G (zielony) jest jaśniejszy dla obrazu n=1.
- test2: Ta sama mapa tonów, ale inna długość. Obrazy są takie same.
test_param_tonemap_mode_n=0.jpg | test_param_tonemap_mode_n=1.jpg |
test_post_raw_sensitivity_boost
Sprawdza zwiększenie czułości po RAW. Przechwytuje zestaw obrazów RAW i YUV o różnej czułości, publikuje kombinację zwiększenia czułości RAW i sprawdza, czy średnia pikseli wyjściowych odpowiada ustawieniom żądania.
Testowane interfejsy API:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
-
android.hardware.camera2.CaptureRequest#CONTROL_POST_RAW_SENSITIVITY_BOOST
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Pass: obrazy RAW stają się ciemniejsze wraz ze wzrostem wzmocnienia, podczas gdy obrazy YUV zachowują stałą jasność
test_post_raw_sensitivity_boost_raw_s=3583_boost=0100.jpg
test_post_raw_sensitivity_boost_raw_s=1792_boost=0200.jpg
test_post_raw_sensitivity_boost_raw_s=0896_boost=0400.jpg
test_post_raw_sensitivity_boost_raw_s=0448_boost=0800.jpg
test_post_raw_sensitivity_boost_raw_s=0224_boost=1600.jpg
test_post_raw_sensitivity_boost_raw_s=0112_boost=3199.jpg
test_post_raw_sensitivity_boost_raw_plot_means.png
test_post_raw_sensitivity_boost_yuv_s=0112_boost=3199.jpg
test_post_raw_sensitivity_boost_yuv_s=0448_boost=0800.jpg
test_post_raw_sensitivity_boost_yuv_s=0896_boost=0400.jpg
test_post_raw_sensitivity_boost_yuv_s=1792_boost=0200.jpg
test_post_raw_sensitivity_boost_yuv_s=3585_boost=0100.jpg
test_post_raw_sensitivity_boost_yuv_plot_means.png
test_raw_burst_sensitivity
Przechwytuje zestaw surowych obrazów o rosnącym wzmocnieniu i mierzy szum. Przechwytuje tylko surowo, w serii.
Testowane interfejsy API:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
-
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
Pass: Każdy strzał jest głośniejszy niż poprzedni, ponieważ wzmocnienie wzrasta.
Używa wariancji środkowej komórki siatki statystyk.
test_raw_burst_sensitivity_variance.png
test_raw_exposure
Przechwytuje zestaw surowych obrazów przy rosnącym czasie ekspozycji i mierzy wartości pikseli.
Testowane interfejsy API:
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
Pass: Zwiększenie ISO (wzmocnienia) powoduje, że piksele są bardziej wrażliwe na światło, więc wykres przesuwa się w lewo.
test_raw_exposure_s=55.png
(10⁰ to 1 ms, 10¹ to 10 ms, 10⁻¹ to 0,1 ms)
test_raw_exposure_s=132.png
test_raw_exposure_s=209.png
test_raw_exposure_s=286.png
test_raw_exposure_s=363.png
test_raw_exposure_s=440.png
test_raw_czułość
Przechwytuje zestaw surowych obrazów o rosnącej czułości i mierzy szum (odchylenie) w środkowych 10% obrazu. Testuje, czy każdy strzał jest głośniejszy od poprzedniego.
Testowane interfejsy API:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
-
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
Podanie: Wariancja wzrasta z każdym strzałem.
test_raw_sensitivity_variance.png
test_reprocess_noise_redukcja
Testuje, czy android.noiseReduction.mode
jest stosowany do ponownego przetwarzania żądań. Rejestruje przetworzone obrazy przy słabo oświetlonym aparacie. Wykorzystuje wysokie wzmocnienie analogowe, aby zapewnić, że przechwytywany obraz będzie zaszumiony. Rejestruje trzy ponownie przetworzone obrazy: dla redukcji szumów wyłączonej, „szybkiej” i „wysokiej jakości”. Przechwytuje ponownie przetworzony obraz z niskim wzmocnieniem i wyłączoną redukcją szumów i wykorzystuje jego wariancję jako linię bazową.
Testowane interfejsy API:
Pass: SZYBKO >= WYŁ., HQ >= SZYBKO, HQ >> WYŁ
Typowy wykres SNR vs NR_MODE
test_tonemap_sequence
Testuje sekwencję strzałów z różnymi krzywymi mapy tonalnej. Przechwytuje 3 ręczne ujęcia z liniową mapą tonów. Przechwytuje 3 ręczne zdjęcia z domyślną mapą tonów. Oblicza deltę pomiędzy każdą kolejną parą ramek.
Testowane interfejsy API:
Pass: Istnieją 3 identyczne klatki, po których następuje inny zestaw 3 identycznych klatek.
test_tonemap_sequence_i=0.jpg
test_tonemap_sequence_i=1.jpg
test_tonemap_sequence_i=2.jpg
test_tonemap_sequence_i=3.jpg
test_tonemap_sequence_i=4.jpg
test_tonemap_sequence_i=5.jpg
test_yuv_jpeg_all
Testuje, czy wszystkie zgłoszone rozmiary i formaty do przechwytywania obrazu działają. Używa ręcznego żądania z liniową mapą tonów, dzięki czemu YUV i JPEG wyglądają tak samo po konwersji przez moduł image_processing_utils
. Obrazy nie są domyślnie zapisywane, ale można je zapisać, włączając debug_mode
.
Testowane interfejsy API:
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
-
android.graphics.ImageFormat#JPEG
Pass: Wszystkie centra obrazu mają maksymalną różnicę RMS (średnia kwadratowa sygnału) w obrazach przekonwertowanych RGB z 3% obrazu YUV o najwyższej rozdzielczości.
test_yuv_jpeg_all.png
test_yuv_plus_dng
Testuje, czy zgłoszone rozmiary i formaty do przechwytywania obrazu działają.
Testowane interfejsy API:
Pass: Test kończy się i zwraca żądane obrazy.
test_yuv_plus_dng.jpg
test_yuv_plus_jpeg
Testuje przechwytywanie pojedynczej klatki jako wyjścia YUV i JPEG. Używa ręcznego żądania z liniową mapą tonów, dzięki czemu YUV i JPEG wyglądają tak samo po konwersji przez moduł image_processing_utils
.
Testowane interfejsy API:
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
-
android.graphics.ImageFormat#JPEG
Wynik pozytywny: obrazy YUV i JPEG są podobne i różnią się o mniej niż 1% RMS (średnia kwadratowa sygnału).
test_yuv_plus_jpg_jpg.jpg | test_yuv_plus_jpeg_yuv.jpg |
test_yuv_plus_raw
Testuje przechwytywanie pojedynczej klatki jako wyjścia RAW/RAW10/RAW12 i YUV, jeśli jest obsługiwane. Używa ręcznego żądania z liniową mapą tonów, więc oczekuje się, że surowe i YUV będą takie same. Porównuje środkowe 10% wartości RGB obrazów przekonwertowanych na RGB. Loguje android.shading.mode
.
Testowane interfejsy API:
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_MODE
-
android.hardware.camera2.CaptureRequest#SHADING_MODE
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
-
android.hardware.graphics.ImageFormat#RAW10
-
android.hardware.graphics.ImageFormat#RAW12
Wynik pozytywny: obrazy YUV i surowe są podobne i różnią się o mniej niż 3,5% RMS (średnia kwadratowa sygnału).
test_yuv_plus_raw_shading=1_raw.jpg | test_yuv_plus_raw_shading=1_yuv.jpg |
scena2_a
scene2_a ma trzy twarze z szarym tłem i neutralnym ubraniem. Twarze dobierane są tak, aby miały szeroką gamę odcieni skóry. Aby wykrywanie twarzy działało optymalnie, wykres musi mieć prawidłową orientację.
scena2_a
test_auto_flash
Testuje, czy automatyczna lampa błyskowa jest wyzwalana w ciemnej scenie. Sprawdza, czy uruchamiany jest automatyczny błysk, sprawdzając, czy środek obrazu kafelkowego ma duży gradient. Aby uruchomić funkcję automatycznego flashowania, tablet i światła w urządzeniu testowym muszą być wyłączone. Podczas testu tablet zostaje wyłączony, a podświetlenie można wyłączyć automatycznie za pomocą kontrolera Arduino. Aby test zadziałał prawidłowo, scena musi być całkowicie ciemna. W związku z tym tylny otwór tabletu musi być całkowicie zakryty przez tablet sceniczny, a przedni otwór musi być zakryty przez aperturę i telefon DUT, aby zapobiec przedostawaniu się rozproszonego światła do zestawu.
Testowane interfejsy API:
-
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#FLASH_MODE
Pass: Środek obrazu kafelkowego ma duży gradient, co oznacza, że została uruchomiona automatyczna lampa błyskowa.
testowe_automatyczne kadrowanie
Testuje zachowanie automatycznego kadrowania aparatu. Wykonuje duże przybliżenie w taki sposób, że żadna twarz w scenie nie jest widoczna, włącza tryb automatycznego kadrowania, ustawiając AUTOFRAMING
w CaptureRequest
na True
i sprawdza, czy wszystkie twarze w oryginalnej scenie można wykryć, gdy stan się zbiega (tzn. AUTOFRAMING_STATE
w CaptureResult
jest ustawione na AUTOFRAMING_STATE_CONVERGED
).
Testowane interfejsy API:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AUTOFRAMING_AVAILABLE
-
android.hardware.camera2.CaptureRequest#CONTROL_AUTOFRAMING
-
android.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMING
-
android.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMING_STATE
Pass: Wykryto wszystkie trzy twarze.
test_display_p3
Testy Wyświetlanie przechwyconego pliku P3 w formacie JPEG przy użyciu interfejsu API ColorSpaceProfiles
. Sprawdza, czy przechwycony plik JPEG ma w nagłówku odpowiedni profil ICC i czy obraz zawiera kolory spoza gamy sRGB.
Testowane interfejsy API:
-
android.hardware.camera2.params.ColorSpaceProfiles
-
android.hardware.camera2.params.SessionConfiguration#setColorSpace
Pass: JPEG zawiera profil ICC Display P3 i kolory spoza gamy sRGB.
efekty_testowe
Przechwytuje klatkę dla obsługiwanych efektów kamery i sprawdza, czy są one poprawnie generowane. Test sprawdza tylko efekty OFF
i MONO
, ale zapisuje obrazy dla wszystkich obsługiwanych efektów.
Testowane interfejsy API:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_EFFECTS
-
android.hardware.camera2.CaptureRequest#CONTROL_EFFECT_MODE
Pass: Przechwytuje obraz sceny z OFF
efektami i obraz monochromatyczny z efektami ustawionymi na MONO
.
test_effects_MONO.jpg
test_format_combos
Testuje różne kombinacje formatów wyjściowych.
Testowane interfejsy API:
android.hardware.camera2.CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP
android.hardware.camera2.params.StreamConfigurationMap#getOutputSizes()
android.hardware.camera2.CameraCaptureSession#captureBurst()
Pass: Wszystkie kombinacje zostały pomyślnie przechwycone.
test_jpeg_jakość
Testuje jakość kompresji JPEG w aparacie. Przejdź do jakości JPEG poprzez android.jpeg.quality
i upewnij się, że tabele kwantyzacji zmieniają się prawidłowo.
Testowane interfejsy API:
Pass: Macierz kwantyzacji zmniejsza się wraz ze wzrostem jakości. (Macierz reprezentuje współczynnik dzielenia.)
Średnia jasność/chroma matrycy DQT tylnego aparatu Pixel 4 w porównaniu z jakością JPEG
Nieudany przykład testu
Należy zauważyć, że w przypadku obrazów o bardzo niskiej jakości (jakość JPEG < 50) nie następuje wzrost kompresji w matrycy kwantyzacji.
test_num_faces
Testuje wykrywanie twarzy.
Testowane interfejsy API:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: Znajduje trzy twarze.
test_num_faces_fd_mode_1.jpg
test_preview_min_frame_rate
Testuje, czy liczba klatek na sekundę podglądu zmniejsza się prawidłowo w ciemnej scenie. Aby ten test zadziałał prawidłowo, światła na stanowisku testowym muszą zostać wyłączone przez kontrolera lub ręcznie przez operatora testu.
Testowane interfejsy API:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.hardware.camera2.CaptureResult#CONTROL_AE_TARGET_FPS_RANGE
-
android.media.CamcorderProfile
-
android.media.MediaRecorder
Wynik pozytywny: liczba klatek podglądu jest na poziomie minimum żądanego zakresu szybkości klatek, a różnice między klatkami są mniejsze niż bezwzględna tolerancja ustawiona w teście.
test_reprocess_uv_swap
Testuje, czy ponowne przetwarzanie YUV nie zamienia płaszczyzn U i V. Można to wykryć, obliczając sumę różnic bezwzględnych (SAD) między przetworzonym obrazem a zdjęciem nieprzetworzonym. Jeśli zamiana wyjściowych płaszczyzn U i V przetworzonego przechwytywania skutkuje zwiększonym SAD, wówczas zakłada się, że dane wyjściowe mają prawidłowe płaszczyzny U i V.
Testowane interfejsy API:
-
android.hardware.camera2.CameraDevice#createCaptureSession
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_YUV_REPROCESSING
-
android.hardware.camera2.CaptureRequest#EDGE_MODE
-
android.hardware.camera2.CaptureResult#NOISE_REDUCTION_MODE
Pass: Płaszczyzny U i V nie są zamieniane.
test_reprocess_uv_swap.png
scena2_b
test_num_faces
Testuje wykrywanie twarzy przy zwiększonej różnorodności odcieni skóry w scenach twarzy.
Testowane interfejsy API:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: Znajduje 3 twarze.
test_num_faces_fd_mode_1.jpg
test_yuv_jpeg_capture_sameness
Przechwytuje dwa obrazy przy użyciu największych popularnych formatów YUV i JPEG o takich samych proporcjach jak największy format JPEG, ale nie przekraczających rozdzielczości 1920x1440. Ustawia jpeg.quality
na 100 i przechwytuje żądanie podwójnej powierzchni. Konwertuje oba obrazy na tablice RGB i oblicza średnią kwadratową 3D (RMS) różnicy między dwoma obrazami.
Testowane interfejsy API:
-
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASES
-
android.hardware.camera2.CaptureRequest#JPEG_QUALITY
-
android.graphics.ImageFormat#JPEG
Wynik pozytywny: obrazy YUV i JPEG są podobne i różnią się o mniej niż 1% RMS (średnia kwadratowa sygnału).
scena2_c
test_num_faces
Testuje wykrywanie twarzy przy zwiększonej różnorodności odcieni skóry w scenach twarzy.
Testowane interfejsy API:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: Znajduje 3 twarze.
test_num_faces_fd_mode_1.jpg
test_jpeg_capture_perf_class
Testuje opóźnienie przechwytywania JPEG dla klasy wydajności S, jak określono w sekcji 2.2.7.2 Kamera w CDD.
Zaliczony: MUSI mieć opóźnienie przechwytywania plików JPEG w kamerze2 < 1000 ms dla rozdzielczości 1080p, zgodnie z pomiarem za pomocą testu wydajności kamery CTS w warunkach oświetlenia ITS (3000 K) dla obu kamer głównych.
test_camera_launch_perf_class
Testuje opóźnienie uruchomienia kamery dla klasy wydajności S zgodnie z sekcją 2.2.7.2 Kamera w CDD.
Zaliczony: MUSI mieć opóźnienie uruchomienia kamery 2 (otwarcie kamery do pierwszej klatki podglądu) < 600 ms, zgodnie z pomiarem w teście wydajności kamery CTS w warunkach oświetlenia ITS (3000 K) dla obu kamer głównych.
scena2_d
test_num_faces
Testuje wykrywanie twarzy przy zwiększonej różnorodności odcieni skóry w scenach twarzy.
Testowane interfejsy API:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: Znajduje 3 twarze.
scena2_e
test_ciągły_obraz
Przechwytywanych jest 50 klatek w rozdzielczości VGA przy pierwszym żądaniu przechwytywania ustawionym na android.control.afMode = 4 (CONTINUOUS_PICTURE).
Testowane interfejsy API:
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
-
android.hardware.camera2.CaptureResult#CONTROL_AF_STATE
-
android.hardware.camera2.CaptureResult#CONTROL_AWB_STATE
Pass: system 3A zostaje ustabilizowany po przechwyceniu 50 klatek.
test_num_faces
Testuje wykrywanie twarzy przy zwiększonej różnorodności odcieni skóry w scenach twarzy.
Testowane interfejsy API:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: Znajduje 3 twarze.
scena2_f
scene2_f ma trzy twarze z białym tłem i białym ubraniem. Twarze mają szeroką gamę odcieni skóry i duży kontrast z tłem.
scena2_f
test_num_faces
Testuje wykrywanie twarzy przy zwiększonej różnorodności odcieni skóry w scenach twarzy.
Testowane interfejsy API:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: Znajduje 3 twarze.
test_num_faces_fd_mode_1.jpg
scena 3
Scena3 wykorzystuje wykres ISO12233, a większość testów stosuje metodę ekstraktora wykresu, aby znaleźć wykres na scenie. Z tego powodu większość zapisanych obrazów nie ma granic takich jak obrazy dla scen 1, 2 lub 4, ale tylko wykres. Wykres musi być w prawidłowej orientacji, aby wyszukiwarka wykresu mogła optymalnie działać.
test_3a_consistency
Testy konsystencji 3A.
Testowane interfejsy API:
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureRequest#LENS_FOCUS_DISTANCE
-
android.hardware.camera2.CaptureResult#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureResult#SENSOR_SENSITIVITY
Przejście: 3A zbiega się w celu ekspozycji, wzmocnienia, AWB (Auto White Balance) i FD (odległość ostrości) trzy razy w ramach tolerancji.
TEST_EDGE_ENHANCEMENT
Testy, że parametr android.edge.mode
jest stosowany poprawnie. Przechwytuje obrazy inne niż reprocess dla każdego trybu krawędzi i zwraca ostrość obrazu wyjściowego i metadanych wyników przechwytywania. Przetwarza żądanie przechwytywania w danym trybie krawędzi, czułość, czas ekspozycji, odległość ostrości i parametr powierzchni wyjściowej.
Pass: Tryb HQ
(2) Tryb ostrzejszy niż OFF
(0). Tryb FAST
(1) Tryb ostrzejszy niż OFF
. Tryb HQ
Shardeczny lub równy trybie FAST
.
Testowane interfejsy API:
Wpływowe parametry aparatu:
-
EDGE_MODE
TEST_EDGE_ENHANCEMENT_EDGE = 0.JPG
TEST_EDGE_ENHANCEMENT_EDGE = 1.JPG (tryb szybki)
TEST_EDGE_ENHANCEMENT_EDGE = 2.JPG (tryb wysokiej jakości)
test_flip_mirror
Testy, jeśli obraz jest odpowiednio zorientowany zgodnie z sekcją CDD 7.5.2 przednie aparat [C-1-5] .
Obrazy lustrzane, odwrócone lub obrócone mogą być zidentyfikowane przez funkcję diamentu w pobliżu środka.
Pass: Obraz nie jest odwracany, lustrzany lub obrócony.
test_flip_mirror_scene_patch.jpg
test_landscape_to_portrait
Testy, jeśli krajobraz do portretu poprawnie funkcjonuje dla czujników zorientowanych na krajobraz.
Testowane interfejsy API:
-
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_ROTATE_AND_CROP_MODES
-
android.hardware.camera2.CameraCharacteristics#SENSOR_ORIENTATION
-
android.hardware.camera2.CameraCharacteristics#getCameraCharacteristics
Przejście: Test jest w stanie zlokalizować wykres z oczekiwanym obrotem (0 stopni, gdy krajobraz do nadpisania jest wyłączony, 90 stopni po włączeniu).
test_landscape_to_portrait.png
test_lens_movement_reporting
Testy, jeśli flaga ruchu soczewki jest odpowiednio zgłoszona. Uchwyca serię 24 obrazów z pierwszymi 12 klatkami w optymalnej odległości ostrości (jak znaleziony przez 3a) i ostatnich 12 klatek w minimalnej odległości ostrości. W ramach ramy 12 soczewki porusza się, powodując spadek ostrości. Ostrość ostatecznie stabilizuje się, gdy soczewka przesuwa się do ostatecznej pozycji. Flaga ruchu obiektywu należy zapewnić we wszystkich ramach, w których ostrość jest pośrednia do ostrości w pierwszych kilku ramach z soczewką stacjonarną w optymalnej odległości ogniskowej, a w ostatnich kilku klatkach, w których soczewka jest nieruchoma w minimalnej odległości ogniskowej. Dokładna ramka, którą porusza soczewki, nie jest ważna: sprawdzane jest to, że flaga ruchu jest potwierdzana podczas poruszania się soczewki.
Testowane interfejsy API:
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCE
-
android.hardware.camera2.CaptureResult#LENS_STATE
-
android.hardware.camera2.CaptureResult#LENS_FOCUS_DISTANCE
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.camera2.CaptureRequest#LENS_FOCUS_DISTANCE
Pass: Flaga ruchu soczewki jest True
w ramce ze zmianą ostrości.
Mechanizmy niepowodzenia:
-
lens_moving: True
test_log.DEBUG
android.hardware.camera2.CaptureResult#LENS_STATE
- Ramy z
lens_moving: False
(android.hardware.camera2.CaptureResult#LENS_STATE
= 0) wtest_log.DEBUG
ma różnicę ostrości w porównaniu z pierwszymi kilkoma klatkami w optymalnej odległości ogniskowej lub ostatnich kilku klatek w minimalnej odległości ostrości.
test_reprocess_edge_enhancement
Testy, jeśli obsługiwane metody ponownego przetwarzania dla poprawy krawędzi działają prawidłowo. Przetwarza żądanie przechwytywania w danym trybie przewagi Refrocess i porównuje różne tryby, aby przechwytywać z wyłączonymi trybami przewagi.
Testowane interfejsy API:
-
android.hardware.camera2.CaptureRequest#EDGE_MODE
-
android.hardware.camera2.CaptureRequest#REPROCESS_EFFECTIVE_EXPOSURE_FACTOR
Przekaz: ostrość dla różnych trybów krawędzi jest prawidłowa. HQ
(tryb 2) jest ostrzejszy niż OFF
(tryb 0), a poprawa między różnymi trybami jest podobna.
TEST_REPROCESS_EDGE_ENHANCEMENT_PLOT.PNG
Scena4
Scena4 składa się z czarnego okręgu na białym tle wewnątrz placu.
Scena4
test_asect_ratio_and_crop
Testy, jeśli obrazy są zniekształcone lub nieoczekiwanie przycięte w rurociągu obrazu. Robi zdjęcia koła we wszystkich formatach. Weryfikuje okrąg, okrąg nie porusza się od środka obrazu, a okrąg nie zmienia rozmiaru niepoprawnie z różnymi współczynnikami kształtu lub rozdzielczości.
Testowane interfejsy API:
-
android.hardware.camera2.CaptureResult#LENS_DISTORTION
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
-
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
Pass: Obrazy nie są rozciągnięte, środek obrazów nie różni się o więcej niż 3%, a maksymalne możliwe FOV (pole widzenia) jest zachowane.
Mechanizmy niepowodzenia:
- Koło na przechwyconym obrazie jest zniekształcone przez rurociąg przetwarzania.
- Obraz o niższej rozdzielczości jest podwójnie przycięty w rurociągu obrazowym, tworząc różne FOV między obrazami o wysokiej i niskiej rozdzielczości.
- Koło przechwyconego obrazu jest przycięte ze względu na ekstremalne żądanie przechwytywania współczynnika kształtu, zmniejszając wysokość lub szerokość obrazu.
- Koło przechwyconego obrazu ma odbicie w środku i nie wydaje się w pełni wypełnione.
test_multi_camera_alignment
Testuje parametry kalibracji kamery związane z pozycjonowaniem kamery dla systemów wielokameryjnych. Korzystając z fizycznych podrzędnych z wieloma kamerami, robi zdjęcie z jednym z fizycznych kamer. Znajduje centrum koła. Projektuje Centrum Circle do światowych współrzędnych dla każdego aparatu. Porównuje różnicę między centrami okręgowymi kamer we współrzędnych światowych. Reprojects World współrzędna z powrotem do współrzędnych pikseli i porównuje z oryginałami jako kontrola ważności. Porównuje rozmiary koła, sprawdzając, czy ogniskowe kamer są różne.
Testowane interfejsy API:
-
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
-
android.hardware.camera2.CameraCharacteristics#LENS_DISTORTION
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
-
android.hardware.camera2.CameraCharacteristics#LENS_INTRINSIC_CALIBRATION
-
android.hardware.camera2.CameraCharacteristics#LENS_POSE_ROTATION
-
android.hardware.camera2.CameraCharacteristics#LENS_POSE_TRANSLATION
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
-
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
-
android.hardware.camera2.CaptureRequest#DISTORTION_CORRECTION_MODE
PASS: Centra i rozmiary okręgowe są zgodne z oczekiwaniami na prognozowanych obrazach w porównaniu z przechwyconymi obrazami za pomocą danych kalibracji kamery i ogniskowymi.
Mechanizmy niepowodzenia:
-
LENS_INTRINSIC_CALIBRATION
,LENS_POSE_TRANSLATION
lubLENS_POSE_ROTATION
to wartości projektowe, a nie rzeczywiste dane kalibracyjne. - System kamery nie jest odpowiedni do konfiguracji testu. Na przykład testowanie szerokiego i ultra całego systemu kamer z zestawem testowym RFOV. Aby uzyskać więcej informacji, zobacz Camera ITS-in-a-box FAQ1 .
test_preview_asect_ratio_and_crop
Podobnie jak test test_aspect_ratio_crop dla wciąż przechwytywania, ten test sprawdza obsługiwane formaty podglądu, aby upewnić się, że ramy podglądu nie są rozciągnięte lub przycięte niewłaściwie. Weryfikuje, że współczynnik kształtu koła się nie zmienia, przycięte obrazy utrzymują okrąg w środku ramki, a rozmiar koła nie zmienia się dla stałego formatu lub z różnymi rozdzielczościami (sprawdzenie pola widzenia).
Testowane interfejsy API:
-
android.hardware.camera2.CaptureResult#LENS_DISTORTION
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
-
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Pass: Obrazy nie są rozciągnięte, środek obrazów nie różni się o więcej niż 3%, a maksymalne możliwe FOV (pole widzenia) jest zachowane.
test_preview_stabilization_fov
Sprawdza obsługiwane rozmiary podglądu, aby upewnić się, że FOV zostanie odpowiednio przycięty. Test przechwytuje dwa filmy, jeden z stabilizacją ON
, a drugi z OFF
stabilizacją podglądu. Z każdego filmu wybierana jest reprezentatywna ramka i analizowana w celu upewnienia się, że zmiany FOV w dwóch filmach znajdują się w specyfikacji.
Testowane interfejsy API:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Pass: Współczynnik kształtu koła pozostaje na stałym poziomie, środkowa lokalizacja koła pozostaje stabilna, a rozmiar koła nie zmienia się więcej niż 20%.
test_video_asect_ratio_and_crop
Wykonuje filmy z koła wewnątrz kwadratu na wszystkich formatach wideo. Wyodrębnia kluczowe ramki i weryfikuje współczynnik kształtu koła nie zmienia się, przycięte obrazy utrzymują okrąg w środku, a rozmiar koła nie zmienia się dla stałego formatu lub z inną rozdzielczością (pole kontroli widzenia).
Testowane interfejsy API:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.hardware.camera2.CaptureResult#LENS_DISTORTION
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
-
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Pass: Ramy wideo nie są rozciągnięte, środek ramek nie różni się o więcej niż 3%, a maksymalne możliwe FOV (pole widzenia) jest zachowane.
Scena5
Scena5 wymaga jednolicie oświetlonej szarości. Odbywa się to przez dyfuzor umieszczony nad obiektywem aparatu. Zalecamy następujący dyfuzor: www.edmundoptics.com/optics/window-diffusers/optical-diffusers/opal-diffusing-glass/46168
.
Aby przygotować scenę, przymocuj dyfuzor przed kamerą i skieruj aparat do źródła oświetlenia około 2000 luksów. Zdjęcia przechwycone dla Scene5 wymagają rozproszonego oświetlenia bez widocznych funkcji. Poniżej znajduje się przykładowy obraz:
Scena5 Capture
test_lens_shading_and_color_Uniformity
Testy, że korekta cieniowania soczewek jest odpowiednio stosowana, a kolor monochromatycznej sceny jednolitej jest równomiernie rozłożony. Wykonuje ten test na ramie YUV z Auto 3A. Zacienianie obiektywów jest oceniane na podstawie kanału Y. Mierzy średnią wartość Y dla każdego określonego bloku próbki i określa PASS lub Fail, porównując z wartością środkową Y. Test jednolitości kolorów jest oceniany w przestrzeni R/G i B/G.
Testowane interfejsy API:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
Przejście: Przy określonym promieniu obrazu wariancja wartości R/G i B/G musi być mniejsza niż 20%, aby przejść test.
Scena6
Scena6 to siatka małych kół z kwadratem w jednym rogu, aby wskazać orientację. Małe koła są potrzebne do przetestowania funkcji powiększenia w dużym zakresie.
Scena6
test_in_sensor_zoom
Testuje zachowanie funkcji zoomu w czujnikach kamery, która produkuje przycięte surowe obrazy.
Po ustawianiu przypadków użycia strumienia na CROPPED_RAW
, test przyjmuje dwa przechwytywanie w zakresie Zoomu, pełne pole widzenia (FOV) i przycięty surowy obraz. Test konwertuje obrazy na tablice RGB, w dół w dół w dół sadza na pełnowymiarowy przycięty obraz surowy na rozmiar zgłoszony przez SCALER_RAW_CROP_REGION
i oblicza różnicę średniej kwadratowej (RMS) 3D między dwoma obrazami.
Testowane interfejsy API:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.hardware.camera2.CameraMetadata#SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.hardware.camera2.CaptureResult#SCALER_RAW_CROP_REGION
Pass: Różnica średniej kwadratowej (RMS) 3D między w dół przecięty obraz surowy a pełny obraz FOV RAW jest mniejszy niż 1%.
test_zoom
Testuje zachowanie zoomu aparatu. Zabiera przechwytywanie w zakresie powiększenia i sprawdzają, czy kółka stają się większe w miarę powiększania aparatu.
Testowane interfejsy API:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Pass: Względny rozmiar przechwyconego koła jest dokładny w stosunku do żądanego współczynnika powiększenia, aby zapewnić prawidłowe powiększenie kamery.
test_zoom, aby znaleźć kontur koła najbliżej centrum.
test_low_latency_zoom
Testuje zachowanie zoomu o niskim opóźnieniu aparatu. Obejmuje przechwytywanie w zakresie Zoom z android.control.settingsOverride = 1 (SETTINGS_OVERRIDE_ZOOM)
i sprawdza, czy koła w obrazach wyjściowych pasują do współczynników powiększenia w metadanych przechwytywania.
Testowane interfejsy API:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_SETTINGS_OVERRIDES
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CaptureRequest#CONTROL_SETTINGS_OVERRIDE
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.hardware.camera2.CaptureResult#CONTROL_SETTINGS_OVERRIDE
Pass: Względny rozmiar przechwyconego koła jest dokładny w stosunku do metadanych wyników powiększenia.
test_preview_video_zoom_match
Testy, które podczas nagrywania i powiększenia, podgląd wideo i wyjście wideo wyświetlają i rejestrują to samo wyjście. Oblicza rozmiar koła najbliższego środka przy różnych współczynnikach powiększenia i sprawdza, czy rozmiar koła wzrasta wraz ze wzrostem współczynnika powiększenia.
Testowane interfejsy API:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Pass: Względny rozmiar przechwyconego koła jest dokładny w stosunku do żądanego współczynnika powiększenia w wideo i podglądu.
Vga_640x480_key_frame.png (przed zoom)
Preview_640x480_key_frame.png (przed zoom)
VGA_640X480_KEY_FRAME.PNG (po zoom)
Preview_640x480_key_frame.png (po zoom)
Scene_extensions
Testy scene_extensions
dotyczą przedłużenia kamery i muszą korzystać z kamery IT-a-A-box , ponieważ wymagają precyzyjnej kontroli środowiska testowania.
scena_hdr
Scena scene_hdr
składa się z portretu po lewej i niskiej kontroli kodu QR po prawej stronie.
scena_hdr
test_hdr_extension
Testuje rozszerzenie HDR . Bierze przechwytywanie z włączonym rozszerzeniem i bez nich, i sprawdza, czy rozszerzenie sprawia, że kod QR jest bardziej wykrywalny.
Testowane interfejsy API:
-
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
-
android.hardware.camera2.CameraExtensionSession#capture
PASS: Rozszerzenie HDR zmniejsza liczbę zmian kontrastowych potrzebnych do wykrycia kodu QR lub zmniejsza gradient w kodzie QR.
Scena_night
Scena scene_night
składa się z białego okręgu z czterema mniejszymi kręgami w niej, wszystko na czarnym tle. Mniejsze okrąg w prawym górnym rogu jest ciemniejsze niż inne, aby wskazać orientację.
Scena_night
test_night_extension
Testuje rozszerzenie nocy . Bierze przechwytywanie z włączonym rozszerzeniem i bez nich oraz kontroluje pod kątem:
- Capture z włączonym rozszerzeniem nocnym trwa dłużej.
- Capture z włączonym rozszerzeniem Night jest jaśniejsze lub ma artefakty scene z lepszym wyglądem.
Testowane interfejsy API:
-
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
-
android.hardware.camera2.CameraExtensionSession#capture
Pass: W porównaniu do przechwytywania bez włączonego rozszerzenia nocy, przechwytywanie z włączonym rozszerzeniem nocnym zajmuje co najmniej 0,5 sekundy dłużej. Schwytanie musi być co najmniej 10% jaśniejsze lub szare kropki na scenie muszą mieć 20 wartości pikseli niższe niż środek otaczającego koła.
sensor_fusion
Testy fuzji czujnika wymagają określonego ruchu telefonicznego przed wzorem szachownicy. Aby uzyskać optymalne wyniki, upewnij się, że wykres testowy jest zamontowany płasko. Wykresy, które nie są płaskie, wpływają na obliczenia obrotu dla wielu testów. Testy sensor_fusion
można zautomatyzować za pomocą skrzynki fuzji czujnika .
Obraz szachownicy
test_multi_camera_frame_sync
Testy, które ramy znaczniki czasu przechwycone za pomocą kamery logicznej są w odległości 10 ms poprzez obliczanie kąta kwadratów w szachownicy w celu ustalenia znacznika czasu.
Testowane interfejsy API:
-
android.hardware.camera2.CameraCharacteristics#LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE
-
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
-
android.hardware.camera2.params.OutputConfiguration#setPhysicalCameraId()
Przejście: Kąt między obrazami z każdego aparatu nie zmienia się znacznie, ponieważ telefon jest obracany.
test_preview_stabilizacja
Testy, które ustabilizowane wideo podglądu obracają się mniej niż żyroskop.
Testowane interfejsy API:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Pass: Maksymalny obrót kąta w ramach jest mniejszy niż 70% obrotu żyroskopu.
Poniżej przedstawiono przykładowe filmy z stabilizacją i bez.
Przykładowy film z stabilizacją
Przykładowy film bez stabilizacji
test_sensor_fusion
Testuje różnicę znacznika czasu między kamerą a żyroskopem dla aplikacji AR i VR. Telefon jest obracany o 90 stopni 10 razy przed wzorem szachownicy. Ruch to około 2 sekundy w obie strony. Ten test jest pomijany, jeśli nie uwzględniono żyroskopu lub jeśli nie jest włączony parametr czasu REALTIME
źródła czasu znacznika czasu.
Test test_sensor_fusion
generuje wiele wykresów. Dwie najważniejsze działki do debugowania to:
test_sensor_fusion_gyro_events
: pokazuje zdarzenia żyroskopowe dla telefonu podczas testu. Ruch w kierunku X i Y oznacza, że telefon nie jest bezpiecznie zamontowany na płycie montażowej, zmniejszając prawdopodobieństwo przejścia testu. Liczba cykli na wykresie zależy od prędkości zapisu do zapisywania ram.test_sensor_fusion_gyro_events
test_sensor_fusion_plot_rotations
: Pokazuje wyrównanie zdarzeń żyroskopu i aparatu. Ten wykres musi pokazać pasujący ruch między kamerą a żyroskopem do +/- 1 ms.test_sensor_fusion_plot_Rotations
Testowane interfejsy API:
-
android.hardware.camera2.CameraCharacteristics#LENS_FACING
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE
-
android.hardware.camera2.CameraMetadata#SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
-
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
-
android.hardware.camera2.CaptureRequest#SENSOR_TIMESTAMP
-
android.hardware.camera2.CaptureResult#SENSOR_ROLLING_SHUTTER_SKEW
Przekaz: Offset czasowy aparatu i żyroskopu jest mniejszy niż 1 ms zgodnie z sekcją CDD 7.3.9 czujniki wysokiej wierności [C-2-14] .
Mechanizmy niepowodzenia:
- Błąd przesunięcia: przesunięcie kamery-gyroskop nie jest poprawnie skalibrowane w granicach +/- 1 ms.
- Krople ramy: rurociąg nie jest wystarczająco szybki, aby uchwycić 200 klatek kolejnych.
- Błędy gniazda:
adb
nie może niezawodnie połączyć się z Dutem wystarczająco długo, aby wykonać test. - Wykres nie jest zamontowany płasko. Wykres
test_sensor_fusion_plot_rotations
ma ramki, w których rotacja żyroskopu i kamery różnią się znacznie, gdy kamera obraca się przez części wykresu, które nie są płaskie. - Kamera nie jest zamontowana płasko. Wykres
test_sensor_fusion_gyro_events
pokazuje ruch w płaszczyźnie x i y. Ta awaria występuje częściej w przednich kamerach, ponieważ tylny aparat często ma podniesiony guz do reszty korpusu telefonu, tworząc pochylenie podczas montażu tyłu telefonu na płycie montażowej.
test_video_stabilizacja
Testy, które ustabilizowane wideo obraca się mniej niż żyroskop.
Testowane interfejsy API:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
Pass: Maksymalny obrót kąta w ramach jest mniejszy niż 60% obrotu żyroskopu.
Poniżej przedstawiono przykładowe filmy z stabilizacją i bez.
Przykładowy film z stabilizacją
Przykładowy film bez stabilizacji
test_led_snapshot
Testy, że migawki LED nie nasycają ani nie zabarwiają obrazu.
Ten test dodaje kontroler oświetlenia do skrzynki fuzji czujnika, aby kontrolować światła. Po OFF
światłach test wykonuje przechwytywanie w trybie AUTO_FLASH
ustawionym na ON
. Podczas tego przechwytywania test uruchamia sekwencję wstępną z zestawem spustu aePrecapture
na START
, i ustawia zamiar przechwytywania Preview
, aby przejąć przechwytywanie za pomocą Flash.
Ponieważ przechwytywanie ma charakterystyczny hotspot z powodu Flasha, test oblicza średnią obrazu flash całego przechwytywania i weryfikuje, czy wartość znajduje się w zakresie (68, 102). Aby sprawdzić, czy obraz jest dość zrównoważony biało, test oblicza stosunek R/G i B/G i weryfikuje, czy stosunki mają w granicach 0,95 i 1,05.
Testowane interfejsy API:
-
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#FLASH_MODE
PASS: Stosunki R/G i B/G mają w granicach 0,95 i 1,05. Średnia obrazu flash jest w zakresie (68, 102).