Android 12 Kamera Görüntü Test Paketi sürüm notları

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'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:

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.pyutils/camera_properties_utils.py
  • pymodules/its/cv2image.pyutils/opencv_processing_utils.py
  • pymodules/its/device.pyutils/its_session_utils.py
  • pymodules/its/error.pyutils/error_util.py
  • pymodules/its/image.pyutils/image_processing_utils.py
  • pymodules/its/objects.pyutils/capture_request_utils.py
  • pymodules/its/target.pyutils/target_exposure_utils.py
  • tools/hw.pyutils/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şına CameraITS_ 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ır test_name_stdout.txt ve test_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.

Kontürlerin ve seçim kriterlerinin kavramsal çizimi

Ş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 &lt; 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.

Android 11 ile özellik algılama arasındaki fark
ve Android 12
sensör füzyon özelliği algılama

Ş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 test SOLID_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
&lt; 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.