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, które nie mierzą jakości obrazu, ale sprawdzają, czy 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.
Testy bramki ITS aparatu są przeprowadzane na podstawie wymaganych właściwości aparatu, poziomu interfejsu API i poziomu klasy wydajności multimediów (MPC). W przypadku poziomu interfejsu API ITS używa parametru ro.product.first_api_level
do blokowania testów dodanych na określonym poziomie interfejsu API, które sprawdzają negatywne wrażenia użytkowników dotyczące funkcji na niższych poziomach interfejsu API. 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ą grupowane według sceny w ten sposób:
- scene0: metadane, jitter, żyroskop, wibracje
- scene1: ekspozycja, czułość, kompensacja EV, YUV a JPEG/RAW
- scene2: wykrywanie twarzy, testy wymagające scen kolorowych
- scena 3: wyostrzenie krawędzi, ruch obiektywu
- scene4: współczynnik proporcji, kadrowanie, pole widzenia
- scene5: zacienienie obiektywu
- scene6: powiększenie
- scene7: przełącznik wielu kamer
- scene8: pomiar AE i AWB w regionie
- scene9: kompresja JPEG
- scene_extensions: rozszerzenia dotyczące kamery
- scene_tele: przełączanie teleobiektywu
- scene_flash: automatyczne flashe, minimalna liczba klatek
- scene_video: utrata klatek
- sensor_fusion: przesunięcie czasu pracy kamery/żyroskopu
- feature_combination: kombinacje funkcji
- scene_ip: zgodność obrazu w domyślnej aplikacji do obsługi aparatu i JCA
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 kamery.
Testowane interfejsy API:
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
Przechodzi: różnica między klatkami wynosi co najmniej 30 ms.
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. Sprawdza wyniki przechwytywania i cechy aparatu. Ten test używa wartości auto_capture_request
ekspozycji i wzmocnienia, ponieważ treść obrazu nie jest ważna.
Testowane interfejsy API:
android.hardware.camera2.CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL
android.hardware.camera2.CameraCharacteristics#SCALER_CROPPING_TYPE
android.hardware.camera2.CameraCharacteristics#SENSOR_BLACK_LEVEL_PATTERN
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
android.hardware.camera2.CaptureResult#SENSOR_ROLLING_SHUTTER_SKEW
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:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_EXPOSURE_TIME_RANGE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
android.hardware.camera2.CaptureResult#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureResult#SENSOR_SENSITIVITY
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.
Testowane interfejsy API:
Prześlij: otrzymywane są zdarzenia z każdego czujnika.
test_solid_color_test_pattern
Testuje, czy jednolite kolory w testowych wzorach są prawidłowo generowane w przypadku wyciszenia kamery. Jeśli wyciszanie aparatu jest obsługiwane, należy obsługiwać testowe wzory w jednolitym kolorze. Jeśli wyciszanie 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:
android.hardware.camera2.CameraCharacteristic#SENSOR_AVAILABLE_TEST_PATTERN_MODES
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_DATA
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
Przeszedł: obsługiwane jednolite wzory testowe mają prawidłowy kolor, a obraz jest mało zróżnicowany.
test_test_pattern
Testuje parametr android.sensor.testPatternMode
, aby uchwycić ramki dla każdego prawidłowego wzoru testowego, i sprawdza, czy ramki są generowane prawidłowo w przypadku jednolitych kolorów i pasków kolorów. Ten test obejmuje te kroki:
- Wykonywanie zdjęć według wszystkich obsługiwanych wzorów testowych.
- Przeprowadza prostą weryfikację poprawności wzoru testowego jednolitego koloru i pasków kolorów.
Testowane interfejsy API:
android.hardware.camera2.CameraCharacteristic#SENSOR_AVAILABLE_TEST_PATTERN_MODES
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
Przeszedł: obsługiwane wzorce testowe są generowane prawidłowo.
test_test_patterns_2.jpg
test_tonemap_curve
Testuje konwersję testowego wzorca z formatu RAW na YUV z użyciem mapowania tonalnego liniowego. Ten test wymaga parametru android.sensor.testPatternMode = 2
(COLOR_BARS), aby wygenerować idealny wzór obrazu do konwersji mapy tonacji. Sprawdzanie, czy pipeline ma odpowiednie wyjścia kolorów z mapą tonalną liniową i idealnym wejściem obrazu (oparte na test_test_patterns
).
Testowane interfejsy API:
android.hardware.camera2.CaptureRequest#DISTORTION_CORRECTION_MODE
android.hardware.camera2.CaptureRequest#SENSOR_TEST_PATTERN_MODE
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Prześlij: obrazy YUV i RAW są do siebie podobne.
test_tonemap_curve_raw_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:
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
android.hardware.Sensor
android.hardware.SensorEvent
android.hardware.Sensor#TYPE_ACCELEROMETER
android.hardware.Sensor#TYPE_GYROSCOPE
Pass: sygnatury czasowe ruchu znajdują się między sygnaturami czasowymi 2 obrazów.
test_vibration_restriction
Testuje, czy wibracje urządzenia działają zgodnie z oczekiwaniami.
Testowane interfejsy API:
android.hardware.Sensor
android.hardware.SensorEvent
android.hardware.Sensor#TYPE_ACCELEROMETER
android.os.Vibrator
android.hardware.camera2.CameraDevice#setCameraAudioRestriction
Przechodzi: urządzenie nie wibruje, gdy zostanie wyciszone przez interfejs API ograniczenia dźwięku w aparacie.
scene1_1
scene1 to wykres w kolorze szarym. Szara tabela musi zajmować 30% 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. Jednak żądanie przechwytywania określa całą scenę, która zawiera wystarczającą liczbę cech, aby 3A mogła się zbliżyć.
Kamery RFoV można testować w ramach platformy testowej WFoV lub RFoV. Jeśli kamera RFoV jest testowana w ramach platformy testowej WFoV, wykres jest skalowany o 2/3, aby zapewnić pewne granice dla szarego wykresu w przypadku pola widzenia, co ułatwia konwergencję 3A. Bardziej szczegółowe opisy urządzeń do testowania kamer znajdziesz w artykule ITS-in-a-box.
scene1: wykres w pełnej wielkości (po lewej). Wykres po skalowaniu do ⅔ (po prawej).
test_ae_precapture_trigger
Testuje maszynę stanów AE przy użyciu wyzwalacza przed przechwyceniem. Pokazuje 5 ręcznych żądań z wyłączonym AE. Ostatnia prośba zawiera funkcję przedprzechwytywania AE, która powinna zostać zignorowana, ponieważ AE jest wyłączona.
Testowane interfejsy API:
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
Pass: AE zbiega się.
test_auto_vs_manual
Testy, które uchwyciły zdjęcia automatyczne i ręczne, wyglądają tak samo.
Testowane interfejsy API:
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
android.hardware.camera2.CaptureResult#TONEMAP_CURVE
android.hardware.camera2.CaptureResult#TONEMAP_MODE
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.jpg
test_auto_vs_manual_wb.jpg
test_auto_vs_manual_manual_wb_tm.jpg
test_black_white
Testuje, czy urządzenie wytwarza pełne obrazy czarno-białe. Wykonuje 2 zjęcia: pierwsze z bardzo niskim wzmocnieniem i krótkim czasem naświetlania, co powoduje, że zdjęcie jest czarne, a drugie z bardzo wysokim wzmocnieniem i długim czasem naświetlania, co powoduje, że zdjęcie jest białe.
Testowane interfejsy API:
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Przejście: generuje czarno-białe obrazy. Nasycony kanał białych obrazów ma wartości RGB [255, 255, 255] z marginesem błędu poniżej 1%.
![]() |
![]() |
|
test_black_white_black.jpg | test_black_white_white.jpg |
test_black_white_plot_means.png
test_burst_capture
Sprawdzanie, czy cały potok przechwytywania może nadążać za szybkością przechwytywania w pełnej rozdzielczości i czasem procesora.
Testowane interfejsy API:
Przejście:rejestruje serię zdjęć w pełnym rozmiarze, sprawdza utratę klatek i jasność obrazu.
test_burst_sameness_manual
Wykonuje 5 sekwencji po 50 zdjęć z użyciem ustawień ręcznych i sprawdza, czy są one identyczne. Ten test pozwala wykryć sporadyczne klatki, które są przetwarzane inaczej lub zawierają artefakty.
Testowane interfejsy API:
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR
android.hardware.camera2.CameraMetadata#SYNC_MAX_LATENCY_PER_FRAME_CONTROL
Prześlij: obrazy są wizualnie identyczne i mają identyczne wartości RGB.
Niepowodzenie: na początku każdego wybuchu widać skok lub spadek średniej wartości RGB na wykresie.
- Tolerancja wynosi 3%, gdy
first_API_level
< 30 - Tolerancja wynosi 2%, gdy
first_API_level
>= 30
test_burst_sameness_manual_mean.jpg
test_burst_sameness_manual_plot_means.png
test_crop_region_raw
Sprawdzanie, czy strumienie RAW nie są usuwane.
Testowane interfejsy API:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
android.hardware.camera2.CaptureResult#SCALER_CROP_REGION
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
Prześlij: obrazy YUV są przycinane w środku, ale nie obrazy RAW.
test_crop_region_raw_comp_raw_crop.jpg
test_crop_region_raw_comp_raw_full.jpg
test_crop_region_raw_comp_yuv_crop.jpg
test_crop_region_raw_yuv_full.jpg
test_crop_regions
Sprawdzanie, czy działają regiony przycinania. 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 obrazu z pliku z przyciętym obrazem.
Testowane interfejsy API:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
Przeszedł test: obraz przyciętego obszaru jest zgodny z fragmentem odpowiadającym przyciętym obrazem.
test_ev_compensation
Testuje, czy zastosowano kompensację wartości ekspozycji (EV). Test składa się z sekcji podstawowej i zaawansowanej.
Sekcja podstawowa sprawdza, czy kompensacja EV jest stosowana za pomocą zakresu utworzonego za pomocą CONTROL_AE_COMPENSATION_STEP
. Przy każdej wartości kompensacji rejestrowanych jest 8 ramek.
W sekcji zaawansowanej można zwiększyć ekspozycję w 8 krokach i sprawdzić zmierzoną jasność w porównaniu z oczekiwaną jasnością. Wartości oczekiwane są obliczane na podstawie jasności obrazu bez zastosowania kompensacji EV, a wartość oczekiwana osiąga nasycenie, gdy obliczone wartości przekraczają rzeczywisty zakres wartości obrazu. Test się nie powiedzie, jeśli oczekiwane wartości i zmierzone wartości nie są zgodne lub jeśli obrazy są prześwietlone w ciągu 5 kroków.
Testowane interfejsy API:
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_COMPENSATION_STEP
android.hardware.camera2.CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
android.hardware.camera2.CaptureResult#TONEMAP_CURVE
android.hardware.camera2.CaptureResult#TONEMAP_MODE
Podstawowy przejazd przez sekcję: obrazy pokazują zwiększanie ekspozycji bez prześwietlenia w 5 krokach.
test_ev_compensation_basic.png
Przetwarzanie zaawansowane sekcji: rejestruje wzrost luminacji wraz ze wzrostem ustawienia kompensacji EV. 8 ramek zarejestrowanych dla każdego ustawienia EV mają stabilne wartości luma.
test_ev_compensation_advanced_plot_means.png
test_exposure_x_iso
Testy, które sprawdzają, czy przy różnych wartościach ISO i czasu naświetlania uzyskuje się stałe naświetlenie. Wykonuje serię ujęć, w których czas naświetlania i wartość ISO są dobrane tak, aby się równoważył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. Upewnij się, że obrazy nie są ograniczone do wartości 0 i 1 (co sprawiłoby, że wyglądałyby jak proste linie). Test można też uruchomić z obrazami RAW, ustawiając w pliku konfiguracji flagę debug
.
Testowane interfejsy API:
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Pass: obrazy mają tę samą jasność, ale są bardziej ziarniste przy wyższym ISO. Płaskie płaszczyzny RGB występują, gdy wartość ISO*ekspozycji jest stała w przypadku testowanej przestrzeni wzmocnienia.
Mechanizm awarii:
- W
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.png
![]() |
![]() |
|
test_exposure_mult=1.00.jpg | test_exposure_mult=64.00.jpg |
test_latching
Testuje, czy ustawienia (ekspozycja i wzmocnienie) są zablokowane na prawidłowej klatce w przypadku kamer FULL
i LEVEL_3
. Wykonuje serię ujęć, wysyłając kolejne żądania i zmieniając parametry żądania między ujęciami. Sprawdza, czy obrazy mają oczekiwane właściwości.
Testowane interfejsy API:
Przechodzi: 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=03.jpg | test_latching_i=04.jpg | test_latching_i=05.jpg | |
![]() |
![]() |
![]() |
|
test_latching_i=06.jpg | test_latching_i=07.jpg | test_latching_i=08.jpg | |
![]() |
![]() |
![]() |
|
test_latching_i=09.jpg | test_latching_i=10.jpg | test_latching_i=11.jpg | |
![]() |
|||
test_latching_i=12.jpg |
test_latching_plot_means.png
test_linearity
Testuje, czy przetwarzanie na urządzeniu może być odwrócone do pikseli liniowych. Rejestruje sekwencję ujęć, kierując urządzenie na jednolity obiekt.
Testowane interfejsy API:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CaptureRequest#BLACK_LEVEL_LOCK
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Pass: wartości R, G i B muszą wzrastać liniowo wraz ze wzrostem czułości.
test_linearity_plot_means.png
test_locked_burst
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:
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
Prześlij: nagrania są spójne.
test_locked_burst_frame0.jpg
test_locked_burst_frame1.jpg
test_locked_burst_frame2.jpg
scene1_2
Scena 1_2 jest funkcjonalnie identyczną kopią sceny 1_1. Wykorzystuje ona strukturę podrzędnej sceny, aby skrócić czas trwania sceny 1.
test_param_color_correction
Sprawdzanie, czy parametry android.colorCorrection.*
są stosowane po ustawieniu.
Wykonuje zdjęcia z różnymi wartościami przekształcenia i wzmocnienia, a następnie sprawdza, czy różnią się one od siebie. Transformacja i wzmocnienie są wybierane tak, aby sygnał wyjściowy był coraz bardziej czerwony lub niebieski. Używa mapy tonacji liniowej. Mapowanie tonacji to technika wykorzystywana do przetwarzania obrazu, która polega na mapowaniu jednego zestawu kolorów na inny w celu zbliżenia wyglądu obrazów o dużym zakresie dynamicznym do medium o bardziej ograniczonym zakresie dynamicznym.
Testowane interfejsy API:
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
Pass: wartości R i B są wzmacniane zgodnie z transformacją.
test_param_color_correction_plot_means.png
*Oś X to żądania rejestrowania: 0 = jedność, 1=wzmocnienie czerwone, 2= wzmocnienie niebieskie
test_param_color_correction_req=0.jpg
test_param_color_correctness_req=1.jpg (R boost)
test_param_color_correction_req=2.jpg (wzmocnienie B)
test_param_flash_mode
Sprawdzanie, czy parametr android.flash.mode
jest stosowany. Ręcznie ustawia ekspozycję na ciemną stronę, aby było oczywiste, czy błysk był włączony, 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:
Prześlij: środek obrazu w płytce ma duży gradient, co oznacza, że błysk został użyty.
test_param_flash_mode_1.jpg
test_param_flash_mode_1_tile.jpg
test_param_flash_mode_2.jpg
test_param_flash_mode_2_tile.jpg
test_param_noise_reduction
Sprawdza, czy parametr android.noiseReduction.mode
jest prawidłowo stosowany po ustawieniu. rejestrowanie obrazów w przyciemnionym pomieszczeniu; Używa wysokiego wzmocnienia analogowego, aby zapewnić prawidłowy obraz. Rejestruje 3 zdjęcia: z wyłączoną redukcją szumów, „szybko” i „wysoka jakość”. Wykonuje też zdjęcie z małym wzmocnieniem i wyłączonym redukcją szumów, a różnicę między nimi wykorzystuje jako wartość bazową. Im wyższy współczynnik SNR (stosunek sygnału do szumu), tym lepsza jakość obrazu.
Testowane interfejsy API:
Pass: SNR zmienia się w zależności od różnych trybów redukcji szumów i działa podobnie jak na wykresie poniżej.
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.jpg
test_param_noise_reduction_high_gain_nr=1.jpg
test_param_noise_reduction_high_gain_nr=2.jpg
test_param_noise_reduction_high_gain_nr=3.jpg
test_param_noise_reduction_low_gain.jpg
test_param_shading_mode
Sprawdzanie, czy parametr android.shading.mode
jest stosowany.
Testowane interfejsy API:
android.hardware.camera2.CaptureRequest#SHADING_MODE
android.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
Pass: tryb cieniowania jest przełączany, a mapy cieniowania obiektywu są modyfikowane zgodnie z oczekiwaniami.
test_param_shading_mode_ls_maps_mode_0_loop_0.png
test_param_shading_mode_ls_maps_mode_1_loop_0.png
test_param_shading_mode_ls_maps_mode_2_loop_0.png
test_param_tonemap_mode
Testuje, czy 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:
android.hardware.camera2.CameraMetadata#TONEMAP_MODE_CONTRAST_MODE
android.hardware.camera2.CameraMetadata#TONEMAP_MODE_FAST
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Przepustka:
- 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_post_raw_sensitivity_boost
Sprawdzanie wzmocnienia czułości RAW. Wykonuje serię zdjęć RAW i YUV o różnej czułości, publikuje kombinację wzmocnienia czułości RAW i sprawdza, czy średnia pikseli wyjściowych odpowiada ustawieniom żądania.
Testowane interfejsy API:
android.hardware.camera2.CameraCharacteristics#CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
android.hardware.camera2.CaptureRequest#CONTROL_POST_RAW_SENSITIVITY_BOOST
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Pass: wraz ze wzrostem wzmocnienia zdjęcia RAW stają się ciemniejsze, a zdjęcia YUV zachowują stałą jasność.
test_post_raw_sensitivity_boost_raw_s=3583_boost=0100.jpg
test_post_raw_sensitivity_boost_raw_s=1792_boost=0200.jpg
test_post_raw_sensitivity_boost_raw_s=0896_boost=0400.jpg
test_post_raw_sensitivity_boost_raw_s=0448_boost=0800.jpg
test_post_raw_sensitivity_boost_raw_s=0224_boost=1600.jpg
test_post_raw_sensitivity_boost_raw_s=0112_boost=3199.jpg
test_post_raw_sensitivity_boost_raw_plot_means.png
test_post_raw_sensitivity_boost_yuv_s=0112_boost=3199.jpg
test_post_raw_sensitivity_boost_yuv_s=0448_boost=0800.jpg
test_post_raw_sensitivity_boost_yuv_s=0896_boost=0400.jpg
test_post_raw_sensitivity_boost_yuv_s=1792_boost=0200.jpg
test_post_raw_sensitivity_boost_yuv_s=3585_boost=0100.jpg
test_post_raw_sensitivity_boost_yuv_plot_means.png
test_raw_exposure
Wykonywanie serii zdjęć w formacie RAW z rosnącym czasem ekspozycji i mierzenie wartości pikseli.
Testowane interfejsy API:
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
Pass: zwiększenie ISO (wzmocnienie) powoduje, że piksele stają się bardziej czułe na światło, więc wykres przesuwa się w lewo.
test_raw_exposure_s=55.png
(10⁰ to 1 ms, 10¹ to 10 ms, 10⁻¹ to 0,1 ms)
test_raw_exposure_s=132.png
test_raw_exposure_s=209.png
test_raw_exposure_s=286.png
test_raw_exposure_s=363.png
test_raw_exposure_s=440.png
test_reprocess_noise_reduction
Testuje, czy android.noiseReduction.mode
jest stosowany do ponownego przetwarzania żądań.
Reprocesing zdjęć z niedostatecznym oświetleniem. Używa wysokiego wzmocnienia analogowego, aby zapewnić prawidłowy obraz. Rejestruje 3 przetworzone obrazy: z wyłączonym 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
test_tonemap_sequence
Testuje sekwencję ujęć z różnymi krzywą mapowania tonacji. Wykonywanie 3 ujęć ręcznych z tonacją liniową. Wykonywanie 3 ujęć ręcznych z domyślną mapą tonalną. 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.jpg
test_tonemap_sequence_i=1.jpg
test_tonemap_sequence_i=2.jpg
test_tonemap_sequence_i=3.jpg
test_tonemap_sequence_i=4.jpg
test_tonemap_sequence_i=5.jpg
test_yuv_jpeg_all
Sprawdzanie, czy wszystkie zgłaszane rozmiary i formaty do przechwytywania obrazu działają prawidłowo. 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:
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
android.graphics.ImageFormat#JPEG
Prześlij: wszystkie środki obrazu mają maksymalną wartość RMS (wartość RMS sygnału) różnicy w obrazach przekonwertowanych na RGB z 3% obrazu YUV o najwyższej rozdzielczości.
test_yuv_jpeg_all.png
test_yuv_plus_dng
Testuje, czy raportowane rozmiary i formaty do przechwytywania obrazu działają.
Testowane interfejsy API:
Przeszedł: test się zakończył i zwrócił żądane obrazy.
test_yuv_plus_dng.jpg
scene1_3
Scena 1_3 jest funkcjonalnie identyczną kopią sceny 1_1, która implementuje strukturę podrzędnej sceny, aby skrócić czas trwania sceny 1.
test_capture_result
Testuje, czy prawidłowe dane zwracają się w obiektach CaptureResult
. Czy można robić zdjęcia automatycznie, ręcznie i automatycznie.
Testowane interfejsy API:
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AE_REGIONS
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AF_REGIONS
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AWB_REGIONS
android.hardware.camera2.CaptureRequest#CONTROL_MODE
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
android.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Przepuść: metadane są ważne dla wszystkich przechwycięć, a ustawienia ręczne nie są przekazywane do drugiego automatycznego przechwycenia. Rysuje korektę cieniowania obiektywu dla ujęć.
test_capture_result_plot_lsc_auto_ch0.png
test_dng_noise_model
Sprawdzanie, czy parametry modelu DNG w formacie RAW są prawidłowe. Wykres przedstawia zmierzoną rozpiętość w przypadku środkowego fragmentu szarego karty w nieprzetworzonych zdjęciach wykonanych przy różnych czułościach. Wartości te są porównywane z wartościami rozpiętości oczekiwanej przy każdej czułości przez model szumu DNG w interfejsie HAL aparatu (na podstawie parametrów O i S zwracanych 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:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
android.hardware.camera2.CaptureResult#SENSOR_NOISE_PROFILE
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Prześlij: parametry modelu surowego DNG są prawidłowe. Oczekiwane wartości RGB są zgodne z rzeczywistymi zmierzonymi wartościami RGB.
test_dng_noise_model_plog.png
test_jpeg
Testy przekonwertowanych obrazów YUV i obrazów JPEG z urządzenia wyglądają tak samo. Test bierze 10% obrazu w środku i oblicza wartość RGB, a następnie sprawdza, czy są one zgodne.
Testowane interfejsy API:
Przeszedł:średnia różnica RGB między obrazami jest mniejsza niż 3%.
![]() |
![]() |
|
test_jpeg_fmt=jpg.jpg | test_jpeg=fmt=yuv.jpg |
test_raw_burst_sensitivity
Wykonuje serię zdjęć w formacie RAW z rosnącym wzmocnieniem i mierzy szum. rejestruje tylko w formacie raw w trybie seryjnym.
Testowane interfejsy API:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
Pass: każ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.png
test_raw_sensitivity
Wykonuje serię zdjęć w formacie RAW z rosnącą czułością i mierzy szum (wariancję) w środku 10% obrazu. Sprawdzanie, czy każdy kolejny obraz jest bardziej zniekształcony niż poprzedni.
Testowane interfejsy API:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
Pass: zmienność wzrasta z każdym strzałem.
test_raw_sensitivity_variance.png
test_yuv_plus_jpeg
Testuje przechwytywanie pojedynczej klatki jako danych wyjściowych YUV i JPEG. Używa żądania ręcznego z tonowaniem liniowym, aby YUV i JPEG wyglądały tak samo po przekonwertowaniu przez moduł image_processing_utils
.
Testowane interfejsy API:
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
android.graphics.ImageFormat#JPEG
Przechodzi: obrazy YUV i JPEG są podobne i różnią się o mniej niż 1% RMS (wartość średniokwadratowa sygnału).
![]() |
![]() |
|
test_yuv_plus_jpg_jpg.jpg | test_yuv_plus_jpeg_yuv.jpg |
test_yuv_plus_raw
Testuje przechwytywanie pojedynczej klatki jako wyjścia RAW/RAW10/RAW12 i YUV (jeśli jest obsługiwane). Używa żądania ręcznego z mapowaniem tonalnym 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
.
Testowane interfejsy API:
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
android.hardware.camera2.CaptureRequest#CONTROL_MODE
android.hardware.camera2.CaptureRequest#SHADING_MODE
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
android.hardware.graphics.ImageFormat#RAW10
android.hardware.graphics.ImageFormat#RAW12
Prześlij: obrazy YUV i nieprzetworzone są podobne i różnią się o mniej niż 3,5% RMS (wartość średniokwadratowa pierwiastka kwadratowego sygnału).
![]() |
![]() |
|
test_yuv_plus_raw_shading=1_raw.jpg | test_yuv_plus_raw_shading=1_yuv.jpg |
test_sensitivity_priority
Testy CONTROL_AE_PRIORITY_MODE_SENSOR_SENSITIVITY_PRIORITY
z różnymi ustawieniami ISO, aby potwierdzić korelację między wyższym ISO a zwiększonym poziomem szumów.
Testowane interfejsy API:
android.hardware.camera2.CameraMetadata#CONTROL_AE_PRIORITY_MODE_SENSOR_SENSITIVITY_PRIORITY
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
android.hardware.camera2.CaptureResult#SENSOR_SENSITIVITY
android.hardware.camera2.CaptureRequest#CONTROL_AE_PRIORITY_MODE
android.hardware.camera2.CaptureResult#CONTROL_AE_PRIORITY_MODE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureResult#CONTROL_AE_MODE
android.hardware.camera2.CameraMetadata#CONTROL_AE_MODE_ON
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_PRIORITY_MODES
Przechodzi: wyższe wartości ISO powodują wzrost poziomu szumu.
Testowanie kryteriów pomijania
Test test_sensitivity_priority.py
jest pomijany, jeśli zostanie spełnione któreś z tych kryteriów:
- Urządzenie ma pierwszy poziom interfejsu API (
first_api_level
) na poziomie 35 lub niższym. - Urządzenie nie reklamuje
CONTROL_AE_PRIORITY_MODE_SENSOR_SENSITIVITY_PRIORITY
w CONTROL_AE_AVAILABLE_PRIORITY_MODES.
test_exposure_time_priority
Testuje CONTROL_AE_PRIORITY_MODE_SENSOR_EXPOSURE_TIME_PRIORITY
przy różnych czasach ekspozycji, sprawdzając stabilną jasność w zakresie, w którym ISO może to kompensować.
Testowane interfejsy API:
android.hardware.camera2.CameraMetadata#CONTROL_AE_PRIORITY_MODE_SENSOR_EXPOSURE_TIME_PRIORITY
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureResult#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureRequest#CONTROL_AE_PRIORITY_MODE
android.hardware.camera2.CaptureResult#CONTROL_AE_PRIORITY_MODE
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CaptureResult#SENSOR_SENSITIVITY
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureResult#CONTROL_AE_MODE
android.hardware.camera2.CameraMetadata#CONTROL_AE_MODE_ON
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_PRIORITY_MODES
Przyjęcie: jasność jest stabilna (w ramach tolerancji) w czasie ekspozycji, jeśli ISO mieści się w zakresie kompensacji.
Testowanie kryteriów pomijania
Test test_exposure_time_priority
jest pomijany, jeśli zostanie spełnione któreś z tych kryteriów:
- Urządzenie ma pierwszy poziom interfejsu API (
first_api_level
) na poziomie 35 lub niższym. - Urządzenie nie reklamuje
CONTROL_AE_PRIORITY_MODE_SENSOR_EXPOSURE_TIME_PRIORITY
w CONTROL_AE_AVAILABLE_PRIORITY_MODES.
scene2_a
Scena scene2_a zawiera 3 twarze na szarym tle i w neutralnym ubraniu. Twarze mają różne odcienie skóry. Aby wykrywanie twarzy działało optymalnie, wykres musi mieć prawidłową orientację.
scene2_a
test_autoframing
Testuje zachowanie automatycznego kadrowania aparatu. Wykonuje duże powiększenie, aby żadne z twarzy w scenie nie było widoczne, włącza tryb automatycznego kadrowania, ustawiając wartość AUTOFRAMING
w CaptureRequest
na True
, i sprawdza, czy wszystkie twarze w pierwotnej scenie można wykryć, gdy stan się zbliża (czyli gdy AUTOFRAMING_STATE
w CaptureResult
ma wartość AUTOFRAMING_STATE_CONVERGED
).
Testowane interfejsy API:
android.hardware.camera2.CameraCharacteristics#CONTROL_AUTOFRAMING_AVAILABLE
android.hardware.camera2.CaptureRequest#CONTROL_AUTOFRAMING
android.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMING
android.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMING_STATE
Prześlij: wykryto wszystkie 3 twarze.
test_display_p3
Testy
Display P3
przechwytują w formacie JPEG za pomocą 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:
android.hardware.camera2.params.ColorSpaceProfiles
android.hardware.camera2.params.SessionConfiguration#setColorSpace
Przeszedł: plik JPEG zawiera profil ICC Display P3 i kolory spoza gamy sRGB.
test_effects
Wykonuje klatkę dla obsługiwanych efektów aparatu i sprawdza, czy są one generowane prawidłowo. Test sprawdza tylko efekty OFF
i MONO
, ale zapisuje obrazy dla wszystkich obsługiwanych efektów.
Testowane interfejsy API:
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_EFFECTS
android.hardware.camera2.CaptureRequest#CONTROL_EFFECT_MODE
Pass: rejestruje obraz sceny z efektami OFF
oraz obraz monochromatyczny z efektami ustawionymi na MONO
.
test_effects_MONO.jpg
test_exposure_keys_consistent
Ten test porównuje średnią luminancję w przypadku rejestracji z włączoną AE z rejestracją z wyłączoną AE, która ręcznie stosuje parametry ekspozycji (czułość, czas ekspozycji, czas trwania klatki, wzmocnienie czułości po przetworzeniu surowego obrazu) otrzymane w CaptureResult
rejestracji z włączoną AE.
Testowane interfejsy API:
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
android.hardware.camera2.CaptureRequest#CONTROL_POST_RAW_SENSITIVITY_BOOST
android.hardware.camera2.CaptureResult#SENSOR_SENSITIVITY
android.hardware.camera2.CaptureResult#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureResult#SENSOR_FRAME_DURATION
android.hardware.camera2.CaptureResult#CONTROL_POST_RAW_SENSITIVITY_BOOST
Przechodzi: względna różnica w luminancji między dwoma obrazami jest mniejsza niż 4%.
test_format_combos
Testowanie różnych kombinacji formatów wyjściowych.
Testowane interfejsy API:
android.hardware.camera2.CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP
android.hardware.camera2.params.StreamConfigurationMap#getOutputSizes()
android.hardware.camera2.CameraCaptureSession#captureBurst()
Powodzenie: wszystkie kombinacje zostały prawidłowo zarejestrowane.
test_num_faces
Testuje wykrywanie twarzy.
Testowane interfejsy API:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: znajduje 3 twarze.
test_num_faces_fd_mode_1.jpg
test_reprocess_uv_swap
Testuje, czy przetwarzanie YUV 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 wyjściowych U i V w przetworzonych ponownie danych prowadzi do zwiększenia wartości SAD, przyjmuje się, że dane wyjściowe mają prawidłowe płaszczyzny U i V.
Testowane interfejsy API:
android.hardware.camera2.CameraDevice#createCaptureSession
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_YUV_REPROCESSING
android.hardware.camera2.CaptureRequest#EDGE_MODE
android.hardware.camera2.CaptureResult#NOISE_REDUCTION_MODE
Przechodzi: płaszczyzny U i V nie są zamieniane.
test_reprocess_uv_swap.png
scene2_b
test_preview_num_faces
Testuje wykrywanie twarzy w podglądzie z większą różnorodnością odcieni skóry w scenach z twarzami.
Testowane interfejsy API:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: wykrywa 3 twarze z punktami orientacyjnymi twarzy w ramkach.
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 podwójnej powierzchni. Konwertuje oba obrazy na tablice RGB i oblicza 3D średniokwadratową różnicę (RMS) między nimi.
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:
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASES
android.hardware.camera2.CaptureRequest#JPEG_QUALITY
android.graphics.ImageFormat#JPEG
Przechodzi: obrazy YUV i JPEG w przypadku zastosowania 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 zastosowania STILL_CAPTURE
.
scene2_c
test_num_faces
Testowanie wykrywania twarzy z większą różnorodnością odcieni skóry w scenach z twarzami.
Testowane interfejsy API:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Przechodzi test: wykrywa 3 twarze.
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 zapisie 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 aparatu 2 (od otwarcia aparatu do pierwszego podglądu) MUSI wynosić mniej niż 600 ms, zgodnie z wynikiem z testu PerformanceTest aparatu CTS w warunkach oświetlenia ITS (3000 K) dla obu głównych aparatów.
test_default_camera_hdr
Testy, które sprawdzają, czy domyślne przechwytywanie aparatem jest w przypadku klasy wydajności 15 w trybie ultra HDR zgodnie z opisem w sekcji 2.2.7.2 Camera w CDD.
Prześlij: domyślne przechwytywanie pakietu kamery MUSI być w formacie ultra HDR na urządzeniu o klasie wydajności 15.
scene2_d
test_preview_num_faces
Testuje wykrywanie twarzy w podglądzie z większą różnorodnością odcieni skóry w scenach z twarzami.
Testowane interfejsy API:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: znajduje 3 twarze z punktami orientacyjnymi twarzy w ramkach.
scene2_e
test_continuous_picture
50 klatek w rozdzielczości VGA jest rejestrowanych za pomocą pierwszego ustawienia żądania rejestracji.
android.control.afMode = 4 (CONTINUOUS_PICTURE).
Testowane interfejsy API:
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
android.hardware.camera2.CaptureResult#CONTROL_AF_STATE
android.hardware.camera2.CaptureResult#CONTROL_AWB_STATE
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.
Testowane interfejsy API:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Przechodzi test: wykrywa 3 twarze.
scene2_f
Scena 2 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
test_preview_num_faces
Testowanie wykrywania twarzy z większą różnorodnością odcieni skóry w scenach z twarzami.
Testowane interfejsy API:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: wykrywa 3 twarze z punktami orientacyjnymi twarzy w ramkach.
test_num_faces_fd_mode_1.jpg
scene2_g
Scena scene2_g zawiera 3 profilowe twarze na białym tle i w białych ubraniach. Twarze mają szeroką gamę odcieni skóry i wysoki kontrast z tłem.
scene2_g
test_preview_num_faces
Testowanie wykrywania twarzy z większą różnorodnością odcieni skóry w scenach z twarzami.
Testowane interfejsy API:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: wykrywa 3 twarze z punktami orientacyjnymi twarzy w ramkach.
test_preview_num_faces
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 ramek, jak w przypadku scen 1, 2 lub 4, tylko sam wykres. Aby wyszukiwarka wykresów działała optymalnie, wykres musi być w prawidłowej orientacji.
test_edge_enhancement
Sprawdza, czy parametr android.edge.mode
jest prawidłowo stosowany. Przechwytuje obrazy nieprzetworzone w przypadku 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 to dotyczy:
EDGE_MODE
test_edge_enhancement_edge=0.jpg
test_edge_enhancement_edge=1.jpg (tryb szybki)
test_edge_enhancement_edge=2.jpg (tryb wysokiej jakości)
test_flip_mirror
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.
Przeszedł:obraz nie jest odwrócony, odbitykiem lustrzanym ani obrócony.
test_flip_mirror_scene_patch.jpg
test_imu_drift
Sprawdza, czy jednostka pomiarowa bezwładności (IMU) ma stabilne dane wyjściowe przez 30 sekund, gdy urządzenie jest nieruchome i wykonuje podgląd w wysokiej rozdzielczości.
Testowane interfejsy API:
android.hardware.Sensor
android.hardware.SensorEvent
android.hardware.Sensor#TYPE_GYROSCOPE
android.hardware.Sensor#TYPE_ROTATION_VECTOR
Przepustka:
- 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_rotation_vector_drift.png
test_landscape_to_portrait
Sprawdza, czy przełączanie orientacji z poziomej na pionową działa prawidłowo w przypadku czujników zorientowanych poziomo.
Testowane interfejsy API:
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_ROTATE_AND_CROP_MODES
android.hardware.camera2.CameraCharacteristics#SENSOR_ORIENTATION
android.hardware.camera2.CameraCharacteristics#getCameraCharacteristics
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.png
test_lens_movement_reporting
Sprawdza, 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ść w końcu się ustabilizuje, gdy obiektyw zajmie ostateczną pozycję. Flaga ruchu obiektywu powinna być zaznaczona we wszystkich klatkach, w których ostrość jest pośrednia lub większa niż ostrość w pierwszych kilku klatkach z obiektywem nieruchomym w optymalnej odległości ogniskowej oraz w ostatnich kilku klatkach z obiektywem nieruchomym w minimalnej odległości ogniskowej. 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:
android.hardware.camera2.CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCE
android.hardware.camera2.CaptureResult#LENS_STATE
android.hardware.camera2.CaptureResult#LENS_FOCUS_DISTANCE
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
android.hardware.camera2.CaptureRequest#LENS_FOCUS_DISTANCE
Prześlij: w ramce ze zmianą ostrości flaga ruchu obiektywu ma wartość True
.
Mechanizmy niepowodzenia:
lens_moving: True
(android.hardware.camera2.CaptureResult#LENS_STATE
= 1) wtest_log.DEBUG
jest zaznaczone tylko w ramkach, w których ostrość nie zmienia się.- Klatki z wartością
lens_moving: False
(android.hardware.camera2.CaptureResult#LENS_STATE
= 0) w elementzietest_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 służące do wzmacniania 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.
Testowane interfejsy API:
android.hardware.camera2.CaptureRequest#EDGE_MODE
android.hardware.camera2.CaptureRequest#REPROCESS_EFFECTIVE_EXPOSURE_FACTOR
Prześlij: ostrość w różnych trybach krawędzi jest prawidłowa. HQ
(tryb 2) jest ostrzejszy niż OFF
(tryb 0), a poprawa między różnymi trybami jest podobna.
test_reprocess_edge_enhancement_plot.png
scene4
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 testowanego obiektu i wykresu.
scene4
test_30_60fps_preview_fov_match
Sprawdzanie, czy filmy w rozdzielczości 30 FPS i 60 FPS mają ten sam kąt widzenia. Test rejestruje 2 filmy: jeden z 30 FPS, a drugi z 60 FPS. Z każdego filmu wybierany jest reprezentatywny kadr, który jest analizowany, aby sprawdzić, czy zmiany pola widzenia 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:
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureResult#LENS_DISTORTION
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
Przeszedł: 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 skrajnie małej wysokości lub szerokości obrazu w prośbie o zapisanie.
- 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 nie są zniekształcone lub nieoczekiwanie przycięte w systemie przetwarzania obrazów. Robi zdjęcia koła w różnych formatach. Sprawdzanie, czy okrąg nie jest zniekształcony, czy nie przesuwa się z poziomu środka obrazu i czy nie zmienia nieprawidłowo rozmiaru przy różnych formatach obrazu lub rozdzielczościach.
Testowane interfejsy API:
android.hardware.camera2.CaptureResult#LENS_DISTORTION
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
Pozytywny: obrazy nie są rozciągnięte, centrum obrazów nie różni się o więcej niż 3%, a maksymalne możliwe pole widzenia (FOV) jest zachowane.
Mechanizmy niepowodzenia:
- Kamera nie jest wyrównana z kółkiem wyświetlanym na tablecie na środku sceny.
- 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 powstanie różnych pól widzenia w przypadku obrazów w wysokiej i niskiej rozdzielczości.
- Okrąg na zarejestrowanym obrazie jest przycięty z powodu skrajnie małej wysokości lub szerokości obrazu w prośbie o zapisanie.
- 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. Korzystanie z fizycznych kamer podrzędnych w ramach multikamery do zrobienia zdjęcia za pomocą jednej z fizycznych kamer. Znajduje środek okręgu. Przekształca punkt środkowy koła na współrzędne światowe dla każdej kamery. Porównuje różnicę między środkami okręgów kamer w układzie światowym. 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ółek, sprawdzając, czy ogniskowa aparatów jest inna.
Testowane interfejsy API:
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
android.hardware.camera2.CameraCharacteristics#LENS_DISTORTION
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
android.hardware.camera2.CameraCharacteristics#LENS_INTRINSIC_CALIBRATION
android.hardware.camera2.CameraCharacteristics#LENS_POSE_ROTATION
android.hardware.camera2.CameraCharacteristics#LENS_POSE_TRANSLATION
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
android.hardware.camera2.CaptureRequest#DISTORTION_CORRECTION_MODE
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 długości ogniskowej.
Mechanizmy niepowodzenia:
LENS_INTRINSIC_CALIBRATION
,LENS_POSE_TRANSLATION
lubLENS_POSE_ROTATION
są wartościami projektowymi, a nie rzeczywistymi danymi kalibracji.- System kamer nie jest odpowiedni do konfiguracji testowej. Na przykład testowanie systemu kamery szerokokątnej i ultraszerokokątnej za pomocą platformy testowej RFoV. Więcej informacji znajdziesz w artykule z odpowiedziami na najczęstsze pytania dotyczące zestawu ITS-in-a-box1.
test_preview_aspect_ratio_and_crop
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. Sprawdzanie, czy format obrazu koła nie ulega zmianie, czy przycięte obrazy zawierają koło w środku kadru i czy rozmiar koła nie zmienia się w przypadku stałego formatu lub różnych rozdzielczości (sprawdzanie pola widzenia).
Testowane interfejsy API:
android.hardware.camera2.CaptureResult#LENS_DISTORTION
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
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).
test_preview_stabilization_fov
Sprawdzanie obsługiwanych rozmiarów podglądu, aby upewnić się, że pole widzenia jest odpowiednio przycięte.
Podczas testu rejestrowane są 2 filmy: jeden ze stabilizacja podgląduON
, a drugi bez niejOFF
. Z każdego filmu wybierany jest reprezentatywny kadr, który jest analizowany pod kątem zgodności zmian pola widzenia w obu filmach z wymaganiami.
Testowane interfejsy API:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
Przechodzi: stosunek boków koła pozostaje mniej więcej stały, środek koła pozostaje stabilny, a rozmiar koła zmienia się nie więcej niż o 20%.
test_video_aspect_ratio_and_crop
Nagrywa filmy w kółku wewnątrz kwadratu we wszystkich formatach wideo. Wyodrębnia kluczowe klatki i sprawdza, czy proporcje koła się nie zmieniają, czy przycięte obrazy zawierają koło w środku i czy rozmiar koła nie zmienia się w przypadku stałego formatu lub innej rozdzielczości (sprawdzanie pola widzenia).
Testowane interfejsy API:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.hardware.camera2.CaptureResult#LENS_DISTORTION
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
android.media.MediaRecorder
android.media.CamcorderProfile
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.
scene5
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ę, zamontuj dyfuzor przed aparatem i skieruj go na źródło światła o natężeniu około 2000 lx. Zdjęcia wykonane w scenie 5 wymagają rozproszonego oświetlenia bez widocznych elementów. Oto przykładowy obraz:
scene5 capture
test_lens_shading_and_color_uniformity
Sprawdza, czy korekta cieniowania obiektywu jest prawidłowo zastosowana, a kolor jednolitej sceny monochromatycznej 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 bloku próbek i określa, czy test się powiódł, czy nie, porównując wynik z wartością środkową y. Test równomierności kolorów jest oceniany w przestrzeni r/g i b/g.
Testowane interfejsy API:
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
Przeszedł: w przypadku określonego promienia obrazu odchylenie wartości r/g i b/g musi być mniejsze niż 20%, aby test został zaliczony.
scene6
Scena6 to siatka jednoznacznie identyfikowalnych znaczników ArUco.
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 testowanego obiektu i wykresu.
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óżnicę między 2 obrazami.
Testowane interfejsy API:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.hardware.camera2.CameraMetadata#SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CaptureResult#SCALER_RAW_CROP_REGION
Przeszedł: różnica średniokwadratowa 3D (RMS) między pomniejszoną przyciętą kopią obrazu RAW a pełnym obrazem RAW w pełnym polu widzenia jest mniejsza niż próg ustawiony w teście.
test_zoom
Testuje zachowanie zoomu aparatu od obiektywu ultraszerokokątnego do obiektywu szerokokątnego. Wykonuje przechwytywanie w zakresie powiększenia i sprawdza, czy znaczniki ArUco powiększają się wraz z powiększaniem obrazu w kamerze. Test sprawdza też, czy pozycja znacznika środkowego zmienia się w przewidywalny sposób w przypadku każdego ujęcia. Odległość od środka znacznika środkowego do środka obrazu może się zmieniać w stałym tempie w zależności od współczynnika powiększenia aż do przełączenia fizycznej kamery lub może się zmieniać monotonicznie w kierunku lokalizacji tego samego znacznika po przełączeniu fizycznej kamery. Przed testowaniem na urządzeniu musisz zainstalować aplikację Jetpack Camera (JCA).
Testowane interfejsy API:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Przeszedł: względna wielkość zarejestrowanego znacznika ArUco jest zgodna z żądanym współczynnikiem powiększenia, co zapewnia prawidłowe powiększanie przez aparat, a odległość znacznika od środka obrazu zmienia się zgodnie z kryteriami podanymi w opisie testu.
test_zoom, aby znaleźć kontur znacznika ArUco najbliższy środka.
test_low_latency_zoom
Testuje zachowanie zoomu o niskim opóźnieniu w kamerze. Wykonuje przechwytywanie w zakresie zoomu z android.control.settingsOverride = 1 (SETTINGS_OVERRIDE_ZOOM)
i sprawdza, czy znaczniki na wyjściowych obrazach pasują do współczynników 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:
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_SETTINGS_OVERRIDES
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CaptureRequest#CONTROL_SETTINGS_OVERRIDE
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CaptureResult#CONTROL_SETTINGS_OVERRIDE
Przechodzi: względna wielkość zarejestrowanego znacznika jest zgodna z metadanymi wyników w porównaniu ze współczynnikiem 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 obraz. Oblicza rozmiar znacznika najbliższego środka przy różnych współczynnikach powiększenia i sprawdza, czy rozmiar znacznika zwiększa się wraz ze wzrostem współczynnika powiększenia.
Testowane interfejsy API:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Prześlij: względna wielkość zarejestrowanego znacznika jest zgodna z żądanym współczynnikiem powiększenia w filmie i podglądzie.
HD_1280x720_key_frame.png (przed powiększeniem)
preview_1280x720_key_frame.png (przed powiększeniem)
HD_1280x720_key_frame.png (po powiększeniu)
preview_1280x720_key_frame.png (po powiększeniu)
test_preview_zoom
Sprawdzanie, czy współczynnik powiększenia każdej ramki podglądu odpowiada odpowiednim metadanym rejestrowania z obiektywu ultraszerokokątnego na obiektyw szerokokątny. Test pobiera klatki podglądu w zakresie powiększenia i wykrywa znacznik ArUco znajdujący się najbliżej środka. Następnie sprawdza, czy pozycja znacznika środkowego zmienia się w przewidywalny sposób w przypadku każdego ujęcia. Odległość od środka znacznika środkowego do środka obrazu może się zmieniać w stałym tempie w zależności od współczynnika powiększenia aż do przełączenia fizycznej kamery lub może się zmieniać monotonicznie w kierunku lokalizacji tego samego znacznika po przełączeniu fizycznej kamery.
Testowane interfejsy API:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Prześlij: względna wielkość wybranego znacznika ArUco jest zgodna z raportowanym współczynnikiem powiększenia w przypadku odpowiedniego wyniku rejestracji w przypadku wszystkich klatek podglądu. Względna odległość wybranego znacznika od środka obrazu jest zgodna z podanym współczynnikiem powiększenia uzyskanym w wyniku wszystkich ramek podglądu.
test_preview_zoom obrazy pokazujące wybrany znacznik najbliżej środka
test_session_characteristics_zoom
Testuje zakres współczynnika powiększenia dla wszystkich obsługiwanych konfiguracji sesji wymienionych w sekcji CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION
.
W przypadku każdej z tych konfiguracji, jeśli CameraDeviceSetup#isSessionConfigurationSupported
zwróci wartość true, test sprawdza, czy można osiągnąć zakres współczynnika powiększenia zwrócony w CameraDeviceSetup#getSessionCharacteristics
.
Testowane interfejsy API:
android.hardware.camera2.CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION
android.hardware.camera2.CameraDevice.CameraDeviceSetup#isSessionConfigurationSupported
android.hardware.camera2.CameraDevice.CameraDeviceSetup#getSessionCharacteristics
Pass: w przypadku każdego obsługiwanego SessionConfiguration
z listy CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION
można osiągnąć zarówno minimalny, jak i maksymalny współczynnik powiększenia.
scene7
Scene7 to prostokątny kadr podzielony na 4 równe kwadranty, z których każdy jest wypełniony innym kolorem. Pośrodku prostokąta znajduje się wykres nachylonej krawędzi do sprawdzania ostrości. Cztery znaczniki ArUco są wyrównane z 4 zewnętrznymi narożnikami prostokąta, aby ułatwić uzyskanie dokładnych współrzędnych głównego prostokątnego kadru przy różnych współczynnikach powiększenia.
scene7
test_multi_camera_switch
Ten test sprawdza, czy podczas nagrywania podglądu przy różnych współczynnikach zoomu przełączanie między obiektywami ultraszerokokątnym (UW) i szerokokątnym (W) powoduje podobne wartości RGB.
Test wykorzystuje różne współczynniki powiększenia w ramach zdefiniowanego zakresu, aby wykonać dynamiczny zapis podglądu i określić punkt, w którym zmienia się fizyczne powiększenie kamery. Ten punkt oznacza przejście z obiektywu UW na obiektyw W.
Ramki uchwycone 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).
Sprawdzanie AE zapewnia, że zmiana luminacji mieści się w oczekiwanym zakresie zarówno w przypadku zdjęć z obiektywem UW, jak i W. Sprawdzanie AWB weryfikuje, czy współczynniki R/G i B/G mieszczą się w wartościach progowych zarówno w przypadku obrazów z obiektywem UW, jak i z obiektywem W. Sprawdzanie AF ocenia wartość szacowania ostrości na podstawie średniej wielkości gradientu między obrazami z obiektywu UW i W.
Jeśli podczas wykonywania tego testu efekt moiré zakłóca wyniki, użyj tabletu o wyższej rozdzielczości z listy zatwierdzonych przez ITS kamer.
Testowane interfejsy API:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.media.CamcorderProfile
android.media.MediaRecorder
Pozytywny: aby test zakończył się pozytywnie, testy AE i AWB muszą zakończyć się pomyślnie. Wyniki kontroli AF służą tylko do celów rejestrowania. Oto kryteria poszczególnych kontroli:
- Sprawdzanie AE: zmiana luminacji (wartość Y) między obrazami z obiektywu UW i W musi być mniejsza niż 4% w przypadku wszystkich plam kolorów, jeśli urządzenie obsługuje zarówno
ae_regions
, jak iawb_regions
. Jeśli obsługiwane jest tylkoae_regions
, kryteria muszą spełniać tylko wartości plamki koloru szarego. - Sprawdzanie automatycznej regulacji balansu bieli: różnica między wartościami R/G i B/G w obrazach z obiektywem UW i W musi być mniejsza niż 3% w przypadku plamki szarego koloru oraz mniejsza niż 10% w przypadku innych plamek kolorowych, jeśli urządzenie obsługuje zarówno
ae_regions
, jak iawb_regions
. - Sprawdzanie AF: ostrość obrazu w przypadku obiektywu W musi być wyższa niż ostrość obrazu w przypadku obiektywu UW.
Szara plama zrobiona przy użyciu obiektywu szerokokątnego
Szara plama zrobiona przy użyciu obiektywu W
scene8
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, zwiększona ekspozycja, zmniejszona ekspozycja, żółty). 4 znaczniki ArUco są wyrównane z 4 zewnętrznymi narożnikami prostokąta, aby uzyskać dokładne współrzędne głównej ramki prostokąta.
scene8
test_ae_awb_regions
Testuje, czy wartości RGB i luminancji 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 ekspozycji w ciemnym obszarze.
- Sprawdzanie AWB: sprawdza, czy stosunek czerwonego do niebieskiego (średnich wartości RGB obrazu) w ramce z niebieskim obszarem pomiaru jest o więcej niż 2% wyższy niż w ramce z żółtym obszarem pomiaru. Dzięki temu obrazy mają zrównoważony kod RGB podczas pomiaru w żółtym (ciepłym) lub niebieskim (zimnym) regionie.
Testowane interfejsy API:
android.hardware.camera2.CaptureRequest#CONTROL_AWB_REGIONS
android.hardware.camera2.CaptureRequest#CONTROL_AE_REGIONS
android.hardware.camera2.CameraCharacteristics#CONTROL_MAX_REGIONS_AE
android.hardware.camera2.CameraCharacteristics#CONTROL_MAX_REGIONS_AWB
Przeszedł: oba testy AE i AWB zostały zaliczone.
Pomiar ekspozycji w ciemnym obszarze kadru z podwyższoną ekspozycją
Wyświetlanie pomiaru ekspozycji w jaśniejszym obszarze z obniżoną ekspozycją
Mechanizmy niepowodzenia:
Dokładne wykrywanie wszystkich 4 znaczników ArUco jest niezbędne w przypadku tego testu. Jeśli początkowe wykrycie zawiedzie, system spróbuje wykryć twarz po raz drugi, używając czarno-białej wersji obrazu. Poniższy obraz w szarościach przedstawia dodatkowy etap przetwarzania.
test_color_correction_mode_cct
Testy COLOR_CORRECTION_MODE
z różnymi temperaturami barw i odcieniami, weryfikujące zmiany w proporcjach RGB w porównaniu ze sceną z ujęcia scene8.
Testowane interfejsy API:
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
android.hardware.camera2.CaptureResult#COLOR_CORRECTION_MODE
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_COLOR_TEMPERATURE
android.hardware.camera2.CaptureResult#COLOR_CORRECTION_COLOR_TEMPERATURE
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_COLOR_TINT
android.hardware.camera2.CaptureResult#COLOR_CORRECTION_COLOR_TINT
android.hardware.camera2.CameraCharacteristics#COLOR_CORRECTION_COLOR_TEMPERATURE_RANGE
android.hardware.camera2.CameraMetadata#COLOR_CORRECTION_MODE_CCT
android.hardware.camera2.CameraCharacteristics#COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES
Pass: współczynniki RGB wskazują przewidywane wzrosty lub spadki w stosunku do wybranych temperatur i odsetek kolorów.
Testowanie kryteriów pomijania
Test test_color_correction_mode_cct
jest pomijany, jeśli zostanie spełnione któreś z tych kryteriów:
- Urządzenie ma pierwszy poziom interfejsu API (
first_api_level
) na poziomie 35 lub niższym. - Urządzenie nie reklamuje
COLOR_CORRECTION_MODE_CCT
w COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES.
scene9
Scena 9 składa się z tysięcy losowo wielkości i kolorów okręgów, aby utworzyć scenę o bardzo niskiej powtarzalności, która obciąża algorytmy kompresji JPEG.
scene9
test_jpeg_high_entropy
Testuje, czy kompresja JPEG w aparacie działa prawidłowo w scenie9 przy wysokiej entropii i współczynniku jakości JPEG ustawionym na 100%. Wzrost współczynnika powiększenia zapewnia, że obraz wyświetlany na tablecie wypełnia pole widzenia kamery.
Testowane interfejsy API:
Przeszedł:plik JPEG został prawidłowo skompresowany, zapisany i odczytany z dysku.
test_jpeg_quality
Testuje jakość kompresji JPEG w aparacie. Zmień ustawienia jakości JPEG za pomocą android.jpeg.quality
i upewnij się, że tabele kwantyzacji zmieniają się prawidłowo.
Testowane interfejsy API:
Prześlij: macierz kwantyzacji zmniejsza się wraz ze wzrostem jakości. (Macierz reprezentuje współczynnik podziału).
Średnie wartości matrycy DQT luma/chroma aparatu tylnego Pixela 4 w porównaniu z jakością JPEG
Przykład nieudanego testu
Pamiętaj, że w przypadku obrazów o bardzo niskiej jakości (jpeg.quality < 50) nie ma zwiększenia kompresji w macierzy kwantyzacji.
scene_video
Scena scene_video
to scena wideo. Składa się z 4 kółek w różnych kolorach, które poruszają się w różnych kierunkach z różną częstotliwością klatek na białym tle.
scene_video
test_preview_frame_drop
Testuje, czy żądana częstotliwość klatek podglądu jest utrzymywana w dynamicznej scenie. Ten test jest przeprowadzany na wszystkich kamerach, które są dostępne dla aplikacji innych firm.
Testowane interfejsy API:
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.hardware.camera2.CaptureResult#CONTROL_AE_TARGET_FPS_RANGE
android.media.CamcorderProfile
android.media.MediaRecorder
Przeszedł: częstotliwość klatek podglądu jest maksymalną wartością z zakresu żądanej częstotliwości klatek, a średnia odchylenie między kolejnymi klatkami jest mniejsze od względnej tolerancji ustawionej 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.
scene_hdr
Scena scene_hdr
składa się z portretu po lewej stronie i kodu QR o niskim kontraście po prawej.
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:
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
android.hardware.camera2.CameraExtensionSession#capture
Przepuść: rozszerzenie HDR zmniejsza liczbę zmian kontrastu potrzebnych do wykrycia kodu QR lub zmniejsza gradient w przypadku kodu QR.
scene_low_light
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 w orientacji krzywej Hilberta.
scene_low_light
test_night_extension
Testuje rozszerzenie Nocny tryb. Wykonuje przechwytywanie z włączonym rozszerzeniem i wykonuje te czynności:
- Wykrywanie obecności 20 kwadratów
- 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ę wartości luminancji kolejnych kwadratów (np. kwadrat2 – kwadrat1) aż do kwadratu 5 i 6 (kwadrat6 – kwadrat5) oraz oblicza średnią z 5 obliczonych różnic.
W przypadku urządzeń z Androidem 16 lub nowszym prośba o przechwycenie obejmuje zmierzony obszar odpowiadający prostokątowi ograniczającemu siatkę kwadratów. Ta zmiana wpływa na kryteria progu.
Testowane interfejsy API:
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
android.hardware.camera2.CameraExtensionSession#capture
Przepustka:
- W przypadku urządzeń z Androidem 16 lub nowszym średnia wartość luma pierwszych 6 kwadratów musi wynosić co najmniej 80, a średnia różnica wartości luma kolejnych kwadratów (do kwadratu 5) musi wynosić co najmniej 18, 75.
- W przypadku urządzeń z Androidem w wersji 15 lub niższej średnia wartość luminancji pierwszych 6 kwadratów musi wynosić co najmniej 85, a średnia różnica wartości luminancji 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.
test_low_light_boost_extension
Testowanie trybu AE wzmacniania w słabym oświetleniu. Jeśli Camera2 obsługuje tryb AE z wzmocnieniem w warunkach słabego oświetlenia, test jest wykonywany w przypadku Camera2. Jeśli rozszerzenie aparatu w trybie nocnym jest obsługiwane i obsługuje tryb AE z ulepszonym trybem słabym oświetleniem, test jest również wykonywany w przypadku rozszerzenia aparatu w trybie nocnym. Ten test ustawia tryb AE na wzmocnienie w warunkach słabego oświetlenia, pobiera kadr 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ę wartości luminancji kolejnych kwadratów (np. kwadrat2 – kwadrat1) aż do kwadratu 5 i 6 (kwadrat6 – kwadrat5) oraz oblicza średnią z 5 obliczonych różnic.
W przypadku urządzeń z Androidem 16 lub nowszym prośba o przechwycenie obejmuje zmierzony obszar odpowiadający prostokątowi ograniczającemu siatkę kwadratów. Ta zmiana wpływa na kryteria progu.
Testowane interfejsy API:
android.hardware.camera2.CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES
android.hardware.camera2.CameraMetadata#CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
Przepustka:
W przypadku urządzeń z Androidem 16 lub nowszym średnia wartość luminancji pierwszych 6 kwadratów musi wynosić co najmniej 54, a średnia różnica wartości luminancji kolejnych kwadratów (do kwadratu 5 i 6) musi wynosić co najmniej 17.
W przypadku urządzeń z Androidem 15 i starszym średnia wartość luminancji pierwszych 6 kwadratów musi wynosić co najmniej 70, a średnia różnica wartości luminancji kolejnych kwadratów do kwadratu 5 i 6 musi wynosić co najmniej 18.
scene_tele
Kluczowym wymaganiem w przypadku testów scene_tele
jest to, aby odległość od tablicy była większa niż minimalna odległość ostrości teleobiektywu. Ponieważ minimalna odległość ostrości może się różnić w zależności od urządzenia, musisz skonfigurować ustawienia tak, aby pasowały do konkretnego teleobiektywu.
Więcej informacji o konfigurowaniu sprzętu testowego znajdziesz w artykule Konfigurowanie urządzenia do rozszerzania zasięgu telefonu.
scene6_tele
Scena scene6_tele
składa się z siatki znaczników ArUco na białym tle.
Jeśli scene6_tele
z modułowego zestawu jest prześwietlone, zdejmij płytkę przednią modułowego zestawu.
Odłącz platformę testową WFoV od przedłużenia i usuń uchwyt na telefon.
Zdejmij płytę przednią.
test_zoom_tele
Testuje zachowanie zoomu aparatu od obiektywu szerokokątnego do teleobiektywu. Test jest identyczny z testem test_zoom, ale sprawdza zachowanie zoomu kamery od obiektywu szerokokątnego do teleobiektywu.
Testowane interfejsy API:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Przechodzi: względna wielkość zarejestrowanego znacznika ArUco jest zgodna z żądanym współczynnikiem powiększenia, co zapewnia prawidłowe powiększanie przez kamerę, a odległość znacznika od środka obrazu zmienia się zgodnie z kryteriami wymienionymi w test_zoom.
test_preview_zoom_tele
Testuje zachowanie zoomu w przypadku ramek podglądu z obiektywu szerokokątnego do teleobiektywu. Test jest identyczny jak test_preview_zoom, ale sprawdza zachowanie zoomu kamery w przypadku ramek podglądu od obiektywu szerokokątnego do teleobiektywu.
Testowane interfejsy API:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Przechodzi: względna wielkość zarejestrowanego znacznika ArUco jest zgodna z żądanym współczynnikiem powiększenia, aby zapewnić prawidłowe powiększanie przez aparat, a odległość znacznika od środka obrazu zmienia się zgodnie z kryteriami wymienionymi w test_preview_zoom.
scene7_tele
Scena scene7_tele jest identyczna ze sceną scene7, ale skonfigurowana do testowania teleobiektywu. Jest to prostokąt podzielony na 4 równe ćwiartki, z których każdy jest wypełniony innym kolorem. Pośrodku prostokąta znajduje się wykres nachylonej krawędzi do sprawdzania ostrości. Cztery znaczniki ArUco są wyrównane z 4 zewnętrznymi narożnikami prostokąta, aby ułatwić uzyskanie dokładnych współrzędnych głównego prostokątnego kadru przy różnych współczynnikach powiększenia.
test_multi_camera_switch_tele
Ten test sprawdza, czy podczas nagrywania podglądu przy różnych współczynnikach zoomu przełączanie między obiektywem szerokokątnym (W) a teleobiektywem (tele) powoduje podobne wartości RGB.
Test wykorzystuje różne współczynniki powiększenia w ramach zdefiniowanego zakresu, aby wykonać dynamiczny zapis podglądu i określić punkt, w którym zmienia się fizyczne powiększenie kamery. Ten punkt oznacza przejście z obiektywu szerokokątnego na teleobiektyw.
Ramki uchwycone 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).
Sprawdzanie AE zapewnia, że zmiana luminacji mieści się w oczekiwanym zakresie zarówno w przypadku zdjęć z obiektywem szerokokątnym, jak i teleobiektywem. Sprawdzanie AWB weryfikuje, czy współczynniki R/G i B/G mieszczą się w wartościach progowych zarówno w przypadku obrazów z obiektywem szerokokątnym, jak i teleobiektywem. Sprawdzanie ostrości AF ocenia wartość oszacowania ostrości na podstawie średniej wartości gradienta między obrazami z obiektywu szerokokątnego i teleobiektywu.
Testowane interfejsy API:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.media.CamcorderProfile
android.media.MediaRecorder
Zaliczenie: 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 obiektywu szerokokątnego i teleobiektywu musi wynosić mniej niż 4%.
- Sprawdzanie AWB: w przestrzeni barw LAB delta C między R/G a B/G w przypadku obiektywów szerokokątnych i teleobiektywów nie może przekraczać 10.
- Sprawdzanie AF: ostrość obrazu obiektywu tele musi być wyższa niż ostrość obiektywu szerokokątnego.
scene_flash
Testy scene_flash
wymagają ciemnej sceny w polu sensor 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 wykorzystuje ekran do oświetlenia sceny, a nie fizyczną lampę błyskową. Test sprawdza, czy automatyczne włączanie lampy błyskowej działa prawidłowo, sprawdzając, czy środek obrazu kafelka jest jaśniejszy, gdy włączona jest automatyczna lampa błyskowa. 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:
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLE
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
android.hardware.camera2.CaptureRequest#FLASH_MODE
Prześlij: środek obrazu kafelka z włączoną automatyczną lampą błyskową jest jaśniejszy niż oryginalny obraz sceny dla wszystkich kamer.
test_flash_strength
Testuje, czy kontrola siły błysku w trybie SINGLE
jest prawidłowo zaimplementowana.
Sprawdzanie, czy jeśli urządzenie obsługuje kontrolę siły błysku podczas korzystania z kamery w trybie SINGLE
, siła błysku 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 błysku ma wpływ na jasność, a jeśli tryb to ON_AUTO_FLASH
, poziom siły błysku 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:
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_DEFAULT_LEVEL
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_MAXIMUM_LEVEL
android.hardware.camera2.CameraCharacteristics#FLASH_SINGLE_STRENGTH_DEFAULT_LEVEL
android.hardware.camera2.CameraCharacteristics#FLASH_SINGLE_STRENGTH_MAX_LEVEL
Przepustka:
Gdy tryb automatycznej ekspozycji to ON
lub OFF
, jasność fragmentów obrazu wzrasta wraz ze wzrostem poziomu siły lampy błyskowej od braku lampy 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, ponieważ poziom siły błysku zwiększa się od FLASH_SINGLE_STRENGTH_MAX_LEVEL
do FLASH_SINGLE_STRENGTH_MAX_LEVEL
.
test_led_snapshot
Sprawdzanie, czy migawki LED nie nasycą ani nie zmienią odcienia obrazu.
Ten test dodaje do skrzynki sensora fuzji danych kontroler oświetlenia, aby móc sterować światłami. Gdy światła są ustawione na OFF
, test wykonuje przechwycenie z ustawieniami trybu AUTO_FLASH
ON
. Podczas tego testu wykonywana jest sekwencja przed zrobieniem zdjęcia z użyciem aePrecapture
, w której parametr aePrecapture
jest ustawiony na START
, a intencja robienia zdjęcia na Preview
, aby wykonać zdjęcie przy użyciu lampy błyskowej.
Ponieważ obraz ma wyraźny punkt naświetlenia z powodu użycia lampy błyskowej, test oblicza średnią wartość obrazu z lampy błyskowej dla całego obrazu 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:
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLE
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#FLASH_MODE
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_night_mode_indicator
Testuje działanie wskaźnika trybu nocnego, czyli funkcji, która informuje, czy aparat działa w warunkach słabego oświetlenia i czy skorzysta z możliwości uchwytu statycznego w ramach rozszerzenia trybu nocnego. Ta funkcja jest dostępna tylko na urządzeniach, które obsługują rozszerzenia aparatu w trybie nocnym.
Ten test sprawdza, czy wskaźnik trybu nocnego prawidłowo odzwierciedla warunki oświetleniowe podczas podglądu w aparacie. Podczas testu wykonywane są te czynności:
- Inicjowanie: test inicjuje obiekt
ItsSession
i pobiera właściwości kamery. Nawiązuje też połączenie z kontrolerem oświetlenia. - Warunki pominięcia: test jest pomijany, jeśli urządzenie nie obsługuje wymaganego poziomu interfejsu API lub funkcji wskaźnika trybu nocnego.
- Camera2 Session:
- Test rozpoczyna sesję przechwytywania podglądu za pomocą sesji
Camera2
. - Światło jest włączone i zrobiono ramkę podglądu.
- Test sprawdza, czy wskaźnik trybu nocnego jest w stanie
OFF
. - Światło jest wyłączone, a ramka podglądu została zarejestrowana.
- Test sprawdza, czy wskaźnik trybu nocnego jest w stanie
ON
.
- Test rozpoczyna sesję przechwytywania podglądu za pomocą sesji
- Sesja rozszerzenia aparatu:
- Test powtarza tę samą procedurę co w przypadku sesji
Camera2
, ale z użyciem sesjiCameraExtension
z rozszerzeniemEXTENSION_NIGHT
.
- Test powtarza tę samą procedurę co w przypadku sesji
- Usuwanie: test zamyka
ItsSession
i zwalnia kontroler oświetlenia.
Testowane interfejsy API:
Przepustka:
- Gdy światło jest włączone, wskaźnik trybu nocnego powinien być w stanie
OFF
. - Gdy światło jest wyłączone, wskaźnik trybu nocnego powinien być w stanie
ON
. - Dotyczy sesji
Camera2
iCameraExtension
.
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:
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.hardware.camera2.CaptureResult#CONTROL_AE_TARGET_FPS_RANGE
android.media.CamcorderProfile
android.media.MediaRecorder
Przeszedł test:liczba klatek w podglądzie jest równa minimalnej wartości z żądanego zakresu liczby klatek, a różnica między klatkami jest mniejsza niż bezwzględna tolerancja ustawiona w teście.
test_torch_strength
Testuje, czy kontrola siły błysku w trybie TORCH
jest prawidłowo zaimplementowana.
Sprawdzanie, czy jeśli urządzenie obsługuje kontrolę natężenia lampy błyskowej podczas korzystania z kamery w trybie TORCH
, natężenie lampy zmienia się w zależności od różnych poziomów natężenia. 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 błysku ma wpływ na jasność, a jeśli tryb to ON_AUTO_FLASH
, poziom siły błysku nie ma wpływu na jasność.
Sprawdzanie, czy moc lampy pozostaje taka sama przez cały czas trwania migawki, symulując sesję nagrywania filmu. Aby przeprowadzić test, należy wyłączyć światła w testowanym urządzeniu. Można je wyłączyć automatycznie za pomocą kontrolera Arduino. Aby test działał prawidłowo, scena musi być całkowicie ciemna.
Testowane interfejsy API:
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_DEFAULT_LEVEL
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_MAXIMUM_LEVEL
android.hardware.camera2.CameraCharacteristics#FLASH_TORCH_STRENGTH_DEFAULT_LEVEL
android.hardware.camera2.CameraCharacteristics#FLASH_TORCH_STRENGTH_MAX_LEVEL
Przepustka:
Gdy tryb automatycznej ekspozycji to ON
lub OFF
, jasność plam z trybu zdjęć seryjnych wzrasta wraz ze wzrostem poziomu siły 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 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. Wydrukowana na wymiar 17 x 17 cali (43 x 43 cm) musi wypełniać całą tylną część modułu sensora. Testy sensor_fusion
można zautomatyzować za pomocą Sensor Fusion Box.
Wykres danych z różnych czujników
Wykres sensor fusion, który wypełnia tył pola sensor fusion
test_lens_intrinsic_calibration
Testy, które sprawdzają, czy optyczny środek obiektywu zmienia się, gdy obiektyw się porusza z powodu optycznej stabilizacji obrazu (OIS). Jeśli są obsługiwane próbki obiektywu, sprawdza, czy optyczny środek próbek obiektywu zmienia się, gdy obiektyw porusza się z powodu optycznej stabilizacji obrazu (OIS).
Testowane interfejsy API:
android.hardware.camera2.CameraCharacteristics#LENS_INTRINSIC_CALIBRATION
android.media.MediaRecorder
android.media.CamcorderProfile
Przechodzi: optyczny środek soczewki zmienia się o co najmniej 1 piksel. Jeśli są obsługiwane próbki obiektywu, optyczne środki obiektywu próbek obiektywu zmieniają się o co najmniej 1 piksel.
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
Sprawdzanie, czy sygnatury czasowe ramki uchwycone przez logiczną kamerę mieszczą się w zakresie 10 ms, poprzez obliczanie kątów kwadratów w siatce szachownicy w celu określenia sygnatury czasowej.
Testowane interfejsy API:
android.hardware.camera2.CameraCharacteristics#LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
android.hardware.camera2.params.OutputConfiguration#setPhysicalCameraId()
Pass: kąt między obrazami z każdej kamery nie zmienia się znacząco podczas obracania telefonu.
test_preview_distortion
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 rzeczywistymi punktami a idealnymi punktami. Zielone i czerwone wyróżnienia na obrazie służą do wizualnego wykrywania obszaru błędu zniekształcenia.
Obraz szachownicę z zielonymi punktami idealnymi i czerwonymi punktami rzeczywistymi
Testowane interfejsy API:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
android.media.CamcorderProfile
android.media.MediaRecorder
Przeszedł: skumulowany błąd zniekształcenia w ramce podglądu jest mniejszy niż próg ustawiony w teście.
test_preview_stabilization
Testy wykazały, że stabilizowany podgląd filmu obraca się mniej niż żyroskop.
Testowane interfejsy API:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
Przechodzi: maksymalny kąt obrotu w ramkach jest mniejszy niż 70% obrotu żyroskopu.
Poniżej znajdziesz przykładowe filmy z stabilizacją i bez niej.
Przykładowy film ze stabilizacja
Przykładowy film bez stabilizacji
test_sensor_fusion
Testuje różnicę w dacie i godzinie między aparatem 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 ma sterownika żyroskopu lub jeśli parametr źródła sygnatury czasowejREALTIME
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 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
test_sensor_fusion_plot_rotations
: pokazuje wyrównanie żyroskopu i zdarzeń kamery. Wykres musi pokazywać ruch zgodny między kamerą a żyroskopem z dokładnością do +/-1 ms.test_sensor_fusion_plot_rotations
Testowane interfejsy API:
android.hardware.camera2.CameraCharacteristics#LENS_FACING
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE
android.hardware.camera2.CameraMetadata#SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
android.hardware.camera2.CaptureRequest#SENSOR_TIMESTAMP
android.hardware.camera2.CaptureResult#SENSOR_ROLLING_SHUTTER_SKEW
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.
- Utrata klatek: łańcuch przetwarzania nie jest wystarczająco szybki, aby zarejestrować 200 klatek pod rząd.
- 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_rotations
zawiera 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 w płaszczyźnie XY. Ten błąd występuje częściej w przypadku przednich aparatów, ponieważ tylny aparat często ma uniesioną część, która jest wyższa od reszty obudowy telefonu, co powoduje przechylenie podczas montażu tyłu telefonu na płycie montażowej.
test_video_stabilization
Testy wykazały, że stabilizacja wideo powoduje mniejsze obracanie niż żyroskop.
Testowane interfejsy API:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
Przechodzi: maksymalny kąt obrotu w ramkach jest mniejszy niż 60% obrotu żyroskopu.
Poniżej znajdziesz przykładowe filmy z stabilizacją i bez niej.
Przykładowy film ze stabilizacja
Przykładowy film bez stabilizacji
test_video_stabilization_jca
Testy stabilizacji wideo nagranego za pomocą aplikacji Jetpack Camera (JCA), która powoduje mniejsze obracanie niż żyroskop. Przed testowaniem na urządzeniu musisz zainstalować JCA.
Testowane interfejsy API:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.CamcorderProfile
android.media.MediaRecorder
Przepuszczenie: maksymalne przesunięcie kątowe w przypadku klatek wyodrębnionych z filmu zarejestrowanego za pomocą JCA jest mniejsze niż 70% obrotu żyroskopu.
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 sensorów.
test_feature_combination
Testuje wszystkie kombinacje różnych strumieni, tryb stabilizacji obrazu, docelowy zakres liczby klatek na sekundę, 10-bitowy film HDR i Ultra HDR, które są obsługiwane przez urządzenie z kamerą.
W przypadku wersji 16 i nowszych test wykonuje wszystkie kombinacje obsługiwanych funkcji i rejestruje wyniki w pliku proto. Zasady sprawdzania błędów są wywoływane tylko w przypadku kombinacji funkcji, dla których funkcja isSessionConfigurationSupported
zwraca wartość True
.
Testowane interfejsy API:
android.hardware.camera2.CameraDevice.CameraDeviceSetup#isSessionConfigurationSupported
android.hardware.camera2.CameraDevice.CameraDeviceSetup#createCaptureRequest
Przekaz: 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.
scene_ip
(Dostępne od Androida 16) Scenariusz scene_ip umożliwia sprawdzanie zgodności obrazu między domyślną aplikacją aparatu a aplikacją aparatu Jetpacka (JCA) w celu identyfikowania głównych różnic między zarejestrowanymi obrazami. JCA odtwarza obrazy zrobione w aplikacji do mediów społecznościowych i zapewnia obraz odniesienia, który aplikacje do mediów społecznościowych przetwarzają i ulepszają.
Wymagania dotyczące konfiguracji sprzętu
Do testów scene_ip wymagana jest następująca konfiguracja sprzętowa:
- Testy są wykonywane w kamerze Gen2 ITS-in-a-box.
- Sterowniki oświetlenia i serwomechanizmów, które są częścią urządzenia Gen2, służą do sterowania środowiskiem testowym.
- W ramach Gen2 rig znajduje się wykres funkcji testowej.
Gen2chart_sample.png
Testowanie kryteriów pomijania
Testy scene_ip są pomijane, jeśli zostanie spełnione którekolwiek z tych kryteriów:
- Urządzenie ma pierwszy poziom interfejsu API (
first_api_level
) na poziomie 35 lub niższym. - Urządzenie nie jest telefonem z przednim i tylnym głównym aparatem (np. tabletem lub telewizorem).
test_default_jca_ip
Wykonuje testy wykresu funkcji w kontrolowanych warunkach oświetleniowych za pomocą domyślnej aplikacji do obsługi aparatu i JCA. Wykonuje te czynności:
Pole widzenia: sprawdza, czy domyślna aplikacja do obsługi aparatu i JCA mają takie samo pole widzenia. Ta weryfikacja wykorzystuje funkcję kodu QR w środku wyodrębniona z obrazu wykresu.
Jasność: sprawdza, czy różnica jasności zmierzona między domyślną aplikacją aparatu a JCA nie przekracza 10. Ten test używa poprawki dynamicznego zakresu do pomiaru jasności.
Balans bieli: sprawdza, czy różnica między balansem bieli w domyślnej aplikacji aparatu a JCA nie przekracza 4. Ten test używa poprawki dynamicznego zakresu do pomiaru jasności.
Przejście podstawowej sekcji: test przechodzi testy pola widzenia, jasności i balansu bieli. W Androidzie 16 ten test nie jest wymagany (NOT_YET_MANDATED
).