Informacje o wersji Androida 13 Camera Image Test Suite

Wersja Androida 13 zawiera kilka zmian w ITS aparatu. Oprócz stopniowych zmian, takich jak aktualizacje wersji Pythona i pakietów oraz aktualizacje testowe sprzętu, Android 13 obsługuje testowanie wideo.

Ta strona zawiera podsumowanie zmian w aparacie ITS w Androidzie 13. Zmiany można podzielić na 7 głównych kategorii:

Wersje Pythona i pakietów

Android 13 obsługuje te wersje Pythona (oraz biblioteki obsługiwane w Androidzie 12):

Dodatki do pliku konfiguracyjnego

Ze względu na dodanie sterowania oświetleniem do testu test_auto_flash.py plik config.yml wymaga dwóch dodatkowych parametrów dla kontrolera i kanału oświetlenia. Aby określić, czy testowane urządzenie (DUT) jest składane, czy nie, plik config.yml wymaga trzeciego parametru dodatkowego, który musi zostać dodany do sekcji dotyczącej fuzji na poziomie tabletu i czujników.

TestBeds:
  - Name: TEST_BED_TABLET_SCENES
    # Test configuration for scenes[0:4, 6, _change]
    Controllers:
        AndroidDevice:
          - serial: 8A9X0NS5Z
            label: dut
          - serial: 5B16001229
            label: tablet

    TestParams:
      brightness: 192
      chart_distance: 22.0
      debug_mode: "False"  # "True" or "False"; quotes needed
      lighting_cntl: <controller-type>  # "arduino" or "None"; quotes needed
      lighting_ch: <controller-channel>
      camera: 0
      foldable_device: "False". # set "True" if testing foldable
      scene: <scene-name>  # if <scene-name> runs all scenes

Testowanie zmian

scene1_1/test_black_white.py

Test test_black_white sprawdza nasycanie kanału w sposób zgodny z poprzednimi wersjami Androida, co oznacza, że wymagany pierwszy poziom interfejsu API dla sprawdzania nasycania kanału to Android 10.

scene1_2/test_yuv_plus_raw.py

Test test_yuv_plus_raw obsługuje czujniki inne niż 16:9 lub 4:3, aby zapewnić lepszą obsługę formatu RAW. Jeśli test nie może znaleźć wspólnego formatu między formatem RAW czujnika a formatami rejestrowania YUV, porównuje on format RAW z największym formatem YUV, nawet jeśli współczynniki proporcji są różne.

scene2_a/test_faces.py

Element test_faces został przekształcony w element test_num_faces.

scene2_a/test_num_faces.py

Test test_num_faces obsługuje przycinanie czujnika i prawidłowo umieszcza prostokąty twarzy na przyciętych zdjęciach z kamery szerokokątnej.

scene3/test_lens_position.py

Test test_lens_position został wycofany w Androidzie 13.

scene6/test_zoom.py

Test test_zoom został przekształcony, aby ułatwić testowanie systemów z 3 i 4 kamerami. Jeśli kamera przechodzi testy w zakresie 10-krotnego powiększenia, test kończy się prawidłowo. Umożliwia to testowanie powiększenia przy użyciu jednej odległości na wykresie.

scene_change/test_scene_change.py

Test test_scene_change został wycofany w Androidzie 13.

Nowe testy na tablecie

Android 13 zawiera 2 nowe testy na tabletach. Oba testy są wymagane w przypadku urządzeń z Androidem 13, ale są pomijane w przypadku urządzeń, które przechodzą na Androida 13.

Scena Nazwa testu Pierwszy poziom API Opis
2_a test_auto_flash 33 Potwierdza, że ciemna scena powoduje automatyczne użycie lampy błyskowej.
2_b test_yuv_jpg_capture_sameness 33 Potwierdza, że obrazy YUV i JPEG są identyczne bit po bicie.

scene2_a/test_auto_flash.py

Android 13 dodaje test test_auto_flash.

Parametry

  • flash: pomija test, jeśli flash nie jest dostępny.

Metoda

