บันทึกประจำรุ่นของชุดทดสอบรูปภาพกล้องของ Android 13

การเปิดตัว Android 13 มีการเปลี่ยนแปลงหลายอย่างใน ITS ของกล้อง นอกจาก การเปลี่ยนแปลงทีละน้อย เช่น การอัปเดตเวอร์ชัน Python และแพ็กเกจ รวมถึงการอัปเดต ฮาร์ดแวร์ทดสอบแล้ว Android 13 ยังรองรับการทดสอบวิดีโอด้วย

หน้านี้สรุปการเปลี่ยนแปลงของ Camera ITS สำหรับ Android 13 การเปลี่ยนแปลงจะแบ่งออกเป็น 7 หมวดหมู่กว้างๆ ดังนี้

เวอร์ชัน Python และแพ็กเกจ

Android 13 รองรับ Python เวอร์ชันต่อไปนี้ นอกเหนือจาก Python เวอร์ชันและไลบรารีที่รองรับใน Android 12

การเพิ่มไฟล์การกำหนดค่า

เนื่องจากมีการเพิ่มการควบคุมแสงสว่างสำหรับtest_auto_flash.py การทดสอบ ไฟล์ config.yml จึงต้องมีพารามิเตอร์เพิ่มเติม 2 รายการสำหรับตัวควบคุมและ ช่องแสงสว่าง หากต้องการระบุว่าอุปกรณ์ภายใต้การทดสอบ (DUT) เป็นอุปกรณ์พับได้หรือไม่ ไฟล์ config.yml ต้องมีพารามิเตอร์เพิ่มเติมที่ 3 ซึ่งต้อง เพิ่มลงในทั้งส่วนที่ใช้แท็บเล็ตและส่วนฟิวชันของเซ็นเซอร์

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

ทดสอบการเปลี่ยนแปลง

scene1_1/test_black_white.py

test_black_whiteการทดสอบมีการตรวจสอบความอิ่มตัวของช่อง ที่สอดคล้องกับ Android เวอร์ชันก่อนหน้า ซึ่งหมายความว่าระดับ API แรกที่จำเป็น สำหรับการตรวจสอบความอิ่มตัวของช่องคือ Android 10

scene1_2/test_yuv_plus_raw.py

การทดสอบ test_yuv_plus_raw จะจัดการเซ็นเซอร์ที่ไม่ใช่ 16:9 หรือ 4:3 เพื่อให้รองรับ RAW ได้ดียิ่งขึ้น หากการทดสอบไม่พบรูปแบบที่ใช้ร่วมกัน ระหว่างรูปแบบ RAW ของเซ็นเซอร์กับรูปแบบการจับภาพ YUV การทดสอบจะเปรียบเทียบ การจับภาพ RAW กับการจับภาพ YUV ที่ใหญ่ที่สุดแม้ว่าสัดส่วนภาพจะ แตกต่างกันก็ตาม

scene2_a/test_faces.py

เราได้รีแฟกเตอร์ test_faces เป็น test_num_faces แล้ว

scene2_a/test_num_faces.py

test_num_faces การทดสอบจะจัดการการครอบตัดเซ็นเซอร์และวาง สี่เหลี่ยมผืนผ้าใบหน้าอย่างถูกต้องบนภาพที่ถ่ายด้วยกล้อง UW ซึ่งได้รับการครอบตัด

scene3/test_lens_position.py

เราได้เลิกใช้งานการทดสอบ test_lens_position ใน Android 13 แล้ว

scene6/test_zoom.py

เราได้ปรับโครงสร้างtest_zoomการทดสอบเพื่อให้ทดสอบระบบกล้อง 3 และ 4 ตัวได้ง่ายขึ้น หากการทดสอบกล้องทำงานอย่างถูกต้องในช่วงอัตราส่วน 10 เท่าในการซูม การทดสอบจะสิ้นสุดอย่างถูกต้อง ซึ่งช่วยให้ทดสอบการซูมได้ในระยะชาร์ตเดียว

scene_change/test_scene_change.py

เราได้เลิกใช้งานการทดสอบ test_scene_change ใน Android 13 แล้ว

การทดสอบใหม่บนแท็บเล็ต

