Na tej stronie znajdziesz obszerną listę testów w ramach pakietu testów obrazu aparatu (ITS), który jest częścią weryfikatora pakietu testów zgodności Androida (CTS). Testy ITS to testy funkcjonalne. Oznacza to, że nie mierzą one jakości obrazu, ale wszystkie reklamowane funkcje aparatu działają zgodnie z oczekiwaniami. Z tego dokumentu deweloperzy i testerzy dowiedzą się, do czego służą poszczególne testy i jak debugować błędy testów.
System ITS ogranicza testy kamery według wymaganych właściwości kamery, poziomu interfejsu API i poziomu klasy wydajności multimediów (MPC). Na poziomie interfejsu API ITS używa ro.product.first_api_level
do brania testów dodanych na określonym poziomie interfejsu API, które sprawdzają działanie funkcji na niższych poziomach interfejsu API pod kątem negatywnych wrażeń użytkownika. ITS używa ro.vendor.api_level
do testowania funkcji dodanych na określonym poziomie interfejsu API, które wymagają nowych możliwości sprzętowych. Jeśli dla urządzenia określona jest wartość ro.odm.build.media_performance_class
, ITS wymaga wykonania określonych testów w zależności od poziomu MPC.
Testy są pogrupowane według sceny:
- scene0: metadane, jitter, żyroskop, wibracje
- scene1: ekspozycja, czułość, kompensacja EV, YUV vs. 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: cieniowanie obiektywu
- scene6: Powiększenie
- scene7: przełącznik kamery
- scene8: pomiar ruchu w AE i AWB.
- scene9: kompresja JPEG.
- scene_extensions: rozszerzenia kamery
- scene_flash: autoflash, min frame rate
- scene_video: usunięcie klatki.
- sensor_fusion: przesunięcie czasu pracy kamery/żyroskopu
- feature_combination: kombinacje funkcji
Opisy poszczególnych scen znajdziesz w odpowiednich sekcjach.
scene0
Testy sceny 0 nie wymagają żadnych informacji o scenie. Podczas testowania żyroskopu i wibracji telefon musi jednak pozostawać w spoczynku.
test_jitter
Mierzy jitter w sygnaturach czasowych kamer.
Przetestowane interfejsy API:
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. Analizuje wyniki
i obiekt kamery. W tym teście wykorzystano ekspozycję auto_capture_request
i zyskuje wartości, ponieważ treść zdjęcia nie jest ważna.
Testowane interfejsy API:
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.
Przetestowane interfejsy API:
Prześlij: otrzymywane są zdarzenia z każdego czujnika.
test_solid_color_test_pattern
Służy do sprawdzania, czy wzorce testowe jednolitych kolorów są prawidłowo generowane na potrzeby wyciszania kamery. Jeśli wyciszenie aparatu jest obsługiwane, należy obsługiwać testowe wzory w jednolitym kolorze. Jeśli wyciszenie kamery nie jest obsługiwane, testowe wzory jednolitych kolorów są testowane tylko wtedy, gdy funkcja jest reklamowana.
Jeśli obrazy RAW są obsługiwane, testowane jest też przypisywanie kolorów. Testowane kolory to czarny, biały, czerwony, niebieski i zielony. W przypadku aparatów, które nie obsługują obrazów RAW, testowany jest tylko czarny kolor.
Testowane interfejsy API:
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 ma niską zmienność.
test_test_pattern
Testuje parametr android.sensor.testPatternMode
, aby rejestrować klatki dla każdego prawidłowego wzoru testowego, i sprawdza, czy klatki są generowane prawidłowo w przypadku jednolitych kolorów i pasków kolorów. Ten test obejmuje te czynności:
- Przechwytuje obrazy pod kątem wszystkich obsługiwanych wzorcó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
Testowanie konwersji wzorca testowego z RAW na YUV z użyciem liniowej mapy tonalnej. Ten test wymaga parametru android.sensor.testPatternMode = 2
(COLOR_BARS), aby wygenerować idealny wzór obrazu do konwersji mapy tonacji. Sprawdzanie, czy pipeline ma prawidłowe wartości wyjściowe kolorów z mapą tonalną liniową i idealnym obrazem wejściowym (opartym na test_test_patterns
).
Testowane interfejsy API:
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
Pozwala sprawdzić, 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 wyciszenie zostanie zastosowane przez interfejs API ograniczeń dźwięku w aparacie.
scene1
scene1 to wykres w kolorze szarym. Szara tabela musi obejmować 30% środkowej części pola widzenia kamery. Wyraźnie szarego wykresu nie można uznać za 3A (automatyczna ekspozycja, automatyczna równowaga bieli, automatyczny autofokus), ponieważ środkowy obszar nie zawiera żadnych cech. Żądanie przechwytywania określa jednak całą scenę, która obejmuje wystarczającą liczbę funkcji, by umożliwić 3A zgodność.
Kamery RFoV można testować w ramach platformy testowej WFoV lub RFoV. Jeśli kamera RFoV została przetestowana w urządzeniu testowym WFoV, wykres jest skalowany o 2⁄3, aby zapewnić pewne granice szarego wykresu w FoV i umożliwić osiągnięcie zgodności 3A. Bardziej szczegółowe opisy urządzeń testowych z kamerą znajdziesz w artykule [GA4] Kamera z opakowania.
scene1: wykres w pełnej wielkości (po lewej). Wykres po skalowaniu do ⅔ (po prawej).
test_ae_precapture_trigger
Sprawdza maszynę stanu AE podczas korzystania z aktywatora wstępnego przechwytywania. Przechwytuje 5 ręcznych żądań z wyłączonym AE. Ostatnie żądanie zawiera aktywator wstępnego przechwytywania AE, który należy zignorować, ponieważ jest wyłączona.
Testowane interfejsy API:
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_automatyczna_vs_ręczna
Testy, w ramach których zostały wykonane zdjęcia automatyczne i ręczne, wyglądają tak samo.
Przetestowane interfejsy API:
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_czarna_biała
Testuje, czy urządzenie wyświetla obrazy w kolorze czarno-białym. Robi 2 zdjęcia, pierwszy z bardzo niskim wzmocnieniem i krótką ekspozycją w celu uzyskania czarnego zdjęcia, a drugi z bardzo dużym wzmocnieniem i długim czasem naświetlania, co daje białe zdjęcie.
Testowane interfejsy API:
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Pass: generuje obrazy czarno-białe. Nasycony kanał białych obrazów ma wartości RGB [255, 255, 255] z marginesem błędu poniżej 1%.
test_black_white_black.jpg | test_black_white_white.jpg |
test_czarna_biała_plotka.png
przechwyt_z_testu_serii
Sprawdza, czy cały potok przechwytywania jest w stanie dotrzymać tempa przechwytywania pełnowymiarowych plików i czasu pracy procesora.
Testowane interfejsy API:
Pass: rejestruje serię zdjęć w pełnym rozmiarze, sprawdza utratę klatek i jasność obrazu.
test_burst_sameness_manual
Robi 5 serii po 50 zdjęć przy ręcznym ustawieniu przechwytywania i sprawdza, czy wszystkie zdjęcia są identyczne. Ten test pozwala określić, czy występują sporadyczne klatki, które są przetwarzane inaczej lub zawierają artefakty.
Testowane interfejsy API:
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: pokazuje skok lub spadek średniej wartości RGB na początku każdego wybuchu.
- Tolerancja wynosi 3%, gdy
first_API_level
< 30 - Tolerancja wynosi 2%, gdy
first_API_level
>= 30
test_burst_sameness_manual_mean.jpg
test_burst_sameness_manual_plot_means.png
test_capture_result
Testy, czy prawidłowe dane wracają w obiektach CaptureResult
. Czy masz tryb automatyczny, ręczny i automatyczny?
Przetestowane interfejsy API:
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
Prawidłowo: metadane są ważne we wszystkich zapisach, a ustawienia ręczne nie wyciekają do drugiego przechwytywania automatycznego. Rysuje korektę cieniowania obiektywu dla wykonanych zdjęć.
test_capture_result_plot_lsc_auto_ch0.png
test_crop_region_raw
Sprawdzanie, czy strumienie RAW nie mogą być 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 centrum, 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 regiony przycinania działają. Przejmuje pełny obraz i tworzy łaty w 5 różnych regionach (narożniki i środku). Wykonuje zdjęcia z przycięciem ustawionym dla 5 regionów. Porównuje wartości pliku łatki i obrazu przycięcia.
Przetestowane interfejsy API:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
Prawidłowo: obraz przyciętego obszaru odpowiada poprawce odpowiadającej obrazowi przycięcia.
test_dng_noise_model
Sprawdza, czy parametry nieprzetworzonego modelu DNG są prawidłowe. Wykres przedstawia zmierzoną odchylenie standardowe środkowego fragmentu karty w kolorze szarym na zdjęciach w formacie RAW wykonanych przy różnych czułościach. Wartości te są porównywane z wartościami odchylenia standardowego oczekiwanego przy każdej czułości przez model szumu DNG w interfejsie HAL aparatu (na podstawie parametrów O i S zwróconych w obiektach wyników rejestracji). Aby dowiedzieć się więcej o modelu szumu DNG, pobierz ten dokument na temat modelu szumu DNG.
Testowane interfejsy API:
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 DNG w postaci surowych danych są prawidłowe. Oczekiwane wartości RGB odpowiadają rzeczywistym zmierzonym wartościom RGB.
test_dng_noise_model_plog.png
zaawansowana_kompensacja_testu_ev
Testuje, czy zastosowano kompensację wartości ekspozycji (EV). Test zwiększa ekspozycję w 8 krokach i porównuje zmierzoną jasność z oczekiwaną jasnością. Oczekiwane wartości są obliczane na podstawie jasności obrazu bez zastosowanej kompensacji EV. Wartość oczekiwana zostanie nasycona, jeśli obliczone wartości przekroczą rzeczywisty zakres wartości obrazu. Test kończy się niepowodzeniem, jeśli oczekiwane i zmierzone wartości nie są zgodne lub obrazy nadmiarowo wyświetlają się w ciągu 5 kroków.
Testowane interfejsy API:
android.hardware.camera2.CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
android.hardware.camera2.CaptureResult#TONEMAP_CURVE
android.hardware.camera2.CaptureResult#TONEMAP_MODE
Prawidłowa: obrazy zwiększają ekspozycję bez nadmiernego naświetlania z założenia w ciągu 5 kroków.
test_ev_compensation_advanced_plot_means.png
test_ev_compensation_basic
Testuje, czy kompensacja EV jest stosowana za pomocą zakresu utworzonego za pomocą funkcji CONTROL_AE_COMPENSATION_STEP
. W przypadku każdego z tych wartości rejestrowanych jest 8 klatek.
Testowane interfejsy API:
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_COMPENSATION_STEP
android.hardware.camera2.CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
android.hardware.camera2.CaptureResult#CONTROL_AE_EXPOSURE_COMPENSATION
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
Pass: rejestruje wzrost luminacji przy zwiększonym ustawieniu kompensacji EV. 8 ujęć zarejestrowanych dla każdego ustawienia kompensacji EV ma stabilne wartości luminacji.
test_ev_compensation_basic.png
test_exposure_x_iso
Testy, które sprawdzają, czy przy różnych wartościach ISO i czasu naświetlania uzyskuje się stały czas naświetlania. Wykonuje serię ujęć, w których czas naświetlania i wartość ISO są dobrane tak, aby się zrównoważyć.
Wyniki powinny mieć tę samą jasność, ale w trakcie sekwencji obraz powinien stać się bardziej szumny. Sprawdza, czy średnie wartości próbek pikseli są zbliżone do siebie. Zapewnia to, że obrazy nie są ograniczane do wartości 0 lub 1 (co spowodowałoby, że wyglądałyby jak płaskie linie). Test można też uruchomić z obrazami RAW, ustawiając w pliku konfiguracji flagę debug
.
Testowane interfejsy API:
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
Pass: zdjęcia mają tę samą jasność, ale są bardziej ziarniste przy wyższym ISO. Plany RGB są płaskie, gdy wartość ekspozycji ISO* jest stała w testowanej przestrzeni wzmocnienia.
Mechanizm awarii:
- 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_ekspozycji_testowej.png
test_exposure_mult=1.00.jpg | test_exposure_mult=64.00.jpg |
test_jpeg
Testy przekonwertowanych obrazów YUV i obrazów JPEG z urządzenia wyglądają tak samo. Test pobiera środkowe 10% obrazu, oblicza wartość RGB i sprawdza, czy są one ze sobą zgodne.
Testowane interfejsy API:
Prawidłowo: średnia różnica RGB między każdym obrazem wynosi mniej niż 3%.
test_jpeg_fmt=jpg.jpg | test_jpeg=fmt=yuv.jpg |
test_latching
Testuje, czy ustawienia (ekspozycja i wzmocnienie) zachowują właściwą ramkę w przypadku kamer FULL
i LEVEL_3
. Wykonuje serię ujęć, używając kolejnych żądań, zmieniając parametry żądania między ujęciami. Sprawdza, czy obrazy mają oczekiwane właściwości.
Testowane interfejsy API:
Prześlij: obrazy [2, 3, 6, 8, 10, 12, 13] mają zwiększone ISO lub ekspozycję i wyświetlają się z wyższymi wartościami średnich RGB na test_latching_plot_means.png
.
test_latching_i=00.jpg | test_latching_i=01.jpg | test_latching_i=02.jpg | |
test_latching_i=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żna odwrócić do pikseli liniowych. Przechwytuje serię ujęć, gdy urządzenie jest skierowane na jednolity cel.
Testowane interfejsy API:
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
android.hardware.camera2.CaptureRequest#BLACK_LEVEL_LOCK
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
Pass: wartości R, G i B muszą wzrastać liniowo wraz ze wzrostem czułości.
test_linearity_plot_means.png
test_zablokowany_seria
Testuje blokowanie 3A i przesyłanie YUV (z użyciem ustawienia automatycznego). Ten test jest zaprojektowany tak, aby zdać go nawet na urządzeniach z ograniczonymi możliwościami, które nie mają MANUAL_SENSOR
ani PER_FRAME_CONTROLS
.
Test sprawdza spójność obrazu YUV, a sprawdzanie częstotliwości klatek odbywa się w CTS.
Testowane interfejsy API:
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
test_param_color_correction
Sprawdzanie, czy parametry android.colorCorrection.*
są stosowane po ustawieniu.
Powoduje wykonanie ujęć o różnych wartościach przekształcenia i wzmocnienia oraz sprawdzenie, czy wyglądają odpowiednio. Przekształcanie i wzmocnienie są wybierane w taki sposób, aby dane wyjściowe zmieniały się na coraz bardziej czerwone lub niebieskie. Używa mapy tonacji liniowej. Mapowanie tonów to technika używana w przetwarzaniu obrazów, która pozwala mapować jeden zestaw kolorów na drugi i przybliżyć wygląd obrazów o dużym zakresie dynamiki w medium o mniejszym zakresie dynamicznym.
Testowane interfejsy API:
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_parametr_kolor_korekta_plot_means.png
*Oś X to żądania rejestracji: 0 = jedność, 1=czerwony boost, 2= niebieski boost
test_param_color_correction_req=0.jpg
test_param_color_correctness_req=1.jpg (R boost)
test_param_color_correction_req=2.jpg (wzmocnienie B)
test_param_flash_mode
Sprawdza, czy parametr android.flash.mode
jest stosowany. Ręcznie ustawia ekspozycję na ciemną stronę, aby było oczywiste, czy błysk został użyty, czy nie, i używa mapy tonacji liniowej. Sprawdza środek obrazu kafelka, aby sprawdzić, czy występuje duży gradient, który służy do weryfikacji, czy błysk został uruchomiony.
Testowane interfejsy API:
Przeszedł:środek obrazu w płytce ma duży gradient, co oznacza, że błysk został użyty.
test_param_flash_mode_1.jpg
test_param_flash_mode_1_tile.jpg
test_param_flash_mode_2.jpg
test_param_flash_mode_2_tile.jpg
redukcja_szumie_testu
Sprawdza, czy parametr android.noiseReduction.mode
jest poprawnie stosowany po ustawieniu. Rejestrowanie obrazów w przyciemnionym pomieszczeniu. Używa wysokiego wzmocnienia analogowego, aby zapewnić prawidłowy obraz. Rejestruje 3 obrazy: „Szybka” i „wysoka jakość” przy wyłączonej opcji NR. Wykonuje też zdjęcie z małym wzmocnieniem i wyłączonym redukcją szumów, a z różnicy tych wartości korzysta jako wartości bazowej. Im wyższy współczynnik SNR (stosunek sygnału do szumu), tym lepsza jakość obrazu.
Przetestowane interfejsy API:
Pass: SNR zmienia się w zależności od różnych trybów redukcji szumów i działa podobnie jak na wykresie poniżej.
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
Testuje, 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: tryby cieniowania są zmieniane, 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
Pass:
- test1: oba obrazy mają liniową mapę tonalną, ale n=1 ma ostrzejszy gradient. Kanał G (zielony) jest jaśniejszy w przypadku obrazu n=1.
- test2: ta sama mapa tonacji, ale o innej długości. Obrazy są identyczne.
test_param_tonemap_mode_n=0.jpg | test_param_tonemap_mode_n=1.jpg |
test_post_raw_sensitivity_boost
Sprawdzanie wzmocnienia czułości RAW. Rejestruje zestaw obrazów RAW i YUV o różnej czułości, publikuje kombinację wzmocnienia czułości RAW i sprawdza, czy średni piksel wyjściowy pasuje do ustawień żądania.
Testowane interfejsy API:
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: zdjęcia RAW stają się ciemniejsze, gdy wzmacniacz jest coraz większy, a zdjęcia YUV pozostają o stałej jasne.
test_post_raw_sensitivity_boost_raw_s=3583_boost=0100.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
czułość_testu_raw_burst
Rejestruje zestaw nieprzetworzonych obrazów o rosnącym wzmocnieniu i mierzy szum. rejestruje tylko w formacie raw w trybie seryjnym;
Testowane interfejsy API:
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_exposure
rejestruje zestaw obrazów w formacie RAW z rosnącym czasem ekspozycji i mierzy wartości pikseli.
Testowane interfejsy API:
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
Pass: zwiększenie ISO (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
wrażliwość_testu_nieprzetworzonego
Wykonuje serię zdjęć w formacie RAW ze wzrastającą czułością i mierzy szum (wariancję) w środku 10% obrazu. Sprawdzanie, czy każdy kolejny obraz jest bardziej zniekształcony niż poprzedni.
Przetestowane interfejsy API:
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
Podania: wariancja zwiększa się z każdym uderzeniem.
test_raw_czułość_wariancji.png
test_reprocess_noise_reduction
Testuje, czy android.noiseReduction.mode
jest stosowany do ponownego przetwarzania żądań.
Zdjęcie przetworzone z użyciem słabo oświetlonego aparatu. Korzysta z wysokiego wzmocnienia analogowego,
co zapewnia szum podczas robienia zdjęcia. Rejestruje 3 przetworzone obrazy: bez NR, „szybko” i „wysoka jakość”. Wykonuje przetworzony ponownie obraz z małym wzmocnieniem i wyłączonym redukcją szumów, a następnie używa wariancji tego obrazu jako wartości bazowej.
Testowane interfejsy API:
Przepuszczenie: FAST >= OFF, HQ >= FAST, HQ >> OFF
Typowy wykres SNR i NR_MODE
test_tonemap_sequence
Testuje sekwencję ujęć z różnymi krzywą mapowania tonacji. Wykonywanie 3 ujęć ręcznych z tonacją liniową. Zrobi 3 zdjęcia ręczne z domyślnym tonemapem. Oblicza różnicę między każdą kolejną parą klatek.
Testowane interfejsy API:
Pozytywny wynik: 3 identyczne klatki, a następnie inny zestaw 3 identycznych klatek.
test_tonemap_sequence_i=0.jpg
test_tonemap_sequence_i=1.jpg
test_tonemap_sequence_i=2.jpg
test_tonemap_sequence_i=3.jpg
test_tonemap_sequence_i=4.jpg
test_tonemap_sequence_i=5.jpg
test_yuv_jpeg_all
Testuje, czy wszystkie zgłaszane rozmiary i formaty przeznaczone do przechwytywania obrazów działają. Używa żądania ręcznego z tonowaniem liniowym, aby YUV i JPEG wyglądały tak samo po przekonwertowaniu przez moduł image_processing_utils
. Obrazy nie są zapisywane domyślnie, ale można je zapisać, włączając funkcję debug_mode
.
Testowane interfejsy API:
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
android.graphics.ImageFormat#JPEG
Prawidłowo: wszystkie centra obrazów mają maksymalną wartość RMS (średnią kwadratową sygnału) w przypadku obrazów przekonwertowanych RGB z 3% obrazu YUV o najwyższej rozdzielczości.
test_yuv_jpeg_all.png
test_yuv_plus_dng
Testuje, czy zgłaszane rozmiary i formaty do przechwytywania obrazu działają prawidłowo.
Testowane interfejsy API:
Przeszedł: test się zakończył i zwrócił żądane obrazy.
test_yuv_plus_dng.jpg
test_yuv_plus_jpeg
Testuje przechwytywanie pojedynczej klatki jako danych YUV i JPEG. Wykorzystuje żądanie ręczne z liniowym mapą tonu, dzięki czemu YUV i JPEG wyglądają tak samo po konwersji za pomocą modułu image_processing_utils
.
Testowane interfejsy API:
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
android.graphics.ImageFormat#JPEG
Pass: obrazy YUV i JPEG są podobne i mają mniej niż 1% różnicy RMS (średniej kwadratowej sygnału).
test_yuv_plus_jpg_jpg.jpg | test_yuv_plus_jpeg_yuv.jpg |
test_yuv_plus_raw
Sprawdza, czy pojedyncza klatka jest zapisywana zarówno w formacie RAW/RAW10/RAW12, jak i YUV, jeśli jest obsługiwany. Używa żądania ręcznego z tonowaniem liniowym, więc spodziewane jest, że wartości RAW i YUV będą takie same. Porównuje wartości RGB obrazu przekształconego do formatu RGB w centrum obrazu o wartości 10%. Dziennikiandroid.shading.mode
.
Przetestowane interfejsy API:
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
Przechodzi: obrazy YUV i nieprzetworzone są podobne i różnią się o mniej niż 3,5% RMS (wartość średniokwadratowa pierwiastek kwadratowy sygnału).
test_yuv_plus_raw_shading=1_raw.jpg | test_yuv_plus_raw_shading=1_yuv.jpg |
scene2_a
Scena 2_a zawiera 3 twarze na szarym tle i w neutralnym ubraniu. Twarze są wybierane i mają szeroki zakres odcieni skóry. Aby wykrywanie twarzy działało optymalnie, wykres musi mieć prawidłową orientację.
scene2_a
testowa_automatyczna ramka
Testuje działanie automatycznego kadrowania kamery. Wykonuje duże powiększenie, aby żadne z twarzy w scenie nie było widoczne, włącza tryb automatycznego kadrowania, ustawiając 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
).
Przetestowane 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
Pozytywny: wykryto wszystkie 3 twarze.
test_display_p3
Testuje wyświetlenie P3 w formacie JPEG przy użyciu interfejsu API ColorSpaceProfiles
. Sprawdzanie, czy przechwycony plik JPEG zawiera odpowiedni profil ICC w nagłówku i czy zawiera kolory spoza zakresu sRGB.
Testowane interfejsy API:
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 ujęć dla obsługiwanych efektów aparatu i sprawdza, czy są one generowane prawidłowo. W ramach testu sprawdzane są tylko efekty OFF
i MONO
, ale obrazy są zapisywane w przypadku wszystkich obsługiwanych efektów.
Testowane interfejsy API:
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_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 przechwycone.
test_num_faces
Testuje wykrywanie twarzy.
Testowane interfejsy API:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Prawidłowo: znajduje trzy twarze.
test_num_faces_fd_mode_1.jpg
test_reprocess_uv_swap
Testy, które potwierdzają, że ponowne przetwarzanie YUV-a nie powoduje zamiany płaszczyzn U i V. Jest to wykrywane przez zsumowanie bezwzględnych różnic (SAD) między przetworzonym obrazem a nieprzetworzonym obrazem. Jeśli zamiana płaszczyzn U i V w przetworzonych danych wejściowych powoduje wzrost SAD, przyjmuje się, że dane wyjściowe mają prawidłowe płaszczyzny U i V.
Testowane interfejsy API:
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
Przepustka: samoloty U i V nie są zamieniane.
test_reprocess_uv_swap.png
scene2_b
test_num_faces
Testowanie wykrywania twarzy z większą różnorodnością odcieni skóry w scenach z twarzami.
Przetestowane interfejsy API:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: znajduje 3 twarze.
test_num_faces_fd_mode_1.jpg
test_yuv_jpeg_capture_sameness
Wykonywanie dwóch zdjęć w największych wspólnych formatach YUV i JPEG o tych samych proporcjach co największy format JPEG, ale nieprzekraczający rozdzielczości 1920 x 1440.
Ustawia jpeg.quality
na 100 i przechwytuje żądanie dotyczące dwóch powierzchni. Konwertuje oba obrazy na tablice RGB i oblicza 3D root mean square (RMS) difference (różnica średniokwadratowa w przestrzeni 3D) między tymi obrazami.
Test ten sprawdza też, czy dane wyjściowe YUV we wszystkich obsługiwanych przypadkach użycia strumieni są w wystarczającym stopniu podobne do danych YUV w przypadku użycia STILL_CAPTURE
.
Testowane interfejsy API:
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASES
android.hardware.camera2.CaptureRequest#JPEG_QUALITY
android.graphics.ImageFormat#JPEG
Prześlij: obrazy YUV i JPEG w przypadku użycia STILL_CAPTURE
różnią się o mniej niż 3% RMS (wartość RMS sygnału); obrazy YUV we wszystkich obsługiwanych przypadkach użycia różnią się o mniej niż 10% RMS od obrazów YUV w przypadku użycia STILL_CAPTURE
.
scene2_c
test_num_faces
Testowanie wykrywania twarzy z większą różnorodnością odcieni skóry w scenach z twarzami.
Przetestowane interfejsy API:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: znajduje 3 twarze.
test_num_faces_fd_mode_1.jpg
test_jpeg_capture_perf_class
Testowanie opóźnienia rejestrowania JPEG w przypadku aparatów o klasie wydajności S zgodnie z opisem w sekcji 2.2.7.2 Aparat w CDD.
Przyjęcie: KAMERA 2 MUSI mieć opóźnienie w przechwytywaniu JPEG < 1000 ms w rozdzielczości 1080p, zmierzone przez test wydajności aparatu CTS w warunkach oświetlenia ITS (3000 K) dla obu głównych aparatów.
test_camera_launch_perf_class
Testy opóźnienia uruchamiania aparatu w przypadku klasy wydajności S zgodnie z opisem w sekcji 2.2.7.2 Camera w dokumentacji CDD.
Pozytywny: czas oczekiwania na uruchomienie aplikacji camera2 (od otwarcia aparatu do pierwszego podglądu) MUSI wynosić mniej niż 600 ms, co jest mierzone przez test wydajności aparatu CTS w warunkach oświetlenia (3000 K) dla obu głównych aparatów.
test_default_camera_hdr
Testuje, czy domyślne przechwytywanie kamery jest w przypadku klasy wydajności 15 w trybie ultra HDR zgodnie z sekcją 2.2.7.2 Camera w CDD.
Prawidłowo: w przypadku urządzeń klasy 15 domyślny aparat MUSI być rejestrowany w trybie ultra HDR.
scena2_d
test_num_faces
Testowanie wykrywania twarzy z większą różnorodnością odcieni skóry w scenach z twarzami.
Przetestowane interfejsy API:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass:znajduje 3 twarze.
scene2_e
test_continuous_picture
Przy pierwszym ustawieniu żądania przechwytywania jest rejestrowane 50 klatek rozdzielczości VGA.
android.control.afMode = 4 (CONTINUOUS_PICTURE).
Przetestowane interfejsy API:
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.
Przetestowane interfejsy API:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
Pass: znajduje 3 twarze.
scene2_f
Scena scene2_f zawiera 3 twarze na białym tle i w białej odzieży. Twarze mają szeroki zakres odcieni skóry i wysoki kontrast z tłem.
scene2_f
test_liczba_twarzy
Testowanie wykrywania twarzy z większą różnorodnością odcieni skóry w scenach z twarzami.
Przetestowane 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
scene3
Scena 3 wykorzystuje wykres ISO 12233, a większość testów używa metody wyodrębniania wykresów, aby znaleźć wykres w scenie. Z tego powodu większość zapisanych obrazów nie ma obramowania, np. sceny 1, 2 lub 4, ale tylko wykres. Aby wyszukiwarka wykresów działała optymalnie, wykres musi być w prawidłowej orientacji.
test_edge_enhancement
Testuje, czy parametr android.edge.mode
jest prawidłowo stosowany. Przechwytuje obrazy nieprzetworzone dla każdego trybu krawędzi i zwraca ostrość obrazu wyjściowego oraz metadane wyniku przechwycenia. Przetwarza żądanie przechwycenia z użyciem danego trybu krawędzi, czułości, czasu ekspozycji, odległości ogniskowej i parametru powierzchni wyjściowej.
Przepuść: tryb HQ
(2) jest ostrzejszy niż tryb OFF
(0). Tryb FAST
(1) jest (1) ostrzejszy niż tryb OFF
. Tryb HQ
jest ostrzejszy lub równy trybowi FAST
.
Testowane interfejsy API:
Parametry aparatu, których dotyczy problem:
EDGE_MODE
test_edge_enhancement_edge=0.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.
Pozytywny: obraz nie jest odwrócony, odbity czy obrócony.
test_flip_mirror_scene_patch.jpg
test_imu_drift
Sprawdza, czy inercyjna jednostka miary (IMU) ma stabilną wartość wyjściową przez 30 sekund, gdy urządzenie jest w tym samym miejscu, i rejestruje podgląd w wysokiej rozdzielczości.
Przetestowane interfejsy API:
android.hardware.Sensor
android.hardware.SensorEvent
android.hardware.Sensor#TYPE_GYROSCOPE
android.hardware.Sensor#TYPE_ROTATION_VECTOR
Pomyślne:
- Odchylenie żyroskopu w czasie testu jest mniejsze niż 0,01 rad.
- Odchylenie standardowe odczytu żyroskopu jest mniejsze niż 1E-7 rad2/s2/Hz w czasie testu.
- Odchylenie wektora obrotu jest mniejsze niż 0,01 rad w czasie testu.
- (nie jest to jeszcze wymagane) odchylenie żyroskopu jest mniejsze niż 1 stopień na sekundę.
test_imu_drift_gyro_drift.png
test_imu_drift_rotation_vector_drift.png
test_poziomy_w_pionie
Sprawdza, czy w przypadku czujników orientujących się w orientacji poziomej orientacja pionowa działa prawidłowo.
Testowane interfejsy API:
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
Sprawdzanie, czy flaga ruchu obiektywu jest prawidłowo zgłaszana. Wykonuje serię 24 obrazów, z których pierwsze 12 jest rejestrowane z optymalną odległością ostrości (znalezioną przez 3A), a ostatnie 12 z minimalną odległością ostrości. W okolicach kadru 12 obiektyw się porusza, co powoduje spadek ostrości. Ostrość stabilizuje się, gdy obiektyw przesunie się do ostatecznej pozycji. Flaga ruchu obiektywu powinna być odnotowana we wszystkich klatkach, w których ostrość jest pośrednia w przypadku kilku pierwszych klatek, gdy obiektyw jest ustawiony w optymalnej odległości ogniskowej, oraz w ostatnich klatkach, w których obiektyw jest nieruchomy i mają minimalną odległość ogniskową. Nie ma znaczenia, w którym dokładnie ujęciu obiektyw się porusza: sprawdzamy tylko, czy flaga ruchu jest ustawiona, gdy obiektyw się porusza.
Testowane interfejsy API:
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
Przechodzi: flaga ruchu obiektywu ma wartość True
w ramce z zmianą ostrości.
Mechanizmy niepowodzenia:
lens_moving: True
(android.hardware.camera2.CaptureResult#LENS_STATE
= 1) w polutest_log.DEBUG
jest odczytywane tylko w klatkach, w których ostrość się nie zmienia.- Klatki z wartością
lens_moving: False
(android.hardware.camera2.CaptureResult#LENS_STATE
= 0) w funkcjitest_log.DEBUG
mają inną ostrość niż pierwsze kilka klatek przy optymalnej odległości ogniskowej lub ostatnie kilka klatek przy minimalnej odległości ogniskowej.
test_reprocess_edge_enhancement
Testuje, czy obsługiwane metody ponownego przetwarzania w celu wzmocnienia krawędzi działają prawidłowo. Przetwarza żądanie przechwycenia z określonym trybem ponownego przetwarzania krawędzi i porównuje różne tryby przechwycenia z wyłączonymi trybami ponownego przetwarzania krawędzi.
Przetestowane interfejsy API:
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 dłuższy niż OFF
(tryb 0), a ulepszenia w różnych trybach są podobne.
test_reprocess_edge_enhancement_plot.png
scena4
Scena 4 to czarny okrąg na białym tle w kwadracie.
Testy w scenie4 mogą być wrażliwe na wyrównanie, dlatego od wersji 15 możesz użyć opcji check_alignment.py
w katalogu narzędzi, aby włączyć sprawdzanie wyrównania obiektu testowego i wykresu.
scene4
test_podglądu_fov_30_60fps
Testuje, czy filmy w wersji testowej 30 FPS i 60 FPS mają jednakową perspektywę. Test obejmuje 2 filmy: jeden z 30 FPS, a drugi z 60 FPS. Z każdego filmu wybierana jest reprezentatywna klatka i analizowana jest w celu zagwarantowania, że zmiany oglądalności w obu filmach są zgodne ze specyfikacją. Testuje, czy współczynnik kształtu koła pozostaje stały, środek koła pozostaje stabilny, a promień koła pozostaje stały.
Testowane interfejsy API:
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
Prześlij: obrazy nie są rozciągnięte, środek obrazów nie różni się o więcej niż 3%, a maksymalna zmiana współczynnika proporcji między filmami w 30 FPS i 60 FPS nie przekracza 7,5%.
Mechanizmy niepowodzenia:
- Krąg z filmu w 30 FPS jest znacznie mniejszy niż z filmu w 60 FPS.
- Okrąg na zrobionym zdjęciu jest zniekształcony przez łańcuch przetwarzania.
- Okrąg na zarejestrowanym obrazie jest przycięty z powodu żądania rejestracji o bardzo dużym formacie obrazu, które zmniejsza wysokość lub szerokość obrazu.
- Okrąg na zrobionym zdjęciu ma odbicie w środku i nie jest w pełni wypełniony.
test_aspect_ratio_and_crop
Sprawdza, czy obrazy w potoku obrazów nie zostały zniekształcone lub nieoczekiwanie przycięte. Zdjęcie koła w różnych formatach. Okrąg nie jest zniekształcony, okrąg nie przesuwa się od środka zdjęcia ani nie zmienia nieprawidłowo rozmiaru w zależności od formatu obrazu lub rozdzielczości.
Przetestowane interfejsy API:
android.hardware.camera2.CaptureResult#LENS_DISTORTION
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
Prawidłowy: obrazy nie są rozciągnięte, ich środki nie różnią się o więcej niż 3% i zachowywane jest maksymalne możliwe ognisko (pole widzenia).
Mechanizmy niepowodzenia:
- Kamera nie jest ustawiona na okrąg wyświetlany na tablecie w środkowej części ujęcia.
- Okrąg na zrobionym zdjęciu jest zniekształcony przez łańcuch przetwarzania.
- Obraz o niższej rozdzielczości jest dwukrotnie przycięty w przepływie przetwarzania obrazu, co powoduje inny kąt widzenia w przypadku obrazów w wysokiej i niskiej rozdzielczości.
- Okrąg na zarejestrowanym obrazie jest przycięty z powodu żądania rejestracji o bardzo dużym formacie obrazu, które zmniejsza wysokość lub szerokość obrazu.
- Okrąg na zrobionym zdjęciu ma odbicie w środku i nie jest w pełni wypełniony.
test_multi_camera_alignment
Testuje parametry kalibracji kamery związane z pozycjonowaniem kamery w systemach wielokamerowych. Za pomocą fizycznych aparatów podrzędnych z wieloma aparatami robi zdjęcie jednym z tych aparatów. Znajduje środek okręgu. Przekształca punkt środkowy koła na współrzędne globalne dla każdej kamery. Porównuje różnicę między środkami okręgów kamer w współrzędnych globalnych. Przeprojektowuje współrzędne geograficzne na współrzędne pikseli i porównuje je z oryginalnymi wartościami w celu sprawdzenia poprawności. Porównuje rozmiary kół, sprawdzając, czy ogniskowe aparatów są różne.
Testowane interfejsy API:
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 ogniskowych długości ogniskowych.
Mechanizmy niepowodzenia:
LENS_INTRINSIC_CALIBRATION
,LENS_POSE_TRANSLATION
lubLENS_POSE_ROTATION
to wartości projektowe, a nie rzeczywiste dane kalibracyjne.- System kamer nie jest odpowiedni do konfiguracji testowej. Dotyczy to na przykład testowania szerokiego i ultraszerokokątnego systemu aparatów za pomocą urządzenia do testowania RFoV. Więcej informacji znajdziesz w artykule z odpowiedziami na najczęstsze pytania dotyczące zestawu ITS-in-a-box1.
współczynnik_podglądu_testu_i_przycięcie
Podobnie jak test test_aspect_ratio_and_crop w przypadku zdjęć, ten test sprawdza obsługiwane formaty podglądu, aby upewnić się, że ramki podglądu nie są nieprawidłowo rozciągnięte ani przycięte. Sprawdza, czy współczynnik proporcji okręgu nie zmienia się, przycięte obrazy utrzymują okrąg na środku klatki, a rozmiar okręgu nie zmienia się w przypadku stałego formatu lub różnych rozdzielczości (sprawdzanie pola widzenia).
Testowane interfejsy API:
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, pole widzenia).
test_preview_stabilization_fov
Sprawdzanie obsługiwanych rozmiarów podglądu, aby upewnić się, że pole widzenia jest odpowiednio przycięte.
Test rejestruje 2 filmy, jeden ze stabilizacją w podglądzie ON
, a drugi ze stabilizacją w podglądzie OFF
. Z każdego filmu wybierany jest reprezentatywny kadr, który jest analizowany pod kątem zgodności ze specyfikacją w zakresie zmian pola widzenia.
Przetestowane interfejsy API:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
Prawidłowy: współczynnik proporcji okręgu jest stały, środek okręgu pozostaje stabilny, a rozmiar okręgu nie zmienia się więcej niż o 20%.
test_video_aspect_ratio_and_crop
Nagrywa filmy w kształcie koła w kwadracie we wszystkich formatach wideo. Wyodrębnia klatki kluczowe i sprawdza, czy format okręgu się nie zmienia, przycięte obrazy utrzymują okrąg w środku, a rozmiar okręgu nie zmienia się w przypadku stałego formatu lub innej rozdzielczości (sprawdzanie pola widzenia).
Testowane interfejsy API:
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.
scena5
W przypadku sceny 5 wymagana jest szara scena o jednolitym oświetleniu. Jest to możliwe dzięki dyfuzorowi umieszczonemu na obiektywie. Zalecamy użycie tego dyfuzora:
www.edmundoptics.com/optics/window-diffusers/optical-diffusers/opal-diffusing-glass/46168
.
Aby przygotować scenę, zamocuj dyfuzor przed kamerą i skieruj obiektyw na źródło światła o mocy około 2000 luksów. Zdjęcia przedstawiające scenę5 wymagają rozproszonego oświetlenia bez widocznych cech. Oto przykładowy obraz:
scene5 capture
testowy_obiektyw_cieniowanie_i_jednolitość_koloru
Sprawdza, czy korekcja cieniowania obiektywu jest stosowana prawidłowo, a kolor jednolitego obrazu jest równomiernie rozłożony. Wykonuje ten test na podstawie ramki YUV z automatycznym 3A. Zacienienie obiektywu jest oceniane na podstawie kanału y. Mierzy średnią wartość y dla każdego określonego przykładowego bloku i określa pomyślność lub niepowodzenie, porównując wartość ze środkową wartością y. Test jednorodności kolorów jest oceniany w przestrzeni r/g i b/g.
Przetestowane interfejsy API:
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
Pozytywny: aby przejść test, w przypadku określonego promienia obrazu odchylenie wartości r/g i b/g musi być mniejsze niż 20%.
scene6
Scena 6 to siatka małych kółek z kwadratem w jednym rogu, który wskazuje orientację. Małe kółka są potrzebne do testowania funkcji powiększania w dużej odległości.
Testy w scenie6 mogą być wrażliwe na wyrównanie, dlatego od wersji 15 możesz użyć opcji check_alignment.py
w katalogu narzędzi, aby włączyć sprawdzanie wyrównania DUT i wykresu.
scene6
test_in_sensor_zoom
Testuje działanie funkcji zoomu na matrycy, która umożliwia kadrowanie zdjęć w formacie RAW.
Gdy ustawienie przypadku strumienia jest ustawione na CROPPED_RAW
, test wykonuje 2 zrzuty w zakresie zoomu: pełny obraz RAW z pełnym polem widzenia (FoV) oraz przycięty obraz RAW. Test konwertuje obrazy na tablice RGB, zmniejsza rozmiar pełnowymiarowego przyciętego obrazu RAW do rozmiaru podanego przez SCALER_RAW_CROP_REGION
i oblicza 3D root mean square (RMS) różnicy między 2 obrazami.
Testowane interfejsy API:
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 obrazem RAW w pełnym polu widzenia jest mniejsza niż próg ustawiony w teście.
test_zoom
Testuje zachowanie zoomu aparatu. Wykonuje zdjęcia w całym zakresie powiększenia i sprawdza, czy koła stają się większe, gdy kamera przybliża obraz. W przypadku każdego formatu (YUV, JPEG) do konwertowania 3A i przechwytywania obrazów służy ta sama sesja przechwytywania kamery.
Przetestowane interfejsy API:
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ść uchwytowanego okręgu jest zgodna z żądanym współczynnikiem powiększenia, co gwarantuje prawidłowe działanie funkcji powiększania.
test_zoom, aby znaleźć kontur koła najbliższego środka.
test_low_latency_zoom
Testuje zachowanie zoomu w przypadku niewielkiego opóźnienia. Wykonuje przechwytywania w zakresie zoomu android.control.settingsOverride = 1 (SETTINGS_OVERRIDE_ZOOM)
i sprawdza, czy koła na wyjściowych obrazach są zgodne z współczynnikami powiększenia w metadanych przechwytywania. Ta sama sesja rejestrowania za pomocą aparatu jest używana do konwergencji 3A i do wykonywania zdjęć.
Testowane interfejsy API:
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
Prawidłowy: względny rozmiar przechwyconego okręgu jest zgodny z metadanymi wyniku współczynnika powiększenia.
test_preview_video_zoom_match
Testuje, czy podczas nagrywania i powiększania podgląd filmu i wyjście wideo wyświetlają i nagrywają ten sam materiał. Oblicza rozmiar okręgu znajdującego się najbliżej środka przy różnych współczynnikach powiększenia i sprawdza, czy rozmiar okręgu rośnie wraz ze wzrostem współczynnika powiększenia.
Testowane interfejsy API:
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
Prawidłowy: względny rozmiar nagranego okręgu jest zgodny z żądanym współczynnikiem powiększenia w filmie i podglądzie.
VGA_640x480_key_frame.png (przed powiększeniem)
preview_640x480_key_frame.png (przed powiększeniem)
VGA_640x480_key_frame.png (po powiększeniu)
preview_640x480_key_frame.png (po powiększeniu)
test_preview_zoom
Sprawdzanie, czy współczynnik powiększenia każdej ramki podglądu jest zgodny z odpowiednimi metadanymi rejestrowania. Test pobiera klatki podglądu w zakresie zoomu i wyznacza kontur koła najbliższego środka. Test sprawdza, czy wybrane kółko staje się większe i czy środek kółka oddala się od środka obrazu, gdy kamera przybliża obraz.
Testowane interfejsy API:
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 okręgu jest zgodna z raportowanym współczynnikiem powiększenia odpowiadającego wyniku przechwycenia we wszystkich ramkach podglądu. Względny odległość wybranego okręgu od środka obrazu jest zgodna z podanym współczynnikiem powiększenia uzyskanym w wyniku wszystkich ramek podglądu.
test_preview_zoom obrazy przedstawiające wybrany okrąg znajdujący się najbliżej środka
test_session_characteristics_zoom
Testuje zakres współczynnika powiększenia dla wszystkich obsługiwanych konfiguracji sesji wymienionych w CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION
.
Jeśli w przypadku każdej z tych konfiguracji parametr CameraDeviceSetup#isSessionConfigurationSupported
zwraca wartość „prawda”, test sprawdza, czy można osiągnąć zakres współczynnika powiększenia zwrócony w CameraDeviceSetup#getSessionCharacteristics
.
Testowane interfejsy API:
android.hardware.camera2.CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION
android.hardware.camera2.CameraDevice.CameraDeviceSetup#isSessionConfigurationSupported
android.hardware.camera2.CameraDevice.CameraDeviceSetup#getSessionCharacteristics
Prawidłowy: zarówno minimalny, jak i maksymalny współczynnik powiększenia można osiągnąć w przypadku każdego obsługiwanego obiektu SessionConfiguration
wymienionego w tabeli CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION
.
scene7
Scene7 to prostokątny kadr podzielony na 4 równe kwadranty, z których każdy jest wypełniony innym kolorem. Na środku prostokąta znajduje się wykres skośnej krawędzi do sprawdzania ostrości. 4 znaczniki ArUco są wyrównane z 4 zewnętrznymi narożnikami prostokąta, aby ułatwić uzyskanie dokładnych współrzędnych ramki głównego prostokąta przy różnych współczynnikach powiększenia.
scene7
test_multi_camera_switch
Ten test sprawdza, czy podczas nagrywania w podglądzie z różnymi współczynnikami powiększenia różnice między obiektywem ultraszerokokątnym (UW) i szerokokątnym (W) dają podobne wartości RGB.
Podczas testu korzysta się z różnych współczynników powiększenia we wstępnie zdefiniowanym zakresie, aby nagrać dynamiczny podgląd i określić punkt, w którym zmienia się kamera fizyczna. Ten punkt oznacza przejście z obiektywu UW na obiektyw W.
Kadry zarejestrowane w miejscu przecięcia i przed nim są analizowane pod kątem automatycznej ekspozycji (AE), automatycznej regulacji balansu bieli (AWB) i automatycznego ustawiania ostrości (AF).
Kontrola AE pozwala sprawdzić, czy zmiana lumasu mieści się w oczekiwanym zakresie na zdjęciach obiektywowych UW i W. Sprawdzenie AWB sprawdza, czy proporcje R/G i B/G mieszczą się w wartościach progowych obrazów obiektywów UW i W. Sprawdzanie AF ocenia wartość szacowania ostrości na podstawie średniej wielkości gradientu między obrazami z obiektywu UW i W.
Przetestowane interfejsy API:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.media.CamcorderProfile
android.media.MediaRecorder
Przeszedł: aby test zakończył się pomyślnie, wszystkie testy AE, AWB i AF muszą zakończyć się pomyślnie. Oto kryteria poszczególnych kontroli:
- Sprawdzanie AE: zmiana luminacji między obrazami z obiektywem szerokokątnym i standardowym musi być mniejsza niż 0,5%.
- Sprawdzanie AWB: różnica między wartościami R/G i B/G w przypadku obrazów z obiektywem szerokokątnym i standardowym musi być mniejsza niż 0,5%.
- Sprawdzanie AF: zmiana ostrości obrazu między obrazami z obiektywem szerokokątnym i teleobiektywem musi wynosić mniej niż 2%.
scena8
Scene8 to prostokątny kadr podzielony na 4 równe obszary, z których każdy zawiera portret wykonany z różną ekspozycją lub nałożony z różnym odcieniem koloru (niebieski odcień, zwiększona ekspozycja, zmniejszona ekspozycja, żółty odcień). Cztery znaczniki ArUco są wyrównane do 4 zewnętrznych rogów prostokąta, aby uzyskać dokładne współrzędne głównej ramki prostokąta.
scene8
testy_ae_awb_regiony
Testuje, czy wartości RGB i luma różnią się podczas podglądu nagrania w różnych regionach automatycznej ekspozycji (AE) i automatycznego balansu bieli (AWB).
Test rejestruje 8-sekundowy podgląd, wykonując pomiar AE i AWB w każdym kwadracie przez 2 sekundy. Następnie test wyodrębnia z każdego nagrania podglądu pojedynczą klatkę i wykorzystuje ją do wykonania tych kontroli AE i AWB:
- Sprawdzanie AE: sprawdza, czy klatka zmierzająca region o zmniejszonej ekspozycji ma zwiększoną wartość luminancji o więcej niż 1% w porównaniu z klatką zmierzającą region o zwiększonej ekspozycji. Sprawdza, czy obrazy są rozjaśniane podczas pomiaru ciemnego obszaru.
- Sprawdzanie AWB: sprawdza, czy stosunek koloru czerwonego do niebieskiego (średnich wartości RGB obrazu) w ramce z niebieskim regionem pomiaru jest o więcej niż 2% wyższy niż w ramce z żółtym regionem pomiaru. Dzięki temu obrazy mają zrównoważony kod RGB podczas pomiaru żółtego (ciepłego) lub niebieskiego (zimnego) regionu.
Testowane interfejsy API:
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.
scene9
Scene9 składa się z tysięcy losowo dopasowanych okręgów o różnych kolorach, tworząc scenę o bardzo niskiej powtarzalności ze względu na algorytmy kompresji JPEG.
scene9
test_jpeg_high_entropy
Sprawdza, czy kompresja JPEG aparatu działa w przypadku sceny 9 z wysoką entropią i współczynnikiem jakości JPEG ustawionym na 100%. Wzrost współczynnika powiększenia zapewnia, że obraz wyświetlany na tablecie wypełnia pole widzenia kamery.
Przetestowane interfejsy API:
Przeszedł:plik JPEG został prawidłowo skompresowany, zapisany i odczytany z dysku.
test_jpeg_quality
Testuje jakość kompresji JPEG w aparacie. Przejdź z jakością JPEG do android.jpeg.quality
i zadbaj o poprawne zmiany w tabelach kwantyzacji.
Testowane interfejsy API:
Prześlij: macierz kwantyzacji zmniejsza się wraz ze wzrostem jakości. (Macierz reprezentuje współczynnik podziału).
Ś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) w matryce kwantyzacji nie zwiększa się kompresja.
scene_video
Scena scene_video
to scena wideo. Składa się z 4 kółek w różnych kolorach, które poruszają się w górę i w dół z różną częstotliwością klatek na białym tle.
scene_video
test_preview_frame_drop
Sprawdza, czy żądana liczba klatek na podglądzie zostaje zachowana w przypadku sceny dynamicznej. Ten test jest przeprowadzany na wszystkich kamerach, które są dostępne dla aplikacji innych firm.
Przetestowane interfejsy API:
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
Prawidłowo: liczba klatek w podglądzie ma maksymalną wartość z żądanego zakresu, a średnia różnica między kolejnymi klatkami jest mniejsza niż względna tolerancja ustawiona w teście.
scene_extensions
Testy scene_extensions
dotyczą rozszerzeń aparatu i wymagają użycia Camera ITS-in-a-Box, ponieważ wymagają precyzyjnego kontrolowania środowiska testowego. Dodatkowo należy kontrolować wszelkie wycieki światła. Może to wymagać przykrycia stanowiska testowego, urządzenia testowego i tabletu szmatką oraz wyeliminowania wycieku światła z ekranu przedniego urządzenia testowego.
scena_hdr
Scena w usłudze scene_hdr
składa się z portretu po lewej stronie i o niskim kontraście po prawej stronie.
scene_hdr
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.
scena_słabe_jasno
Scena scene_low_light
składa się z siatki kwadratów w różnych odcieniach szarości na czarnym tle. Siatka kwadratów jest otoczona czerwoną obwódką. Kwadraty są ułożone zgodnie z krzywą Hilberta.
scene_low_light
test_night_extension
Testowanie rozszerzenia Noc. Rejestruje zdjęcia z włączonym rozszerzeniem i wykonuje te czynności:
- Wykrywanie obecności 20 kwadratów
- Oblicza wartość luma określoną przez każdy kwadrat
- Oblicza średnią wartość luma dla pierwszych 6 kwadratów zgodnie z orientacją siatki krzywej Hilberta
- Oblicza różnicę w wartości luma kolejnych kwadratów (np. kwadrat2 – kwadrat1) do kwadratów 5 i 6 (kwadrat6 – kwadrat5), a następnie określa średnią z 5 obliczonych różnic.
Testowane interfejsy API:
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
android.hardware.camera2.CameraExtensionSession#capture
Pozytywny wynik: średnia wartość luma pierwszych 6 kwadratów musi wynosić co najmniej 85, a średnia różnica wartości luma kolejnych kwadratów do kwadratu 5 i 6 musi wynosić co najmniej 17.
Na wykresie luminancji widać, jak wygląda wynik testu, który kwalifikuje się do przejścia.
test_low_light_boost_extension
Testowanie trybu AE Boost w słabym oświetleniu. Jeśli aparat 2 obsługuje tryb AE przy słabym oświetleniu, test jest przeprowadzany dla aparatu 2. Jeśli rozszerzenie aparatu w trybie nocnym jest obsługiwane i obsługuje tryb AE z ulepszonym trybem automatycznym w przypadku słabego oświetlenia, test jest również przeprowadzany w przypadku rozszerzenia aparatu w trybie nocnym. Ten test ustawia tryb AE na słabe oświetlenie, pobiera klatkę z podglądu i wykonuje te czynności:
- Wykrywa obecność 20 pudeł
- Oblicza luminancję ograniczoną przez każdy kwadrat
- Oblicza średnią wartość luminacji dla pierwszych 6 kwadratów zgodnie z orientacją siatki krzywej Hilberta
- Oblicza różnicę w wartości luma kolejnych kwadratów (np. kwadrat2 – kwadrat1) do kwadratów 5 i 6 (kwadrat6 – kwadrat5), a następnie określa średnią z 5 obliczonych różnic.
Testowane interfejsy API:
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
Pozytywny wynik: średnia wartość luminacji w pierwszych 6 kwadratach musi wynosić co najmniej 70, a średnia różnica w wartości luminacji kolejnych kwadratów do kwadratu 5 i 6 musi wynosić co najmniej 17.
scene_flash
Testy w trybie scene_flash
wymagają ciemnej sceny w pojemniku z czujnikiem Fusion.
test_auto_flash
Testuje, czy automatyczna lampa błyskowa jest włączana w ciemnych warunkach dla tylnego i przedniego aparatu. W przypadku przednich aparatów automatyczna lampa błyskowa używa ekranu do oświetlenia sceny, a nie fizycznej lampy błyskowej. Podczas tego testu można sprawdzić, czy włączona jest automatyczna lampa błyskowa. W tym celu sprawdza się, czy środek obrazu kafelka jest jaśniejszy po włączeniu automatycznej lampy błyskowej. Aby włączyć automatyczne miganie, światła w urządzeniu testowym muszą być wyłączone. Można je wyłączyć automatycznie za pomocą kontrolera Arduino. Aby test działał prawidłowo, scena musi być całkowicie ciemna. Przed testowaniem na urządzeniu musisz zainstalować aplikację Jetpack Camera (JCA). Automatyczna lampa błyskowa w przypadku tylnych aparatów zależy od stanu AE, ale automatyczna lampa błyskowa w przypadku przednich aparatów nie zależy od AE i jest zawsze włączana.
Testowane interfejsy API:
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.
siła_testu_flash
Testuje, czy kontrola siły błysku w trybie SINGLE
jest prawidłowo zaimplementowana.
Sprawdza, czy urządzenie obsługuje kontrolę siły lampy błyskowej podczas korzystania z aparatu w trybie SINGLE
, siła lampy błyskowej zmienia się wraz z różnymi wymaganymi poziomami siły. Sprawdza, czy element sterujący siłą błysku działa w przypadku różnych AE_MODES
.
Jeśli na przykład tryb automatycznej ekspozycji to ON
lub OFF
, poziom siły lampy błyskowej ma wpływ na jasność, a jeśli tryb to ON_AUTO_FLASH
, poziom siły lampy błyskowej nie ma wpływu na jasność.
Aby przeprowadzić test, należy wyłączyć światła w urządzeniu testowym.
Światła można wyłączyć automatycznie za pomocą kontrolera Arduino.
Aby test działał prawidłowo, scena musi być całkowicie ciemna.
Testowane interfejsy API:
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
Pass:
Gdy tryb automatycznej ekspozycji to ON
lub OFF
, jasność fragmentów obrazu zwiększa się wraz ze wzrostem poziomu siły błysku od braku błysku do
FLASH_SINGLE_STRENGTH_MAX_LEVEL
.
Gdy tryb automatycznej ekspozycji to ON_AUTO_FLASH
, różnica w jasności plam obrazu mieści się w tolerancji, gdy poziom siły błysku zwiększa się od braku błysku do FLASH_SINGLE_STRENGTH_MAX_LEVEL
.
test_led_snapshot
Sprawdzanie, czy migawki LED nie nasycą ani nie zabarwią obrazu.
W ramach tego testu do czujnika czujnika Fusion dodaje się kontroler oświetlenia, który steruje oświetleniem. Gdy światła są ustawione na OFF
, test wykonuje przechwycenie z ustawieniami trybu AUTO_FLASH
na ON
. Podczas tego przechwytywania test uruchamia sekwencję wstępnego przechwytywania z regułą aePrecapture
ustawioną na START
i ustawia intencję przechwytywania na Preview
, co pozwala na przechwytywanie z użyciem Flasha.
Ponieważ obraz ma wyraźny obszar interaktywny ze względu na błysk, test oblicza średnią wartość obrazu z błysku w całym obrazie i sprawdza, czy ta wartość mieści się w zakresie (68, 102). Aby sprawdzić, czy obraz ma prawidłowo zrównoważony balans bieli, test oblicza współczynniki R/G i B/G oraz sprawdza, czy mieszczą się one w zakresie od 0,95 do 1,05.
Testowane interfejsy API:
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_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, a różnica między klatkami jest mniejsza niż bezwzględna tolerancja ustawiona w teście.
test_torch_strength
Testuje, czy kontrola mocy błysku w trybie TORCH
jest prawidłowo zaimplementowana.
Sprawdza, czy urządzenie obsługuje kontrolę siły błysku podczas korzystania z kamery w trybie TORCH
, a moc latarki zmienia się w zależności od różnych poziomów siły. Sprawdzanie, czy kontrola siły błysku działa z użyciem różnych AE_MODES
.
Jeśli na przykład tryb automatycznej ekspozycji to ON
lub OFF
, poziom siły lampy błyskowej ma wpływ na jasność, a jeśli tryb to ON_AUTO_FLASH
, poziom siły lampy błyskowej nie ma wpływu na jasność.
Sprawdzanie, czy moc lampy pozostaje taka sama przez cały czas trwania migawki, symulując sesję nagrywania wideo. Aby przeprowadzić test, musisz wyłączyć światła w zestawie testowym. Możesz wyłączyć oświetlenie automatycznie za pomocą kontrolera Arduino. Aby test działał prawidłowo, scena musi być całkowicie ciemna.
Testowane interfejsy API:
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
Pass:
Gdy tryb automatycznej ekspozycji to ON
lub OFF
, jasność plam z błysku wzrasta wraz ze wzrostem poziomu mocy błysku od braku błysku do FLASH_TORCH_STRENGTH_MAX_LEVEL
.
Gdy tryb automatycznej ekspozycji to ON_AUTO_FLASH
, różnica w jasności poszczególnych ujęć w sekwencji mieści się w tolerancji, gdy poziom siły lampy błyskowej zwiększa się od braku lampy do FLASH_TORCH_STRENGTH_MAX_LEVEL
.
sensor_fusion
Testy fuzji danych z czujników wymagają określonego ruchu telefonu przed szachownicą i znacznikami ArUco. Aby uzyskać optymalne wyniki, upewnij się, że karta testowa jest zamontowana na płasko. Wykresy, które nie są płaskie, wpływają na obliczenia rotacji w przypadku wielu testów. Wykres musi wypełniać tył modułu sensora hybrydowego. Należy go wydrukować w formacie 17 x 17 cali (43 x 43 cm). Testy sensor_fusion
można zautomatyzować za pomocą urządzenia Sensor Fusion Box.
Wykres danych z wielu czujników
Wykres czujnika hybrydowego, który wypełnia tył pola czujnika hybrydowego
test_lens_intrinsic_calibration
Testuje, czy optyczny środek obiektywu zmienia się, gdy obiektyw porusza się z powodu optycznej stabilizacji obrazu (OIS). Jeśli obsługiwane są wrodzone próbki soczewek, sprawdza się, czy środek optyczny soczewek zmienia się, gdy przesuwa się obiektyw z powodu optycznej stabilizacji obrazu (OIS).
Przetestowane interfejsy API:
android.hardware.camera2.CameraCharacteristics#LENS_INTRINSIC_CALIBRATION
android.media.MediaRecorder
android.media.CamcorderProfile
Przechodzi: optyczny środek obiektywu zmienia się o co najmniej 1 piksel. Jeśli obsługiwane są próbki wewnętrzne soczewki, centra optyczne soczewek zmieniają się o co najmniej 1 piksel.
Przykład wykresu test_lens_intrinsic_calibration
przedstawiającego zmiany głównych punktów w pikselach w przypadku każdego kadru
test_multi_camera_frame_sync
Testy, które wskazują sygnatury czasowe zarejestrowane przez kamerę logiczną, trwają nie dłużej niż 10 ms, ponieważ obliczają kąty kwadratów w obrębie szachownicy, aby ustalić sygnaturę czasową.
Testowane interfejsy API:
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.
zniekształcenie_testu_podglądu
Sprawdzanie, czy zniekształcenia są korygowane w ramkach podglądu wykonanych przy różnych poziomach powiększenia. W przypadku każdej ramki podglądu test oblicza punkty idealne na podstawie informacji o właściwościach aparatu i o warunkach zewnętrznych. Na przykładowym obrazie punkty idealne są zaznaczone na zielono, a rzeczywiste – na czerwono. Błąd zniekształcenia jest obliczany na podstawie średniej kwadratowej (RMS) odległości w pikselach między punktami rzeczywistymi a punktami idealnymi. Zielone i czerwone wyróżnienia na obrazie służą do wizualnego wykrywania obszaru błędu zniekształcenia.
Obraz kratki z zielonymi punktami idealnymi i czerwonymi punktami rzeczywistymi
Przetestowane 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ł: znormalizowany błąd zniekształcenia każdej ramki podglądu jest mniejszy od progu ustawionego w teście.
test_preview_stabilization
Testy, w których stabilizowany podgląd wideo obraca się rzadziej niż żyroskop.
Testowane interfejsy API:
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 tą funkcją i bez niej.
Przykładowy film ze stabilizacja
Przykładowy film bez stabilizacji
test_fuzji
Testuje różnicę w dacie i godzinie między kamerą a żyroskopem w przypadku aplikacji AR i VR. Telefon jest 10 razów obracany o 90 stopni przed szachownicą. Czas trwania ruchu to około 2 s. Ten test jest pomijany, jeśli nie uwzględniono żyroskopu lub jeśli parametr REALTIME
źródła sygnatury czasowej nie jest włączony.
Test test_sensor_fusion
generuje kilka wykresów. Dwa najważniejsze wykresy do debugowania to:
test_sensor_fusion_gyro_events
: pokazuje zdarzenia żyroskopu dla telefonu podczas testu. Ruch w kierunkach x i y oznacza, że telefon nie jest pewnie zamocowany na płycie montażowej, co zmniejsza prawdopodobieństwo zaliczenia testu. Liczba cykli na wykresie zależy od szybkości zapisywania klatek.test_sensor_fusion_gyro_events
test_sensor_fusion_plot_rotations
: pokazuje wyrównanie żyroskopu i zdarzeń kamery. Wykres musi pokazywać ruchy między aparatem i żyroskopem o wartości +/-1 ms.obroty_czujnika_fuzji_testowej
Przetestowane 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.
- Utracone klatki: potok nie jest wystarczająco szybki, aby przechwycić 200 klatek naraz.
- Błędy gniazda:
adb
nie może niezawodnie połączyć się z badanym urządzeniem przez wystarczająco długi czas, aby wykonać test. - Wykres nie jest płaski. Wykres
test_sensor_fusion_plot_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 na płaszczyznach X i Y. Ten błąd występuje częściej w przypadku przednich aparatów, ponieważ tylny aparat często ma uniesioną część w stosunku do reszty obudowy telefonu, co powoduje przechylenie podczas mocowania tyłu telefonu do płytki montażowej.
test_stabilizacji_wideo
Testy, w których stabilizowany obraz obraca się rzadziej niż żyroskop.
Przetestowane interfejsy API:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
Prawidłowy: maksymalny obrót kąta wokół klatek wynosi mniej niż 60% obrotu żyroskopu.
Poniżej znajdziesz przykładowe filmy z tą funkcją i bez niej.
Przykładowy film ze stabilizacja
Przykładowy film bez stabilizacji
feature_combination
Testy feature_combination
sprawdzają, czy funkcje działają prawidłowo, gdy włączonych jest kilka funkcji aparatu jednocześnie. W tych testach używany jest ten sam obraz szachownicy, który jest używany w scenie fuzji danych z czujników.
test_feature_combination
Testuje wszystkie kombinacje różnych strumieni, stabilizacji podglądu, docelowego zakresu liczby klatek na sekundę, 10-bitowego filmu HDR i Ultra HDR, które są obsługiwane przez urządzenie z kamerą. Ten test wymaga dużej ilości pamięci, dlatego zalecamy używanie hosta z co najmniej 128 GB pamięci RAM.
W przypadku Androida 15 lub nowszego plik konfiguracji zawiera pole log_feature_combo_support
, które domyślnie ma wartość False
. Gdy pole log_feature_combo_support
ma wartość True
, test wykonuje wszystkie kombinacje obsługiwanych funkcji i zapisuje wyniki w pliku proto bez niepowodzenia testu. Do testowania zgodności pole log_feature_combo_support
musi mieć wartość False
.
Testowane interfejsy API:
android.hardware.camera2.CameraDevice.CameraDeviceSetup#isSessionConfigurationSupported
android.hardware.camera2.CameraDevice.CameraDeviceSetup#createCaptureRequest
Pass: w przypadku każdej obsługiwanej kombinacji funkcji:
- Jeśli włączona jest stabilizacja podglądu, strumień podglądu jest stabilizowany.
- Liczba klatek na sekundę w podglądzie mieści się w skonfigurowanym zakresie
AE_TARGET_FPS_RANGE
. - Przestrzeń kolorów nagranego strumienia podglądu jest zgodna z ustawieniami.
- Zdjęcie w ultra HDR ma prawidłową mapę wzmocnienia.