Bazı Kamera ITS değişiklikleri, kullanıma sunulan Android 12 sürümündedir. Bu sayfa , dört genel kategoriye ayrılan değişiklikleri özetler:
- Python 3 için yeniden düzenleme
- Mobil test çerçevesinin benimsenmesi
- Değişiklikleri test etme
- Yeni testler
Python 3'e yeniden düzenleyin
Ocak 2020'de Python 2.7'nin kullanımdan kaldırılması nedeniyle, kod tabanı Python 3 olarak yeniden düzenlendi. Aşağıdaki Python sürümleri ve kitaplıklar gerekir:
- Python 3.7.9 veya Python 3.7.10
- OpenCV 3.4.2
- Numpy 1.19.2
- Matplotlib 3.3.2
- Scipy 1.5.2
- pySerial 3.5
- Yastık 8.1.0
- PyYAML 5.3.1
Ana test başlatıcı (tools/run_all_tests.py
), sürümlerle aynı kalır
Android 11 veya daha eski sürümler ve Python 3 olarak yeniden düzenlendi.
Tüm bağımsız testler yeniden düzenlenir ve şurada tanımlanan yeni test kurulumu sınıfını kullanır:
tests/its_base_test.py
Çoğu testin adı ve işlevi aynı kalacaktır.
Android 12'de artık tüm bağımsız testler kendi
sahneler. Her test için sahne yüklenirken
genel test süresini artırır, tek tek testlerde hata ayıklamaya olanak tanır.
Bağımsız test değişiklikleri hakkında daha fazla bilgi için Değişiklikleri test etme konusuna bakın.
Aşağıdaki Python modülleri, ad değişikliğiyle yeniden düzenlendi:
pymodules/its/caps.py
→utils/camera_properties_utils.py
pymodules/its/cv2image.py
→utils/opencv_processing_utils.py
pymodules/its/device.py
→utils/its_session_utils.py
pymodules/its/error.py
→utils/error_util.py
pymodules/its/image.py
→utils/image_processing_utils.py
pymodules/its/objects.py
→utils/capture_request_utils.py
pymodules/its/target.py
→utils/target_exposure_utils.py
tools/hw.py
→utils/sensor_fusion_utils.py
Mobil test çerçevesinin benimsenmesi
Mobly, Python tabanlı bir testtir özel parametreli birden fazla cihaz gerektiren test durumlarını destekleyen çerçeve donanım kurulumları hakkında daha fazla bilgi edinin. Kamera ITS'si, aşağıdakileri sağlamak için Mobly test altyapısını kullanır. ve günlüğe kaydetme olanağı sunuluyor.
Kamera ITS'si, kontrol ve çalışma kalitesini artırmak için Mobly test altyapısını testlerin günlüğe kaydedilmesi. Mobly, testi destekleyen Python tabanlı bir test çerçevesidir özel donanım kurulumuna sahip birden fazla cihaz gerektiren kılıflar. Daha fazla için google/mobly adresine bakın.
config.yml dosyaları
Mobly çerçevesi ile test edilen cihaz (DUT) ve grafik ayarlayabilirsiniz
its_base_test
sınıfında. config.yml
(YAML) dosyası,
mobil test platformu oluşturmamız gerekir. Bu yapılandırmada birden fazla test yatağı yapılandırılabilir
oluşturabilirsiniz. Her test yatak odasında
denetleyici bölümünde, device_ids
belirtebilirsiniz.
uygun Android cihazları test etmek üzere
uygulamaya sokmak. Ayrıca
cihaz kimlikleri, tablet brightness
, chart_distance
gibi diğer parametreler
debug_mode
, camera_id
ve scene_id
test sınıfında geçti. Genel
test parametresi değerleri şunlardır:
brightness: 192 (all tablets except Pixel C)
chart_distance: 31.0 (rev1/rev1a box for FoV < 90° cameras)
chart_distance: 22.0 (rev2 test rig for FoV > 90° cameras)
Tablet tabanlı test
Tablet tabanlı testlerde, test ortamında TABLET
anahtar kelimesi bulunmalıdır
dokunun. Mobly test çalıştırıcı, başlatma sırasında TestParams
uygulamasını başlatır.
ve bunları bağımsız testlere geçirir.
Aşağıda, tablet tabanlı çalıştırmalar için örnek bir config.yml
dosyası verilmiştir.
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"
chart_loc_arg: ""
camera: 0
scene: <scene-name> # if <scene-name> runs all scenes
Test platformu tools/run_all_tests.py
kullanılarak çağrılabilir. Komut satırı yoksa
değerleri varsa testler config.yml
dosya değerleriyle yürütülür.
Ayrıca, camera
ve scene
yapılandırma dosyası değerlerini şuradan geçersiz kılabilirsiniz:
komut satırını kullanarak Android 11'e benzer komutlar kullanabilir
veya daha düşük olmasını sağlayın.
Örnek:
python tools/run_all_tests.py
python tools/run_all_tests.py camera=1
python tools/run_all_tests.py scenes=2,1,0
python tools/run_all_tests.py camera=1 scenes=2,1,0
Sensör füzyon testi
Sensör füzyon testi için
test platformu adı, anahtar kelimeyi içermelidir
SENSOR_FUSION
. Doğru test yatağı
sahne test edildi. Android 12 hem Arduino'yu destekler
ve Canakit
sensör füzyonu için kontrol cihazları.
Aşağıda, sensör füzyon çalıştırmaları için örnek bir config.yml
dosyası verilmiştir.
Testbeds
- Name: TEST_BED_SENSOR_FUSION
# Test configuration for sensor_fusion/test_sensor_fusion.py
Controllers:
AndroidDevice:
- serial: 8A9X0NS5Z
label: dut
TestParams:
fps: 30
img_size: 640,480
test_length: 7
debug_mode: "False"
chart_distance: 25
rotator_cntl: arduino # cntl can be arduino or canakit
rotator_ch: 1
camera: 0
sensör füzyon test mekanizması kullanın:
python tools/run_all_tests.py scenes=sensor_fusion
python tools/run_all_tests.py scenes=sensor_fusion camera=0
Birden fazla test yatağı
Yapılandırma dosyasına birden fazla test yatağı eklenebilir. En yaygın hem bir tablet test platformu hem de sensör füzyon test platformu olması.
Aşağıda hem tablet hem de sensör füzyonu içeren örnek bir config.yml
dosyası verilmiştir
test yatakları.
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"
chart_loc_arg: ""
camera: 0
scene: <scene-name> # if <scene-name> runs all scenes
- Name: TEST_BED_SENSOR_FUSION
# Test configuration for sensor_fusion/test_sensor_fusion.py
Controllers:
AndroidDevice:
- serial: 8A9X0NS5Z
label: dut
TestParams:
fps: 30
img_size: 640,480
test_length: 7
debug_mode: "False"
chart_distance: 25
rotator_cntl: arduino # cntl can be arduino or canakit
rotator_ch: 1
camera: 0
Manuel test
Manuel test, Android 12'de desteklenmeye devam etmektedir.
Ancak test yatağının,
bu şekilde test ortamındaki MANUAL
anahtar kelimesiyle test edilir. Ayrıca,
testbed, tablet kimliği içeremez.
Aşağıda, manuel test için örnek bir config.yml
dosyası verilmiştir.
TestBeds:
- Name: TEST_BED_MANUAL
Controllers:
AndroidDevice:
- serial: 8A9X0NS5Z
label: dut
TestParams:
debug_mode: "False"
chart_distance: 31.0
camera: 0
scene: scene1
Sahneleri tablet olmadan test edin
Sahne 0 ve sahne 5 için test yapmak üzere TEST_BED_TABLET_SCENES
veya
TEST_BED_MANUAL
ile. Ancak test,
TEST_BED_TABLET_SCENES
, tablet bağlı ve tabletin seri kimliği olmalıdır
test sınıfı kurulumu olduğundan tablet kullanılmasa da geçerli olmalıdır
tabletin seri kimliği değerini atar.
Bağımsız testler çalıştırma
Bağımsız testler, test sonuçları farklı olduğundan yalnızca hata ayıklama amacıyla çalıştırılabilir
CTS Doğrulayıcı'ya bildirilmiştir. Çünkü
camera
ve için komut satırında config.yml
dosyanın üzerine yazılamaz
scene
, bu parametreler config.yml
dosyasında doğru olmalıdır
söz konusu olabilir. Ayrıca, test yapılan birden fazla test sitesi varsa
yapılandırma dosyasını
test ortamını --test_bed
işaretiyle belirtir. Örnek:
python tests/scene1_1/test_black_white.py --config config.yml --test_bed TEST_BED_TABLET_SCENES
Yapıları test et
Android 12'de Kamera BTS'si için test yapıları Android 11 veya önceki sürümlere benzer ancak aşağıdaki değişiklikler:
/tmp
test yapısının başınaCameraITS_
eklendi Anlaşılırlık için 8 karakterden oluşan rastgele dize.- Test çıkışı ve hataları her test için bunun yerine
test_log.DEBUG
içinde depolanırtest_name_stdout.txt
vetest_name_stderr.txt
. - Her bir teste ait DUT ve tablet logcat'leri depolanır
/tmp/CameraITS_########
dizini basitleştiriyor hata ayıklamak için kullanır.
Değişiklikleri test et
Android 12'de tablet sahneleri PNG dosyaları oluşturun. PNG dosyalarının kullanılması, daha fazla tablet modelinin şunları yapmasına olanak tanır: sahneleri düzgün bir şekilde görüntülemelidir.
sahne0/test_jitter.py
test_jitter
testi fiziksel makinede çalıştırılır
Android 12'deki gizli kameralar.
sahne1_1/test_siyah_beyaz.py
test_black_white
, Android 12 için
hem test_black_white
hem de
test_channel_saturation
.
Aşağıdaki tabloda, Android'deki iki ayrı test açıklanmaktadır. 11.
Test adı | Birinci API düzeyi | İddialar |
---|---|---|
sahne1_1/test_siyah_beyaz.py | TÜMÜ | Kısa pozlama, düşük kazançlı RGB değerleri ~[0, 0, 0] Uzun pozlama, yüksek kazançlı RGB değerleri ~[255, 255, 255] |
sahne1_1/test_kanal_saturation.py | 29 | Renk tonunu ortadan kaldırmak için [255, 255, 255] farklılıklarda tolerans azaltıldı beyaz resimler kullanır. |
Aşağıdaki tabloda, birleştirilen test 1_1/test_dark_white.py, kullanıma sunduk.
Test adı | Birinci API düzeyi | İddialar |
---|---|---|
sahne1_1/test_siyah_beyaz.py | TÜMÜ | Kısa pozlama, düşük kazançlı RGB değerleri ~[0, 0, 0] Uzun pozlama, yüksek kazançlı RGB değerleri [255, 255, 255] ve daha düşük renk toleransını ortadan kaldırmak için değerler arasındaki toleransı kullanır. |
sahne1_1/test_burst_sameness_manual.py
test_burst_sameness_manual
testi fiziksel makinede çalıştırılır
Android 12'deki gizli kameralar.
sahne1_2/test_tonemap_sequence.py
test_tonemap_sequence
testi, Android'deki LIMITED kamerada çalıştırılır
12.
sahne1_2/test_yuv_plus_raw.py
test_yuv_plus_raw
testi fiziksel makinede çalıştırılır
Android 12'deki gizli kameralar.
sahne2_a/test_format_combos.py
test_format_combos
testi, Android'deki LIMITED kamerada çalıştırılır
12.
sahne3/test_flip_mirror.py
test_flip_mirror
testi, Android'deki LIMITED kamerada çalıştırılır
12.
sahne4/test_aspect_oranı_ve_crop.py
scene4/test_aspect_ratio_and_crop.py
içinde çevre bulma ayarı yeniden düzenlendi:
Android 12.
Daha önceki Android sürümleri, çocukların konturlarını bulmayı içeren bir yöntem kullanıyordu. (kare) içindeki boyutlar ve boyutlar için filtrelerle birlikte rengi. Android 12'de, kullanıcıların mobil cihazda hariç tutarak, en çok dikkat çeken özellikleri bularak Circlesh ile değiştirin. Ekrandaki sahte çevreleri hariç tutmak için minimum kontur alanı gerekli olmalı ve dairenin dış çizgisi siyah olmalıdır.
Sınırlar ve seçim ölçütleri aşağıdaki resimde gösterilmiştir.
Şekil 1. Kontürlerin ve seçim kriterlerinin kavramsal çizimi
Android 12 yöntemi daha basittir ve çözüm üretmeye çalışır bazı ekran tabletlerinde sınırlayıcı kutu kırpmayla ilgili sorun. Tümü çevre adaylar hata ayıklama amacıyla günlüğe kaydedilir.
Android 12'de kırpma testi FULL
ve LEVEL3
için çalıştırılır.
cihazlar. Android 11 veya önceki sürümlerde kırpma işlemi atlanır
FULL
cihaz için onayları test edin.
Aşağıdaki tabloda
Belirli bir cihaz düzeyine karşılık gelen test_aspect_ratio_and_crop.py
ve
birinci API düzeyi.
Cihaz düzeyi | Birinci API düzeyi | İddialar |
---|---|---|
SINIRLI | TÜMÜ | En boy oranı 4:3, 16:9, 2:1 biçimleri için FoV |
TAM | < 31 | En boy oranı 4:3, 16:9, 2:1 biçimleri için FoV |
TAM | ≥ 31 | Kırp En boy oranı 4:3, 16:9, 2:1 biçimleri için FoV |
3. SEVİYE | TÜMÜ | Kırp En boy oranı 4:3, 16:9, 2:1 biçimleri için FoV |
sahne4/test_multi_camera_alignment.py
YUV yakalamaları için undo_zoom()
yöntemi
scene4/test_multi_camera_alignment.py
, daha fazla hesabı kapsayacak şekilde yeniden düzenlendi
yakalamanın en boy oranıyla eşleşmeyen sensörlerde kırpma için doğru
Android 11 Python 2 kodu
zoom_ratio = min(1.0 * yuv_w / cr_w, 1.0 * yuv_h / cr_h)
circle[i]['x'] = cr['left'] + circle[i]['x'] / zoom_ratio
circle[i]['y'] = cr['top'] + circle[i]['y'] / zoom_ratio
circle[i]['r'] = circle[i]['r'] / zoom_ratio
Android 12 Python 3 kodu
yuv_aspect = yuv_w / yuv_h
relative_aspect = yuv_aspect / (cr_w/cr_h)
if relative_aspect > 1:
zoom_ratio = yuv_w / cr_w
yuv_x = 0
yuv_y = (cr_h - cr_w / yuv_aspect) / 2
else:
zoom_ratio = yuv_h / cr_h
yuv_x = (cr_w - cr_h * yuv_aspect) / 2
yuv_y = 0
circle['x'] = cr['left'] + yuv_x + circle['x'] / zoom_ratio
circle['y'] = cr['top'] + yuv_y + circle['y'] / zoom_ratio
circle['r'] = circle['r'] / zoom_ratio
sensör_fusion/test_sensor_fusion.py
Android 12'de, Android 12'deki özellikleri algılama yöntemi sensör füzyon testi için resim eklenir.
Şundan daha düşük sürümlerde: Android 12, Arama sonuçları sayfasındaki en iyi 240 özellik daha sonra önlenmesi için% 20 oranında merkeze maskelenir. en az 30 özellik olmak üzere sarmal deklanşör efektleri.
Bu yöntemin bulduğu özellikler yetersizse Android 12 önce ortadaki% 20'lik bir alana alınır ve maksimum özellikleri iki katına çıkmasıdır.
Aşağıdaki resimde Android 11 arasındaki fark gösterilmektedir ve Android 12 özellik algılama. Minimum değeri yükseltme özellik gereksinimi eşiği, düşük kaliteli özelliklerin algılanmasına neden olur ve ölçümleri olumsuz yönde etkiler.
Şekil 2. Android arasındaki özellik algılama farkı 11 ve Android 12
Yeni testler
sahne0/test_solid_renk_test_modeli.py
Android için yeni bir test (test_solid_color_test_pattern
) etkinleştirildi
12. Bu test tüm kameralar için etkindir ve
aşağıdaki tabloda açıklanmıştır.
Sahne | Test adı | Birinci API düzeyi | Açıklama |
---|---|---|---|
0 | test_katı_renk_test_modeli | 31 | Düz renkli resim çıkışının ve resim renginin programlanabilirliğini onaylar. |
Kamera gizlilik modunu desteklemek için düz renk testi desenleri etkinleştirilmelidir.
test_solid_color_test_pattern
testi, düz renkli YUV görüntü çıkışını onaylar
desenin tanımladığı renkle ve resim rengi değiştiğinde
teknik özelliklerine göre.
Parametreler
cameraPrivacyModeSupport
: Kameranın destekleyip desteklemediğini belirler. gizlilik moduna geçer.android.sensor.testPatternMode
: Test deseni modunu ayarlar. Bu testSOLID_COLOR
kullanıyor.android.sensor.testPatternData
: R, Gr, Gb, G testi model değerlerini ayarlar test deseni modu için de kullanılabilir.
Düz renk testi deseninin açıklaması için bkz.
SENSOR_TEST_PATTERN_MODE_SOLID_COLOR
.
Yöntem
YUV kareleri, ayarlanan parametreler ve görüntü içeriği için yakalanır
emin olun. Test deseni, doğrudan görüntü sensöründen alınır.
belirli bir sahne gerekmez. PER_FRAME_CONTROL
ise
desteklendiğinde, test edilen her ayar için tek bir YUV çerçevesi yakalanır. Eğer
PER_FRAME_CONTROL
desteklenmiyor. Dört kare yalnızca
LIMITED
kamerada test kapsamını en üst düzeye çıkarmak için analiz edilen son kare.
YUV yakalamaları tamamen doymuş BLACK
, WHITE
, RED
, GREEN
ve
BLUE
test kalıbı. Sensör Bayer'e göre test deseni tanımı
renk kanalları, şu tablodaki gibi her renk için ayarlanmalıdır:
aşağıdaki tabloda bulabilirsiniz.
Renk | testPatternData (RGGB) |
---|---|
SİYAH |
(0, 0, 0, 0)
|
BEYAZ |
(1, 1, 1, 1)
|
Telsiz Ekipmanları Yönetmeliği |
(1, 0, 0, 0)
|
YEŞİL |
(0, 1, 1, 0)
|
MAVİ |
(0, 0, 0, 1)
|
Onay tablosu
Aşağıdaki tabloda,
test_solid_color_test_pattern.py
Kamera Birinci API düzeyi |
Kamera türü | Renkler iddia edildi |
---|---|---|
31 | Bayer Dili | SİYAH, BEYAZ, KIRMIZI, YEŞİL, MAVİ |
31 | TEK TEK | SİYAH, BEYAZ |
< 31 | Bayer/MONO | SİYAH |
Performans sınıfı testleri
sahne2_c/test_kamera_lansmanı_perf_class.py
Kamera başlatma işleminin, hem ön hem de arka birincil kameralarda 500 ms'den az olduğunu doğrular sahne2_c yüz sahnesiyle başlar.
sahne2_c/test_jpeg_capture_perf_class.py
1.080p JPEG yakalama gecikmesinin her iki ön kamera için de 1 saniyeden az olduğunu doğrular ve arka birincil kameraları kullanarak sahne2_c yüz sahnesini seçin.