Android 13 มีการทดสอบใหม่ 2 รายการสำหรับแท็บเล็ต อุปกรณ์ที่เปิดตัวด้วย Android 13 ต้องผ่านการทดสอบทั้ง 2 รายการ แต่จะข้ามการทดสอบสำหรับอุปกรณ์ที่อัปเกรดเป็น Android 13

ฉาก ชื่อการทดสอบ ระดับ API แรก คำอธิบาย
2_a test_auto_flash 33 ยืนยันว่าฉากมืดจะทริกเกอร์แฟลชอัตโนมัติ
2_b test_yuv_jpg_capture_sameness 33 ยืนยันว่าภาพนิ่ง YUV และ JPEG ยังคงเหมือนกันทุกบิต

scene2_a/test_auto_flash.py

Android 13 เพิ่มtest_auto_flashการทดสอบ

พารามิเตอร์

  • flash: ข้ามการทดสอบหากไม่มี Flash

วิธีการ

การทดสอบจะกําหนดค่าคําขอจับภาพสําหรับแฟลชอัตโนมัติและแสดงฉากที่ต้องใช้เหตุการณ์แฟลช ระบบจะปิดไฟในแท่นทดสอบและแท็บเล็ต เพื่อแสดงฉากมืดสำหรับอัลกอริทึมการเปิดรับแสงอัตโนมัติ การทดสอบ กำหนดค่าลำดับการจับภาพ NUM_FRAMES รายการโดยเปิดใช้แฟลชอัตโนมัติ หากการตั้งค่า AE_STATE แสดงผลเป็น FLASH_REQUIRED การทดสอบจะยืนยันว่ามีการ เปิดแฟลชในการจับภาพ

คุณควบคุมแสงได้ด้วยตนเองเมื่อได้รับแจ้ง หรือควบคุมโดยอัตโนมัติด้วย ตัวควบคุม Arduino ที่มีการควบคุมแสงเพิ่มเข้ามาสำหรับการทดสอบอัตโนมัติ โฟลเดอร์ยูทิลิตีlighting_control_utilsใหม่จะรวมโค้ดสำหรับการควบคุม แสงสว่างในการทดสอบ

scene2_a/test_yuv_jpeg_capture_sameness.py

Android 13 เพิ่มtest_yuv_jpeg_capture_sameness การทดสอบ

พารามิเตอร์

  • streamUseCase: ระบุว่ากล้องรองรับ Use Case ของสตรีมหรือไม่
  • android.jpeg.quality: ตั้งค่าคุณภาพ JPEG เป็น 100

วิธีการ

การทดสอบนี้จะจับภาพ 2 ภาพโดยใช้รูปแบบ YUV และ JPEG ทั่วไปที่ใหญ่ที่สุดซึ่งมี อัตราส่วนเดียวกันกับรูปแบบ JPEG ที่ใหญ่ที่สุดซึ่งมีความละเอียดไม่เกิน 1920x1440 โดยจะตั้งค่าชุดทดสอบ jpeg.quality เป็น 100 และบันทึกคำขอแบบ 2 พื้นผิว จากนั้นจะแปลงรูปภาพทั้ง 2 เป็นอาร์เรย์ RGB และคำนวณความแตกต่างของค่าเฉลี่ยกำลังสอง (RMS) ของรูท 3 มิติระหว่างรูปภาพทั้ง 2 ตั้งค่าความคลาดเคลื่อนของความแตกต่าง เป็น 1%

การทดสอบวิดีโอ

ITS ของกล้องเพิ่มการรองรับการทดสอบวิดีโอใน Android 13

Android 13 เพิ่มการทดสอบต่อไปนี้

ฉาก ชื่อการทดสอบ ระดับ API แรก คำอธิบาย
4 test_preview_stabilization_fov 33 ยืนยันว่าตัวอย่างวิดีโอไม่ได้ครอบตัดมากเกินไปเมื่อเปิดใช้การป้องกันภาพสั่นไหว
4 test_video_aspect_ratio_and_crop 33 ยืนยันรูปแบบวิดีโอ FoV, สัดส่วนภาพ และการครอบตัด
sensor_fusion test_preview_stabilition 33 ยืนยันว่าการป้องกันภาพสั่นไหวในตัวอย่างทำงานได้
sensor_fusion test_video_stabilition 33 ยืนยันว่าการป้องกันภาพวิดีโอสั่นไหวทำงานได้

scene4/test_preview_stabilization_fov.py