Test konfiguruje żądanie przechwycenia w celu automatycznego korzystania z lampy błyskowej i prezentuje scenę wymagającą użycia lampy błyskowej. Oświetlenie w urządzeniu testowym i na tablecie jest wyłączone, aby przedstawić ciemną scenę dla algorytmu automatycznej ekspozycji. Test konfiguruje sekwencję NUM_FRAMES ujęć ze włączoną automatyczną lampą błyskową. Jeśli ustawienie AE_STATE zwraca wartość FLASH_REQUIRED, test sprawdza, czy w zrzutach jest używane światło błyskowe.

Oświetlenie można kontrolować ręcznie, gdy pojawi się odpowiedni komunikat, lub automatycznie za pomocą kontrolera Arduino z dodatkowym oświetleniem do automatycznego testowania. Nowy folder narzędzi lighting_control_utils gromadzi kod służący do sterowania oświetleniem w testach.

scene2_a/test_yuv_jpeg_capture_sameness.py

Android 13 zawiera test test_yuv_jpeg_capture_sameness

Parametry

  • streamUseCase: określa, czy kamera obsługuje strumieniowanie.
  • android.jpeg.quality: ustawia jakość JPEG na 100.

Metoda

Ten test rejestruje 2 obrazy w największych wspólnych formatach YUV i JPEG z tymi samymi proporcjami co największy format JPEG, o rozdzielczości nieprzekraczającej 1920 x 1440. Test ustawia wartość jpeg.quality na 100 i przechwytuje żądanie z dwoma powierzchniami. Następnie konwertuje oba obrazy na tablice RGB i oblicza 3D root mean square (RMS) między tymi dwoma obrazami. Tolerancja różnicy jest ustawiona na 1%.

Testowanie filmów

ITS aparatu obsługuje testowanie filmów w Androidzie 13.

Android 13 zawiera te testy:

Scena Nazwa testu Pierwszy poziom API Opis
4 test_preview_stabilization_fov 33 Sprawdzanie, czy podgląd filmu nie jest zbyt przycięty po włączeniu stabilizacji.
4 test_video_aspect_ratio_and_crop 33 Potwierdź formaty filmów, pole widzenia, format obrazu i przycinanie.
sensor_fusion test_preview_stabilition 33 Sprawdzanie, czy stabilizacja podglądu działa prawidłowo.
sensor_fusion test_video_stabilition 33 Potwierdza, że stabilizacja wideo działa.

scene4/test_preview_stabilization_fov.py

Android 13 zawiera test test_preview_stabilization_fov Ten test sprawdza obsługiwane rozmiary podglądu, aby upewnić się, że pole widzenia nie jest nieprawidłowo przycięte.

Metoda

Podczas testu rejestrowane są 2 filmy: jeden ze włączoną stabilizacją podglądu, a drugi bez niej. Z każdego filmu wybierany jest reprezentatywny kadr, który jest analizowany pod kątem zmian pola widzenia w obu filmach w stosunku do specyfikacji.

Test sprawdza te parametry z włączoną i wyłączoną stabilizacją podglądu:

  • Kształt koła pozostaje stały.
  • Środek okręgu pozostaje stabilny.
  • Rozmiar koła zmienia się o maksymalnie 20%, co oznacza, że pole widzenia zmienia się o maksymalnie 20%.

scene4/test_video_aspect_ratio_and_crop.py

Android 13 zawiera test test_video_aspect_ratio_and_crop Podobnie jak w przypadku testu test_aspect_ratio_and_crop dotyczących zdjęć, ten test sprawdza obsługiwane formaty wideo, aby upewnić się, że klatki wideo nie są nieprawidłowo rozciągnięte ani przycięte. Testowane są wszystkie podawane przez użytkowników jakości filmów. Jeśli kamera obsługuje HLG10, testowany jest film 10-bitowy.

Android 13 dodaje metodę get_available_video_qualities do klasy its_session_utils. Aby umożliwić udostępnianie wspólnego kodu w dotychczasowych testach, Android 13 zawiera też 2 nowe funkcje pomocnicze: image_fov_utilsvideo_processing_utils.

Metoda

