Na tej stronie znajdziesz podsumowanie zmian w pakiecie testów obrazu z aparatu (ITS) w Androidzie 11. Zmiany dzielą się na te kategorie:
- Zmiany sprzętowe
- Testy WYMAGANE na pierwszym poziomie interfejsu API
- Test oświetlenia zweryfikowany
- Zmiany nazw scen
- Testowanie zmian i dodatków
- Większa liczba testów aparatu LIMITED
Zmiany sprzętowe
Android 11 wprowadza kilka zmian w sprzęcie, aby obniżyć koszty i zwiększyć dostępność. Zmiany te należą do tych kategorii:
- Dodatkowy producent
- Ujednolicone metody produkcji
- Więcej opcji tabletów
- Ograniczone otwieranie tabletu
- Nowy kontroler fuzji czujników
Dodatkowy producent
Firma Rahi Systems może produkować obudowy testowe ITS, podobnie jak nasz dotychczasowy dostawca, MYWAY design. Informacje o firmie w przypadku kwalifikujących się dostawców są następujące:
Rahi Systems Inc.
48303 Fremont Blvd, Fremont CA 94538, USA
rahisystems.com/products/android-device-testing-equipment/
androidpartner@rahisystems.com
+1-510-319-3802MYWAY design
4F., No. 163, Fu-Ying Road, XinZhuang District, New Taipei City, Tajwan
twmyway.com
sales@myway.tw
+886-2-29089060
Ujednolicone metody produkcji
Obudowa testowa ITS-in-a-box rev1 o normalnym polu widzenia (RFoV) została przeprojektowana tak, aby korzystać z metod produkcji stosowanych w przypadku obudów testowych o szerokim polu widzenia (WFoV) i z fuzją czujników. Funkcjonalność jest identyczna, a dla uproszczenia projekt jest określany jako rev1a. Nowa konstrukcja umożliwia producentom przechowywanie jednego rodzaju plastiku do produkcji wszystkich obudów testowych. Dodatkowo uchwyty na tablet i lampę zostały przeprojektowane, aby można było w nich umieszczać różne tablety i listwy świetlne LED.
Najnowsze opisy i rysunki techniczne znajdziesz w tych dokumentach:RFoV box (rev1a) i WFoV box (rev2.9).
Więcej opcji tabletów
Do listy zalecanych tabletów dodaliśmy m.in. Samsung Galaxy Tab A 10.1 i Chuwi Hi9 Air 10.1. Ważne jest, aby tablet nie miał modulacji szerokości impulsu (PWM) do regulacji jasności ekranu, co pozwoli wyeliminować pasmowanie na przechwytywanych obrazach.
Najnowsze informacje o zalecanych tabletach znajdziesz w wymaganiach dotyczących tabletów.
Ograniczone otwieranie tabletu
Aby umożliwić korzystanie z tabletu Galaxy Tab A 10.1, otwór na tablet w obudowach testowych RFoV (rev1a) i WFoV (rev2) został nieznacznie zmniejszony. Wersje, które odzwierciedlają te zmiany, to rev1a.1 i rev2.9. Rysunki te znajdziesz w sekcjach RFoV box (rev1a) i WFoV box (rev2.9).
Nowy kontroler fuzji czujników
Sprzęt kontrolera fuzji czujników został przeprojektowany, aby ułatwić produkcję. Nowy kontroler jest oparty na Arduino i ma niestandardową płytkę shield, która jest montowana na Arduino. Na rysunku 1 pokazano osłonę, a na rysunku 2 – rysunek techniczny obudowy. Nowy sterownik jest zasilany pojedynczym zasilaczem 5 V, który zasila silnik bezpośrednio. Elektronika jest sterowana w całości przez złącze USB. Oddzielny zasilacz zapewnia całkowitą izolację między elektroniką sterującą a serwomotorem. Dodatkowo jeden kontroler może sterować maksymalnie 6 serwomotorami.
Rysunek 1. Widok z góry na płytkę Arduino
Rysunek 2. Projektowanie obudów
Android 11 jest wstecznie zgodny z obecnymi kontrolerami. Aby wywołać testowanie za pomocą kontrolera opartego na Arduino, użyj tego polecenia:
python tools/run_all_tests.py device=# camera=# rot_rig=arduino:1 scenes=sensor_fusion
Pierwszy poziom interfejsu API
W Androidzie 10 testy ITS są oznaczone symbolami MANDATED i NOT_YET_MANDATED. Aby urządzenie mogło zostać wprowadzone na rynek jako urządzenie z Androidem 10, musi przejść wszystkie MANDATED testy. NOT_YET_MANDATED testy mogą się nie powieść, ale w raportach weryfikatora CTS są traktowane jako PASS. Wymaganie dotyczące MANDATEDtestówMANDATED dotyczy też uaktualnionych urządzeń. Wymóg, aby uaktualnione urządzenia przechodziły wszystkie MANDATED testy, spowodował opóźnienie w przekształcaniu testów w MANDATED testy, ponieważ starsze urządzenia również muszą je przejść.
W Androidzie 11 testy MANDATED są ograniczone przez flagę pierwszego poziomu interfejsu API z właściwości telefonu. W przypadku urządzeń, które przechodzą na Androida 11, testy są przeprowadzane jako NOT_YET_MANDATED, co oznacza, że test może się nie powieść, ale w CtsVerifier.apk zostanie zapisany jako PASS.
Na przykład:
- W Androidzie 11 test
test_channel_saturationjestMANDATEDna urządzeniach z interfejsem API na poziomie wyższym niż 29. - W Androidzie 10 test
test_channel_saturationjestMANDATEDna wszystkich urządzeniach.
Sprawdzanie oświetlenia sceny
W Androidzie 11 oświetlenie sceny jest weryfikowane przez analizę jasności w rogach sceny. Wszystkie sceny ręczne są sprawdzane pod kątem oświetlenia, a sceny na tabletach są sprawdzane pod kątem kamer RFoV na stanowisku testowym RFoV i kamer WFoV na stanowisku testowym WFoV. Jeśli poziom oświetlenia jest niewystarczający, zgłaszany jest błąd, a testowanie kończy się niepowodzeniem.
Zmiany nazw scen
W Androidzie 10 scena 1 stanowi większość testów i duży odsetek całkowitego czasu testowania. Jeśli którykolwiek test w scenie 1 się nie powiedzie, całą scenę należy uruchomić ponownie. Ponowne uruchomienie całej sceny z założenia zmniejsza liczbę testów granicznych. W Androidzie 11 czas ponownego uruchomienia jest skracany przez podzielenie sceny 1 na dwie sceny: scena1_1 i scena1_2.
W tabeli poniżej znajdziesz czasy testów tylnego aparatu Pixela 4 w różnych scenach. Liczba testów jest dzielona w celu wyrównania czasu testowania, a nie liczby testów.
Dodatkowo następuje oczyszczenie nazw. Scena 2 jest podzielona literami, a scena 1 – cyframi. Nazewnictwo poszczególnych rozszerzeń jest następujące:
- Sceny z tym samym wykresem, ale różnymi testami:
*_1,2,3 - Sceny z różnymi wykresami, ale tymi samymi testami:
*_a,b,c
| Oświetlenie | Liczba testów | Czas pracy Pixela 4 (min:s) |
|---|---|---|
| 0 | 11 | 1:12 |
| 1_1 | 22 | 5:12 |
| 1_2 | 13 | 5:20 |
| 2_a | 5 | 3:22 |
| 2_b | 1 | 0:24 |
| 2_c | 1 | 0:24 |
| 3 | 6 | 2:04 |
| 4 | 2 | 2:46 |
Testowanie zmian
Testy zaktualizowane do korzystania z pierwszego poziomu interfejsu API
W Androidzie 11 testy w tabeli poniżej zostały zaktualizowane, aby używać flagi pierwszego poziomu API. Wszystkie te testy korzystają z pierwszego poziomu interfejsu API 29, z wyjątkiem testu test_tonemap_curve, który korzysta z pierwszego poziomu interfejsu API 30.
| Oświetlenie | Nazwa testu | Pierwszy poziom interfejsu API | Opis |
|---|---|---|---|
| 0 | test_tonemap_curve |
30 | Upewnij się, że potok ma odpowiednie dane wyjściowe kolorów z liniowym mapowaniem tonalnym i idealnym obrazem wejściowym (zależy od test_test_patterns). |
| 1 | test_ae_precapture_trigger |
29 | Testowanie automatu stanu AE podczas korzystania z wyzwalacza wstępnego przechwytywania. Sprawdź, czy wyłączone wyzwalanie wstępnego przechwytywania AE nie ma wpływu. |
test_channel_saturation |
29 | Upewnij się, że kanały RGB osiągają podobne wartości, aby wyeliminować odcień w nasyconych regionach. | |
| 2_a/b/c | test_num_faces |
29 | Zwiększanie różnorodności wieku w scenach z twarzami. |
Testy ze zmianami
Testy w tej tabeli zostały zaktualizowane w Androidzie 11. Zmiany są opisane w kolumnie Opis zmian.
| Oświetlenie | Nazwa testu | Pierwszy poziom interfejsu API | Opis zmian |
|---|---|---|---|
| 1 | test_burst_sameness_manual |
30 | Zmniejsz tolerancję do 2%. |
| 4 | test_aspect_ratio_and_crop |
30 | Zmień, aby działać na urządzeniach OGRANICZONYCH. |
test_multi_camera_alignment |
30 | Jeśli nagrywanie z wielu kamer nie jest obsługiwane, przełączaj się między kamerami pojedynczo. Zmiana logiki wyboru aparatu, aby uwzględniała systemy z 3 i 4 aparatami, oraz pomijanie aparatów monochromatycznych, działających tylko w trybie głębi i na podczerwień. |
Nowe testy
Testy w tabeli poniżej są włączone w Androidzie 11. Testy zostały podsumowane w tabeli, a szczegółowe opisy znajdziesz w kolejnych sekcjach.
| Oświetlenie | Nazwa testu | Pierwszy poziom interfejsu API | Opis |
|---|---|---|---|
| 0 | test_vibration_restrictions |
30 | Upewnij się, że podczas robienia zdjęć nie są aktywowane alerty ani wibracje. |
| 2_a | test_jpeg_quality |
30 | Sprawdź, czy tabele kwantyzacji zmniejszają kompresję, aby zwiększyć jakość JPEG. |
| 2_d/2_e | test_num_faces |
30 | Zwiększ różnorodność wieku osób. |
| 2_e | test_continuous_picture |
30 | Upewnij się, że 3A jest w android.control.afAvailableModes =
CONTINUOUS_PICTURE. |
| zmień | test_scene_change |
31 | android.control.afSceneChange potwierdzane po zmianie sceny. |
| 6 | test_zoom |
30 | Test android.control.zoomRatioRange |
scene0/test_vibration_restriction
Ten test nie wymaga konkretnej sceny, ale testowane urządzenie musi być umieszczone na twardej powierzchni lub zamontowane na niej. Obejmuje to montaż w obudowach testowych ITS-in-a-box.
Asserts
- Brak wibracji podczas korzystania z aparatu
scene2_a/test_jpeg_quality
Metoda
Poszczególne części pliku JPEG są definiowane przez 2-bajtowe znaczniki. Więcej informacji znajdziesz w artykule JPEG.
Test wyodrębnia macierze kwantyzacji z obrazu JPEG. Znacznik macierzy kwantyzacji w pliku JPEG to sekwencja [255, 219]. Gdy znacznik zostanie znaleziony, dwa następne elementy listy będą miały ten rozmiar. Marker rozmiaru DQT w formacie JPEG ma zwykle wartość [0, 132] = 256*0+132 = 132, co odpowiada rozmiarowi danych DQT w pliku JPEG. Osadzone dane mają postać: [255, 219, 0, 132, 0 (znacznik luminancji), macierz luminancji 8x8, 1 (znacznik chrominancji), macierz chrominancji 8x8].
Znacznik 0 dla macierzy luminancji i znacznik 1 dla macierzy chrominancji są wyświetlane
w sposób spójny na wielu urządzeniach, w tym na telefonach, które rozdzielają te dwie
macierze na osobne sekcje DQT w pliku JPEG. Macierze luminancji mają zwykle większą różnorodność wartości niż macierze chrominancji, ponieważ ludzkie oko jest bardziej wrażliwe na luminancję niż na chrominancję, a obrazy JPEG uwzględniają tę różnicę.
Przykładowe wyodrębnione macierze luminancji i chrominancji dla współczynników jakości 85 i 25 w przypadku tylnego aparatu Pixela 4 rejestrującego scenę2_a za pomocą platformy testowej ITS.
Wartości macierzy znacznie rosną (co oznacza zwiększoną kompresję) w przypadku ustawienia niższej jakości. Te macierze są drukowane ze skryptem tylko wtedy, gdy zastosowana jest flaga debug=True. Zwróć uwagę na większe różnice w wartościach w macierzach luminancji w porównaniu z macierzami chrominancji.
luma matrix (quality = 85) chroma matrix (quality = 85)
[[ 5 3 4 4 4 3 5 4] [[ 5 5 5 7 6 7 14 8]
[ 4 4 5 5 5 6 7 12] [ 8 14 30 20 17 20 30 30]
[ 8 7 7 7 7 15 11 11] [30 30 30 30 30 30 30 30]
[ 9 12 17 15 18 18 17 15] [30 30 30 30 30 30 30 30]
[17 17 19 22 28 23 19 20] [30 30 30 30 30 30 30 30]
[26 21 17 17 24 33 24 26] [30 30 30 30 30 30 30 30]
[29 29 31 31 31 19 23 34] [30 30 30 30 30 30 30 30]
[36 34 30 36 28 30 31 30]] [30 30 30 30 30 30 30 30]]
luma matrix (quality = 25) chroma matrix (quality = 25)
[[ 32 22 24 28 24 20 32 28] [[ 34 36 36 48 42 48 94 52]
[ 26 28 36 34 32 38 48 80] [ 52 94 198 132 112 132 198 198]
[ 52 48 44 44 48 98 70 74] [198 198 198 198 198 198 198 198]
[ 58 80 116 102 122 120 114 102] [198 198 198 198 198 198 198 198]
[112 110 128 144 184 156 128 136] [198 198 198 198 198 198 198 198]
[174 138 110 112 160 218 162 174] [198 198 198 198 198 198 198 198]
[190 196 206 208 206 124 154 226] [198 198 198 198 198 198 198 198]
[242 224 200 240 184 202 206 198]] [198 198 198 198 198 198 198 198]]
Ilustracja 3 przedstawia średnie wartości macierzy dla tylnego aparatu Pixela 4 w porównaniu z jakością JPEG. Wraz ze wzrostem jakości JPEG poziom kompresji (średnia macierzy DQT luminancji/chrominancji) maleje.
Rysunek 3. Średnie wartości macierzy DQT luminancji/chrominancji tylnego aparatu Pixela 4 w porównaniu z jakością JPEG
Asserts
- W przypadku wartości [25, 45, 65, 86] średnie wartości macierzy kwantyzacji przy jakości +20 są o 20% niższe.
- Ładunki macierzy DQT to liczby kwadratowe.
Na ilustracji 4 widać przykład telefonu, który nie przeszedł testu. Pamiętaj, że w przypadku obrazów o bardzo niskiej jakości (jpeg.quality < 50) nie następuje zwiększenie kompresji w macierzy kwantyzacji.
Rysunek 4. Przykład nieudanego testu
scene2_d/e test_num_faces
Dodaliśmy 2 nowe sceny wykrywania twarzy, aby zwiększyć różnorodność twarzy w sprawdzaniu algorytmu wykrywania twarzy. Po wielokrotnym przetestowaniu kilku kamer najtrudniejsza do rozpoznania twarz powinna być twarzą po lewej stronie w scenie scene2_d. W szczególności model ma kapelusz i brodę, co jest nowością w scenach z twarzami. Nowe sceny są widoczne na rysunkach 5 i 6.
Rysunek 5. scene2_d
Rysunek 6. scene2_e
Asserts
num_faces == 3
scene2_e/test_continuous_picture
Metoda
Test test_continuous_picture korzysta ze sceny scene2_e, ale można go włączyć w przypadku dowolnej sceny z twarzami. W tym teście rejestrowanych jest 50 klatek w rozdzielczości VGA. W żądaniu rejestrowania najpierw ustawiana jest wartość android.control.afMode = 4
(CONTINUOUS_PICTURE).
Oczekuje się, że system 3A ustabilizuje się po 50 klatkach.
Asserts
- 3A jest w stanie zbieżnym na końcu rejestrowania.
scene_change/test_scene_change
Metoda
Włączono nowy test, aby sprawdzić, czy flaga android.control.afSceneChange jest potwierdzana przy zmianie sceny. Zmiana sceny polega na wyświetleniu sceny z twarzą na tablecie, a następnie włączeniu i wyłączeniu tabletu. Scena ponownie wykorzystuje scenę2_e, ale znajduje się w osobnej scenie ze względu na wymagane sterowanie tabletem.
W przypadku testów ręcznych zmianę sceny można uzyskać, machając dłonią przed aparatem.
Rysunek 7 przedstawia diagram czasowy testu. Czas między wyłączeniem ekranu a zrzutem ekranu jest dostosowywany na podstawie wyników zdarzeń z poprzednich zrzutów.
Rysunek 7. Diagram czasowy dla test_scene_change
Warunki przesunięcia:
- Jeśli nastąpi zmiana sceny i
afSceneChange == 1, test zwróci wartośćPASS. - Jeśli nastąpi zmiana sceny i
afSceneChange == 0, zmiana sceny przesunie się o 5 klatek wcześniej, aby dać więcej czasu na potwierdzenieafSceneChange. - Jeśli nie ma zmiany sceny i
afSceneChange == 1, test zwracaFAIL. - Jeśli nie ma zmiany sceny i
afSceneChange == 0, zmiana sceny przesuwa się o 30 klatek wcześniej, aby uzyskać zmianę sceny podczas nagrywania.
Asserts
- Przełączniki ekranu (sceny).
- Wartość flagi
afSceneChangemieści się w zakresie [0, 1]. - Jeśli nie ma zmiany sceny, 3A zbiega się (funkcjonalnie identyczne z
test_continuous_picture). - Jeśli
afSceneChange == 1, jasność musi się zmieniać w scenie. PASSw ciągu 6 prób, przy czym czas jest dostosowywany na podstawie poprzednich wyników.
scene6/test_zoom
Metoda
Do testowania android.control.zoomRatioRange potrzebna jest nowa scena, ponieważ dotychczasowe sceny albo nie mają wystarczająco małego elementu, który można powiększyć (sceny [1, 2, 4]), albo zawierają wiele obiektów, których nie można łatwo zidentyfikować, co utrudnia wyodrębnianie cech (scena 3).
Ilustracja 8 przedstawia nową scenę z regularną siatką kół. Układ okręgów zmniejsza wymagania dotyczące wyśrodkowania urządzenia/tabeli i umożliwia umieszczenie okręgu zawsze w pobliżu środka zarejestrowanego obrazu. Na tym obrazie tablicę w całości pokrywa siatka 9 x 5 okręgów z czarnym obramowaniem. Jeden z nich jest zastąpiony kwadratem w prawym górnym rogu, aby wskazać orientację. Rozmiary okręgów
mają cechę o powierzchni około 7500 pikseli (radius=50pixels) w przypadku
czujnika 4000 x 3000 pikseli, który rejestruje obraz z polem widzenia (FoV) około 80 stopni.
Rysunek 8. Scena test_zoom
Rysunek 9. Pixel 4 cam[0] zoom = [1, 3.33, 5.67, 8] images with found circle
Ilustracja 9 przedstawia zdjęcia zrobione tylnym aparatem Pixela 4, gdy zoom zwiększa się od 1 do 8x w 4 krokach. Ten zestaw zdjęć został zrobiony bez szczególnej dbałości o wyśrodkowanie, z wyjątkiem użycia otworu testowego telefonu z 2 otworami, aby umożliwić testowanie zarówno przedniego, jak i tylnego aparatu. Odsunięcie od środka jest oczekiwane i widoczne, ponieważ tablet z wykresem znajduje się nieco na lewo od środka. Dodatkowo wykres wydaje się wystarczający do testowania przy powiększeniu większym niż 8-krotne.
Znajdowanie kręgów
Test obejmuje metodę find_circle() wykorzystującą findContours, która znajduje wszystkie kontury i zawęża wyszukiwanie do odpowiednich okręgów, sprawdzając:
- Kontury muszą mieć obszar większy niż 10 pikseli.
- Kontury muszą mieć
NUM_PTS >= 15. - Kontury muszą mieć czarne środki.
- Kontury muszą przypominać okrąg, czyli ich powierzchnia musi być zbliżona do powierzchni konturu pi*r2.
Zakres testu
android.control.zoomRatioRange dzieli się na 10 kroków.
- [1, 7] testuje [1, 1.67, 2.33, 3, 3.67, 4.33, 5, 5.67, 6.33, 7]
Powiększanie zostanie wstrzymane, jeśli znalezione kółko dotknie krawędzi obrazu. Podczas testu sprawdzamy, czy osiągnięto odpowiedni poziom powiększenia (10x).
Asserts
- Przy każdym ustawieniu powiększenia znajduje się co najmniej 1 okrąg.
- Testowane jest 10-krotne powiększenie lub maksymalne powiększenie wynoszące
android.control.zoomRatioRange. - Promień okręgu skaluje się wraz z powiększeniem (RTOL 10% od oczekiwanej wartości).
- Odsunięcie środka okręgu od środka jest skalowane wraz z powiększeniem (RTOL 10% od oczekiwanej wartości).
- Osiągnięto odpowiedni poziom powiększenia (2x).
Zwiększone testowanie kamery w trybie OGRANICZONYM
W Androidzie 11 testy w tej tabeli sprawdzają LIMITED kamery. Oprócz nowych testów test scene4/test_aspect_ratio_and_crop został zaktualizowany, aby umożliwić testowanie LIMITED urządzeń z interfejsem API na poziomie 30 lub wyższym.
| Oświetlenie | Nazwa testu |
|---|---|
| 0 | test_vibration_restrictions |
| 2_a | test_jpeg_quality |
| 2_d/2_e | test_num_faces |
| 4 | test_aspect_ratio_and_crop |
| 6 | test_zoom |
Na rysunku 10 przedstawiono pierścień dekodera ITS w Androidzie 11. Dekoder pokazuje, jakie ustawienia testu są powiązane z poszczególnymi testami. Bramkowanie jest oznaczone kolorami, co ułatwia przeglądanie. Główne elementy blokujące to:
MANUAL_SENSORREAD_3A*wymagaMANUAL SENSORCOMPUTE_TARGET_EXPOSURES*wymagaMANUAL SENSORPER_FRAME_CONTROLRAWSENSORS*REALTIMEMULTI_CAMERA
MANUAL SENSOR, READ_3A, COMPUTE_TARGET_EXPOSURES i PER_FRAME_CONTROL są bramą do większości testów. Dodatkowo testy, które są włączone na LIMITED urządzeniach, są wyróżnione jasnym kolorem zielonym.
Rysunek 10. Pierścień dekodujący tajemnice Androida 11