Android 13 เพิ่มtest_preview_stabilization_fov การทดสอบ การทดสอบนี้จะตรวจสอบขนาดการแสดงตัวอย่างที่รองรับเพื่อให้แน่ใจว่า FoV ไม่ได้ ครอบตัดอย่างไม่เหมาะสม

วิธีการ

การทดสอบจะบันทึกวิดีโอ 2 รายการ โดยรายการหนึ่งเปิดการป้องกันภาพสั่นไหวในตัวอย่าง และอีกรายการหนึ่งปิด การป้องกันภาพสั่นไหวในตัวอย่าง ระบบจะเลือกเฟรมที่เป็นตัวแทนจากวิดีโอแต่ละรายการ และวิเคราะห์เพื่อให้มั่นใจว่าการเปลี่ยนแปลง FoV ในวิดีโอทั้ง 2 รายการ เป็นไปตามข้อกำหนด

โดยเฉพาะอย่างยิ่ง การทดสอบจะตรวจสอบพารามิเตอร์ต่อไปนี้ทั้งที่มีและไม่มี การป้องกันภาพสั่นไหวในตัวอย่าง

  • ความกลมของวงกลมจะยังคงที่
  • โดยจุดกึ่งกลางของวงกลมจะยังคงที่
  • ขนาดของวงกลมจะเปลี่ยนแปลงไม่เกิน 20% ซึ่งหมายความว่า FoV จะเปลี่ยนแปลง ไม่เกิน 20%

scene4/test_video_aspect_ratio_and_crop.py

Android 13 เพิ่มtest_video_aspect_ratio_and_crop การทดสอบ การทดสอบนี้จะตรวจสอบรูปแบบวิดีโอที่รองรับ เพื่อให้มั่นใจว่าเฟรมวิดีโอจะไม่ยืดหรือครอบตัดอย่างไม่เหมาะสม ซึ่งคล้ายกับtest_aspect_ratio_and_crop การทดสอบภาพนิ่ง ระบบจะทดสอบคุณภาพวิดีโอที่ผู้ใช้รายงานทั้งหมด นอกจากนี้ หากกล้องรองรับวิดีโอ HLG10 ระบบจะทดสอบวิดีโอ 10 บิต

Android 13 เพิ่มเมธอด get_available_video_qualities ไปยัง its_session_utils Android 13 ยังมีฟังก์ชันยูทิลิตีใหม่ 2 รายการ ได้แก่ image_fov_utils และ video_processing_utils เพื่อแชร์โค้ดทั่วไปกับเทสต์ที่มีอยู่

วิธีการ

การทดสอบจะถ่ายภาพอ้างอิงในรูปแบบ RAW หรือรูปแบบ JPEG ที่มีความละเอียดสูงสุด หากไม่รองรับ RAW ระบบจะกำหนดขนาดและตำแหน่งวงกลมจากรูปภาพอ้างอิง จากนั้นจะถ่ายวิดีโอสั้นโดยใช้คุณภาพวิดีโอทั้งหมดที่รองรับ ระบบจะดึงเฟรมอ้างอิงสุดท้ายจาก คุณภาพวิดีโอแต่ละรายการ จากเฟรมอ้างอิง ระบบจะคำนวณมุมมองภาพ (FoV) การจัดกึ่งกลาง (ครอบตัด) และสัดส่วนภาพสำหรับคุณภาพวิดีโอแต่ละระดับ

สำหรับการคำนวณ FoV การทดสอบจะเปรียบเทียบขนาดวงกลมของเฟรมวิดีโอกับ ขนาดวงกลมที่คำนวณจากรูปภาพอ้างอิงและขนาดรูปแบบวิดีโอ สำหรับการตรวจสอบการครอบตัด การทดสอบจะเปรียบเทียบการจัดกึ่งกลางเฟรมวิดีโอกับการจัดกึ่งกลางรูปภาพอ้างอิง สำหรับการตรวจสอบสัดส่วนภาพ การทดสอบจะใช้ฉากที่เป็นวงกลมสีดำขนาดใหญ่บนพื้นหลังสีขาวเพื่อกำหนดสัดส่วนภาพของวงกลมและยืนยันว่าเฟรมไม่บิดเบี้ยว

sensor_fusion/test_preview_stabilization.py

