Testy kamery ITS

Na tej stronie znajdziesz obszerną listę testów w ramach pakietu testów obrazu aparatu (ITS), który jest częścią weryfikatora pakietu testów zgodności Androida (CTS). Testy ITS to testy funkcjonalne. Oznacza to, że nie mierzą one jakości obrazu, ale wszystkie reklamowane funkcje aparatu działają zgodnie z oczekiwaniami. Z tego dokumentu deweloperzy i testerzy dowiedzą się, do czego służą poszczególne testy i jak debugować błędy testów.

System ITS ogranicza testy kamery według wymaganych właściwości kamery, poziomu interfejsu API i poziomu klasy wydajności multimediów (MPC). Na poziomie interfejsu API ITS używa ro.product.first_api_level do brania testów dodanych na określonym poziomie interfejsu API, które sprawdzają działanie funkcji na niższych poziomach interfejsu API pod kątem negatywnych wrażeń użytkownika. ITS używa ro.vendor.api_level do testowania funkcji dodanych na określonym poziomie interfejsu API, które wymagają nowych możliwości sprzętowych. Jeśli dla urządzenia określona jest wartość ro.odm.build.media_performance_class, ITS wymaga wykonania określonych testów w zależności od poziomu MPC.

Testy są pogrupowane według sceny:

Opisy poszczególnych scen znajdziesz w odpowiednich sekcjach.

scene0

Testy sceny 0 nie wymagają żadnych informacji o scenie. Podczas testowania żyroskopu i wibracji telefon musi jednak pozostawać w spoczynku.

test_jitter

Mierzy jitter w sygnaturach czasowych kamer.

Przetestowane interfejsy API:

Przechodzi: 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 jest w tym przypadku niewielki.

test_metadata

Sprawdza poprawność wpisów metadanych. Analizuje wyniki i obiekt kamery. W tym teście wykorzystano ekspozycję auto_capture_request i zyskuje wartości, ponieważ treść zdjęcia nie jest ważna.

Testowane interfejsy API:

Przechodzi: tagi rollingShutterSkew, frameDuration, timestampSource, croppingType, blackLevelPattern, pixel_pitch, FoV i hyperfocal distance są obecne i mają prawidłowe wartości.

test_request_capture_match

Testuje, czy urządzenie zapisuje prawidłowe wartości ekspozycji i wzmocnienia, odczytując metadane z sesji.

Testowane interfejsy API:

Prześlij: wartości metadanych żądania i zapisu są zgodne we wszystkich ujęciach.

test_sensor_events

Testuje zapytania urządzenia i wypisuje zdarzenia czujnika na urządzeniach, które reklamują obsługę fuzji czujników. Wymagane czujniki to akcelerometr, żyroskop i magnetometr. Ten test działa tylko wtedy, gdy ekran jest włączony, co oznacza, że urządzenie nie jest w stanie gotowości.

Przetestowane interfejsy API:

Prześlij: otrzymywane są zdarzenia z każdego czujnika.

test_solid_color_test_pattern

Służy do sprawdzania, czy wzorce testowe jednolitych kolorów są prawidłowo generowane na potrzeby wyciszania kamery. Jeśli wyciszenie aparatu jest obsługiwane, należy obsługiwać testowe wzory w jednolitym kolorze. Jeśli wyciszenie kamery nie jest obsługiwane, testowe wzory jednolitych kolorów są testowane tylko wtedy, gdy funkcja jest reklamowana.

Jeśli obrazy RAW są obsługiwane, testowane jest też przypisywanie 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 czarny kolor.

Testowane interfejsy API:

Przeszedł: obsługiwane jednolite wzory testowe mają prawidłowy kolor, a obraz ma niską zmienność.

test_test_pattern

Testuje parametr android.sensor.testPatternMode, aby rejestrować klatki dla każdego prawidłowego wzoru testowego, i sprawdza, czy klatki są generowane prawidłowo w przypadku jednolitych kolorów i pasków kolorów. Ten test obejmuje te czynności:

  1. Przechwytuje obrazy pod kątem wszystkich obsługiwanych wzorców testowych.
  2. Przeprowadza prostą weryfikację poprawności wzoru testowego jednolitego koloru i pasków kolorów.

Testowane interfejsy API:

Przeszedł: obsługiwane wzorce testowe są generowane prawidłowo.

wzorce_testu_2

test_test_patterns_2.jpg

test_tonemap_curve

Testowanie konwersji wzorca testowego z RAW na YUV z użyciem liniowej mapy tonalnej. Ten test wymaga parametru android.sensor.testPatternMode = 2 (COLOR_BARS), aby wygenerować idealny wzór obrazu do konwersji mapy tonacji. Sprawdzanie, czy pipeline ma prawidłowe wartości wyjściowe kolorów z mapą tonalną liniową i idealnym obrazem wejściowym (opartym na test_test_patterns).

Testowane interfejsy API:

Prześlij: obrazy YUV i RAW są do siebie podobne.

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

Sprawdza, czy zdarzenia związane z obrazem i czujnikiem ruchu znajdują się w tej samej domenie czasowej.

Testowane interfejsy API:

Pass: sygnatury czasowe ruchu znajdują się między sygnaturami czasowymi 2 obrazów.

test_vibration_restriction

Pozwala sprawdzić, czy wibracje urządzenia działają zgodnie z oczekiwaniami.

Testowane interfejsy API:

Przechodzi: urządzenie nie wibruje, gdy wyciszenie zostanie zastosowane przez interfejs API ograniczeń dźwięku w aparacie.

scene1

scene1 to wykres w kolorze szarym. Szara tabela musi obejmować 30% środkowej części pola widzenia kamery. Wyraźnie szarego wykresu nie można uznać za 3A (automatyczna ekspozycja, automatyczna równowaga bieli, automatyczny autofokus), ponieważ środkowy obszar nie zawiera żadnych cech. Żądanie przechwytywania określa jednak całą scenę, która obejmuje wystarczającą liczbę funkcji, by umożliwić 3A zgodność.

Kamery RFoV można testować w ramach platformy testowej WFoV lub RFoV. Jeśli kamera RFoV została przetestowana w urządzeniu testowym WFoV, wykres jest skalowany o 2⁄3, aby zapewnić pewne granice szarego wykresu w FoV i umożliwić osiągnięcie zgodności 3A. Bardziej szczegółowe opisy urządzeń testowych z kamerą znajdziesz w artykule [GA4] Kamera z opakowania.

scene1

scene1: wykres w pełnej wielkości (po lewej). Wykres po skalowaniu do ⅔ (po prawej).

test_ae_precapture_trigger

Sprawdza maszynę stanu AE podczas korzystania z aktywatora wstępnego przechwytywania. Przechwytuje 5 ręcznych żądań z wyłączonym AE. Ostatnie żądanie zawiera aktywator wstępnego przechwytywania AE, który należy zignorować, ponieważ jest wyłączona.

Testowane interfejsy API:

Pass: AE zbiega się.

test_automatyczna_vs_ręczna

Testy, w ramach których zostały wykonane zdjęcia automatyczne i ręczne, wyglądają tak samo.

Przetestowane interfejsy API:

Pass: ręczne wzmocnienie i transformacja balansu bieli podawane w każdym wyniku rejestrowania są zgodne z automatycznym balansem bieli estimate z algorytmu 3A aparatu.

test_auto_vs_manual_auto

test_auto_vs_manual_auto.jpg

test_auto_vs_ręczny_wb

test_auto_vs_manual_wb.jpg

test_auto_vs_manual_manual_wb_tm

test_auto_vs_manual_manual_wb_tm.jpg

test_czarna_biała

Testuje, czy urządzenie wyświetla obrazy w kolorze czarno-białym. Robi 2 zdjęcia, pierwszy z bardzo niskim wzmocnieniem i krótką ekspozycją w celu uzyskania czarnego zdjęcia, a drugi z bardzo dużym wzmocnieniem i długim czasem naświetlania, co daje białe zdjęcie.

Testowane interfejsy API:

Pass: generuje obrazy czarno-białe. Nasycony kanał białych obrazów ma wartości RGB [255, 255, 255] z marginesem błędu poniżej 1%.

test_black_white_black test_black_white_black
test_black_white_black.jpg test_black_white_white.jpg

test_black_white_plot_means

test_czarna_biała_plotka.png

przechwyt_z_testu_serii

Sprawdza, czy cały potok przechwytywania jest w stanie dotrzymać tempa przechwytywania pełnowymiarowych plików i czasu pracy procesora.

Testowane interfejsy API:

Pass: rejestruje serię zdjęć w pełnym rozmiarze, sprawdza utratę klatek i jasność obrazu.

test_burst_sameness_manual

Robi 5 serii po 50 zdjęć przy ręcznym ustawieniu przechwytywania i sprawdza, czy wszystkie zdjęcia są identyczne. Ten test pozwala określić, czy występują sporadyczne klatki, które są przetwarzane inaczej lub zawierają artefakty.

Testowane interfejsy API:

Prześlij: obrazy są wizualnie identyczne i mają identyczne wartości RGB.

Niepowodzenie: pokazuje skok lub spadek średniej wartości RGB na początku każdego wybuchu.

  • Tolerancja wynosi 3%, gdy first_API_level < 30
  • Tolerancja wynosi 2%, gdy first_API_level >= 30

test_burst_sameness_manual_mean

test_burst_sameness_manual_mean.jpg

test_sam_samodzielna_ręczna_środki

test_burst_sameness_manual_plot_means.png

test_capture_result

