Testy kamery ITS

Na tej stronie znajduje się obszerna lista testów przeprowadzanych w ramach pakietu ITS Camera Image Test Suite (ITS), który jest częścią weryfikatora zgodności z Androidem (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. Ten dokument pozwala programistom i testerom zrozumieć, jak działają poszczególne testy i jak debugować niepowodzenia.

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ą korzystanie z funkcji na niższych poziomach interfejsu API pod kątem negatywnych wrażeń użytkownika. ITS używa interfejsu ro.vendor.api_level do ograniczania testów funkcji dodanych na określonym poziomie interfejsu API, które wymagają nowych możliwości sprzętowych. Jeśli dla urządzenia zdefiniowano ro.odm.build.media_performance_class, ITS wymaga przeprowadzenia określonych testów w zależności od poziomu MPC.

Testy są pogrupowane według sceny:

  • scene0: rejestrowanie metadanych, zakłóceń, żyroskopu, wibracji
  • scene1: ekspozycja, czułość, kompensacja EV, YUV a JPEG/RAW
  • scene2: wykrywanie twarzy i testy wymagające włączenia scen kolorowych lub całkowitej ciemności
  • scene3: ulepszanie krawędzi, ruch obiektywu
  • scene4: format obrazu, przycinanie, pole widzenia.
  • scene5: cieniowanie obiektywu
  • scene6: Powiększenie
  • scene_extensions: rozszerzenia aparatu;
  • sensor_fusion: przesunięcie czasu aparatu/żyroskopu

Opisy poszczególnych scen znajdziesz w poszczególnych sekcjach.

scena0

Testy sceny 0 nie wymagają żadnych konkretnych informacji o scenie. Jednak aby można było przeprowadzić testy żyroskopowe i wibracyjne, telefon musi być nieruchomy.

przechwyt_z_testu_serii

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

Przetestowane interfejsy API:

Pass: rejestruje serię zdjęć w pełnym rozmiarze, a kamera jest wystarczająco szybka, by ominąć czas oczekiwania.

test_capture_result_dump

Sprawdza, czy wynik skanowania ręcznego jest zwracany, a następnie zrzuca go.

Przetestowane interfejsy API:

Powodzenie: pozwala na zakończenie przechwytywania i zapis wyników.

test_żyroskopu

Sprawdza, czy żyroskop ma stabilne wyjście, gdy urządzenie jest nieruchome. Dane są przedstawione jako średnia z 20 punktów danych.

Przetestowane interfejsy API:

Prawidłowo: delta odczytu żyroskopu jest mniejsza niż 0,01 w czasie.

test_gyro-bias_plot.png

test_gyro-bias_plot.png

zakłócenia_testowe

Mierzy zakłócenia w sygnaturach czasowych kamery.

Przetestowane interfejsy API:

Powodzenie: różnica między klatkami wynosi co najmniej 30 ms.

wykres_zakłócenia_testu.png

test_jitter_plot.png (Zwróć uwagę na mały zakres osi Y. Na tym wykresie zakłócenia są naprawdę niewielkie).

metadane_testowe

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.

Przetestowane interfejsy API:

Pass: poziom sprzętowy, rollingShutterSkew, tagi frameDuration, timestampSource, croppingType, blackLevelPattern, pixel_pitch, FoV, odległość hiperogniskowa są obecne i mają prawidłowe wartości.

rozbłysk_czułości_testowej

Sprawdza, czy parametr android.sensor.sensitivity jest prawidłowo stosowany w trybie burtowym. Sprawdza tylko metadane wyjściowe.

Przetestowane interfejsy API:

Prawidłowo: tolerancja błędów jest mniejsza niż 0,2%.

test_read_write

Sprawdza, czy urządzenie zapisuje prawidłową ekspozycję i wartości wzmocnienia, odczytując metadane przechwytywania.

Przetestowane interfejsy API:

Powodzenie: odczytu i zapisu są takie same we wszystkich ujęciach.

zdarzenia_testowe_sensora

Testuje, czy urządzenie wysyła zapytania i wyświetla zdarzenia z czujnika w przypadku urządzeń, które reklamują obsługę czujnika Fusion. Oczekiwane czujniki to akcelerometr, żyroskop i magnetometr. Ten test działa tylko wtedy, gdy ekran jest włączony, czyli urządzenie nie jest w trybie gotowości.

Przetestowane interfejsy API:

Pomyślne: odebrano zdarzenia z każdego czujnika.

wzór_testowy_koloru_solidnego

Służy do sprawdzania, czy wzorce testowe jednolitych kolorów są prawidłowo generowane na potrzeby wyciszania kamery. Jeśli wyciszanie kamery jest obsługiwane, muszą być obsługiwane wzorce testowe dla jednolitych kolorów. Jeśli wyciszanie kamery nie jest obsługiwane, wzorce testu jednolitego koloru są testowane tylko wtedy, gdy ta 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, sprawdzany jest tylko czarny.

Przetestowane interfejsy API:

Powodzenie: obsługiwane wzorce testów stałych mają prawidłowy kolor i są niewielkie różnice w obrazie.

wzorzec_testu

Testowanie parametru android.sensor.testPatternMode w celu przechwytywania klatek dla każdego prawidłowego wzorca testowego i sprawdzenie, czy klatki są prawidłowo generowane 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 proste sprawdzenie poprawności wzoru testu jednolitego koloru i słupków kolorów.

Przetestowane interfejsy API:

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

wzorce_testu_2

wzory_testowe_2.jpg

krzywa_testu_tone_mapa

Testowanie konwersji wzorca testowego z RAW na YUV z użyciem liniowej mapy tonalnej. Ten test wymaga funkcji android.sensor.testPatternMode = 2 (COLOR_BARS) do wygenerowania idealnego wzorca obrazu do konwersji tonema. Zapewnia to, że potok ma odpowiednie kolory z liniowy tonemapem i idealne wprowadzanie obrazu (wymaga zasady test_test_patterns).

Przetestowane interfejsy API:

Powodzenie: YUV i RAW są do siebie podobne.

test_tonemapa_krzywej_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 obrazu i czujnika ruchu znajdują się w tej samej domenie czasu.

Przetestowane interfejsy API:

Pass:sygnatury czasowe animacji znajdują się między 2 sygnałami czasowymi obrazu.

ograniczenie_wibracji_testowej

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

Przetestowane interfejsy API:

Przekazywanie: urządzenie nie wibruje po wyciszeniu przez interfejs API ograniczania dźwięku kamery.

scena1

scena1 to szary wykres. Szary wykres musi pokrywać środkowe 30% pola widzenia kamery. Szary wykres powinien w umiarkowanym stopniu utrudniać 3A (automatyczna ekspozycja, automatyczny balans bieli, autofokus), ponieważ w środkowej części ekranu nie ma żadnych funkcji. Żą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 urządzeniu do testowania WFoV lub urządzeń do testowania 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 zestawu.

scena1

scena1: wykres w pełnym rozmiarze (po lewej). Wykres przeskalowany do 2⁄3 (po prawej).

test_3a

Testowanie zbieżności 3 A z celem o umiarkowanej trudności.

Przetestowane interfejsy API:

Powodzenie: zbiegi 3A i zwracane wartości 3A są prawidłowe.

test_ae_af

Testuje poszczególne algorytmy automatycznej ekspozycji (AE) i autofokusu (AF).

Przetestowane interfejsy API:

Powodzenie: zbieżność 3A i zwracane wartości 3A są legalne.

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.

Przetestowane interfejsy API:

Pass (AE) jest zbieżny.

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:

Prawidłowy: ręczne zwiększanie i przekształcanie balansu bieli rejestrowane w każdym dopasowaniu wyniku nagrywania z automatycznym balansem bieli estimate generowanym przez algorytm 3A kamery.

test_automatyczna_vs_ręczna_auto

test_auto_vs_manual_auto.jpg

test_auto_vs_ręczny_wb

test_auto_vs_manual_wb.jpg

test_auto_vs_ręczna_wb_tm

test_auto_vs_manual_manual_wb_tm.jpg

test_czarna_biała

Sprawdza, czy urządzenie generuje pełne, czarno-białe obrazy. 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.

Przetestowane interfejsy API:

Pass: generuje obrazy czarno-białe. Kanały nasycone białych obrazów mają wartości RGB [255, 255, 255] z marginesem błędu niższym niż 1%.

test_czarna_biała_czarna test_czarna_biała_czarna
test_czarna_biała_czarna.jpg test_czarna_biała_biała.jpg

wykres_czarna_biała_ośmia

test_czarna_biała_plotka.png

ręczna_wersja_testowa_sameness

Robi 5 serii po 50 zdjęć przy ręcznym ustawieniu przechwytywania i sprawdza, czy wszystkie zdjęcia są identyczne. Ten test pozwala sprawdzić, czy występują sporadyczne klatki, które są przetwarzane w inny sposób lub mają artefakty.

Przetestowane interfejsy API:

Prawidłowo: obrazy są identyczne wizualnie i w wartościach RGB.

Niepowodzenie:pokazuje wzrost lub spadek średniej RGB na początku każdej serii.

  • Tolerancja wynosi 3% dla first_API_level < 30
  • Tolerancja wynosi 2% dla first_API_level >= 30

test_samodzielny_testu_sama_ręczna_średnia

test_burst_sameness_manual_mean.jpg

test_sam_samodzielna_ręczna_środki

test_sam_samodzielna_ręczna_plot_means.png

wynik_przechwycenia_testu

Testy, czy prawidłowe dane wracają w obiektach CaptureResult. Robi zdjęcia automatyczne, ręczne i automatyczne.

Przetestowane interfejsy API:

Prawidłowo: metadane są prawidłowe we wszystkich zapisach, a ustawienia ręczne nie wyciekają do drugiego przechwytywania automatycznego. Wyznacza korektę cieniowania obiektywu na zdjęciach.

test_capture_result_plot_lsc_auto_ch0

test_capture_result_plot_lsc_auto_ch0.png

test_przycięcia_regionu_nieprzetworzonego

Sprawdza, czy strumieni RAW nie można przyciąć.

Przetestowane interfejsy API:

Prawidłowy: obrazy YUV są wyśrodkowane, ale nie RAW.

test_przycięcia_w_regionie_raw_comp_raw_przycisk

test_crop_region_raw_comp_raw_crop.jpg

test_przycięcia_regionu_raw_comp_raw_full

test_crop_region_raw_comp_raw_full.jpg

test_przycięcia_w_regionie_raw_comp_yuv

test_crop_region_raw_comp_yuv_crop.jpg

test_przycięcia_regionu_raw_yuv_full

test_crop_region_raw_yuv_full.jpg

testowe_regiony przycięcia

Testy działania regionów przycięcia. Podczas wykonywania pełnego zdjęcia tworzy plamy 5 różnych regionów (na rogach i w środku). Robi zdjęcia z przycięciem ustawionym dla 5 regionów. Porównuje wartości poprawki i przycięcia obrazu.

Przetestowane interfejsy API:

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

testowy_model_szumu_dng

Sprawdza, czy parametry nieprzetworzonego modelu DNG są prawidłowe. Wykres przedstawia zmierzoną wariancję środkowej części szarej karty w nieprzetworzonych ujęciach rejestrowanych w różnych czułościach i porównuje te wartości z wariancją dla każdej czułości przez model szumu DNG w HAL kamery (na podstawie parametrów O,S zwracanych w obiektach wyników przechwytywania). Aby dowiedzieć się więcej o modelu szumu DNG, pobierz dokument na temat modelu szumu DNG.

Przetestowane interfejsy API:

Powodzenie: nieprzetworzone parametry modelu DNG są prawidłowe. Oczekiwane wartości RGB odpowiadają rzeczywistym zmierzonym wartościom RGB.

testowy_model_szumu_dng_plog

testowy_model_szumu_dng.png

zaawansowana_kompensacja_testu_ev

Sprawdza, czy stosowana jest kompensacja wartości ekspozycji (EV). Test zwiększa ekspozycję w 8 krokach i porównuje jasność zmierzoną z oczekiwaną. 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.

Przetestowane interfejsy API:

Prawidłowa: obrazy pokazują większą ekspozycję bez nadmiernego naświetlania z odległości 5 kroków.

test_kompensacja_zaawansowana_wynik_zaawansowany

test_kompensacja_zaawansowana_plot_means.png

podstawowa_kompensacja_testu_ev

Testy, czy kompensacja EV jest stosowana na podstawie zakresu utworzonego za pomocą funkcji CONTROL_AE_COMPENSATION_STEP. Przy każdej wartości kompensacji rejestrowane jest 8 klatek.

Przetestowane interfejsy API:

Prawidłowy: wzrost natężenia światła przy zwiększonym ustawieniu kompensacji EV, a 8 klatek rejestrowanych przy każdym ustawieniu kompensacji EV ma stabilną wartość luma.

podstawowa_kompensacja_testu_ev

test_kompensacja_podstawowego_testu_ev.png

ekspozycja_testowa

Testy, w których można uzyskać stałą ekspozycję, która zmienia się wraz z wartością ISO i czasem ekspozycji. Wykonuje serię ujęć, w których czas naświetlania oraz ISO zostały dobrane tak, aby się zrównoważyć. Wyniki powinny mieć taką samą jasność, ale obraz powinien być szumniejszy w ciągu całej sekwencji. Sprawdza, czy średnie wartości próbek w pikselach są blisko 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żesz też przeprowadzić z obrazami w formacie RAW, ustawiając w pliku konfiguracji flagę debug.

Przetestowane interfejsy API:

Przezgodne: zdjęcia mają taką samą jasność, ale głośniejsze przy wyższych wartościach ISO. Plany RGB są płaskie, gdy wartość ekspozycji ISO* jest stała w testowanej przestrzeni wzmocnienia.

wskaźnik_ekspozycji_testowej

test_ekspozycji_testowej.png

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

test_JPEG

Testy, które konwertowały obrazy YUV i JPEG urządzeń, wyglądają tak samo. Test pobiera środkowe 10% obrazu, oblicza wartość RGB i sprawdza, czy wyniki są ze sobą zgodne.

Przetestowane 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_włączania

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

Przetestowane interfejsy API:

Pasujące: obrazy [2, 3, 6, 8, 10, 12, 13] mają wyższe wartości ISO lub ekspozycję i wyświetlają się z wyższym RGB w 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

śr._opóźnienia_testu

test_latching_plot_means.png

test_liniowości

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

Przetestowane interfejsy API:

Powodzenie: wartości R, G i B muszą rosnąć liniowo o zwiększonej czułości.

test_linearności_średniej

test_linearity_plot_means.png

test_zablokowany_seria

Testuje blokadę 3A i rozbłysk YUV (z użyciem ustawienia automatycznego). Ten test został zaprojektowany tak, aby zaliczać go nawet na wybranych urządzeniach, które nie mają MANUAL_SENSOR lub PER_FRAME_CONTROLS. W ramach testu sprawdzamy spójność obrazu YUV, gdy sprawdzanie liczby klatek jest w trybie CTS.

Przetestowane interfejsy API:

Powodzenie: zdjęcia wyglądają spójnie.

test_zablokowana_ramka_0

test_locked_burst_frame0.jpg

test_zablokowana_ramka_seria1

test_locked_burst_frame1.jpg

test_zablokowana_ramka_ramowa2

test_locked_burst_frame2.jpg

poprawka_koloru_testu

Sprawdza, czy skonfigurowane parametry android.colorCorrection.* są stosowane. Powoduje wykonanie ujęć z różnymi wartościami 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. Wykorzystuje liniową mapę tonalną. 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.

Przetestowane interfejsy API:

Osiągnięcie: wartości R i B zwiększają się wraz z przekształceniem.

test_parametr_kolor_korekta_plot_means

test_parametr_kolor_korekta_plot_means.png

*Oś X oznacza żądania przechwytywania: 0 = jednostkowe, 1=czerwone wzmocnienie, 2= wzmocnienie niebieskim

test_param_color_improveion_req=0

test_param_color_improveion_req=0.jpg

test_param_color_correctness_req=1

test_param_color_improveness_req=1.jpg (wzmocnienie R)

test_param_color_improveion_req=2

test_param_color_Correction_req=2.jpg (wzmocnienie B)

parametr_test_exposure_time

Sprawdza, czy parametr android.sensor.exposureTime jest stosowany.

Przetestowane interfejsy API:

Podanie: każde ujęcie jest jaśniejsze od poprzedniego.

test_param_exposure_time_frame0

test_param_exposure_time_frame0.jpg

parametr_test_exposure_time_plot

test_param_exposure_time_plot.png

tryb_parametru_testowego_flash

Sprawdza, czy parametr android.flash.mode jest stosowany. Ręcznie ustawia ciemną stronę ekspozycji, tak by było jasne, czy lampa błyskowa została uruchomiona, i wykorzystuje liniową mapę tonalną. Sprawdza środek kafelka, aby zobaczyć, czy nie został utworzony duży gradient w celu sprawdzenia, czy lampa błyskowa została uruchomiona.

Przetestowane interfejsy API:

Prawidłowy: na środku obrazu kafelka znajduje się duży gradient, co oznacza, że została uruchomiona lampa błyskowa.

parametr_test_flash_mode_1

test_param_flash_mode_1.jpg

kafelek_test_param_flash_mode_1

test_param_flash_mode_1_tile.jpg

parametr_test_flash_mode_2

test_param_flash_mode_2.jpg

kafelek_test_param_flash_mode_2

test_param_flash_mode_2_tile.jpg

redukcja_szumie_testu

Sprawdza, czy po ustawieniu parametr android.noiseReduction.mode jest stosowany prawidłowo. Robi zdjęcia przy słabym oświetleniu. Korzysta z wysokiego wzmocnienia analogowego, aby na zdjęciu było zaszumione. Rejestruje 3 obrazy: „Szybka” i „wysoka jakość” przy wyłączonej opcji NR. Przechwytuje również obraz z niskim wzmocnieniem i wyłączonym dźwiękiem NR, a także wykorzystuje tę wariancję jako punkt odniesienia. Im wyższy współczynnik SNR (stosunek sygnału do szumu), tym lepsza jakość obrazu.

Przetestowane interfejsy API:

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

parametr_testowy_szum_redukcyjny_wykres_SNR

parametr_testowy_szumy_redukcja_plotu_SNR.png

0: WYŁ., 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

czułość_testu

Sprawdza, czy parametr android.sensor.sensitivity jest stosowany. Test zwiększa czułość w 5 krokach ze stałą ekspozycją dla każdego ujęcia.

Przetestowane interfejsy API:

Prawidłowy: RGB oznacza, że środkowe 10% jest jaśniejsze przy większej 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

parametr_testowy_czułość_testu

test_param_sensitivity_plot.png

tryb_parametru_testowego_cieniowania

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

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

test_param_shading_mode_ls_maps_mode_1_loop_0 (pętla_0)

test_param_cieniowanie_mode_ls_maps_mode_1_loop_0.png

test_param_shading_mode_ls_maps_mode_2_loop_0 (pętla_0)

test_param_shading_mode_ls_maps_mode_2_loop_0.png

test_param_tonemap_mode

Sprawdza, czy parametr android.tonemap.mode jest stosowany. Stosuje różne krzywe mapy tonalnej do każdego kanału R, G i B oraz sprawdza, czy obrazy wyjściowe zostały zmodyfikowane zgodnie z oczekiwaniami. Składa się on z 2 testów: test1 i test2.

Przetestowane interfejsy API:

Pomyślne:

  • test1: w przypadku obu obrazów występuje liniowy tonema, a n=1 – bardziej stromy gradient. Kanał G (zielony) jest jaśniejszy w przypadku zdjęcia n=1.
  • test2: ta sama mapa, ale inna długość. Obrazy są takie same.
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

zwiększanie_czułości_aktywności_testowej_po_nieprzetworzonej

Sprawdza po wzmocnieniu czułości RAW. Przechwytuje 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.

Przetestowane interfejsy API:

Pass: obrazy RAW przyciemniają się ze wzrostem wzmocnienia, a obrazy YUV mają 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_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_czułości_zmiany_w_kanale_yuv

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. Zapisuje nieprzetworzoną serię zdjęć.

Przetestowane interfejsy API:

Podanie: każde ujęcie jest głośniejsze od poprzedniego, ponieważ wzmocnienie wzrasta.

Korzysta z wariancji centralnej komórki siatki statystyk.

wariancja_czułości_testu_raw_burst

test_raw_burst_czułość_wariancji.png

ekspozycja_testowa_nieprzetworzona

Rejestruje zestaw nieprzetworzonych zdjęć o wydłużonym czasie ekspozycji i mierzy wartości pikseli.

Przetestowane interfejsy API:

Powodzenie: zwiększenie ISO (wzrostu) sprawia, ż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

(100 – 1 ms, 101 – 10 ms, 10–1 – 0,1 ms)

test_raw_exposure_s=132

test_raw_exposure_s=132.png

test_raw_exposure_s=209

test_raw_ekspozycja_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

Rejestruje zestaw nieprzetworzonych obrazów o rosnącej czułości i mierzy szum (wariancję) w środkowych 10% obrazu. Pozwala sprawdzić, czy każde ujęcie jest głośniejsze od poprzedniego.

Przetestowane interfejsy API:

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

wariancja_czułości_testowej_nieprzetworzonej

test_raw_czułość_wariancji.png

redukcja_szumu_testu

Testy, w których stosuje się funkcję android.noiseReduction.mode do ponownego przetwarzania żądań. Robi ponownie przetworzone zdjęcia przy słabym oświetleniu. Korzysta z wysokiego wzmocnienia analogowego, co zapewnia szum podczas robienia zdjęcia. Rejestruje 3 ponownie przetworzone obrazy: NR wyłączone, „szybko” i „wysoka jakość”. Rejestruje ponownie przetworzony obraz z niskim wzmocnieniem i wyłączonym NR, a następnie wykorzystuje tę wariancję jako punkt odniesienia.

Przetestowane interfejsy API:

Sprawne: SZYBKIE >= WYŁ., Wysoka jakość >= SZYBKA, Wysoka jakość >> WYŁ.

Typowy wykres SNR i NR_MODE

Typowy wykres SNR i NR_MODE

test_tonemap_sequence

Testowanie sekwencji ujęć z różnymi krzywymi tonema. Zrobi 3 zdjęcia ręczne z liniową mapą tonalną. Zrobi 3 zdjęcia ręczne z domyślnym tonemapem. Oblicza różnicę między każdą kolejną parą klatek.

Przetestowane interfejsy API:

Prawidłowa: występują 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łaszane rozmiary i formaty przeznaczone do przechwytywania obrazów działają. 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. Obrazy nie są zapisywane domyślnie, ale można je zapisać, włączając funkcję debug_mode.

Przetestowane 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

Sprawdza, czy raportowane rozmiary i formaty dla przechwytywania obrazów działają.

Przetestowane interfejsy API:

Powodzenie: test kończy i zwraca żądane obrazy.

test_yuv_plus_dng

test_yuv_plus_dng.jpg

test_yuv_plus_jpeg

Testuje zarejestrowanie pojedynczej klatki jako danych wyjściowych 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.

Przetestowane 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. Wykorzystuje żądanie ręczne z liniowym mapą tonu, więc wartości nieprzetworzone i współczynniki YUV muszą być takie same. Porównanie 10% środkowych wartości RGB obrazów po przekonwertowaniu RGB. Dziennikiandroid.shading.mode.

Przetestowane interfejsy API:

Pass: YUV i nieprzetworzone obrazy są podobne i mają mniej niż 3,5% różnicy RMS (średniej kwadratowej wartości 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

scena2_a

scena2_a ma 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ę.

scena2_a

scena2_a

test_auto_flash

Testuje, czy w ciemnej scenie włącza się automatyczna lampa błyskowa. Sprawdza, czy na środku obrazu kafelka znajduje się duży gradient, by sprawdzić, czy uruchamiana jest auto-flashowa reklama. Aby uruchomić automatyczną lampę błyskową, musisz wyłączyć tablet i światła na sprzęcie testowym. Tablet jest wyłączany w ramach testu, a światła można wyłączyć automatycznie za pomocą kontrolera Arduino. Aby test zadziałał, scena musi być całkowicie ciemna. Dlatego otwory tylnego tabletu muszą być całkowicie zakryte tabletem scenograficznym, a przedni otwór musi być zasłonięty przysłoną, a telefon DUT musi blokować światło znika w pamięci urządzenia.

Przetestowane interfejsy API:

Prawidłowy: na środku obrazu kafelka znajduje się duży gradient, co oznacza, że uruchamiana jest automatyczna reklama Flash.

testowa_automatyczna ramka

Testuje działanie automatycznego kadrowania kamery. Robi duże powiększenie tak, że nie widać żadnej twarzy na scenie, włącza tryb automatycznego kadrowania, ustawiając opcję AUTOFRAMING w CaptureRequest na True, i sprawdza, czy można wykryć wszystkie twarze w oryginalnej scenie, gdy stan jest zbieżny (czyli gdy AUTOFRAMING_STATE w CaptureResult ma wartość AUTOFRAMING_STATE_CONVERGED).

Przetestowane interfejsy API:

Powodzenie: wykryto wszystkie 3 twarze.

testowy_ekran_p3

Testuje wyświetlenie P3 w formacie JPEG przy użyciu interfejsu API ColorSpaceProfiles. Sprawdza, czy zdjęcie JPEG ma w nagłówku odpowiedni profil ICC, a obraz zawiera kolory spoza zakresu sRGB.

Przetestowane interfejsy API:

Karta: plik JPEG zawiera profil ICC wyświetlacza P3 i kolory spoza zakresu sRGB.

efekty_testowe

Rejestruje klatkę, aby uzyskać obsługiwane efekty aparatu, i sprawdza, czy zostały prawidłowo wygenerowane. W ramach testu sprawdzamy tylko efekty OFF i MONO, ale obrazy są zapisywane w przypadku wszystkich obsługiwanych efektów.

Przetestowane interfejsy API:

Pass: rejestruje obraz sceny z efektami OFF i obrazem monochromatycznym z efektami ustawionymi na MONO.

test_efekty_MONO

test_efekty_MONO.jpg

kombinacje_formatu_testowego

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

Przetestowane interfejsy API:

Powodzenie: wszystkie kombinacje zostały przechwycone.

test_jpeg_quality

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

Przetestowane interfejsy API:

Pass: macierz kwantyzacji zmniejsza się wraz ze wzrostem jakości. (Macierz reprezentuje współczynnik dzielenia).

test_jpeg_quality

Średnia matrycy kolorów DQT w tylnym aparacie Pixel 4 lub luma/chroma a jakość JPEG

test_jpeg_quality nie powiodło się

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.

test_liczba_twarzy

Testuje wykrywanie twarzy.

Przetestowane interfejsy API:

Prawidłowo: znajduje trzy twarze.

test_liczba_twarzy_fd_tryb_1

test_num_faces_fd_mode_1.jpg

test_preview_min_współczynnik_klatek

Sprawdza, czy liczba klatek na podglądzie prawidłowo zmniejsza się w ciemnej scenie. Aby test przebiegł prawidłowo, oświetlenie w zestawie testowym musi zostać wyłączone przez kontroler lub ręcznie przez operatora testu.

Przetestowane interfejsy API:

Prawidłowo: liczba klatek w podglądzie ma minimalną wartość w żądanym zakresie, a różnica między klatkami jest mniejsza niż bezwzględna tolerancja ustawiona w teście.

test_reprocess_uv_swap

Testy, które potwierdzają, że ponowne przetwarzanie YUV-a nie powoduje zamiany płaszczyzn U i V. Jest to określane przez obliczenie sumy różnic bezwzględnych (SAD) między ponownie obrobionym a nieprzetworzonym zdjęciem. Jeśli zamiana płaszczyzn wyjściowych U i V ponownie przetworzonego przechwytywania powoduje wzrost SAD, przyjmuje się, że dane wyjściowe mają prawidłowe płaszczyzny U i V.

Przetestowane interfejsy API:

Przepustka: samoloty U i V nie są zamieniane.

test_reprocess_uv_swap

test_reprocess_uv_swap.png

scena2_b

test_liczba_twarzy

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

Przetestowane interfejsy API:

Pass:znajduje 3 twarze.

test_liczba_twarzy_fd_tryb_1

test_num_faces_fd_mode_1.jpg

test_yuv_jpeg_capture_sameness

Rejestruje 2 obrazy w największych popularnych formatach YUV i JPEG o tym samym współczynniku proporcji co w największym formacie JPEG nieprzekraczającym rozdzielczości 1920 x 1440 pikseli. Ustawia jpeg.quality na 100 i przechwytuje żądanie dwuplatformowe. Konwertuje oba obrazy na macierze RGB i oblicza średnią kwadratową pierwiastka 3D (RMS) między obydwoma obrazami.

Przetestowane interfejsy API:

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

scena2_c

test_liczba_twarzy

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

Przetestowane interfejsy API:

Pass:znajduje 3 twarze.

test_liczba_twarzy_fd_tryb_1

test_num_faces_fd_mode_1.jpg

test_jpeg_capture_perf_class

Sprawdza opóźnienie przechwytywania JPEG w klasie wydajności S zgodnie z opisem w sekcji 2.2.7.2 Aparat w CDD.

Prawidłowy: opóźnienie przechwytywania obrazu JPEG w trybie aparatu2 < 1000 ms dla rozdzielczości 1080p jest mierzone w teście wydajności kamery CTS w warunkach oświetleniowych ITS (3000 K) w przypadku obu aparatów głównych.

test_camera_launch_perf_class

Testowanie opóźnienia uruchomienia kamery w klasie wydajności S zgodnie z opisem w sekcji 2.2.7.2 Kamera w CDD.

Prawidłowy: opóźnienie uruchomienia kamery 2 (od otwarcia kamery do pierwszej klatki podglądu) musi wynosić mniej niż 600 ms, zgodnie z pomiarem wydajności kamery CTS w warunkach oświetleniowych ITS (3000 K) w przypadku obu głównych kamer.

scena2_d

test_liczba_twarzy

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

Przetestowane interfejsy API:

Pass:znajduje 3 twarze.

scena2_e

obraz_ciągły_testowy

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

Przetestowane interfejsy API:

Pass: system 3A stabilizuje się po zakończeniu przechwytywania z 50 klatek.

test_liczba_twarzy

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

Przetestowane interfejsy API:

Pass:znajduje 3 twarze.

scena2_f

scena2_f ma 3 twarze na białym tle i w białych ubraniach. Twarze mają szeroki zakres odcieni skóry i wysoki kontrast z tłem.

scena2_f.png

scena2_f

test_liczba_twarzy

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

Przetestowane interfejsy API:

Pass:znajduje 3 twarze.

test_liczba_twarzy_fd_tryb_1

test_num_faces_fd_mode_1.jpg

scena3

Scene3 korzysta z wykresu ISO12233, a większość testów korzysta z metody wyodrębniania wykresów, aby znaleźć wykres w danej 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 mieć prawidłową orientację.

spójność_testu_3a

Testy spójności 3A.

Przetestowane interfejsy API:

Prawidłowy: 3A zbiega się w zakresie ekspozycji, wzmocnienia, awb (automatyczny balans bieli) i fd (odległość ostrości) trzykrotnie w ramach tolerancji.

test_edge_ulepszenie

Sprawdza, czy parametr android.edge.mode jest stosowany prawidłowo. Przechwytuje obrazy, które nie są przetwarzane ponownie w przypadku każdego trybu brzegowego, i zwraca ostrość obrazu wyjściowego oraz metadanych wyniku przechwytywania. Przetwarza żądanie przechwytywania z danym trybem brzegowym, czułością, czasem ekspozycji, odległością ostrzenia i parametrem powierzchni wyjściowej.

Pass: tryb HQ (2) większy niż tryb OFF (0). Tryb FAST (1) ostrzejszy niż tryb OFF. Tryb HQ jest bardziej wyraźny lub taki sam jak tryb FAST.

Przetestowane interfejsy API:

Parametry kamery, których to dotyczy:

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

testowy_odwracanie_lustrzane

Sprawdza, czy zdjęcie jest prawidłowo zorientowane zgodnie z sekcją 7.5.2 CDD: przedni aparat [C-1-5].

Odbicia lustrzane, odwrócone i obrócone można rozpoznać dzięki elementowi rombowemu znajdującym się w środku.

Prawidłowy: zdjęcie nie jest odwrócone, odbicie lustrzane ani obrócone.

poprawka_sceny_odbicia_lustrzanej

test_flip_lustrzana_poprawka.jpg

test_poziomy_w_pionie

Sprawdza, czy w przypadku czujników poziomych działanie orientacji poziomej jest lepsze niż w orientacji pionowej.

Przetestowane interfejsy API:

Prawidłowo: test pozwala znaleźć wykres o oczekiwanym obróceniu (0 stopni, gdy wyłączone jest zastępowanie orientacji poziomej i pionowej, 90 stopni, jeśli ta opcja jest włączona).

test_poziomy_w_pionie

test_poziomy_do_portraitu.png

raport_ruchu_obiektywu_testowego

Sprawdza, czy flaga ruchu obiektywu jest prawidłowo raportowana. Przechwytuje 24 zdjęcia w pierwszych 12 klatkach z optymalną odległością ostrzenia (wynik 3 A) i ostatnimi 12 klatkami przy minimalnej odległości. W okolicy klatki 12 obiektyw przesuwa się, co powoduje spadek ostrości. Ostrość stabilizuje się w miarę przesuwania obiektywu 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ą. Dokładna ramka, w której przesuwa się obiektyw, nie jest istotna – oznacza to, że flaga ruchu jest potwierdzana, gdy obiektyw się porusza.

Przetestowane interfejsy API:

Prawidłowo:flaga ruchu obiektywu ma wartość True w kadrze ze zmianą ostrości.

Mechanizmy niepowodzenia:

  • lens_moving: True (android.hardware.camera2.CaptureResult#LENS_STATE = 1) w polu test_log.DEBUG jest weryfikowana 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 test_log.DEBUG mają różnicę w ostrości w porównaniu z kilkoma pierwszymi klatkami przy optymalnym ustawieniu ogniskowej lub ostatnich kilku klatkach z minimalną odległością ostrzenia.

test_reprocess_edge_ulepszenia

Sprawdza, czy obsługiwane metody ponownego przetwarzania w celu ulepszenia krawędzi działają prawidłowo. Przetwarza żądanie przechwytywania z danym trybem przetwarzania brzegowego i porównuje różne tryby do przechwytywania z wyłączonymi trybami ponownego przetwarzania brzegu.

Przetestowane interfejsy API:

Prawidłowo: ostrość dla różnych trybów krawędzi jest prawidłowa. HQ (tryb 2) jest dłuższy niż OFF (tryb 0), a poprawa między różnymi trybami jest podobna.

test_reprocess_edge_poprawienie_plot

test_reprocess_edge_enhancement_plot.png

scena4

Scena 4 składa się z czarnego okręgu na białym tle wewnątrz kwadratu.

scena4

scena4

współczynnik_testu_i_przycięcie

Sprawdza, czy obrazy w potoku obrazów nie zostały zniekształcone lub nieoczekiwanie przycięte. Robi zdjęcia okręgu na wszystkich formatach. Okrąg nie jest zniekształcony, okrąg nie przesuwa się od środka obrazu 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 zachowywana jest maksymalna możliwa wartość FoV (pole widzenia).

Mechanizmy niepowodzenia:

  • Aparat nie jest ustawiony na okrągłym wyświetlonym na tablecie w środkowej części ujęcia.
  • Okrąg na zrobionym obrazie jest zniekształcony przez potok przetwarzania.
  • Obraz w niższej rozdzielczości jest dwukrotnie przycinany w ramach potoku obrazu, powodując odmienny obraz w wysokiej i niskiej rozdzielczości.
  • Okrąg na zrobionym zdjęciu jest przycięty z powodu zbyt wysokiego współczynnika proporcji, co zmniejsza wysokość lub szerokość obrazu.
  • Okrąg na zrobionym zdjęciu ma odbicie w środkowej części i nie jest w pełni wypełnione.

test_wyrównania_wielu_kamery

Testowanie parametrów kalibracji kamery związanych z pozycjonowaniem w systemach z wieloma kamerami. Za pomocą fizycznych aparatów podrzędnych z wieloma aparatami robi zdjęcie jednym z tych aparatów. Znajduje środek okręgu. Rzuca środek okręgu na współrzędne świata dla każdej kamery. Porównuje różnice między środkami okręgów aparatów we współrzędnych świata. Odwzorowuje współrzędne świata na współrzędne pikseli i porównuje je z oryginalnymi w ramach kontroli poprawności. Porównuje rozmiary kół, sprawdzając, czy ogniskowe aparatów są różne.

Przetestowane interfejsy API:

Spełnianie wymogów: centra i rozmiary okręgów są zgodne z oczekiwaniami na wyświetlanych obrazach w porównaniu z obrazami zrobionymi przy użyciu danych kalibracyjnych i ognisk.

Mechanizmy niepowodzenia:

  • LENS_INTRINSIC_CALIBRATION, LENS_POSE_TRANSLATION lub LENS_POSE_ROTATION to wartości projektowe, a nie rzeczywiste dane kalibracyjne.
  • Aparat jest nieodpowiedni do konfiguracji testu. 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 odpowiedziach na najczęstsze pytania dotyczące kamery ITS w pakiecie1.

współczynnik_podglądu_testu_i_przycięcie

Podobnie jak w przypadku testu test_aspect_ratio_and_crop w przypadku zrzutów nieruchomych ten test sprawdza obsługiwane formaty podglądu, aby mieć pewność, że klatki podglądu nie zostaną odpowiednio rozciągnięte lub 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).

Przetestowane interfejsy API:

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

stabilizacja_testu_podglądu

Sprawdza obsługiwane rozmiary podglądu, aby upewnić się, że FoV jest odpowiednio przycięty. Test rejestruje 2 filmy, jeden ze stabilizacją w podglądzie ON, a drugi ze stabilizacją w podglądzie OFF. Z każdego filmu wybierana jest reprezentatywna klatka, a następnie analizowana, aby mieć pewność, że zmiany zmiennej FoV w obu filmach są zgodne ze specyfikacją.

Przetestowane interfejsy API:

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

współczynnik_parametru_testu_filmu_i_przycięcie

Nagrywa filmy koła wewnątrz kwadratu 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).

Przetestowane interfejsy API:

Pass: klatki w filmie nie są rozciągnięte, środek klatek nie różni się o więcej niż 3%, a maksymalne pole widzenia jest zachowywane.

scena5

Scene5 wymaga równomiernie oświetlonej szarej sceny. Służy do tego dyfuzor nad obiektywem aparatu. Zalecamy następujący dyfuzor: 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:

scena5

ujęcie sceny 5

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. Ten test wykonuje na ramce YUV z automatycznym 3A. Cieniowanie 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:

Powodzenie: w określonym promieniu obrazu wariancja wartości r/g i b/g musi być mniejsza niż 20%, aby można było ukończyć test.

scena6

Scene6 to siatka małych okręgów z kwadratem w jednym rogu wskazującym orientację. Małe okręgi są potrzebne do przetestowania funkcji powiększenia w dużym zakresie.

scena6

scena6

test_powiększenia_czujnika

Testuje działanie funkcji powiększenia w aparacie, która generuje przycięte obrazy w formacie RAW.

Gdy przypadek użycia strumienia jest ustawiony na CROPPED_RAW, test obejmuje 2 zdjęcia RAW: obraz RAW z pełnym polem widzenia (FoV) i przycięty obraz RAW. W ramach testu konwertowane są obrazy na macierze RGB, skalowane w dół w pełnym rozmiarze przycięty obraz RAW do rozmiaru zgłaszanego przez funkcję SCALER_RAW_CROP_REGION i oblicza różnicę między średnią kwadratową pierwiastków 3D (RMS).

Przetestowane interfejsy API:

Prawidłowo: różnica średniej kwadratowej pierwiastka 3D (RMS) między przyciętym obrazem RAW przyciętym w dół a pełnym zdjęciem RAW w formacie FoV wynosi mniej niż 1%.

testowy_powiększenie

Testuje działanie powiększenia. Robi zdjęcia w zakresie powiększenia i sprawdza, czy okręgi powiększają się w miarę powiększania kamery.

Przetestowane interfejsy API:

Prawidłowy: względny rozmiar zarejestrowanego okręgu jest zgodny z żądanym współczynnikiem powiększenia, aby aparat prawidłowo powiększał obraz.

testowy_powiększenie

test_zoom , aby znaleźć kontur okręgu najbliżej środka.

test_małe_opóźnienia_powiększenia

Testuje działanie powiększenia z małym opóźnieniem. Powoduje wykonanie zdjęć w zakresie powiększenia za pomocą funkcji android.control.settingsOverride = 1 (SETTINGS_OVERRIDE_ZOOM) i sprawdzanie, czy okręgi na obrazach wyjściowych odpowiadają współczynnikom powiększenia w metadanych przechwytywania.

Przetestowane interfejsy API:

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

test_preview_video_zoom_match

Sprawdza, czy podczas nagrywania i powiększania podgląd wideo i wyjście wideo wyświetlają się, a także rejestruje te same wyniki. 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.

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

VGA_640x480_key_frame.png (przed powiększeniem)

podgląd_640x480_ramka_kluczowa.png

podgląd_640x480_key_frame.png (przed powiększeniem)

VGA_640x480_ramka_kluczowa_zoomed.png

VGA_640x480_key_frame.png (po powiększeniu)

podgląd_640x480_ramka_kluczowa_zoomed.png

preview_640x480_key_frame.png (po powiększeniu)

rozszerzenia_scen

Testy scene_extensions dotyczą rozszerzeń kamery i muszą korzystać z opcji Camera ITS-in-a-Box, ponieważ wymaga dokładnej kontroli środowiska 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.

scena_hdr

scena_hdr

test_rozszerzenie_hdr

Testuje rozszerzenie HDR. Robi zdjęcia z włączonym i wyłączonym rozszerzeniem oraz sprawdza, czy rozszerzenie sprawia, że kod QR jest lepiej wykrywalny.

Przetestowane interfejsy API:

Powodzenie: rozszerzenie HDR zmniejsza liczbę zmian kontrastu potrzebnych do wykrycia kodu QR lub zmniejsza gradient w obrębie tego kodu.

scena_noc

Scena scene_night składa się z białego okręgu z 4 mniejszymi okręgami w środku, które są umieszczone na czarnym tle. Mniejsze kółko w prawym górnym rogu jest ciemniejsze od pozostałych, aby wskazać orientację.

scena_noc

scena_noc

test_night_extension

Testowanie rozszerzenia Noc. Przechwytuje z włączonym i wyłączonym rozszerzeniem oraz sprawdza, czy:

  • Robienie zdjęć przy włączonym rozszerzeniu Noc trwa dłużej.
  • Zdjęcie z włączonym rozszerzeniem Noc jest jaśniejsze lub zawiera artefakty lepiej wyglądające.

Przetestowane interfejsy API:

Pass: w porównaniu do nagrywania bez włączonego rozszerzenia Noc film z włączonym rozszerzeniem Noc trwa o co najmniej 0, 5 sekundy dłużej. Zdjęcie musi być o co najmniej 10% jaśniejsze lub, gdy szare punkty w scenie muszą być o 20 pikseli mniejsze od środka otaczającego okręgu.

czujnik_fuzji

Testy czujnika Fusion wymagają określonego ruchu telefonu na tle wzorów w szachownicę. Aby uzyskać optymalne wyniki, upewnij się, że wykres testowy jest zamontowany na płasko. Wykresy, które nie są płaskie, wpływają na obliczenia rotacji w wielu testach. Testy sensor_fusion można zautomatyzować za pomocą urządzenia Sensor Fusion Box.

szachownica

Obraz szachownicy

testowa_synchronizacja_ramki_wielu_kamery

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

Przetestowane interfejsy API:

Prawidłowo: kąt między obrazami z każdego aparatu nie zmienia się znacząco podczas obracania telefonu.

test_preview_stabilization

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

Przetestowane interfejsy API:

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

Poniżej znajdziesz przykładowe filmy ze stabilizacją i bez niej.

  • Przykładowy film ze stabilizacją

  • Przykładowy film bez stabilizacji

test_fuzji

Testuje różnicę w sygnaturach czasowych między aparatem i żyroskopem w przypadku aplikacji AR i VR. Telefon jest obrócony o 90 stopni 10 razy na tle wzoru tablicy. Ruch w obie strony trwa około 2 sekund. 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 pewną liczbę wykresów. Oto 2 najważniejsze kwestie, które należy wziąć pod uwagę przy debugowaniu:

  • test_sensor_fusion_gyro_events: pokazuje zdarzenia żyroskopu dla telefonu podczas testu. Ruch w kierunku x i y oznacza, że telefon nie jest bezpiecznie zamocowany na uchwycie ściennym, co zmniejsza prawdopodobieństwo pomyślnego wyniku testu. Liczba cykli na wykresie zależy od prędkości zapisu podczas zapisywania klatek.

    test_sensor_fusion_gyro_events.png

    test_sensor_fusion_gyro_events

  • test_sensor_fusion_plot_rotations: pokazuje wyrównanie zdarzeń żyroskopu i 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:

Prawidłowy: przesunięcie sygnatur czasowych kamery i żyroskopu wynosi mniej niż 1 ms, zgodnie z sekcją 7.3.9 Czujniki wysokiej jakości w CDD [C-2-14].

Mechanizmy niepowodzenia:

  • Błąd przesunięcia: przesunięcie żyroskopu aparatu nie jest prawidłowo skalibrowane z zakresu +/-1 ms.
  • Utracone klatki: potok nie jest wystarczająco szybki, aby przechwycić 200 klatek naraz.
  • Błędy gniazd: adb nie może prawidłowo połączyć się z DUT na tyle długo, aby przeprowadzić test.
  • Wykres nie jest zamontowany płasko. Wykres test_sensor_fusion_plot_rotations zawiera ramki, w których żyroskop i obrót kamery znacznie się różnią, ponieważ kamera obraca się po 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 wypukłe wygięcie w pobliżu korpusu telefonu, co powoduje przechylenie podczas mocowania tylnej części telefonu do uchwytu ściennego.

test_stabilizacji_wideo

Testy, w których stabilizowany obraz obraca się mniej 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 ze stabilizacją i bez niej.

  • Przykładowy film ze stabilizacją

  • Przykładowy film bez stabilizacji

zrzut_testu_ledów

Sprawdza, czy migawki LED nie są nasycone ani zabarwione.

W ramach tego testu do czujnika czujnika Fusion dodaje się kontroler oświetlenia, który steruje oświetleniem. Gdy diody są ustawione na OFF, test wykonuje zdjęcie z trybem AUTO_FLASH ustawionym 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.

Ze względu na to, że zapis ma charakterystyczny hotspot z powodu Flasha, test oblicza średnią wartość obrazu Flash dla całego przechwytywania i sprawdza, czy ta wartość mieści się w zakresie (68 i 102). Aby sprawdzić, czy w obrazie występuje rozsądny balans bieli, test oblicza współczynniki R/G i B/G oraz sprawdza, czy mieści się on w przedziale od 0,95 do 1,05.

Przetestowane interfejsy API:

Powodzenie: współczynniki R/G i B/G mieszczą się w zakresie od 0,95 do 1,05. Średnia dla grafiki Flash mieści się w zakresie (68, 102).