Android 13 เพิ่มtest_preview_stabilization test ซึ่งจะทดสอบคุณภาพการแสดงตัวอย่างที่รองรับทั้งหมดสูงสุด 1920x1080 การทดสอบใช้แท่นทดสอบการรวมเซ็นเซอร์และ ต้องใช้ตัวควบคุมการรวมเซ็นเซอร์เวอร์ชันแก้ไข 2 ใหม่ หรืออัปเกรดเฟิร์มแวร์ของ ตัวควบคุม Arduino เวอร์ชันก่อนหน้า ดูรายละเอียดเพิ่มเติมเกี่ยวกับตัวควบคุมใหม่ได้ที่หัวข้อการอัปเดตและส่วนเสริมของฮาร์ดแวร์

วิธีการ

โทรศัพท์จะเคลื่อนที่ช้าๆ ในมุมประมาณ 15 องศาโดยเปิดใช้การป้องกันภาพสั่นไหวของตัวอย่าง จากนั้นจะเปรียบเทียบการหมุนของรูปภาพกับการ หมุนของไจโรสโคป

sensor_fusion/test_video_stabilization.py

Android 13 เพิ่มการทดสอบ test_video_stabilization ซึ่งจะทดสอบคุณภาพวิดีโอที่รองรับได้สูงสุด 1920x1080 ไม่รวมวิดีโอที่มีความละเอียดต่ำระดับ QCIF การทดสอบใช้แท่นทดสอบการรวมเซ็นเซอร์และ ต้องใช้ตัวควบคุมการรวมเซ็นเซอร์เวอร์ชัน 2 ใหม่หรืออัปเกรดเฟิร์มแวร์ของ ตัวควบคุม Arduino เวอร์ชันก่อนหน้า ดูรายละเอียดเพิ่มเติมเกี่ยวกับตัวควบคุมใหม่ได้ที่หัวข้อการอัปเดตและส่วนเสริมของฮาร์ดแวร์

วิธีการ

แท่นทดสอบจะเลื่อนโทรศัพท์อย่างช้าๆ ในมุมประมาณ 15 องศาโดยเปิดใช้ การป้องกันภาพสั่นไหวของตัวอย่าง จากนั้นจะเปรียบเทียบการหมุนของรูปภาพกับการหมุนของไจโรสโคป

การอัปเดตและเพิ่มฮาร์ดแวร์

Android 13 มีการอัปเกรดตัวควบคุมการรวมเซ็นเซอร์เวอร์ชันที่ 2 ที่ใช้ Arduino การอัปเกรดนี้รวมถึงการเปลี่ยนแปลงทั้งฮาร์ดแวร์และเฟิร์มแวร์ การอัปเกรดจะช่วยให้ คอนโทรลเลอร์ตั้งค่าความเร็วในการหมุนและควบคุมแสงได้ การอัปเกรดยังรวมถึง โล่ใหม่ (แสดงในรูปที่ 1) ซึ่งมีช่องการหมุน 3 ช่องและช่องควบคุมแสง 3 ช่อง

Arduino shield rev2.0

รูปที่ 1 Arduino Shield Rev2.0 พร้อมการควบคุมการหมุนและแสง

นอกจากนี้ สำหรับ Android 13 คุณต้องอัปเดตเฟิร์มแวร์ของ คอนโทรลเลอร์ที่มีอยู่เพื่อเปิดใช้การควบคุมความเร็วในการหมุน คุณดาวน์โหลดเฟิร์มแวร์นี้ได้จาก

ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวควบคุมใหม่ได้ที่ ตัวควบคุมการรวมเซ็นเซอร์ของ Android 13

การสนับสนุนการทดสอบอุปกรณ์พับได้

Android 13 มีการรองรับการทดสอบสำหรับอุปกรณ์ แบบพับได้ หากต้องการเปิดใช้ Multi-Camera API สำหรับอุปกรณ์พับได้ คุณจะต้องมีสถานะโทรศัพท์ (Folded หรือ Unfolded) ในระหว่างการทดสอบ หากต้องการเปิดใช้การสำรวจสถานะโทรศัพท์สำหรับ DUT ทั้งหมด รวมถึงโทรศัพท์แบบไม่พับ ได้ ให้เรียกใช้คำสั่ง adb ต่อไปนี้หลังจากเชื่อมต่อ DUT กับโฮสต์แล้ว

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