Podczas testu jest rejestrowane zdjęcie referencyjne w formacie RAW lub JPEG o najwyższej rozdzielczości, jeśli format RAW nie jest obsługiwany. Na podstawie obrazu odniesienia określane są rozmiar i położenie koła. Następnie krótkie filmy są nagrywane we wszystkich obsługiwanych jakościach. Ostatni klatkowy punkt odniesienia jest wyodrębniony z każdego poziomu jakości. Na podstawie ramki odniesienia obliczane są pole widzenia (FoV), wyśrodkowanie (przycięcie) i współczynnik proporcji dla każdej jakości filmu.

W przypadku obliczenia pola widzenia test porównuje rozmiar koła ramki wideo z obliczoną wielkością koła na podstawie obrazu odniesienia i rozmiarów formatu wideo. W przypadku sprawdzania przycięcia test porównuje wyśrodkowanie ramki filmu z wyśrodkowaniem obrazu referencyjnego. W przypadku sprawdzania proporcji sceny, czyli dużego czarnego okręgu na białym tle, test określa proporcje obrazu i sprawdza, czy nie jest on zniekształcony.

sensor_fusion/test_preview_stabilization.py

Android 13 zawiera test test_preview_stabilization, który sprawdza wszystkie obsługiwane jakości podglądu do 1920 x 1080. Test wykorzystuje stanowisko testowe sensor fusion i wymaga nowego kontrolera sensor fusion w wersji 2 lub aktualizacji oprogramowania układowego w poprzednich wersjach kontrolera Arduino. Więcej informacji o nowym kontrolerze znajdziesz w artykule Aktualizacje i dodatki sprzętowe.

Metoda

Telefon jest powoli przemieszczany pod kątem około 15 stopni przy włączonej stabilizacji podglądu. Następnie obracanie obrazów jest porównywane z obrotem żyroskopu.

sensor_fusion/test_video_stabilization.py

Android 13 wprowadza test test_video_stabilization, który sprawdza obsługiwane jakości wideo do 1920 x 1080. Filmy o niskiej rozdzielczości QCIF są wykluczone. Test wykorzystuje stanowisko testowe sensor fusion i wymaga nowego kontrolera sensor fusion w wersji 2 lub aktualizacji oprogramowania w poprzednich wersjach kontrolera Arduino. Więcej informacji o nowym kontrolerze znajdziesz w artykule Aktualizacje i dodatki sprzętowe.

Metoda

Urządzenie testowe przesuwa telefon powoli pod kątem około 15 stopni przy włączonej stabilizacji podglądu. Następnie obracanie obrazów jest porównywane z obrotem żyroskopu.

Aktualizacje i dodatki sprzętowe

Android 13 zawiera uaktualnienie kontrolera fuzji sensorów na podstawie Arduino w wersji 2. Uaktualnienie obejmuje zmiany zarówno sprzętowe, jak i oprogramowania układowego. Uaktualnienie umożliwia kontrolowanie szybkości obrotu i kontrolowanie oświetlenia. Uaktualnienie obejmuje też nową osłonę (patrz rys. 1), która zapewnia 3 kanały obrotu i 3 kanały sterowania oświetleniem.

Arduino Shield rev2.0

Rysunek 1. Płytka Arduino rev2.0 z kontrolą obrotu i oświetlenia

Dodatkowo w przypadku iOS 13 oprogramowanie dotychczasowych kontrolerów musi zostać zaktualizowane, aby umożliwić kontrolowanie prędkości obrotów. Oprogramowanie można pobrać z tych miejsc:

Więcej informacji o nowym kontrolerze znajdziesz w artykule Kontroler fuzji sensorów w Androidzie 13.

Pomoc dotycząca testowania składanych

Android 13 obsługuje testowanie urządzeń składanych. Aby włączyć interfejs API wielokamery w przypadku składanych urządzeń, podczas testowania wymagany jest stan telefonu (Folded lub Unfolded). Aby umożliwić sprawdzanie stanu telefonu we wszystkich DUT-ach, w tym telefonach nieskładanych, uruchom to polecenie adb po połączeniu DUT-a z hostem.

adb shell am compat enable ALLOW_TEST_API_ACCESS com.android.cts.verifier