Testy, czy prawidłowe dane wracają w obiektach CaptureResult. Czy masz tryb automatyczny, ręczny i automatyczny?

Przetestowane interfejsy API:

Prawidłowo: metadane są ważne we wszystkich zapisach, a ustawienia ręczne nie wyciekają do drugiego przechwytywania automatycznego. Rysuje korektę cieniowania obiektywu dla wykonanych zdjęć.

test_capture_result_plot_lsc_auto_ch0

test_capture_result_plot_lsc_auto_ch0.png

test_crop_region_raw

Sprawdzanie, czy strumienie RAW nie mogą być usuwane.

Testowane interfejsy API:

Prześlij: obrazy YUV są przycinane w centrum, ale nie obrazy RAW.

test_przycięcia_w_regionie_raw_comp_raw_przycisk

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

Sprawdzanie, czy regiony przycinania działają. Przejmuje pełny obraz i tworzy łaty w 5 różnych regionach (narożniki i środku). Wykonuje zdjęcia z przycięciem ustawionym dla 5 regionów. Porównuje wartości pliku łatki i obrazu przycięcia.

Przetestowane interfejsy API:

Prawidłowo: obraz przyciętego obszaru odpowiada poprawce odpowiadającej obrazowi przycięcia.

test_dng_noise_model

Sprawdza, czy parametry nieprzetworzonego modelu DNG są prawidłowe. Wykres przedstawia zmierzoną odchylenie standardowe środkowego fragmentu karty w kolorze szarym na zdjęciach w formacie RAW wykonanych przy różnych czułościach. Wartości te są porównywane z wartościami odchylenia standardowego oczekiwanego przy każdej czułości przez model szumu DNG w interfejsie HAL aparatu (na podstawie parametrów O i S zwróconych w obiektach wyników rejestracji). Aby dowiedzieć się więcej o modelu szumu DNG, pobierz ten dokument na temat modelu szumu DNG.

Testowane interfejsy API:

Prześlij: parametry modelu DNG w postaci surowych danych są prawidłowe. Oczekiwane wartości RGB odpowiadają rzeczywistym zmierzonym wartościom RGB.

testowy_model_szumu_dng_plog

test_dng_noise_model_plog.png

zaawansowana_kompensacja_testu_ev

Testuje, czy zastosowano kompensację wartości ekspozycji (EV). Test zwiększa ekspozycję w 8 krokach i porównuje zmierzoną jasność z oczekiwaną jasnością. Oczekiwane wartości są obliczane na podstawie jasności obrazu bez zastosowanej kompensacji EV. Wartość oczekiwana zostanie nasycona, jeśli obliczone wartości przekroczą rzeczywisty zakres wartości obrazu. Test kończy się niepowodzeniem, jeśli oczekiwane i zmierzone wartości nie są zgodne lub obrazy nadmiarowo wyświetlają się w ciągu 5 kroków.

Testowane interfejsy API:

Prawidłowa: obrazy zwiększają ekspozycję bez nadmiernego naświetlania z założenia w ciągu 5 kroków.

test_ev_compensation_advanced_plot_means

test_ev_compensation_advanced_plot_means.png

test_ev_compensation_basic

Testuje, czy kompensacja EV jest stosowana za pomocą zakresu utworzonego za pomocą funkcji CONTROL_AE_COMPENSATION_STEP. W przypadku każdego z tych wartości rejestrowanych jest 8 klatek.

Testowane interfejsy API:

Pass: rejestruje wzrost luminacji przy zwiększonym ustawieniu kompensacji EV. 8 ujęć zarejestrowanych dla każdego ustawienia kompensacji EV ma stabilne wartości luminacji.

podstawowa_kompensacja_testu_ev

test_ev_compensation_basic.png

test_exposure_x_iso

Testy, które sprawdzają, czy przy różnych wartościach ISO i czasu naświetlania uzyskuje się stały czas naświetlania. Wykonuje serię ujęć, w których czas naświetlania i wartość ISO są dobrane tak, aby się zrównoważyć. Wyniki powinny mieć tę samą jasność, ale w trakcie sekwencji obraz powinien stać się bardziej szumny. Sprawdza, czy średnie wartości próbek pikseli są zbliżone do siebie. Zapewnia to, że obrazy nie są ograniczane do wartości 0 lub 1 (co spowodowałoby, że wyglądałyby jak płaskie linie). Test można też uruchomić z obrazami RAW, ustawiając w pliku konfiguracji flagę debug.

Testowane interfejsy API:

Pass: zdjęcia mają tę samą jasność, ale są bardziej ziarniste przy wyższym ISO. Plany RGB są płaskie, gdy wartość ekspozycji ISO* jest stała w testowanej przestrzeni wzmocnienia.

Mechanizm awarii:

  • test_exposure_plot_means.png wraz ze wzrostem wartości mnożnika wzmocnienia (oś X) uśrednione wartości na płaszczyźnie RGB (oś Y) zaczynają odbiegać od wartości mnożnika niskiego wzmocnienia.

test_exposure_plot_means

test_ekspozycji_testowej.png

test_ekspozycji_mult=1,00 test_exposure_mult=64.00
test_exposure_mult=1.00.jpg test_exposure_mult=64.00.jpg

test_jpeg

Testy przekonwertowanych obrazów YUV i obrazów JPEG z urządzenia wyglądają tak samo. Test pobiera środkowe 10% obrazu, oblicza wartość RGB i sprawdza, czy są one ze sobą zgodne.

Testowane interfejsy API:

Prawidłowo: średnia różnica RGB między każdym obrazem wynosi mniej niż 3%.

test_jpeg_fmt=jpg.jpg test_jpeg=fmt=yuv.jpg
test_jpeg_fmt=jpg.jpg test_jpeg=fmt=yuv.jpg

test_latching

Testuje, czy ustawienia (ekspozycja i wzmocnienie) zachowują właściwą ramkę w przypadku kamer FULL i LEVEL_3. Wykonuje serię ujęć, używając kolejnych żądań, zmieniając parametry żądania między ujęciami. Sprawdza, czy obrazy mają oczekiwane właściwości.

Testowane interfejsy API:

Prześlij: obrazy [2, 3, 6, 8, 10, 12, 13] mają zwiększone ISO lub ekspozycję i wyświetlają się z wyższymi wartościami średnich 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=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=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=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=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_linearity

Testuje, czy przetwarzanie na urządzeniu można odwrócić do pikseli liniowych. Przechwytuje serię ujęć, gdy urządzenie jest skierowane na jednolity cel.

Testowane interfejsy API:

Pass: wartości R, G i B muszą wzrastać liniowo wraz ze wzrostem czułości.

test_linearity_plot_means

test_linearity_plot_means.png

test_zablokowany_seria

Testuje blokowanie 3A i przesyłanie YUV (z użyciem ustawienia automatycznego). Ten test jest zaprojektowany tak, aby zdać go nawet na urządzeniach z ograniczonymi możliwościami, które nie mają MANUAL_SENSOR ani PER_FRAME_CONTROLS. Test sprawdza spójność obrazu YUV, a sprawdzanie częstotliwości klatek odbywa się w CTS.

Testowane interfejsy API:

Prześlij: nagrania są spójne.

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

Sprawdzanie, czy parametry android.colorCorrection.* są stosowane po ustawieniu. Powoduje wykonanie ujęć o różnych wartościach przekształcenia i wzmocnienia oraz sprawdzenie, czy wyglądają odpowiednio. Przekształcanie i wzmocnienie są wybierane w taki sposób, aby dane wyjściowe zmieniały się na coraz bardziej czerwone lub niebieskie. Używa mapy tonacji liniowej. Mapowanie tonów to technika używana w przetwarzaniu obrazów, która pozwala mapować jeden zestaw kolorów na drugi i przybliżyć wygląd obrazów o dużym zakresie dynamiki w medium o mniejszym zakresie dynamicznym.

Testowane interfejsy API:

Pass: wartości R i B są wzmacniane zgodnie z transformacją.

test_parametr_kolor_korekta_plot_means

test_parametr_kolor_korekta_plot_means.png

*Oś X to żądania rejestracji: 0 = jedność, 1=czerwony boost, 2= niebieski boost

test_param_color_correction_req=0

test_param_color_correction_req=0.jpg

test_param_color_correctness_req=1

test_param_color_correctness_req=1.jpg (R boost)

test_param_color_improveion_req=2

test_param_color_correction_req=2.jpg (wzmocnienie B)

test_param_flash_mode

Sprawdza, czy parametr android.flash.mode jest stosowany. Ręcznie ustawia ekspozycję na ciemną stronę, aby było oczywiste, czy błysk został użyty, czy nie, i używa mapy tonacji liniowej. Sprawdza środek obrazu kafelka, aby sprawdzić, czy występuje duży gradient, który służy do weryfikacji, czy błysk został uruchomiony.

Testowane interfejsy API:

Przeszedł:środek obrazu w płytce ma duży gradient, co oznacza, że błysk został użyty.

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

redukcja_szumie_testu

Sprawdza, czy parametr android.noiseReduction.mode jest poprawnie stosowany po ustawieniu. Rejestrowanie obrazów w przyciemnionym pomieszczeniu. Używa wysokiego wzmocnienia analogowego, aby zapewnić prawidłowy obraz. Rejestruje 3 obrazy: „Szybka” i „wysoka jakość” przy wyłączonej opcji NR. Wykonuje też zdjęcie z małym wzmocnieniem i wyłączonym redukcją szumów, a z różnicy tych wartości korzysta jako wartości bazowej. Im wyższy współczynnik SNR (stosunek sygnału do szumu), tym lepsza jakość obrazu.

