Testy aparatu ITS

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

test_jitter

Mierzy jitter w znacznikach czasu kamery.

Testowane interfejsy API:

Pass: Różnica między klatkami wynosi co najmniej 30 ms.

test_jitter_plot.png

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:

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:

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:

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:

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:

  1. Przechwytuje obrazy dla wszystkich obsługiwanych wzorców testowych.
  2. Wykonuje prostą kontrolę poprawności wzoru testowego jednolitego koloru i pasków kolorów.

Testowane interfejsy API:

Pomyślnie: obsługiwane wzorce testowe są generowane poprawnie.

test_test_patterns_2

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:

Pass: YUV i RAW wyglądają podobnie.

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

Testuje, czy zdarzenia obrazu i czujnika ruchu występują w tej samej dziedzinie czasu.

Testowane interfejsy API:

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:

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

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:

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:

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:

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:

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

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

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_czarnytest_czarny_biały_czarny
test_czarny_biały_czarny.jpg test_czarny_biały_biały.jpg

test_black_white_plot_means

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 ramki, które są przetwarzane w inny sposób lub czy zawierają artefakty.

Testowane interfejsy API:

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

test_burst_sameness_manual_mean.jpg

test_burst_sameness_manual_plot_means

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:

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

test_capture_result_plot_lsc_auto_ch0.png

test_crop_region_raw

Sprawdza, czy strumieni RAW nie można przycinać.

Testowane interfejsy API:

Pass: obrazy YUV są przycinane do środka, ale nie obrazy RAW.

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

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 wartości poprawki i obrazu przycięcia.

Testowane interfejsy API:

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:

Wynik pozytywny: parametry surowego modelu DNG są prawidłowe. Oczekiwane wartości RGB odpowiadają rzeczywistym zmierzonym wartościom RGB.

test_dng_noise_model_plog

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:

Pass: Zdjęcia pokazują rosnącą ekspozycję bez prześwietlania w pięciu krokach.

test_ev_compensation_advanced_plot_means

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:

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

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:

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

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

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.jpgtest_jpeg=fmt=yuv.jpg
test_jpeg_fmt=jpg.jpg test_jpeg=fmt=yuv.jpg

test_zatrzask

Testuje, czy ustawienia (ekspozycja i wzmocnienie) są blokowane w prawej ramce 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.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_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:

Pass: Wartości R, G, B muszą rosnąć liniowo wraz ze zwiększoną czułością.

test_linearity_plot_means

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:

Pass: Ujęcia wyglądają spójnie.

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

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:

Pass: Wartości R i B zwiększają się zgodnie z transformacją.

test_param_color_correction_plot_means

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

test_param_color_correction_req=0.jpg

test_param_color_correctness_req=1

test_param_color_correctness_req=1.jpg (wzmocnienie R)

test_param_color_correction_req=2

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

test_param_exposure_time_frame0.jpg

test_param_exposure_time_plot

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

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_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

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

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_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

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

Testuje, czy zastosowano parametr android.shading.mode .

Testowane interfejsy API:

Pass: tryby cieniowania są przełączane, a mapy cieniowania obiektywu modyfikowane zgodnie z oczekiwaniami.

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

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:

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

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:

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

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

Przechwytuje zestaw surowych obrazów o rosnącym wzmocnieniu i mierzy szum. Przechwytuje tylko surowo, w serii.

Testowane interfejsy API:

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

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:

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

test_raw_exposure_s=55.png

(10⁰ to 1 ms, 10¹ to 10 ms, 10⁻¹ to 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_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:

Podanie: Wariancja wzrasta z każdym strzałem.

test_raw_sensitivity_variance

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

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 uję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

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

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:

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

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

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:

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

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

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:

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:

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:

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:

Pass: Przechwytuje obraz sceny z OFF efektami i obraz monochromatyczny z efektami ustawionymi na MONO .

test_efekty_MONO

test_effects_MONO.jpg

test_format_combos

Testuje różne kombinacje formatów wyjściowych.

Testowane interfejsy API:

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

test_jpeg_jakość

Średnia jasność/chroma matrycy DQT tylnego aparatu Pixel 4 w porównaniu z jakością JPEG

test_jpeg_quality nie powiódł się

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:

Pass: Znajduje trzy twarze.

test_num_faces_fd_mode_1

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:

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 na wyjściu znajdują się prawidłowe płaszczyzny U i V.

Testowane interfejsy API:

Pass: Płaszczyzny U i V nie są zamieniane.

test_reprocess_uv_swap

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:

Pass: Znajduje 3 twarze.

test_num_faces_fd_mode_1

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:

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:

Pass: Znajduje 3 twarze.

test_num_faces_fd_mode_1

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:

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:

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:

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.

scene2_f.png

scena2_f

test_num_faces

Testuje wykrywanie twarzy przy zwiększonej różnorodności odcieni skóry w scenach twarzy.

Testowane interfejsy API:

Pass: Znajduje 3 twarze.

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

scena 3

Scena 3 korzysta z wykresu ISO12233, a większość testów wykorzystuje metodę wyodrębniania wykresów w celu znalezienia wykresu w scenie. Z tego powodu większość zapisanych obrazów nie ma ramek, jak obrazy ze scen 1, 2 lub 4, a jedynie wykres. Aby wyszukiwarka map działała optymalnie, mapa musi być we właściwej orientacji.

test_3a_spójność

Testy na spójność 3A.

Testowane interfejsy API:

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

TEST_EDGE_ENHANCEMENT_EDGE = 0.JPG

TEST_EDGE_ENHANCEMENT_EDGE = 1

TEST_EDGE_ENHANCEMENT_EDGE = 1.JPG (tryb szybki)

TEST_EDGE_ENHANCEMENT_EDGE = 2

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

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:

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

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:

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

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

TEST_REPROCESS_EDGE_ENHANCEMENT_PLOT.PNG

scena 4

Scena4 składa się z czarnego okręgu na białym tle wewnątrz placu.

scena 4

scena 4

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:

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:

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 lub LENS_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_aspect_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:

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:

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:

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

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:

Przejście: Przy określonym promieniu obrazu wariancja wartości R/G i B/G musi być mniejsza niż 20%, aby przejść test.

scena 6

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.

scena 6

scena 6

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:

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:

Pass: Względny rozmiar przechwyconego koła jest dokładny w stosunku do żądanego współczynnika powiększenia, aby zapewnić prawidłowe powiększenie aparatu.

test_zoom

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:

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:

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

Vga_640x480_key_frame.png (przed zoom)

Preview_640x480_key_frame.png

Preview_640x480_key_frame.png (przed zoom)

VGA_640X480_KEY_FRAME_ZOOMED.PNG

VGA_640X480_KEY_FRAME.PNG (po zoom)

PREVIEW_640X480_KEY_FRAME_ZOOMED.PNG

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

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:

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

Scena_night

test_nocne_rozszerzenie

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:

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.

czujnik_fuzja

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 .

szachownica

Obraz szachownicy

test_multi_camera_frame_sync

Testy, które ramy znaczniki czasu przechwycone za pomocą kamery logicznej są w ciągu 10 ms poprzez obliczenie kąta kwadratów w szachownicy w celu ustalenia znacznika czasu.

Testowane interfejsy API:

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:

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

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

    test_sensor_fusion_plot_Rotations

Testowane interfejsy API:

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:

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:

PASS: Stosunki R/G i B/G mają w granicach 0,95 i 1,05. Średnia obrazu flash jest w zakresie (68, 102).