Przetestowane interfejsy API:

Pass: SNR zmienia się w zależności od różnych trybów redukcji szumów i działa podobnie jak na wykresie poniżej.

parametr_testowy_szumu_z_redukcją_wykresu_SNR

test_param_noise_reduction_plot_SNRs.png

0: OFF, 1: FAST, 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

parametr_test_noise_reduction_low_gain

test_param_noise_reduction_low_gain.jpg

test_param_shading_mode

Testuje, czy parametr android.shading.mode jest stosowany.

Testowane interfejsy API:

Pass: tryby cieniowania są zmieniane, a mapy cieniowania obiektywu są modyfikowane zgodnie z oczekiwaniami.

test_param_shading_mode_ls_maps_mode_0_loop_0 (pętla_0)

test_param_shading_mode_ls_maps_mode_0_loop_0.png

test_param_shading_mode_ls_maps_mode_1_loop_0 (pętla_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 parametr android.tonemap.mode jest stosowany. Stosuje różne krzywe mapowania odcieni do każdego kanału R, G i B oraz sprawdza, czy obrazy wyjściowe są modyfikowane zgodnie z oczekiwaniami. Ten test składa się z 2 testów: test1 i test2.

Testowane interfejsy API:

Pass:

  • test1: oba obrazy mają liniową mapę tonalną, ale n=1 ma ostrzejszy gradient. Kanał G (zielony) jest jaśniejszy w przypadku obrazu n=1.
  • test2: ta sama mapa tonacji, ale o innej długości. Obrazy są identyczne.
test_param_tonemap_mode_n=0.jpg test_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

Sprawdzanie wzmocnienia czułości RAW. Rejestruje zestaw obrazów RAW i YUV o różnej czułości, publikuje kombinację wzmocnienia czułości RAW i sprawdza, czy średni piksel wyjściowy pasuje do ustawień żądania.

Testowane interfejsy API:

Pass: zdjęcia RAW stają się ciemniejsze, gdy wzmacniacz jest coraz większy, a zdjęcia YUV pozostają o stałej jasne.

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_czułość_boost_raw_średnie

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

czułość_testu_raw_burst

Rejestruje zestaw nieprzetworzonych obrazów o rosnącym wzmocnieniu i mierzy szum. rejestruje tylko w formacie raw w trybie seryjnym;

Testowane interfejsy API:

Pass: każde kolejne ujęcie jest bardziej szumne od poprzedniego, ponieważ wzrasta wzmocnienie.

Używa wariancji komórki siatki statystyk pośrodku.

test_raw_burst_sensitivity_variance

test_raw_burst_sensitivity_variance.png

test_raw_exposure

rejestruje zestaw obrazów w formacie RAW z rosnącym czasem ekspozycji i mierzy wartości pikseli.

Testowane interfejsy API:

Pass: zwiększenie ISO (wzmocnienie) powoduje, że piksele stają się bardziej czułe 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

wrażliwość_testu_nieprzetworzonego

Wykonuje serię zdjęć w formacie RAW ze wzrastającą czułością i mierzy szum (wariancję) w środku 10% obrazu. Sprawdzanie, czy każdy kolejny obraz jest bardziej zniekształcony niż poprzedni.

Przetestowane interfejsy API:

Podania: wariancja zwiększa się z każdym uderzeniem.

test_raw_sensitivity_variance

test_raw_czułość_wariancji.png

test_reprocess_noise_reduction

Testuje, czy android.noiseReduction.mode jest stosowany do ponownego przetwarzania żądań. Zdjęcie przetworzone z użyciem słabo oświetlonego aparatu. Korzysta z wysokiego wzmocnienia analogowego, co zapewnia szum podczas robienia zdjęcia. Rejestruje 3 przetworzone obrazy: bez NR, „szybko” i „wysoka jakość”. Wykonuje przetworzony ponownie obraz z małym wzmocnieniem i wyłączonym redukcją szumów, a następnie używa wariancji tego obrazu jako wartości bazowej.

Testowane interfejsy API:

Przepuszczenie: FAST >= OFF, HQ >= FAST, HQ >> OFF

Typowy wykres SNR vs NR_MODE

Typowy wykres SNR i NR_MODE

test_tonemap_sequence

Testuje sekwencję ujęć z różnymi krzywą mapowania tonacji. Wykonywanie 3 ujęć ręcznych z tonacją liniową. Zrobi 3 zdjęcia ręczne z domyślnym tonemapem. Oblicza różnicę między każdą kolejną parą klatek.

Testowane interfejsy API:

Pozytywny wynik: 3 identyczne klatki, a następnie 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łaszane rozmiary i formaty przeznaczone do przechwytywania obrazów działają. Używa żądania ręcznego z tonowaniem liniowym, aby YUV i JPEG wyglądały tak samo po przekonwertowaniu przez moduł image_processing_utils. Obrazy nie są zapisywane domyślnie, ale można je zapisać, włączając funkcję debug_mode.

Testowane interfejsy API:

Prawidłowo: wszystkie centra obrazów mają maksymalną wartość RMS (średnią kwadratową sygnału) w przypadku obrazów 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łaszane rozmiary i formaty do przechwytywania obrazu działają prawidłowo.

Testowane interfejsy API:

Przeszedł: test się zakończył i zwrócił żądane obrazy.

test_yuv_plus_dng

test_yuv_plus_dng.jpg

test_yuv_plus_jpeg

Testuje przechwytywanie pojedynczej klatki jako danych YUV i JPEG. Wykorzystuje żądanie ręczne z liniowym mapą tonu, dzięki czemu YUV i JPEG wyglądają tak samo po konwersji za pomocą modułu image_processing_utils.

Testowane interfejsy API:

Pass: obrazy YUV i JPEG są podobne i mają mniej niż 1% różnicy RMS (średniej kwadratowej sygnału).

test_yuv_plus_jpg_jpg.jpg test_yuv_plus_jpeg_yuv.jpg
test_yuv_plus_jpg_jpg.jpg test_yuv_plus_jpeg_yuv.jpg

test_yuv_plus_raw

Sprawdza, czy pojedyncza klatka jest zapisywana zarówno w formacie RAW/RAW10/RAW12, jak i YUV, jeśli jest obsługiwany. Używa żądania ręcznego z tonowaniem liniowym, więc spodziewane jest, że wartości RAW i YUV będą takie same. Porównuje wartości RGB obrazu przekształconego do formatu RGB w centrum obrazu o wartości 10%. Dziennikiandroid.shading.mode.

Przetestowane interfejsy API:

Przechodzi: obrazy YUV i nieprzetworzone są podobne i różnią się o mniej niż 3,5% RMS (wartość średniokwadratowa pierwiastek kwadratowy sygnału).

test_yuv_plus_raw_shading=1_raw.jpg test_yuv_plus_raw_shading=1_yuv.jpg
test_yuv_plus_raw_shading=1_raw.jpg test_yuv_plus_raw_shading=1_yuv.jpg

scene2_a

Scena 2_a zawiera 3 twarze na szarym tle i w neutralnym ubraniu. Twarze są wybierane i mają szeroki zakres odcieni skóry. Aby wykrywanie twarzy działało optymalnie, wykres musi mieć prawidłową orientację.

scene2_a

scene2_a

testowa_automatyczna ramka

Testuje działanie automatycznego kadrowania kamery. Wykonuje duże powiększenie, aby żadne z twarzy w scenie nie było widoczne, włącza tryb automatycznego kadrowania, ustawiając AUTOFRAMINGCaptureRequest na True, i sprawdza, czy wszystkie twarze w pierwotnej scenie można wykryć, gdy stan się zbliża (czyli gdy AUTOFRAMING_STATECaptureResult ma wartość AUTOFRAMING_STATE_CONVERGED).

Przetestowane interfejsy API:

Pozytywny: wykryto wszystkie 3 twarze.

test_display_p3

Testuje wyświetlenie P3 w formacie JPEG przy użyciu interfejsu API ColorSpaceProfiles. Sprawdzanie, czy przechwycony plik JPEG zawiera odpowiedni profil ICC w nagłówku i czy zawiera kolory spoza zakresu sRGB.

Testowane interfejsy API:

Przeszedł: plik JPEG zawiera profil ICC Display P3 i kolory spoza gamy sRGB.

test_effects

Wykonuje ujęć dla obsługiwanych efektów aparatu i sprawdza, czy są one generowane prawidłowo. W ramach testu sprawdzane są tylko efekty OFF i MONO, ale obrazy są zapisywane w przypadku wszystkich obsługiwanych efektów.

Testowane interfejsy API:

Pass: rejestruje obraz sceny z efektami OFF oraz obraz monochromatyczny z efektami ustawionymi na MONO.

test_effects_MONO

test_effects_MONO.jpg

test_format_combos

Testowanie różnych kombinacji formatów wyjściowych.

Testowane interfejsy API:

Powodzenie: wszystkie kombinacje zostały prawidłowo przechwycone.

test_num_faces

Testuje wykrywanie twarzy.

Testowane interfejsy API:

Prawidłowo: znajduje trzy twarze.

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

test_reprocess_uv_swap

Testy, które potwierdzają, że ponowne przetwarzanie YUV-a nie powoduje zamiany płaszczyzn U i V. Jest to wykrywane przez zsumowanie bezwzględnych różnic (SAD) między przetworzonym obrazem a nieprzetworzonym obrazem. Jeśli zamiana płaszczyzn U i V w przetworzonych danych wejściowych powoduje wzrost SAD, przyjmuje się, że dane wyjściowe mają prawidłowe płaszczyzny U i V.

Testowane interfejsy API:

Przepustka: samoloty U i V nie są zamieniane.

test_reprocess_uv_swap

test_reprocess_uv_swap.png

scene2_b

test_num_faces

Testowanie wykrywania twarzy z większą różnorodnością odcieni skóry w scenach z twarzami.

Przetestowane interfejsy API:

Pass: znajduje 3 twarze.

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

test_yuv_jpeg_capture_sameness

Wykonywanie dwóch zdjęć w największych wspólnych formatach YUV i JPEG o tych samych proporcjach co największy format JPEG, ale nieprzekraczający rozdzielczości 1920 x 1440. Ustawia jpeg.quality na 100 i przechwytuje żądanie dotyczące dwóch powierzchni. Konwertuje oba obrazy na tablice RGB i oblicza 3D root mean square (RMS) difference (różnica średniokwadratowa w przestrzeni 3D) między tymi obrazami.

Test ten sprawdza też, czy dane wyjściowe YUV we wszystkich obsługiwanych przypadkach użycia strumieni są w wystarczającym stopniu podobne do danych YUV w przypadku użycia STILL_CAPTURE.

Testowane interfejsy API:

Prześlij: obrazy YUV i JPEG w przypadku użycia STILL_CAPTURE różnią się o mniej niż 3% RMS (wartość RMS sygnału); obrazy YUV we wszystkich obsługiwanych przypadkach użycia różnią się o mniej niż 10% RMS od obrazów YUV w przypadku użycia STILL_CAPTURE.

scene2_c

test_num_faces

Testowanie wykrywania twarzy z większą różnorodnością odcieni skóry w scenach z twarzami.

Przetestowane interfejsy API:

Pass: znajduje 3 twarze.

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

test_jpeg_capture_perf_class

Testowanie opóźnienia rejestrowania JPEG w przypadku aparatów o klasie wydajności S zgodnie z opisem w sekcji 2.2.7.2 Aparat w CDD.

Przyjęcie: KAMERA 2 MUSI mieć opóźnienie w przechwytywaniu JPEG < 1000 ms w rozdzielczości 1080p, zmierzone przez test wydajności aparatu CTS w warunkach oświetlenia ITS (3000 K) dla obu głównych aparatów.

test_camera_launch_perf_class

Testy opóźnienia uruchamiania aparatu w przypadku klasy wydajności S zgodnie z opisem w sekcji 2.2.7.2 Camera w dokumentacji CDD.

Pozytywny: czas oczekiwania na uruchomienie aplikacji camera2 (od otwarcia aparatu do pierwszego podglądu) MUSI wynosić mniej niż 600 ms, co jest mierzone przez test wydajności aparatu CTS w warunkach oświetlenia (3000 K) dla obu głównych aparatów.

test_default_camera_hdr

Testuje, czy domyślne przechwytywanie kamery jest w przypadku klasy wydajności 15 w trybie ultra HDR zgodnie z sekcją 2.2.7.2 Camera w CDD.

Prawidłowo: w przypadku urządzeń klasy 15 domyślny aparat MUSI być rejestrowany w trybie ultra HDR.

scena2_d

test_num_faces

Testowanie wykrywania twarzy z większą różnorodnością odcieni skóry w scenach z twarzami.

Przetestowane interfejsy API:

Pass:znajduje 3 twarze.

scene2_e

test_continuous_picture

Przy pierwszym ustawieniu żądania przechwytywania jest rejestrowane 50 klatek rozdzielczości VGA. android.control.afMode = 4 (CONTINUOUS_PICTURE).

Przetestowane interfejsy API:

Przechodzi: system 3A stabilizuje się do końca przechwytywania 50 klatek.

test_num_faces

Testowanie wykrywania twarzy z większą różnorodnością odcieni skóry w scenach z twarzami.

Przetestowane interfejsy API:

Pass: znajduje 3 twarze.

scene2_f

Scena scene2_f zawiera 3 twarze na białym tle i w białej odzieży. Twarze mają szeroki zakres odcieni skóry i wysoki kontrast z tłem.

scene2_f.png

scene2_f

test_liczba_twarzy

Testowanie wykrywania twarzy z większą różnorodnością odcieni skóry w scenach z twarzami.

Przetestowane interfejsy API:

Pass: znajduje 3 twarze.

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

scene3

Scena 3 wykorzystuje wykres ISO 12233, a większość testów używa metody wyodrębniania wykresów, aby znaleźć wykres w scenie. Z tego powodu większość zapisanych obrazów nie ma obramowania, np. sceny 1, 2 lub 4, ale tylko wykres. Aby wyszukiwarka wykresów działała optymalnie, wykres musi być w prawidłowej orientacji.

test_edge_enhancement

Testuje, czy parametr android.edge.mode jest prawidłowo stosowany. Przechwytuje obrazy nieprzetworzone dla każdego trybu krawędzi i zwraca ostrość obrazu wyjściowego oraz metadane wyniku przechwycenia. Przetwarza żądanie przechwycenia z użyciem danego trybu krawędzi, czułości, czasu ekspozycji, odległości ogniskowej i parametru powierzchni wyjściowej.

Przepuść: tryb HQ (2) jest ostrzejszy niż tryb OFF (0). Tryb FAST (1) jest (1) ostrzejszy niż tryb OFF. Tryb HQ jest ostrzejszy lub równy trybowi FAST.

Testowane interfejsy API:

Parametry aparatu, których dotyczy problem:

  • 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

Sprawdza, czy obraz jest prawidłowo zorientowany zgodnie z CDD sekcja 7.5.2 Przedni aparat [C-1-5].

Obrazy odbite lustrzaniem, odwrócone lub obrócone można rozpoznać po diamencie w pobliżu środka.

Pozytywny: obraz nie jest odwrócony, odbity czy obrócony.

test_flip_mirror_scene_patch

test_flip_mirror_scene_patch.jpg

test_imu_drift

Sprawdza, czy inercyjna jednostka miary (IMU) ma stabilną wartość wyjściową przez 30 sekund, gdy urządzenie jest w tym samym miejscu, i rejestruje podgląd w wysokiej rozdzielczości.

Przetestowane interfejsy API:

Pomyślne:

  • Odchylenie żyroskopu w czasie testu jest mniejsze niż 0,01 rad.
  • Odchylenie standardowe odczytu żyroskopu jest mniejsze niż 1E-7 rad2/s2/Hz w czasie testu.
  • Odchylenie wektora obrotu jest mniejsze niż 0,01 rad w czasie testu.
  • (nie jest to jeszcze wymagane) odchylenie żyroskopu jest mniejsze niż 1 stopień na sekundę.

test_imu_drift_gyro_drift.png

test_imu_drift_gyro_drift.png

test_drift_rotacji_wektora_imu.png

test_imu_drift_rotation_vector_drift.png

test_poziomy_w_pionie

Sprawdza, czy w przypadku czujników orientujących się w orientacji poziomej orientacja pionowa działa prawidłowo.

Testowane interfejsy API:

Przeszedł: test jest w stanie zlokalizować wykres z oczekiwaną rotacją (0 stopni, gdy zastąpienie orientacji poziomej przez pionową jest wyłączone, 90 stopni, gdy jest włączone).

test_landscape_to_portrait

test_landscape_to_portrait.png

test_lens_movement_reporting

Sprawdzanie, czy flaga ruchu obiektywu jest prawidłowo zgłaszana. Wykonuje serię 24 obrazów, z których pierwsze 12 jest rejestrowane z optymalną odległością ostrości (znalezioną przez 3A), a ostatnie 12 z minimalną odległością ostrości. W okolicach kadru 12 obiektyw się porusza, co powoduje spadek ostrości. Ostrość stabilizuje się, gdy obiektyw przesunie się do ostatecznej pozycji. Flaga ruchu obiektywu powinna być odnotowana we wszystkich klatkach, w których ostrość jest pośrednia w przypadku kilku pierwszych klatek, gdy obiektyw jest ustawiony w optymalnej odległości ogniskowej, oraz w ostatnich klatkach, w których obiektyw jest nieruchomy i mają minimalną odległość ogniskową. Nie ma znaczenia, w którym dokładnie ujęciu obiektyw się porusza: sprawdzamy tylko, czy flaga ruchu jest ustawiona, gdy obiektyw się porusza.

Testowane interfejsy API:

Przechodzi: flaga ruchu obiektywu ma wartość True w ramce z zmianą ostrości.

Mechanizmy niepowodzenia:

  • lens_moving: True (android.hardware.camera2.CaptureResult#LENS_STATE = 1) w polu test_log.DEBUG jest odczytywane tylko w klatkach, w których ostrość się nie zmienia.
  • Klatki z wartością lens_moving: False(android.hardware.camera2.CaptureResult#LENS_STATE = 0) w funkcji test_log.DEBUG mają inną ostrość niż pierwsze kilka klatek przy optymalnej odległości ogniskowej lub ostatnie kilka klatek przy minimalnej odległości ogniskowej.

test_reprocess_edge_enhancement

Testuje, czy obsługiwane metody ponownego przetwarzania w celu wzmocnienia krawędzi działają prawidłowo. Przetwarza żądanie przechwycenia z określonym trybem ponownego przetwarzania krawędzi i porównuje różne tryby przechwycenia z wyłączonymi trybami ponownego przetwarzania krawędzi.

Przetestowane interfejsy API:

Prześlij: ostrość w różnych trybach krawędzi jest prawidłowa. HQ (tryb 2) jest dłuższy niż OFF (tryb 0), a ulepszenia w różnych trybach są podobne.

test_reprocess_edge_enhancement_plot

test_reprocess_edge_enhancement_plot.png

scena4

Scena 4 to czarny okrąg na białym tle w kwadracie. Testy w scenie4 mogą być wrażliwe na wyrównanie, dlatego od wersji 15 możesz użyć opcji check_alignment.py w katalogu narzędzi, aby włączyć sprawdzanie wyrównania obiektu testowego i wykresu.

scene4

scene4

test_podglądu_fov_30_60fps

Testuje, czy filmy w wersji testowej 30 FPS i 60 FPS mają jednakową perspektywę. Test obejmuje 2 filmy: jeden z 30 FPS, a drugi z 60 FPS. Z każdego filmu wybierana jest reprezentatywna klatka i analizowana jest w celu zagwarantowania, że zmiany oglądalności w obu filmach są zgodne ze specyfikacją. Testuje, czy współczynnik kształtu koła pozostaje stały, środek koła pozostaje stabilny, a promień koła pozostaje stały.

Testowane interfejsy API:

Prześlij: obrazy nie są rozciągnięte, środek obrazów nie różni się o więcej niż 3%, a maksymalna zmiana współczynnika proporcji między filmami w 30 FPS i 60 FPS nie przekracza 7,5%.

Mechanizmy niepowodzenia:

  • Krąg z filmu w 30 FPS jest znacznie mniejszy niż z filmu w 60 FPS.
  • Okrąg na zrobionym zdjęciu jest zniekształcony przez łańcuch przetwarzania.
  • Okrąg na zarejestrowanym obrazie jest przycięty z powodu żądania rejestracji o bardzo dużym formacie obrazu, które zmniejsza wysokość lub szerokość obrazu.
  • Okrąg na zrobionym zdjęciu ma odbicie w środku i nie jest w pełni wypełniony.

test_aspect_ratio_and_crop

Sprawdza, czy obrazy w potoku obrazów nie zostały zniekształcone lub nieoczekiwanie przycięte. Zdjęcie koła w różnych formatach. Okrąg nie jest zniekształcony, okrąg nie przesuwa się od środka zdjęcia ani nie zmienia nieprawidłowo rozmiaru w zależności od formatu obrazu lub rozdzielczości.

Przetestowane interfejsy API:

Prawidłowy: obrazy nie są rozciągnięte, ich środki nie różnią się o więcej niż 3% i zachowywane jest maksymalne możliwe ognisko (pole widzenia).

Mechanizmy niepowodzenia:

  • Kamera nie jest ustawiona na okrąg wyświetlany na tablecie w środkowej części ujęcia.
  • Okrąg na zrobionym zdjęciu jest zniekształcony przez łańcuch przetwarzania.
  • Obraz o niższej rozdzielczości jest dwukrotnie przycięty w przepływie przetwarzania obrazu, co powoduje inny kąt widzenia w przypadku obrazów w wysokiej i niskiej rozdzielczości.
  • Okrąg na zarejestrowanym obrazie jest przycięty z powodu żądania rejestracji o bardzo dużym formacie obrazu, które zmniejsza wysokość lub szerokość obrazu.
  • Okrąg na zrobionym zdjęciu ma odbicie w środku i nie jest w pełni wypełniony.

test_multi_camera_alignment

Testuje parametry kalibracji kamery związane z pozycjonowaniem kamery w systemach wielokamerowych. Za pomocą fizycznych aparatów podrzędnych z wieloma aparatami robi zdjęcie jednym z tych aparatów. Znajduje środek okręgu. Przekształca punkt środkowy koła na współrzędne globalne dla każdej kamery. Porównuje różnicę między środkami okręgów kamer w współrzędnych globalnych. Przeprojektowuje współrzędne geograficzne na współrzędne pikseli i porównuje je z oryginalnymi wartościami w celu sprawdzenia poprawności. Porównuje rozmiary kół, sprawdzając, czy ogniskowe aparatów są różne.

Testowane interfejsy API:

Przeszedł: centra i rozmiary okręgów są zgodne z oczekiwaniami w projekcjach obrazów w porównaniu z obrazami zarejestrowanymi przy użyciu danych kalibracji aparatu i ogniskowych długości ogniskowych.

Mechanizmy niepowodzenia:

  • LENS_INTRINSIC_CALIBRATION, LENS_POSE_TRANSLATION lub LENS_POSE_ROTATION to wartości projektowe, a nie rzeczywiste dane kalibracyjne.
  • System kamer nie jest odpowiedni do konfiguracji testowej. Dotyczy to na przykład testowania szerokiego i ultraszerokokątnego systemu aparatów za pomocą urządzenia do testowania RFoV. Więcej informacji znajdziesz w artykule z odpowiedziami na najczęstsze pytania dotyczące zestawu ITS-in-a-box1.

współczynnik_podglądu_testu_i_przycięcie

Podobnie jak test test_aspect_ratio_and_crop w przypadku zdjęć, ten test sprawdza obsługiwane formaty podglądu, aby upewnić się, że ramki podglądu nie są nieprawidłowo rozciągnięte ani przycięte. Sprawdza, czy współczynnik proporcji okręgu nie zmienia się, przycięte obrazy utrzymują okrąg na środku klatki, a rozmiar okręgu nie zmienia się w przypadku stałego formatu lub różnych rozdzielczości (sprawdzanie pola widzenia).

Testowane interfejsy API:

Pozytywny: obrazy nie są rozciągnięte, różnica w centrum obrazów nie przekracza 3%, a zachowana jest maksymalna możliwa wartość FoV (field of view, pole widzenia).

test_preview_stabilization_fov

Sprawdzanie obsługiwanych rozmiarów podglądu, aby upewnić się, że pole widzenia jest odpowiednio przycięte. Test rejestruje 2 filmy, jeden ze stabilizacją w podglądzie ON, a drugi ze stabilizacją w podglądzie OFF. Z każdego filmu wybierany jest reprezentatywny kadr, który jest analizowany pod kątem zgodności ze specyfikacją w zakresie zmian pola widzenia.

Przetestowane interfejsy API:

Prawidłowy: współczynnik proporcji okręgu jest stały, środek okręgu pozostaje stabilny, a rozmiar okręgu nie zmienia się więcej niż o 20%.

test_video_aspect_ratio_and_crop

Nagrywa filmy w kształcie koła w kwadracie we wszystkich formatach wideo. Wyodrębnia klatki kluczowe i sprawdza, czy format okręgu się nie zmienia, przycięte obrazy utrzymują okrąg w środku, a rozmiar okręgu nie zmienia się w przypadku stałego formatu lub innej rozdzielczości (sprawdzanie pola widzenia).

Testowane interfejsy API:

Przechodzi: klatki wideo nie są rozciągnięte, środek klatek nie różni się o więcej niż 3%, a maksymalne możliwe pole widzenia (FOV) jest zachowane.

scena5

W przypadku sceny 5 wymagana jest szara scena o jednolitym oświetleniu. Jest to możliwe dzięki dyfuzorowi umieszczonemu na obiektywie. Zalecamy użycie tego dyfuzora: www.edmundoptics.com/optics/window-diffusers/optical-diffusers/opal-diffusing-glass/46168.

Aby przygotować scenę, zamocuj dyfuzor przed kamerą i skieruj obiektyw na źródło światła o mocy około 2000 luksów. Zdjęcia przedstawiające scenę5 wymagają rozproszonego oświetlenia bez widocznych cech. Oto przykładowy obraz:

scene5

scene5 capture

testowy_obiektyw_cieniowanie_i_jednolitość_koloru

Sprawdza, czy korekcja cieniowania obiektywu jest stosowana prawidłowo, a kolor jednolitego obrazu jest równomiernie rozłożony. Wykonuje ten test na podstawie ramki YUV z automatycznym 3A. Zacienienie obiektywu jest oceniane na podstawie kanału y. Mierzy średnią wartość y dla każdego określonego przykładowego bloku i określa pomyślność lub niepowodzenie, porównując wartość ze środkową wartością y. Test jednorodności kolorów jest oceniany w przestrzeni r/g i b/g.

Przetestowane interfejsy API:

Pozytywny: aby przejść test, w przypadku określonego promienia obrazu odchylenie wartości r/g i b/g musi być mniejsze niż 20%.

scene6

Scena 6 to siatka małych kółek z kwadratem w jednym rogu, który wskazuje orientację. Małe kółka są potrzebne do testowania funkcji powiększania w dużej odległości. Testy w scenie6 mogą być wrażliwe na wyrównanie, dlatego od wersji 15 możesz użyć opcji check_alignment.py w katalogu narzędzi, aby włączyć sprawdzanie wyrównania DUT i wykresu.

scena6

scene6

test_in_sensor_zoom

Testuje działanie funkcji zoomu na matrycy, która umożliwia kadrowanie zdjęć w formacie RAW.

Gdy ustawienie przypadku strumienia jest ustawione na CROPPED_RAW, test wykonuje 2 zrzuty w zakresie zoomu: pełny obraz RAW z pełnym polem widzenia (FoV) oraz przycięty obraz RAW. Test konwertuje obrazy na tablice RGB, zmniejsza rozmiar pełnowymiarowego przyciętego obrazu RAW do rozmiaru podanego przez SCALER_RAW_CROP_REGION i oblicza 3D root mean square (RMS) różnicy między 2 obrazami.

Testowane interfejsy API:

Przeszedł: różnica średniokwadratowa 3D (RMS) między pomniejszoną przyciętą kopią obrazu RAW a obrazem RAW w pełnym polu widzenia jest mniejsza niż próg ustawiony w teście.

test_zoom

Testuje zachowanie zoomu aparatu. Wykonuje zdjęcia w całym zakresie powiększenia i sprawdza, czy koła stają się większe, gdy kamera przybliża obraz. W przypadku każdego formatu (YUV, JPEG) do konwertowania 3A i przechwytywania obrazów służy ta sama sesja przechwytywania kamery.

Przetestowane interfejsy API:

Prześlij: względna wielkość uchwytowanego okręgu jest zgodna z żądanym współczynnikiem powiększenia, co gwarantuje prawidłowe działanie funkcji powiększania.

testowy_powiększenie

test_zoom, aby znaleźć kontur koła najbliższego środka.

test_low_latency_zoom

Testuje zachowanie zoomu w przypadku niewielkiego opóźnienia. Wykonuje przechwytywania w zakresie zoomu android.control.settingsOverride = 1 (SETTINGS_OVERRIDE_ZOOM) i sprawdza, czy koła na wyjściowych obrazach są zgodne z współczynnikami powiększenia w metadanych przechwytywania. Ta sama sesja rejestrowania za pomocą aparatu jest używana do konwergencji 3A i do wykonywania zdjęć.

Testowane interfejsy API:

Prawidłowy: względny rozmiar przechwyconego okręgu jest zgodny z metadanymi wyniku współczynnika powiększenia.

test_preview_video_zoom_match

Testuje, czy podczas nagrywania i powiększania podgląd filmu i wyjście wideo wyświetlają i nagrywają ten sam materiał. Oblicza rozmiar okręgu znajdującego się najbliżej środka przy różnych współczynnikach powiększenia i sprawdza, czy rozmiar okręgu rośnie wraz ze wzrostem współczynnika powiększenia.

Testowane interfejsy API:

Prawidłowy: względny rozmiar nagranego okręgu jest zgodny z żądanym współczynnikiem powiększenia w filmie i podglądzie.

VGA_640x480_key_frame.png

VGA_640x480_key_frame.png (przed powiększeniem)

preview_640x480_key_frame.png

preview_640x480_key_frame.png (przed powiększeniem)

VGA_640x480_key_frame_zoomed.png

VGA_640x480_key_frame.png (po powiększeniu)

preview_640x480_key_frame_zoomed.png

preview_640x480_key_frame.png (po powiększeniu)

test_preview_zoom

Sprawdzanie, czy współczynnik powiększenia każdej ramki podglądu jest zgodny z odpowiednimi metadanymi rejestrowania. Test pobiera klatki podglądu w zakresie zoomu i wyznacza kontur koła najbliższego środka. Test sprawdza, czy wybrane kółko staje się większe i czy środek kółka oddala się od środka obrazu, gdy kamera przybliża obraz.

Testowane interfejsy API:

Prześlij: względna wielkość wybranego okręgu jest zgodna z raportowanym współczynnikiem powiększenia odpowiadającego wyniku przechwycenia we wszystkich ramkach podglądu. Względny odległość wybranego okręgu od środka obrazu jest zgodna z podanym współczynnikiem powiększenia uzyskanym w wyniku wszystkich ramek podglądu.

test_zoom

test_preview_zoom obrazy przedstawiające wybrany okrąg znajdujący się najbliżej środka

test_session_characteristics_zoom

Testuje zakres współczynnika powiększenia dla wszystkich obsługiwanych konfiguracji sesji wymienionych w CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION. Jeśli w przypadku każdej z tych konfiguracji parametr CameraDeviceSetup#isSessionConfigurationSupported zwraca wartość „prawda”, test sprawdza, czy można osiągnąć zakres współczynnika powiększenia zwrócony w CameraDeviceSetup#getSessionCharacteristics.

Testowane interfejsy API:

Prawidłowy: zarówno minimalny, jak i maksymalny współczynnik powiększenia można osiągnąć w przypadku każdego obsługiwanego obiektu SessionConfiguration wymienionego w tabeli CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION.

scene7

Scene7 to prostokątny kadr podzielony na 4 równe kwadranty, z których każdy jest wypełniony innym kolorem. Na środku prostokąta znajduje się wykres skośnej krawędzi do sprawdzania ostrości. 4 znaczniki ArUco są wyrównane z 4 zewnętrznymi narożnikami prostokąta, aby ułatwić uzyskanie dokładnych współrzędnych ramki głównego prostokąta przy różnych współczynnikach powiększenia.

scena7

scene7

test_multi_camera_switch

Ten test sprawdza, czy podczas nagrywania w podglądzie z różnymi współczynnikami powiększenia różnice między obiektywem ultraszerokokątnym (UW) i szerokokątnym (W) dają podobne wartości RGB.

Podczas testu korzysta się z różnych współczynników powiększenia we wstępnie zdefiniowanym zakresie, aby nagrać dynamiczny podgląd i określić punkt, w którym zmienia się kamera fizyczna. Ten punkt oznacza przejście z obiektywu UW na obiektyw W.

Kadry zarejestrowane w miejscu przecięcia i przed nim są analizowane pod kątem automatycznej ekspozycji (AE), automatycznej regulacji balansu bieli (AWB) i automatycznego ustawiania ostrości (AF).

Kontrola AE pozwala sprawdzić, czy zmiana lumasu mieści się w oczekiwanym zakresie na zdjęciach obiektywowych UW i W. Sprawdzenie AWB sprawdza, czy proporcje R/G i B/G mieszczą się w wartościach progowych obrazów obiektywów UW i W. Sprawdzanie AF ocenia wartość szacowania ostrości na podstawie średniej wielkości gradientu między obrazami z obiektywu UW i W.

Przetestowane interfejsy API:

Przeszedł: aby test zakończył się pomyślnie, wszystkie testy AE, AWB i AF muszą zakończyć się pomyślnie. Oto kryteria poszczególnych kontroli:

  • Sprawdzanie AE: zmiana luminacji między obrazami z obiektywem szerokokątnym i standardowym musi być mniejsza niż 0,5%.
  • Sprawdzanie AWB: różnica między wartościami R/G i B/G w przypadku obrazów z obiektywem szerokokątnym i standardowym musi być mniejsza niż 0,5%.
  • Sprawdzanie AF: zmiana ostrości obrazu między obrazami z obiektywem szerokokątnym i teleobiektywem musi wynosić mniej niż 2%.

scena8

Scene8 to prostokątny kadr podzielony na 4 równe obszary, z których każdy zawiera portret wykonany z różną ekspozycją lub nałożony z różnym odcieniem koloru (niebieski odcień, zwiększona ekspozycja, zmniejszona ekspozycja, żółty odcień). Cztery znaczniki ArUco są wyrównane do 4 zewnętrznych rogów prostokąta, aby uzyskać dokładne współrzędne głównej ramki prostokąta.

scene8

scene8

testy_ae_awb_regiony

Testuje, czy wartości RGB i luma różnią się podczas podglądu nagrania w różnych regionach automatycznej ekspozycji (AE) i automatycznego balansu bieli (AWB).

Test rejestruje 8-sekundowy podgląd, wykonując pomiar AE i AWB w każdym kwadracie przez 2 sekundy. Następnie test wyodrębnia z każdego nagrania podglądu pojedynczą klatkę i wykorzystuje ją do wykonania tych kontroli AE i AWB:

  • Sprawdzanie AE: sprawdza, czy klatka zmierzająca region o zmniejszonej ekspozycji ma zwiększoną wartość luminancji o więcej niż 1% w porównaniu z klatką zmierzającą region o zwiększonej ekspozycji. Sprawdza, czy obrazy są rozjaśniane podczas pomiaru ciemnego obszaru.
  • Sprawdzanie AWB: sprawdza, czy stosunek koloru czerwonego do niebieskiego (średnich wartości RGB obrazu) w ramce z niebieskim regionem pomiaru jest o więcej niż 2% wyższy niż w ramce z żółtym regionem pomiaru. Dzięki temu obrazy mają zrównoważony kod RGB podczas pomiaru żółtego (ciepłego) lub niebieskiego (zimnego) regionu.

Testowane interfejsy API:

Przeszedł: oba testy AE i AWB zostały zaliczone.

scene9

Scene9 składa się z tysięcy losowo dopasowanych okręgów o różnych kolorach, tworząc scenę o bardzo niskiej powtarzalności ze względu na algorytmy kompresji JPEG.

scene9

scene9

test_jpeg_high_entropy

Sprawdza, czy kompresja JPEG aparatu działa w przypadku sceny 9 z wysoką entropią i współczynnikiem jakości JPEG ustawionym na 100%. Wzrost współczynnika powiększenia zapewnia, że obraz wyświetlany na tablecie wypełnia pole widzenia kamery.

Przetestowane interfejsy API:

Przeszedł:plik JPEG został prawidłowo skompresowany, zapisany i odczytany z dysku.

test_jpeg_quality

Testuje jakość kompresji JPEG w aparacie. Przejdź z jakością JPEG do android.jpeg.quality i zadbaj o poprawne zmiany w tabelach kwantyzacji.

Testowane interfejsy API:

Prześlij: macierz kwantyzacji zmniejsza się wraz ze wzrostem jakości. (Macierz reprezentuje współczynnik podziału).

test_jpeg_quality

Średnie wartości matrycy DQT luma/chroma aparatu tylnego Pixela 4 w porównaniu z jakością JPEG

test_jpeg_quality failed

Przykład nieudanego testu

Pamiętaj, że w przypadku obrazów o bardzo niskiej jakości (jpeg.quality < 50) w matryce kwantyzacji nie zwiększa się kompresja.

scene_video

Scena scene_video to scena wideo. Składa się z 4 kółek w różnych kolorach, które poruszają się w górę i w dół z różną częstotliwością klatek na białym tle.

scene_video

test_preview_frame_drop

Sprawdza, czy żądana liczba klatek na podglądzie zostaje zachowana w przypadku sceny dynamicznej. Ten test jest przeprowadzany na wszystkich kamerach, które są dostępne dla aplikacji innych firm.

Przetestowane interfejsy API:

Prawidłowo: liczba klatek w podglądzie ma maksymalną wartość z żądanego zakresu, a średnia różnica między kolejnymi klatkami jest mniejsza niż względna tolerancja ustawiona w teście.

scene_extensions

Testy scene_extensions dotyczą rozszerzeń aparatu i wymagają użycia Camera ITS-in-a-Box, ponieważ wymagają precyzyjnego kontrolowania środowiska testowego. Dodatkowo należy kontrolować wszelkie wycieki światła. Może to wymagać przykrycia stanowiska testowego, urządzenia testowego i tabletu szmatką oraz wyeliminowania wycieku światła z ekranu przedniego urządzenia testowego.

scena_hdr

Scena w usłudze scene_hdr składa się z portretu po lewej stronie i o niskim kontraście po prawej stronie.

scene_hdr

scene_hdr

test_hdr_extension

Testuje rozszerzenie HDR. Wykonuje uchwyty z włączoną i wyłączoną wtyczką i sprawdza, czy wtyczka ułatwia wykrywanie kodu QR.

Testowane interfejsy API:

Przepuść: rozszerzenie HDR zmniejsza liczbę zmian kontrastu potrzebnych do wykrycia kodu QR lub zmniejsza gradient w przypadku kodu QR.

scena_słabe_jasno

Scena scene_low_light składa się z siatki kwadratów w różnych odcieniach szarości na czarnym tle. Siatka kwadratów jest otoczona czerwoną obwódką. Kwadraty są ułożone zgodnie z krzywą Hilberta.

scene_low_light

scene_low_light

test_night_extension

Testowanie rozszerzenia Noc. Rejestruje zdjęcia z włączonym rozszerzeniem i wykonuje te czynności:

  • Wykrywanie obecności 20 kwadratów
  • Oblicza wartość luma określoną przez każdy kwadrat
  • Oblicza średnią wartość luma dla pierwszych 6 kwadratów zgodnie z orientacją siatki krzywej Hilberta
  • Oblicza różnicę w wartości luma kolejnych kwadratów (np. kwadrat2 – kwadrat1) do kwadratów 5 i 6 (kwadrat6 – kwadrat5), a następnie określa średnią z 5 obliczonych różnic.

Testowane interfejsy API:

Pozytywny wynik: średnia wartość luma pierwszych 6 kwadratów musi wynosić co najmniej 85, a średnia różnica wartości luma kolejnych kwadratów do kwadratu 5 i 6 musi wynosić co najmniej 17.

Na wykresie luminancji widać, jak wygląda wynik testu, który kwalifikuje się do przejścia.

scene_low_light_night_pass

test_low_light_boost_extension

Testowanie trybu AE Boost w słabym oświetleniu. Jeśli aparat 2 obsługuje tryb AE przy słabym oświetleniu, test jest przeprowadzany dla aparatu 2. Jeśli rozszerzenie aparatu w trybie nocnym jest obsługiwane i obsługuje tryb AE z ulepszonym trybem automatycznym w przypadku słabego oświetlenia, test jest również przeprowadzany w przypadku rozszerzenia aparatu w trybie nocnym. Ten test ustawia tryb AE na słabe oświetlenie, pobiera klatkę z podglądu i wykonuje te czynności:

  • Wykrywa obecność 20 pudeł
  • Oblicza luminancję ograniczoną przez każdy kwadrat
  • Oblicza średnią wartość luminacji dla pierwszych 6 kwadratów zgodnie z orientacją siatki krzywej Hilberta
  • Oblicza różnicę w wartości luma kolejnych kwadratów (np. kwadrat2 – kwadrat1) do kwadratów 5 i 6 (kwadrat6 – kwadrat5), a następnie określa średnią z 5 obliczonych różnic.

Testowane interfejsy API:

Pozytywny wynik: średnia wartość luminacji w pierwszych 6 kwadratach musi wynosić co najmniej 70, a średnia różnica w wartości luminacji kolejnych kwadratów do kwadratu 5 i 6 musi wynosić co najmniej 17.

scene_flash

Testy w trybie scene_flash wymagają ciemnej sceny w pojemniku z czujnikiem Fusion.

test_auto_flash

Testuje, czy automatyczna lampa błyskowa jest włączana w ciemnych warunkach dla tylnego i przedniego aparatu. W przypadku przednich aparatów automatyczna lampa błyskowa używa ekranu do oświetlenia sceny, a nie fizycznej lampy błyskowej. Podczas tego testu można sprawdzić, czy włączona jest automatyczna lampa błyskowa. W tym celu sprawdza się, czy środek obrazu kafelka jest jaśniejszy po włączeniu automatycznej lampy błyskowej. Aby włączyć automatyczne miganie, światła w urządzeniu testowym muszą być wyłączone. Można je wyłączyć automatycznie za pomocą kontrolera Arduino. Aby test działał prawidłowo, scena musi być całkowicie ciemna. Przed testowaniem na urządzeniu musisz zainstalować aplikację Jetpack Camera (JCA). Automatyczna lampa błyskowa w przypadku tylnych aparatów zależy od stanu AE, ale automatyczna lampa błyskowa w przypadku przednich aparatów nie zależy od AE i jest zawsze włączana.

Testowane interfejsy API:

Prześlij: środek obrazu kafelka z włączoną automatyczną lampą błyskową jest jaśniejszy niż oryginalny obraz sceny dla wszystkich kamer.

siła_testu_flash

Testuje, czy kontrola siły błysku w trybie SINGLE jest prawidłowo zaimplementowana.

Sprawdza, czy urządzenie obsługuje kontrolę siły lampy błyskowej podczas korzystania z aparatu w trybie SINGLE, siła lampy błyskowej zmienia się wraz z różnymi wymaganymi poziomami siły. Sprawdza, czy element sterujący siłą błysku działa w przypadku różnych AE_MODES. Jeśli na przykład tryb automatycznej ekspozycji to ON lub OFF, poziom siły lampy błyskowej ma wpływ na jasność, a jeśli tryb to ON_AUTO_FLASH, poziom siły lampy błyskowej nie ma wpływu na jasność. Aby przeprowadzić test, należy wyłączyć światła w urządzeniu testowym. Światła można wyłączyć automatycznie za pomocą kontrolera Arduino. Aby test działał prawidłowo, scena musi być całkowicie ciemna.

Testowane interfejsy API:

Pass:

Gdy tryb automatycznej ekspozycji to ON lub OFF, jasność fragmentów obrazu zwiększa się wraz ze wzrostem poziomu siły błysku od braku błysku do FLASH_SINGLE_STRENGTH_MAX_LEVEL. Gdy tryb automatycznej ekspozycji to ON_AUTO_FLASH, różnica w jasności plam obrazu mieści się w tolerancji, gdy poziom siły błysku zwiększa się od braku błysku do FLASH_SINGLE_STRENGTH_MAX_LEVEL.

test_led_snapshot

Sprawdzanie, czy migawki LED nie nasycą ani nie zabarwią obrazu.

W ramach tego testu do czujnika czujnika Fusion dodaje się kontroler oświetlenia, który steruje oświetleniem. Gdy światła są ustawione na OFF, test wykonuje przechwycenie z ustawieniami trybu AUTO_FLASH na ON. Podczas tego przechwytywania test uruchamia sekwencję wstępnego przechwytywania z regułą aePrecapture ustawioną na START i ustawia intencję przechwytywania na Preview, co pozwala na przechwytywanie z użyciem Flasha.

Ponieważ obraz ma wyraźny obszar interaktywny ze względu na błysk, test oblicza średnią wartość obrazu z błysku w całym obrazie i sprawdza, czy ta wartość mieści się w zakresie (68, 102). Aby sprawdzić, czy obraz ma prawidłowo zrównoważony balans bieli, test oblicza współczynniki R/G i B/G oraz sprawdza, czy mieszczą się one w zakresie od 0,95 do 1,05.

Testowane interfejsy API:

Przeszedł: współczynniki R/G i B/G mieszczą się w zakresie od 0,95 do 1,05. Średnia wartość obrazu z błyskiem mieści się w zakresie (68, 102).

test_preview_min_frame_rate

Testuje, czy liczba klatek podglądu zmniejsza się prawidłowo w ciemnej scenie. Aby test działał prawidłowo, światła w urządzeniu testowym muszą być wyłączone przez kontroler lub ręcznie przez operatora testu.

Testowane interfejsy API:

Przeszedł test:liczba klatek w podglądzie jest równa minimalnej wartości z żądanego zakresu, a różnica między klatkami jest mniejsza niż bezwzględna tolerancja ustawiona w teście.

test_torch_strength

Testuje, czy kontrola mocy błysku w trybie TORCH jest prawidłowo zaimplementowana.

Sprawdza, czy urządzenie obsługuje kontrolę siły błysku podczas korzystania z kamery w trybie TORCH, a moc latarki zmienia się w zależności od różnych poziomów siły. Sprawdzanie, czy kontrola siły błysku działa z użyciem różnych AE_MODES. Jeśli na przykład tryb automatycznej ekspozycji to ON lub OFF, poziom siły lampy błyskowej ma wpływ na jasność, a jeśli tryb to ON_AUTO_FLASH, poziom siły lampy błyskowej nie ma wpływu na jasność. Sprawdzanie, czy moc lampy pozostaje taka sama przez cały czas trwania migawki, symulując sesję nagrywania wideo. Aby przeprowadzić test, musisz wyłączyć światła w zestawie testowym. Możesz wyłączyć oświetlenie automatycznie za pomocą kontrolera Arduino. Aby test działał prawidłowo, scena musi być całkowicie ciemna.

Testowane interfejsy API:

Pass:

Gdy tryb automatycznej ekspozycji to ON lub OFF, jasność plam z błysku wzrasta wraz ze wzrostem poziomu mocy błysku od braku błysku do FLASH_TORCH_STRENGTH_MAX_LEVEL. Gdy tryb automatycznej ekspozycji to ON_AUTO_FLASH, różnica w jasności poszczególnych ujęć w sekwencji mieści się w tolerancji, gdy poziom siły lampy błyskowej zwiększa się od braku lampy do FLASH_TORCH_STRENGTH_MAX_LEVEL.

sensor_fusion

Testy fuzji danych z czujników wymagają określonego ruchu telefonu przed szachownicą i znacznikami ArUco. Aby uzyskać optymalne wyniki, upewnij się, że karta testowa jest zamontowana na płasko. Wykresy, które nie są płaskie, wpływają na obliczenia rotacji w przypadku wielu testów. Wykres musi wypełniać tył modułu sensora hybrydowego. Należy go wydrukować w formacie 17 x 17 cali (43 x 43 cm). Testy sensor_fusion można zautomatyzować za pomocą urządzenia Sensor Fusion Box.

Wykres termiczny czujnika

Wykres danych z wielu czujników

Wykres łączenia danych z czujników w Rig

Wykres czujnika hybrydowego, który wypełnia tył pola czujnika hybrydowego

test_lens_intrinsic_calibration

Testuje, czy optyczny środek obiektywu zmienia się, gdy obiektyw porusza się z powodu optycznej stabilizacji obrazu (OIS). Jeśli obsługiwane są wrodzone próbki soczewek, sprawdza się, czy środek optyczny soczewek zmienia się, gdy przesuwa się obiektyw z powodu optycznej stabilizacji obrazu (OIS).

Przetestowane interfejsy API:

Przechodzi: optyczny środek obiektywu zmienia się o co najmniej 1 piksel. Jeśli obsługiwane są próbki wewnętrzne soczewki, centra optyczne soczewek zmieniają się o co najmniej 1 piksel.

test_lens_intrinsic_calibration_example.png

Przykład wykresu test_lens_intrinsic_calibration przedstawiającego zmiany głównych punktów w pikselach w przypadku każdego kadru

test_multi_camera_frame_sync

Testy, które wskazują sygnatury czasowe zarejestrowane przez kamerę logiczną, trwają nie dłużej niż 10 ms, ponieważ obliczają kąty kwadratów w obrębie szachownicy, aby ustalić sygnaturę czasową.

Testowane interfejsy API:

Pass: kąt między obrazami z każdej kamery nie zmienia się znacząco podczas obracania telefonu.

zniekształcenie_testu_podglądu

Sprawdzanie, czy zniekształcenia są korygowane w ramkach podglądu wykonanych przy różnych poziomach powiększenia. W przypadku każdej ramki podglądu test oblicza punkty idealne na podstawie informacji o właściwościach aparatu i o warunkach zewnętrznych. Na przykładowym obrazie punkty idealne są zaznaczone na zielono, a rzeczywiste – na czerwono. Błąd zniekształcenia jest obliczany na podstawie średniej kwadratowej (RMS) odległości w pikselach między punktami rzeczywistymi a punktami idealnymi. Zielone i czerwone wyróżnienia na obrazie służą do wizualnego wykrywania obszaru błędu zniekształcenia.

test_preview_distortion_example.jpg

Obraz kratki z zielonymi punktami idealnymi i czerwonymi punktami rzeczywistymi

Przetestowane interfejsy API:

Przeszedł: znormalizowany błąd zniekształcenia każdej ramki podglądu jest mniejszy od progu ustawionego w teście.

test_preview_stabilization

Testy, w których stabilizowany podgląd wideo obraca się rzadziej niż żyroskop.

Testowane interfejsy API:

Przechodzi: maksymalny kąt obrotu w ramkach jest mniejszy niż 70% obrotu żyroskopu.

Poniżej znajdziesz przykładowe filmy z tą funkcją i bez niej.

  • Przykładowy film ze stabilizacja

  • Przykładowy film bez stabilizacji

test_fuzji

Testuje różnicę w dacie i godzinie między kamerą a żyroskopem w przypadku aplikacji AR i VR. Telefon jest 10 razów obracany o 90 stopni przed szachownicą. Czas trwania ruchu to około 2 s. Ten test jest pomijany, jeśli nie uwzględniono żyroskopu lub jeśli parametr REALTIME źródła sygnatury czasowej nie jest włączony.

Test test_sensor_fusion generuje kilka wykresów. Dwa najważniejsze wykresy do debugowania to:

  • test_sensor_fusion_gyro_events: pokazuje zdarzenia żyroskopu dla telefonu podczas testu. Ruch w kierunkach x i y oznacza, że telefon nie jest pewnie zamocowany na płycie montażowej, co zmniejsza prawdopodobieństwo zaliczenia testu. Liczba cykli na wykresie zależy od szybkości zapisywania klatek.

    test_sensor_fusion_gyro_events.png

    test_sensor_fusion_gyro_events

  • test_sensor_fusion_plot_rotations: pokazuje wyrównanie żyroskopu i zdarzeń kamery. Wykres musi pokazywać ruchy między aparatem i żyroskopem o wartości +/-1 ms.

    test_czujnika_fusion_plot_rotations.png

    obroty_czujnika_fuzji_testowej

Przetestowane interfejsy API:

Przechodzi: przesunięcie sygnału zegarowego z kamery i żyroskopu jest mniejsze niż 1 ms zgodnie z CDD sekcja 7.3.9 Wysokiej jakości czujniki [C-2-14].

Mechanizmy niepowodzenia:

  • Błąd przesunięcia: przesunięcie kamery-czujnika żyroskopu nie jest prawidłowo skalibrowane w zakresie +/-1 ms.
  • Utracone klatki: potok nie jest wystarczająco szybki, aby przechwycić 200 klatek naraz.
  • Błędy gniazda: adb nie może niezawodnie połączyć się z badanym urządzeniem przez wystarczająco długi czas, aby wykonać test.
  • Wykres nie jest płaski. Wykres test_sensor_fusion_plot_rotationszawiera klatki, w których wartości z gyroskopu i obrot kamery różnią się znacznie, gdy kamera obraca się w częściach wykresu, które nie są płaskie.
  • Kamera nie jest zamontowana płasko. Wykres test_sensor_fusion_gyro_events pokazuje ruch na płaszczyznach X i Y. Ten błąd występuje częściej w przypadku przednich aparatów, ponieważ tylny aparat często ma uniesioną część w stosunku do reszty obudowy telefonu, co powoduje przechylenie podczas mocowania tyłu telefonu do płytki montażowej.

test_stabilizacji_wideo

Testy, w których stabilizowany obraz obraca się rzadziej niż żyroskop.

Przetestowane interfejsy API:

Prawidłowy: maksymalny obrót kąta wokół klatek wynosi mniej niż 60% obrotu żyroskopu.

Poniżej znajdziesz przykładowe filmy z tą funkcją i bez niej.

  • Przykładowy film ze stabilizacja

  • Przykładowy film bez stabilizacji

feature_combination

Testy feature_combination sprawdzają, czy funkcje działają prawidłowo, gdy włączonych jest kilka funkcji aparatu jednocześnie. W tych testach używany jest ten sam obraz szachownicy, który jest używany w scenie fuzji danych z czujników.

test_feature_combination

Testuje wszystkie kombinacje różnych strumieni, stabilizacji podglądu, docelowego zakresu liczby klatek na sekundę, 10-bitowego filmu HDR i Ultra HDR, które są obsługiwane przez urządzenie z kamerą. Ten test wymaga dużej ilości pamięci, dlatego zalecamy używanie hosta z co najmniej 128 GB pamięci RAM.

W przypadku Androida 15 lub nowszego plik konfiguracji zawiera pole log_feature_combo_support, które domyślnie ma wartość False. Gdy pole log_feature_combo_support ma wartość True, test wykonuje wszystkie kombinacje obsługiwanych funkcji i zapisuje wyniki w pliku proto bez niepowodzenia testu. Do testowania zgodności pole log_feature_combo_support musi mieć wartość False.

Testowane interfejsy API:

Pass: w przypadku każdej obsługiwanej kombinacji funkcji:

  • Jeśli włączona jest stabilizacja podglądu, strumień podglądu jest stabilizowany.
  • Liczba klatek na sekundę w podglądzie mieści się w skonfigurowanym zakresie AE_TARGET_FPS_RANGE.
  • Przestrzeń kolorów nagranego strumienia podglądu jest zgodna z ustawieniami.
  • Zdjęcie w ultra HDR ma prawidłową mapę wzmocnienia.