การทดสอบกล้อง ITS

หน้านี้มีรายการการทดสอบที่ครอบคลุมภายใต้ Camera Image Test Suite (ITS) ซึ่งเป็นส่วนหนึ่งของ Android Compatibility Test Suite (CTS) Verifier การทดสอบ ITS เป็นการทดสอบการทำงาน หมายความว่าไม่ได้วัดคุณภาพของภาพ แต่ฟังก์ชันกล้องที่โฆษณาทั้งหมดทำงานได้ตามที่คาดไว้ เอกสารนี้ช่วยให้นักพัฒนาและผู้ทดสอบเข้าใจถึงสิ่งที่การทดสอบแต่ละรายการทำ และวิธีแก้ไขจุดบกพร่องของการทดสอบที่ล้มเหลว

การทดสอบแบ่งตามฉากดังนี้:

  • ฉาก 0 : จับภาพข้อมูลเมตา, กระวนกระวายใจ, ไจโรสโคป, การสั่นสะเทือน
  • ฉาก ที่ 1 : การเปิดรับแสง ความไว การชดเชย EV YUV เทียบกับ JPEG/RAW
  • ฉากที่ 2 : การตรวจจับใบหน้า
  • ฉากที่ 3 : การปรับปรุงขอบ การเคลื่อนของเลนส์
  • ฉากที่ 4 : อัตราส่วนภาพ การครอบตัด ขอบเขตการมองเห็น
  • ฉากที่ 5 : การ แรเงาของเลนส์
  • ฉากที่ 6 : ซูม
  • sensor_fusion : ออฟเซ็ตเวลาของกล้อง/ไจโรสโคป

ดูแต่ละส่วนสำหรับคำอธิบายของแต่ละฉาก

ฉาก0

การทดสอบ Scene0 ไม่ต้องการข้อมูลฉากที่เฉพาะเจาะจง อย่างไรก็ตาม โทรศัพท์ต้องอยู่กับที่สำหรับการทดสอบไจโรสโคปและการสั่นสะเทือน

test_burst_capture

ตรวจสอบว่าไปป์ไลน์การจับภาพทั้งหมดสามารถรักษาความเร็วของการจับภาพขนาดเต็มและเวลาของ CPU

API ที่ทดสอบ:

ผ่าน: จับภาพขนาดเต็มเป็นชุดและกล้องเร็วพอที่จะหลีกเลี่ยงหมดเวลา

test_capture_result_dump

ทดสอบว่าผลลัพธ์การจับภาพถูกส่งกลับจากการจับภาพแบบแมนนวลแล้วดัมพ์

API ที่ทดสอบ:

ผ่าน: เสร็จสิ้นการจับภาพและทิ้งผลการจับภาพ

test_gyro_bias

ทดสอบว่าไจโรมีเอาต์พุตที่เสถียรหรือไม่เมื่ออุปกรณ์อยู่กับที่ ข้อมูลถูกลงจุดเป็นจุดข้อมูลเฉลี่ย 20 จุด

API ที่ทดสอบ:

ผ่าน: เดลต้าของการอ่านไจโรมีค่าน้อยกว่า 0.01 เมื่อเวลาผ่านไป

test_gyro_bias_plot.png

test_gyro_bias_plot.png

test_jitter

วัดความกระวนกระวายใจในการประทับเวลาของกล้อง

API ที่ทดสอบ:

ผ่าน: มีเดลต้าอย่างน้อย 30 มิลลิวินาทีระหว่างเฟรม

test_jitter_plot.png

test_jitter_plot.png (สังเกตช่วงแกน y ที่มีขนาดเล็ก อันที่จริงแล้ว Jitter มีขนาดเล็กในพล็อตนี้)

test_metadata

ทดสอบความถูกต้องของรายการข้อมูลเมตา ดูผลการจับภาพและลักษณะเฉพาะของวัตถุในกล้อง การทดสอบนี้ใช้ auto_capture_request Exposure และรับค่า เนื่องจากเนื้อหารูปภาพไม่สำคัญ

API ที่ทดสอบ:

ผ่าน: ระดับฮาร์ดแวร์, rollingShutterSkew , แท็ก frameDuration , timestampSource , croppingType , blackLevelPattern , pixel_pitch , FOV, ระยะไฮเปอร์โฟกัสมีอยู่และมีค่าที่ถูกต้อง

test_param_sensitivity_burst

ทดสอบว่าใช้พารามิเตอร์ android.sensor.sensitivity อย่างถูกต้องในการถ่ายภาพต่อเนื่อง ตรวจสอบข้อมูลเมตาของเอาต์พุตเท่านั้น

API ที่ทดสอบ:

ผ่าน: ข้อมูลเอาต์พุตมีความทนทานต่อข้อผิดพลาดน้อยกว่า 0.2%

ทดสอบ_อ่าน_เขียน

ทดสอบว่าอุปกรณ์เขียนการเปิดรับแสงที่ถูกต้องและรับค่าโดยการอ่านข้อมูลเมตาของการจับภาพ

API ที่ทดสอบ:

ผ่าน: ค่าอ่านและเขียนตรงกันในทุกช็อต

test_sensor_events

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

API ที่ทดสอบ:

ผ่าน: ได้รับเหตุการณ์สำหรับแต่ละเซ็นเซอร์

test_solid_color_test_pattern

ทดสอบว่ารูปแบบการทดสอบสีทึบถูกสร้างขึ้นอย่างเหมาะสมสำหรับการปิดเสียงกล้อง หากรองรับการปิดเสียงกล้อง จะต้องรองรับรูปแบบการทดสอบสีทึบ หากไม่รองรับการปิดเสียงกล้อง รูปแบบการทดสอบสีทึบจะถูกทดสอบเฉพาะเมื่อมีการโฆษณาความสามารถ

หากรองรับภาพ RAW การกำหนดสีจะได้รับการทดสอบด้วย สีที่ทดสอบคือ ดำ ขาว แดง น้ำเงิน และเขียว สำหรับกล้องที่ไม่รองรับภาพ RAW จะมีการทดสอบเฉพาะสีดำเท่านั้น

API ที่ทดสอบ:

ผ่าน: รูปแบบการทดสอบทึบที่รองรับคือสีที่ถูกต้องและมีความแปรปรวนต่ำในภาพ

test_test_pattern

ทดสอบพารามิเตอร์ android.sensor.testPatternMode เพื่อจับเฟรมสำหรับรูปแบบการทดสอบที่ถูกต้องแต่ละรูปแบบ และตรวจสอบว่าเฟรมสร้างอย่างถูกต้องสำหรับสีทึบและแถบสี การทดสอบนี้ประกอบด้วยขั้นตอนต่อไปนี้:

  1. จับภาพสำหรับรูปแบบการทดสอบที่รองรับทั้งหมด
  2. ทำการตรวจสอบความถูกต้องอย่างง่ายสำหรับรูปแบบการทดสอบสีทึบและแถบสี

API ที่ทดสอบ:

ผ่าน: รูปแบบการทดสอบที่รองรับถูกสร้างขึ้นอย่างถูกต้อง

test_test_patterns_2

test_test_patterns_2.jpg

test_tonemap_curve

ทดสอบการแปลงรูปแบบการทดสอบจาก RAW เป็น YUV ด้วยโทนแมปเชิงเส้น การทดสอบนี้ต้องใช้ android.sensor.testPatternMode = 2 (COLOR_BARS) เพื่อสร้างรูปแบบภาพที่สมบูรณ์แบบสำหรับการแปลงโทนแมป ตรวจสอบให้แน่ใจว่าไปป์ไลน์มีเอาต์พุตสีที่เหมาะสมด้วยโทนแมปเชิงเส้นและการป้อนรูปภาพในอุดมคติ (อาศัย test_test_patterns )

API ที่ทดสอบ:

ผ่าน: YUV และ RAW ดูคล้ายกัน

test_tonemap_curve_raw_2

test_tonemap_curve_raw_2.jpg

test_tonemap_curve_yuv_2.jpg

test_tonemap_curve_yuv_2.jpg

test_unified_timestamp

ทดสอบว่าเหตุการณ์เซ็นเซอร์ภาพและการเคลื่อนไหวอยู่ในโดเมนเวลาเดียวกันหรือไม่

API ที่ทดสอบ:

ผ่าน: การประทับเวลาการเคลื่อนไหวอยู่ระหว่างการประทับเวลาของภาพสองภาพ

test_vibration_restriction

ทดสอบว่าการสั่นสะเทือนของอุปกรณ์ทำงานได้ตามปกติหรือไม่

API ที่ทดสอบ:

ผ่าน: อุปกรณ์ไม่สั่นเมื่อปิดเสียงโดย API การจำกัดเสียงของกล้อง

ฉากที่ 1

ฉากที่ 1 เป็นแผนภูมิสีเทา แผนภูมิสีเทาต้องครอบคลุมพื้นที่ตรงกลาง 30% ของขอบเขตการมองเห็นของกล้อง แผนภูมิสีเทาคาดว่าจะท้าทาย 3A (การเปิดรับแสงอัตโนมัติ ไวต์บาลานซ์อัตโนมัติ โฟกัสอัตโนมัติ) ในระดับปานกลางเนื่องจากพื้นที่ตรงกลางไม่มีคุณสมบัติ อย่างไรก็ตาม คำขอจับภาพจะระบุฉากทั้งหมดซึ่งมีคุณสมบัติเพียงพอสำหรับ 3A ในการรวมเข้าด้วยกัน

สามารถทดสอบกล้อง RFoV ได้ใน WFoV หรือแท่นทดสอบ RFoV หากมีการทดสอบกล้อง RFoV ในแท่นทดสอบ WFoV แผนภูมิจะถูกปรับขนาดเป็น ⅔ เพื่อให้แน่ใจว่ามีขอบเขตสำหรับแผนภูมิสีเทาใน FoV เพื่อช่วยให้ 3A มาบรรจบกัน

ฉากที่ 1

ฉากที่ 1: แผนภูมิขนาดเต็ม (ซ้าย) ⅔ แผนภูมิมาตราส่วน (ขวา)

test_3a

ทดสอบการบรรจบกันของ 3A กับเป้าหมายที่ท้าทายปานกลาง

API ที่ทดสอบ:

ผ่าน: 3A บรรจบกันและค่า 3A ที่ส่งคืนนั้นถูกต้อง

test_ae_af

ทดสอบอัลกอริธึมการเปิดรับแสงอัตโนมัติ 3A (AE) และโฟกัสอัตโนมัติ (AF) แยกจากกัน

API ที่ทดสอบ:

ผ่าน: 3A บรรจบกันและค่า 3A ที่ส่งคืนนั้นถูกต้องตามกฎหมาย

test_ae_precapture_trigger

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

API ที่ทดสอบ:

ผ่าน: AE มาบรรจบกัน

test_auto_vs_manual

การทดสอบที่ถ่ายแบบอัตโนมัติและแบบแมนนวลมีลักษณะเหมือนกัน

API ที่ทดสอบ:

ผ่าน: การเพิ่มและการเปลี่ยนแปลงของไวต์บาลานซ์แบบแมนนวลที่รายงานในผลการจับภาพแต่ละครั้งจะตรงกับการ estimate ไวต์บาลานซ์อัตโนมัติจากอัลกอริทึม 3A ของกล้อง

test_auto_vs_manual_auto

test_auto_vs_manual_auto.jpg

test_auto_vs_manual_wb

test_auto_vs_manual_wb.jpg

test_auto_vs_manual_manual_wb_tm

test_auto_vs_manual_manual_wb_tm.jpg

ทดสอบ_black_white

ทดสอบว่าอุปกรณ์สร้างภาพขาวดำแบบเต็ม ถ่ายภาพสองครั้ง ภาพแรกมีอัตราขยายต่ำมากและเปิดรับแสงสั้น ซึ่งส่งผลให้ภาพถ่ายมีสีดำ และภาพที่สองมีอัตราขยายสูงมากและเปิดรับแสงนาน ซึ่งส่งผลให้ภาพถ่ายมีสีขาว

API ที่ทดสอบ:

ผ่าน: สร้างภาพขาวดำ ช่องอิ่มตัวของภาพสีขาวมีค่า RGB เป็น [255, 255, 255] โดยมีค่าความคลาดเคลื่อนน้อยกว่า 1%

ทดสอบ_black_white_blackทดสอบ_black_white_black
test_black_white_black.jpg test_black_white_white.jpg

test_black_white_plot_means

test_black_white_plot_means.png

test_burst_sameness_manual

ถ่ายภาพต่อเนื่อง 5 ภาพ 50 ภาพด้วยการตั้งค่าการจับภาพแบบแมนนวล และตรวจสอบว่าเหมือนกันทั้งหมด การทดสอบนี้สามารถใช้เพื่อระบุว่ามีเฟรมเป็นระยะๆ ที่มีการประมวลผลแตกต่างกันหรือมีข้อผิดพลาดหรือไม่

API ที่ทดสอบ:

ผ่าน: รูปภาพจะเหมือนกันทั้งทางสายตาและค่า RGB

ล้มเหลว: แสดงแผนภูมิค่าเฉลี่ย RGB ที่พุ่งขึ้นหรือลดลงที่จุดเริ่มต้นของการระเบิดแต่ละครั้ง

  • ความอดทนคือ 3% สำหรับ first_API_level < 30
  • ความคลาดเคลื่อนคือ 2% สำหรับ first_API_level >= 30

test_burst_sameness_manual_mean

test_burst_sameness_manual_mean.jpg

test_burst_sameness_manual_plot_means

test_burst_sameness_manual_plot_means.png

test_capture_result

ทดสอบว่าข้อมูลที่ถูกต้องกลับมาในวัตถุ CaptureResult ถ่ายภาพอัตโนมัติ แมนนวล และอัตโนมัติ

API ที่ทดสอบ:

ผ่าน: ข้อมูลเมตาถูกต้องสำหรับการจับภาพทั้งหมดและการตั้งค่าด้วยตนเองจะไม่รั่วไหลในการจับภาพอัตโนมัติครั้งที่สอง วางแผนการแก้ไขการแรเงาของเลนส์สำหรับการจับภาพ

test_capture_result_plot_lsc_auto_ch0

test_capture_result_plot_lsc_auto_ch0.png

test_crop_region_raw

ทดสอบว่าสตรีม RAW ไม่สามารถครอบตัดได้

API ที่ทดสอบ:

ผ่าน: ภาพ YUV ได้รับการครอบตัดตรงกลาง แต่ไม่ใช่ภาพ RAW

test_crop_region_raw_comp_raw_crop

test_crop_region_raw_comp_raw_crop.jpg

test_crop_region_raw_comp_raw_full

test_crop_region_raw_comp_raw_full.jpg

test_crop_region_raw_comp_yuv_crop

test_crop_region_raw_comp_yuv_crop.jpg

test_crop_region_raw_yuv_full

test_crop_region_raw_yuv_full.jpg

test_crop_regions

ทดสอบว่าพื้นที่ครอบตัดทำงาน ถ่ายภาพเต็มและสร้างแพทช์ของ 5 ขอบเขตที่แตกต่างกัน (มุมและตรงกลาง) ถ่ายภาพด้วยการตั้งค่าการครอบตัดสำหรับ 5 ขอบเขต เปรียบเทียบแพทช์และค่าภาพครอบตัด

API ที่ทดสอบ:

ผ่าน: รูปภาพของพื้นที่ครอบตัดตรงกับแพทช์ที่สอดคล้องกับรูปภาพครอบตัด

test_dng_noise_model

ตรวจสอบว่าพารามิเตอร์โมเดล RAW ของ DNG ถูกต้อง โครงเรื่องแสดงค่าความแปรปรวนที่วัดได้ของแพตช์ตรงกลางของเกรย์การ์ดในช็อตดิบที่บันทึกในช่วงความไวแสงต่างๆ และเปรียบเทียบค่าเหล่านี้กับความแปรปรวนที่คาดไว้ในแต่ละความไวโดยโมเดลสัญญาณรบกวน DNG ในกล้อง HAL (อ้างอิงจาก พารามิเตอร์ O,S ที่ส่งกลับในวัตถุผลลัพธ์การจับภาพ) สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับโมเดลเสียงรบกวน DNG ให้ดาวน์โหลดเอกสารเกี่ยวกับ โมเดลเสียงรบกวน DNG ต่อไปนี้

API ที่ทดสอบ:

ผ่าน: พารามิเตอร์โมเดลดิบ DNG ถูกต้อง ค่า RGB ที่คาดหวังจะตรงกับค่า RGB จริงที่วัดได้

test_dng_noise_model_plog

test_dng_noise_model_plog.png

test_ev_compensation_advanced

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

API ที่ทดสอบ:

ผ่าน: ภาพแสดงการรับแสงที่เพิ่มขึ้นโดยไม่เปิดรับแสงมากเกินไปภายในห้าขั้นตอน

test_ev_compensation_advanced_plot_means

test_ev_compensation_advanced_plot_means.png

test_ev_compensation_basic

ทดสอบว่าใช้การชดเชย EV โดยใช้ช่วงที่สร้างขึ้นด้วย CONTROL_AE_COMPENSATION_STEP จับภาพแปดเฟรมที่ค่าชดเชยแต่ละค่า

API ที่ทดสอบ:

ผ่าน: จับภาพลูม่าที่เพิ่มขึ้นด้วยการตั้งค่าการชดเชย EV ที่เพิ่มขึ้น และแปดเฟรมที่จับภาพสำหรับการตั้งค่าการชดเชย EV แต่ละค่าจะมีค่าลูม่าที่คงที่

test_ev_compensation_basic

test_ev_compensation_basic.png

test_exposure

ทดสอบว่าได้รับค่าแสงคงที่เมื่อ ISO และเวลาเปิดรับแสงแตกต่างกัน ถ่ายภาพเป็นชุดโดยเลือก ISO และเวลาเปิดรับแสงเพื่อให้สมดุลกัน ผลลัพธ์ควรมีความสว่างเท่ากัน แต่ในลำดับภาพควรมีนอยส์มากกว่า ตรวจสอบว่าค่าเฉลี่ยพิกเซลตัวอย่างอยู่ใกล้กัน ตรวจสอบให้แน่ใจว่ารูปภาพไม่ถูกบีบให้เป็น 0 หรือ 1 (ซึ่งจะทำให้ดูเหมือนเส้นแบนๆ) การทดสอบยังสามารถเรียกใช้กับภาพ RAW ได้ด้วยการตั้งค่าแฟล็กการ debug ในไฟล์กำหนดค่าของคุณ

API ที่ทดสอบ:

ผ่าน: ภาพมีความสว่างเท่าเดิม แต่มีจุดรบกวนมากขึ้นด้วย ISO ที่สูงขึ้น ระนาบ RGB จะแบนราบเมื่อค่าการ เปิดรับแสง ISO* คงที่เหนือพื้นที่เกนที่ทดสอบ

test_exposure_plot_means

test_exposure_plot_means.png

test_exposure_mult=1.00test_exposure_mult=64.00
test_exposure_mult=1.00.jpg test_exposure_mult=64.00.jpg

test_jpeg

การทดสอบที่แปลงภาพ YUV และภาพ JPEG ของอุปกรณ์มีลักษณะเหมือนกัน การทดสอบใช้จุดกึ่งกลาง 10% ของภาพและคำนวณค่า RGB และตรวจสอบว่าตรงกัน

API ที่ทดสอบ:

ผ่าน: ความแตกต่างของ RGB เฉลี่ยระหว่างแต่ละภาพน้อยกว่า 3%

test_jpeg_fmt=jpg.jpgtest_jpeg=fmt=yuv.jpg
test_jpeg_fmt=jpg.jpg test_jpeg=fmt=yuv.jpg

test_latching

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

API ที่ทดสอบ:

ผ่าน: รูปภาพ [2, 3, 6, 8, 10, 12, 13] ได้เพิ่ม ISO หรือการเปิดรับแสง และแสดงด้วยวิธี RGB ที่สูงขึ้นบน test_latching_plot_means.png

test_latching_i=00.jpgtest_latching_i=01.jpgtest_latching_i=02.jpg
test_latching_i=00.jpg test_latching_i=01.jpg test_latching_i=02.jpg
test_latching_i=03.jpgtest_latching_i=04.jpgtest_latching_i=05.jpg
test_latching_i=03.jpg test_latching_i=04.jpg test_latching_i=05.jpg
test_latching_i=06.jpgtest_latching_i=07.jpgtest_latching_i=08.jpg
test_latching_i=06.jpg test_latching_i=07.jpg test_latching_i=08.jpg
test_latching_i=09.jpgtest_latching_i=10.jpgtest_latching_i=11.jpg
test_latching_i=09.jpg test_latching_i=10.jpg test_latching_i=11.jpg
test_latching_i=12.jpg
test_latching_i=12.jpg

test_latching_plot_means

test_latching_plot_means.png

test_linearity

ทดสอบว่าการประมวลผลของอุปกรณ์สามารถเปลี่ยนเป็นพิกเซลเชิงเส้นได้ จับภาพต่อเนื่องโดยหันอุปกรณ์ไปที่เป้าหมายที่เหมือนกัน

API ที่ทดสอบ:

ผ่าน: ค่า R, G, B จะต้องเพิ่มขึ้นเชิงเส้นพร้อมกับความไวที่เพิ่มขึ้น

test_linearity_plot_means

test_linearity_plot_means.png

test_locked_burst

ทดสอบการล็อค 3A และระเบิด YUV (โดยใช้การตั้งค่าอัตโนมัติ) การทดสอบนี้ออกแบบมาเพื่อให้ผ่านแม้ในอุปกรณ์จำกัดที่ไม่มี MANUAL_SENSOR หรือ PER_FRAME_CONTROLS การทดสอบจะตรวจสอบความสอดคล้องของภาพ YUV ขณะที่การตรวจสอบอัตราเฟรมอยู่ใน CTS

API ที่ทดสอบ:

ผ่าน: การจับภาพดูสอดคล้องกัน

test_locked_burst_frame0

test_locked_burst_frame0.jpg

test_locked_burst_frame1

test_locked_burst_frame1.jpg

test_locked_burst_frame2

test_locked_burst_frame2.jpg

test_multi_camera_match

ทดสอบเพื่อดูว่ากล้องหลายตัวบนอุปกรณ์ให้ค่า RGB ที่คล้ายกันสำหรับแพตช์สีเทาหรือไม่

API ที่ทดสอบ:

ผ่าน: กล้องที่แตกต่างกันสร้างค่า RGB ที่คล้ายกันสำหรับแพตช์สีเทาเดียวกัน

test_multi_camera+match_yuv_fl=4.38

test_multi_camera+match_yuv_fl=4.38.jpg

test_param_color_correction

ทดสอบว่าใช้พารามิเตอร์ android.colorCorrection.* เมื่อตั้งค่า ถ่ายภาพด้วยค่าการเปลี่ยนรูปและค่าเกนที่แตกต่างกัน และทดสอบว่าค่าเหล่านี้ดูแตกต่างกันอย่างสอดคล้องกัน การแปลงและอัตราขยายถูกเลือกเพื่อทำให้เอาต์พุตเป็นสีแดงหรือสีน้ำเงินมากขึ้น ใช้โทนแมปเชิงเส้น การแมปโทนสีเป็นเทคนิคที่ใช้ในการประมวลผลภาพเพื่อแมปชุดสีหนึ่งกับอีกสีหนึ่งเพื่อประมาณลักษณะที่ปรากฏของภาพช่วงไดนามิกสูงในสื่อที่มีช่วงไดนามิกที่จำกัดมากขึ้น

API ที่ทดสอบ:

ผ่าน: เพิ่มค่า R และ B ตามการเปลี่ยนแปลง

test_param_color_correction_plot_means

test_param_color_correction_plot_means.png

*แกน x คือคำขอการจับภาพ: 0 = ความสามัคคี, 1 = การเพิ่มสีแดง, 2 = การเพิ่มสีน้ำเงิน

test_param_color_correction_req=0

test_param_color_correction_req=0.jpg

test_param_color_correctness_req=1

test_param_color_correctness_req=1.jpg (เพิ่ม R)

test_param_color_correction_req=2

test_param_color_correction_req=2.jpg (บูสต์ B)

test_param_exposure_time

ทดสอบว่าใช้พารามิเตอร์ android.sensor.exposureTime

API ที่ทดสอบ:

ผ่าน: แต่ละช็อตสว่างกว่าช็อตก่อนหน้า

test_param_exposure_time_frame0

test_param_exposure_time_frame0.jpg

test_param_exposure_time_plot

test_param_exposure_time_plot.png

test_param_flash_mode

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

API ที่ทดสอบ:

ผ่าน: ตรงกลางของภาพเรียงต่อกันมีการไล่ระดับสีขนาดใหญ่ หมายความว่ามีการยิงแฟลช

test_param_flash_mode_1

test_param_flash_mode_1.jpg

test_param_flash_mode_1_tile

test_param_flash_mode_1_tile.jpg

test_param_flash_mode_2

ทดสอบ_param_flash_mode_2.jpg

test_param_flash_mode_2_tile

test_param_flash_mode_2_tile.jpg

test_param_noise_reduction

ทดสอบว่าใช้พารามิเตอร์ android.noiseReduction.mode อย่างถูกต้องเมื่อตั้งค่า ถ่ายภาพด้วยกล้องที่มีแสงน้อย ใช้อัตราขยายแบบอะนาล็อกสูงเพื่อให้แน่ใจว่าภาพที่ถ่ายจะมีสัญญาณรบกวน จับภาพสามภาพ สำหรับปิด NR, "รวดเร็ว" และ "คุณภาพสูง" ยังจับภาพที่มีค่าเกนต่ำและปิด NR และใช้ความแปรปรวนของสิ่งนี้เป็นพื้นฐาน ยิ่ง SNR (อัตราส่วนสัญญาณต่อสัญญาณรบกวน) สูงเท่าใด คุณภาพของภาพก็จะยิ่งดีขึ้นเท่านั้น

API ที่ทดสอบ:

ผ่าน: SNR จะแตกต่างกันไปตามโหมดลดสัญญาณรบกวนต่างๆ และทำงานคล้ายกับกราฟด้านล่าง

test_param_noise_reduction_plot_SNR

test_param_noise_reduction_plot_SNRs.png

0: ปิด 1: เร็ว 2: กองบัญชาการ 3: นาที 4: ZSL

test_param_noise_reduction_high_gain_nr=0

test_param_noise_reduction_high_gain_nr=0.jpg

test_param_noise_reduction_high_gain_nr=1

test_param_noise_reduction_high_gain_nr=1.jpg

test_param_noise_reduction_high_gain_nr=2

test_param_noise_reduction_high_gain_nr=2.jpg

test_param_noise_reduction_high_gain_nr=3

test_param_noise_reduction_high_gain_nr=3.jpg

test_param_noise_reduction_low_gain

test_param_noise_reduction_low_gain.jpg

test_param_sensitivity

ทดสอบว่าใช้พารามิเตอร์ android.sensor.sensitivity การทดสอบจะเพิ่มความไวใน 5 ระดับโดยมีค่าแสงคงที่ในแต่ละช็อต

API ที่ทดสอบ:

ผ่าน: ค่า RGB ตรงกลาง 10% สว่างขึ้นด้วยความไวที่เพิ่มขึ้น

test_param_sensitivity_iso=0055

test_param_sensitivity_iso=0055.jpg

test_param_sensitivity_iso=1819

test_param_sensitivity_iso=1819.jpg

test_param_sensitivity_iso=3583

test_param_sensitivity_iso=3583.jpg

test_param_sensitivity_iso=5347

test_param_sensitivity_iso=5347.jpg

test_param_sensitivity_iso=7111

test_param_sensitivity_iso=7111.jpg

test_param_sensitivity_plot

test_param_sensitivity_plot.png

test_param_shading_mode

ทดสอบว่าใช้พารามิเตอร์ android.shading.mode

API ที่ทดสอบ:

ผ่าน: โหมดการแรเงาถูกเปลี่ยนและแผนผังการบังแสงของเลนส์จะได้รับการแก้ไขตามที่คาดไว้

test_param_shading_mode_ls_maps_mode_0_loop_0

test_param_shading_mode_ls_maps_mode_0_loop_0.png

test_param_shading_mode_ls_maps_mode_1_loop_0

test_param_shading_mode_ls_maps_mode_1_loop_0.png

test_param_shading_mode_ls_maps_mode_2_loop_0

test_param_shading_mode_ls_maps_mode_2_loop_0.png

test_param_tonemap_mode

ทดสอบว่าใช้พารามิเตอร์ android.tonemap.mode ใช้เส้นโค้งโทนแมปที่แตกต่างกันกับแต่ละแชนเนล R, G, B และตรวจสอบว่าภาพที่ส่งออกได้รับการแก้ไขตามที่คาดไว้ การทดสอบนี้ประกอบด้วยสองการทดสอบ การทดสอบที่ 1 และการทดสอบที่ 2

API ที่ทดสอบ:

ผ่าน:

  • ทดสอบ 1: ทั้งสองภาพมีโทนแมปเชิงเส้น แต่ n=1 มีการไล่ระดับสีที่ชันกว่า ช่อง G (สีเขียว) สว่างกว่าสำหรับภาพ n=1
  • ทดสอบ 2: โทนแมปเดียวกัน แต่ความยาวต่างกัน รูปภาพเหมือนกัน
test_param_tonemap_mode_n=0.jpgtest_param_tonemap_mode_n=1.jpg
test_param_tonemap_mode_n=0.jpg test_param_tonemap_mode_n=1.jpg

test_post_raw_sensitivity_boost

ตรวจสอบการเพิ่มความไวหลัง RAW จับภาพ RAW และ YUV ชุดหนึ่งที่มีความไวต่างกัน โพสต์ชุดค่าผสมการเพิ่มความไว RAW และตรวจสอบว่าค่าเฉลี่ยพิกเซลที่ส่งออกตรงกับการตั้งค่าคำขอหรือไม่

API ที่ทดสอบ:

ผ่าน: ภาพ RAW จะมืดลงเมื่อบูสต์เพิ่มขึ้น ในขณะที่ภาพ YUV จะมีความสว่างคงที่

test_post_raw_sensitivity_boost_raw_s=3583_boost=0100

test_post_raw_sensitivity_boost_raw_s=3583_boost=0100.jpg

test_post_raw_sensitivity_boost_raw_s=1792_boost=0200

test_post_raw_sensitivity_boost_raw_s=1792_boost=0200.jpg

test_post_raw_sensitivity_boost_raw_s=0896_boost=0400

test_post_raw_sensitivity_boost_raw_s=0896_boost=0400.jpg

test_post_raw_sensitivity_boost_raw_s=0448_boost=0800

test_post_raw_sensitivity_boost_raw_s=0448_boost=0800.jpg

test_post_raw_sensitivity_boost_raw_s=0224_boost=1600

test_post_raw_sensitivity_boost_raw_s=0224_boost=1600.jpg

test_post_raw_sensitivity_boost_raw_s=0112_boost=3199

test_post_raw_sensitivity_boost_raw_s=0112_boost=3199.jpg

test_post_raw_sensitivity_boost_raw_plot_means

test_post_raw_sensitivity_boost_raw_plot_means.png

test_post_raw_sensitivity_boost_yuv_s=0112_boost=3199

test_post_raw_sensitivity_boost_yuv_s=0112_boost=3199.jpg

test_post_raw_sensitivity_boost_yuv_s=0448_boost=0800

test_post_raw_sensitivity_boost_yuv_s=0448_boost=0800.jpg

test_post_raw_sensitivity_boost_yuv_s=0896_boost=0400

test_post_raw_sensitivity_boost_yuv_s=0896_boost=0400.jpg

test_post_raw_sensitivity_boost_yuv_s=1792_boost=0200

test_post_raw_sensitivity_boost_yuv_s=1792_boost=0200.jpg

test_post_raw_sensitivity_boost_yuv_s=3585_boost=0100

test_post_raw_sensitivity_boost_yuv_s=3585_boost=0100.jpg

test_post_raw_sensitivity_boost_yuv_plot_means

test_post_raw_sensitivity_boost_yuv_plot_means.png

test_raw_burst_sensitivity

จับภาพชุดของภาพดิบที่มีเกนเพิ่มขึ้นและวัดจุดรบกวน จับภาพดิบเท่านั้นในการถ่ายภาพต่อเนื่อง

API ที่ทดสอบ:

ผ่าน: แต่ละช็อตจะมีเสียงดังกว่าช็อตก่อนหน้า เนื่องจากเกนจะเพิ่มขึ้น

ใช้ความแปรปรวนของเซลล์กริดสถิติศูนย์

test_raw_burst_sensitivity_variance

test_raw_burst_sensitivity_variance.png

test_raw_exposure

จับภาพชุดของภาพดิบด้วยเวลาเปิดรับแสงที่เพิ่มขึ้นและวัดค่าพิกเซล

API ที่ทดสอบ:

ผ่าน: การเพิ่ม ISO (เกน) ทำให้พิกเซลมีความไวต่อแสงมากขึ้น พล็อตจึงเลื่อนไปทางซ้าย

test_raw_exposure_s=55

test_raw_exposure_s=55.png

(10⁰ คือ 1 มิลลิวินาที, 10¹ คือ 10 มิลลิวินาที, 10⁻¹ คือ 0.1 มิลลิวินาที)

test_raw_exposure_s=132

test_raw_exposure_s=132.png

test_raw_exposure_s=209

test_raw_exposure_s=209.png

test_raw_exposure_s=286

test_raw_exposure_s=286.png

test_raw_exposure_s=363

test_raw_exposure_s=363.png

test_raw_exposure_s=440

test_raw_exposure_s=440.png

test_raw_sensitivity

จับภาพดิบชุดหนึ่งด้วยความไวแสงที่เพิ่มขึ้น และวัดสัญญาณรบกวน (ความแปรปรวน) ที่กึ่งกลางภาพ 10% ทดสอบว่าแต่ละช็อตมีเสียงดังกว่าครั้งก่อน

API ที่ทดสอบ:

ผ่าน: ความแปรปรวนเพิ่มขึ้นในแต่ละนัด

test_raw_sensitivity_variance

test_raw_sensitivity_variance.png

test_reprocess_noise_reduction

ทดสอบว่าใช้ android.noiseReduction.mode สำหรับการประมวลผลคำขอใหม่ จับภาพที่ประมวลผลใหม่โดยที่กล้องมีแสงน้อย ใช้อัตราขยายแบบอะนาล็อกสูงเพื่อให้แน่ใจว่าภาพที่ถ่ายจะมีสัญญาณรบกวน จับภาพที่ประมวลผลใหม่สามภาพ สำหรับปิด NR, "รวดเร็ว" และ "คุณภาพสูง" จับภาพที่ประมวลผลใหม่โดยมีค่าเกนต่ำและปิด NR และใช้ค่าความแปรปรวนของค่านี้เป็นค่าพื้นฐาน

API ที่ทดสอบ:

ผ่าน: FAST >= OFF, HQ >= FAST, HQ >> OFF

พล็อต SNR ทั่วไปกับ NR_MODE

พล็อต SNR ทั่วไปกับ NR_MODE

test_tonemap_sequence

ทดสอบลำดับภาพด้วยเส้นโค้งโทนแมปต่างๆ ถ่ายภาพแบบแมนนวล 3 ภาพด้วยโทนแมปเชิงเส้น ถ่ายภาพแบบแมนนวล 3 ภาพด้วยโทนแมปเริ่มต้น คำนวณเดลต้าระหว่างคู่เฟรมที่ต่อเนื่องกัน

API ที่ทดสอบ:

ผ่าน: มีเฟรมที่เหมือนกัน 3 เฟรมตามด้วยเฟรมที่เหมือนกัน 3 ชุดที่แตกต่างกัน

test_tonemap_sequence_i=0

test_tonemap_sequence_i=0.jpg

test_tonemap_sequence_i=1

test_tonemap_sequence_i=1.jpg

test_tonemap_sequence_i=2

test_tonemap_sequence_i=2.jpg

test_tonemap_sequence_i=3

test_tonemap_sequence_i=3.jpg

test_tonemap_sequence_i=4

test_tonemap_sequence_i=4.jpg

test_tonemap_sequence_i=5

test_tonemap_sequence_i=5.jpg

test_yuv_jpeg_all

ทดสอบว่าขนาดและรูปแบบที่รายงานทั้งหมดสำหรับการจับภาพทำงานได้ ใช้คำขอด้วยตนเองกับแผนผังโทนเชิงเส้นเพื่อให้ YUV และ JPEG ดูเหมือนกันเมื่อแปลงโดยโมดูล image_processing_utils รูปภาพจะไม่ถูกบันทึกโดยค่าเริ่มต้น แต่สามารถบันทึกได้โดยการเปิดใช้งาน debug_mode

API ที่ทดสอบ:

ผ่าน: ศูนย์ภาพทั้งหมดมีความแตกต่าง RMS สูงสุด (ค่ารูทค่าเฉลี่ยกำลังสองของสัญญาณ) ในภาพที่แปลง RGB โดยมี 3% ของภาพ YUV ที่มีความละเอียดสูงสุด

test_yuv_jpeg_all

test_yuv_jpeg_all.png

test_yuv_plus_dng

ทดสอบว่าขนาดและรูปแบบที่รายงานสำหรับการจับภาพทำงานได้หรือไม่

API ที่ทดสอบ:

ผ่าน: การทดสอบเสร็จสิ้นและส่งกลับภาพที่ร้องขอ

test_yuv_plus_dng

test_yuv_plus_dng.jpg

test_yuv_plus_jpeg

ทดสอบการจับภาพเฟรมเดียวเป็นทั้งเอาต์พุต YUV และ JPEG ใช้คำขอด้วยตนเองกับแผนผังโทนเชิงเส้นเพื่อให้ YUV และ JPEG ดูเหมือนกันเมื่อแปลงโดยโมดูล image_processing_utils

API ที่ทดสอบ:

ผ่าน: ภาพ YUV และ JPEG มีความคล้ายคลึงกันและมีความแตกต่างน้อยกว่า 1% RMS (ค่ารูทค่าเฉลี่ยกำลังสองของสัญญาณ)

test_yuv_plus_jpg_jpg.jpgtest_yuv_plus_jpeg_yuv.jpg
test_yuv_plus_jpg_jpg.jpg test_yuv_plus_jpeg_yuv.jpg

test_yuv_plus_raw

ทดสอบการจับภาพเฟรมเดียวเป็นทั้งเอาต์พุต RAW และ YUV ใช้คำขอด้วยตนเองพร้อมโทนแมปเชิงเส้น ดังนั้น RAW และ YUV จึงคาดว่าจะเหมือนกัน เปรียบเทียบค่าศูนย์ 10% RGB ของรูปภาพที่แปลง RGB บันทึก android.shading.mode

API ที่ทดสอบ:

ผ่าน: ภาพ YUV และ JPEG มีความคล้ายคลึงกันและมีความแตกต่างน้อยกว่า 3.5% RMS (ค่ารูทเฉลี่ยกำลังสองของสัญญาณ)

test_yuv_plus_raw_shading=1_raw.jpgtest_yuv_plus_raw_shading=1_yuv.jpg
test_yuv_plus_raw_shading=1_raw.jpg test_yuv_plus_raw_shading=1_yuv.jpg

test_yuv_plus_raw10

ทดสอบจับภาพเฟรมเดียวเป็นทั้งเอาต์พุต RAW10 และ YUV ใช้คำขอด้วยตนเองพร้อมโทนแมปเชิงเส้น ดังนั้น RAW และ YUV จึงคาดว่าจะเหมือนกัน เปรียบเทียบค่าศูนย์ 10% RGB ของรูปภาพที่แปลง RGB บันทึก android.shading.mode

API ที่ทดสอบ:

ผ่าน: ภาพ RAW10 และ YUV มีความคล้ายคลึงกันและมีความแตกต่างน้อยกว่า 3.5% RMS (ค่ารูทค่าเฉลี่ยกำลังสองของสัญญาณ)

test_yuv_plus_raw10_shading=1_rawtest_yuv_plus_raw10_shading=1_yuv
test_yuv_plus_raw10_shading=1_raw.jpg test_yuv_plus_raw10_shading=1_yuv.jpg

test_yuv_plus_raw12

ทดสอบจับภาพเฟรมเดียวเป็นทั้งเอาต์พุต RAW12 และ YUV ใช้คำขอด้วยตนเองพร้อมโทนแมปเชิงเส้น ดังนั้น RAW และ YUV จึงคาดว่าจะเหมือนกัน เปรียบเทียบค่าศูนย์ 10% RGB ของรูปภาพที่แปลง RGB บันทึก android.shading.mode

API ที่ทดสอบ:

ผ่าน: ภาพ RAW12 และ YUV มีความคล้ายคลึงกันและมีความแตกต่างน้อยกว่า 3.5% RMS (ค่ารูทค่าเฉลี่ยกำลังสองของสัญญาณ)

test_yuv_plus_raw12_shading=1_raw.jpgtest_yuv_plus_raw12_shading=1_yuv.jpg
test_yuv_plus_raw12_shading=1_raw.jpg test_yuv_plus_raw12_shading=1_yuv.jpg

ฉาก2_a

ฉาก2_a มีสามหน้าที่มีพื้นหลังสีเทาและเสื้อผ้าที่เป็นกลาง ใบหน้าถูกเลือกให้มีโทนสีผิวที่หลากหลาย

ฉาก2_a

ฉาก2_a

ทดสอบ_auto_flash

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

API ที่ทดสอบ:

ผ่าน: ตรงกลางของภาพเรียงต่อกันมีการไล่ระดับสีขนาดใหญ่ ซึ่งหมายถึงการยิงแฟลชอัตโนมัติ

ทดสอบผล

จับเฟรมสำหรับเอฟเฟกต์กล้องที่รองรับและตรวจสอบว่าสร้างอย่างถูกต้องหรือไม่ การทดสอบจะตรวจสอบเฉพาะเอฟเฟ็กต์ OFF และ MONO แต่จะบันทึกภาพสำหรับเอฟเฟ็กต์ที่รองรับทั้งหมด

API ที่ทดสอบ:

ผ่าน: จับภาพฉากโดย OFF เอฟเฟกต์และภาพขาวดำโดยตั้งค่าเอฟเฟกต์เป็น MONO

test_effects_MONO

test_effects_MONO.jpg

test_format_combo

ทดสอบชุดรูปแบบเอาต์พุตต่างๆ

API ที่ทดสอบ:

ผ่าน: จับชุดค่าผสมทั้งหมดได้สำเร็จ

test_jpeg_คุณภาพ

ทดสอบคุณภาพการบีบอัด JPEG ของกล้อง ยกระดับคุณภาพ JPEG ผ่าน android.jpeg.quality และรับรองว่า Quantization Tables เปลี่ยนแปลงอย่างถูกต้อง

API ที่ทดสอบ:

ผ่าน: เมทริกซ์เชิงปริมาณลดลงเมื่อคุณภาพเพิ่มขึ้น (เมทริกซ์แสดงถึงตัวประกอบการหาร)

test_jpeg_คุณภาพ

ค่าเฉลี่ยของกล้องหลัง Pixel 4 luma/chroma DQT matrix เทียบกับคุณภาพ JPEG

test_jpeg_quality ล้มเหลว

ตัวอย่างการทดสอบที่ล้มเหลว

โปรดทราบว่าสำหรับรูปภาพคุณภาพต่ำมาก (jpeg.quality < 50) จะไม่มีการบีบอัดเพิ่มขึ้นในเมทริกซ์การวัดปริมาณ

test_num_faces

ทดสอบการตรวจจับใบหน้า

API ที่ทดสอบ:

ผ่าน: ค้นหาสามใบหน้า

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

ฉาก2_b

test_auto_per_frame_control

ทดสอบคุณสมบัติ PER_FRAME_CONTROL สำหรับคำขอบันทึกอัตโนมัติ

API ที่ทดสอบ:

ผ่าน: คุณสมบัติ PER_FRAME_CONTROL ทั้งหมดมีอยู่

ทดสอบ_auto_per_frame_control_frame_1

ทดสอบ_auto_per_frame_control_frame_1.jpg

ทดสอบ_auto_per_frame_control_frame_10

ทดสอบ_auto_per_frame_control_frame_10.jpg

ทดสอบ_auto_per_frame_control_frame_29

ทดสอบ_auto_per_frame_control_frame_29.jpg

test_auto_per_frame_control_plot

test_auto_per_frame_control_plot.png

test_num_faces

ทดสอบการตรวจจับใบหน้าด้วยโทนสีผิวที่หลากหลายมากขึ้นในฉากใบหน้า

API ที่ทดสอบ:

ผ่าน: ค้นหา 3 ใบหน้า

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

test_yuv_jpg_capture_sameness

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

API ที่ทดสอบ:

ผ่าน: ภาพ YUV และ JPEG มีความคล้ายคลึงกันและมีความแตกต่างน้อยกว่า 1% RMS (ค่ารูทค่าเฉลี่ยกำลังสองของสัญญาณ)

ฉาก2_c

test_num_faces

ทดสอบการตรวจจับใบหน้าด้วยโทนสีผิวที่หลากหลายมากขึ้นในฉากใบหน้า

API ที่ทดสอบ:

ผ่าน: ค้นหา 3 ใบหน้า

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

test_jpeg_capture_perf_class

ทดสอบเวลาแฝงในการจับภาพ JPEG สำหรับคลาสประสิทธิภาพ S ตามที่ระบุไว้ใน ส่วน 2.2.7.2 กล้อง ใน CDD

ผ่าน: ต้องมีเวลาในการจับภาพ JPEG ของกล้อง 2 < 1000ms สำหรับความละเอียด 1080p ที่วัดโดยกล้อง CTS PerformanceTest ภายใต้สภาพแสง ITS (3000K) สำหรับกล้องหลักทั้งสอง

test_camera_launch_perf_class

ทดสอบเวลาแฝงในการเปิดกล้องสำหรับคลาสประสิทธิภาพ S ตามที่ระบุไว้ใน ส่วน 2.2.7.2 กล้อง ใน CDD

ผ่าน: ต้องมีเวลาแฝงในการเริ่มต้นของกล้อง 2 (เปิดกล้องไปยังเฟรมแสดงตัวอย่างแรก) < 600ms ตามที่วัดโดยกล้อง CTS PerformanceTest ภายใต้สภาพแสง ITS (3000K) สำหรับกล้องหลักทั้งสอง

ฉาก2_d

test_num_faces

ทดสอบการตรวจจับใบหน้าด้วยโทนสีผิวที่หลากหลายมากขึ้นในฉากใบหน้า

API ที่ทดสอบ:

ผ่าน: ค้นหา 3 ใบหน้า

ฉาก2_e

test_continuous_picture

จับภาพเฟรมความละเอียด VGA 50 เฟรมด้วยคำขอจับภาพก่อน โดยตั้งค่า android.control.afMode = 4 (CONTINUOUS_PICTURE).

API ที่ทดสอบ:

ผ่าน: ระบบ 3A จะสิ้นสุดการจับภาพ 50 เฟรม

test_num_faces

ทดสอบการตรวจจับใบหน้าด้วยโทนสีผิวที่หลากหลายมากขึ้นในฉากใบหน้า

API ที่ทดสอบ:

ผ่าน: ค้นหา 3 ใบหน้า

ฉากที่ 3

Scene3 ใช้แผนภูมิ ISO12233 และการทดสอบส่วนใหญ่ใช้วิธีแยกแผนภูมิเพื่อค้นหาแผนภูมิในฉาก ด้วยเหตุนี้ รูปภาพที่บันทึกไว้ส่วนใหญ่จึงไม่มีเส้นขอบเหมือนรูปภาพสำหรับฉากที่ 1, 2 หรือ 4 แต่จะมีเพียงแผนภูมิเท่านั้น

test_3a_consistency

ทดสอบความสอดคล้อง 3A

API ที่ทดสอบ:

ผ่าน: 3A บรรจบกันสำหรับค่าแสง อัตราขยาย awb (ไวต์บาลานซ์อัตโนมัติ) และ fd (ระยะโฟกัส) สามครั้งภายในค่าที่ยอมรับได้

test_edge_enhancement

ทดสอบว่าใช้พารามิเตอร์ android.edge.mode อย่างถูกต้อง จับภาพที่ไม่ประมวลผลซ้ำสำหรับแต่ละโหมดขอบและส่งคืนความคมชัดของภาพที่ส่งออกและข้อมูลเมตาของผลการจับภาพ ประมวลผลคำขอจับภาพด้วยโหมดขอบ ความไว เวลาเปิดรับแสง ระยะโฟกัส และพารามิเตอร์พื้นผิวเอาต์พุตที่กำหนด

ผ่าน: โหมด HQ (2) คมชัดกว่าโหมด OFF (0) โหมด FAST (1) คมชัดกว่าโหมด OFF โหมด HQ คมชัดกว่าหรือเท่ากับโหมด FAST

API ที่ทดสอบ:

พารามิเตอร์กล้องที่ได้รับผลกระทบ:

  • EDGE_MODE

test_edge_enhancement_edge=0

test_edge_enhancement_edge=0.jpg

test_edge_enhancement_edge=1

test_edge_enhancement_edge=1.jpg (โหมดเร็ว)

test_edge_enhancement_edge=2

test_edge_enhancement_edge=2.jpg (high quality mode)

test_flip_mirror

Tests if image is properly oriented as per CDD section 7.5.2 Front-Facing Camera [C-1-5] .

Mirrored, flipped, or rotated images can be identified by the diamond feature near the center.

Pass: Image isn't flipped, mirrored or rotated.

test_flip_mirror_scene_patch

test_flip_mirror_scene_patch.jpg

test_lens_movement_reporting

Tests if the lens movement flag is properly reported. Captures a burst of 24 images with the first 12 frames at the optimum focus distance (as found by 3A) and the last 12 frames at the minimum focus distance. Around frame 12, the lens moves causing the sharpness to drop. The sharpness eventually stabilize as the lens moves to the final position. The lens movement flag should be asserted in all frames where the sharpness is intermediate to sharpness in the first 10 frames with the lens stationary at optimum focal distance, and the final 10 frames where the lens is stationary in the minimum focal distance. The exact frame the lens moves isn't important: what is checked is that the movement flag is asserted when the lens is moving.

APIs tested:

Pass: Lens movement flag is True in the frame with sharpness change.

test_reprocess_edge_enhancement

Tests if supported reprocess methods for edge enhancement work properly. Processes a capture request with a given reprocess edge mode and compares different modes to capture with reprocess edge modes disabled.

APIs tested:

Pass: Sharpness for the different edge modes is correct. HQ (mode 2) is sharper than OFF (mode 0), and improvement between different modes is similar.

test_reprocess_edge_enhancement_plot

test_reprocess_edge_enhancement_plot.png

scene4

Scene4 consists of a black circle on a white background inside a square.

scene4

scene4

test_aspect_ratio_and_crop

Takes pictures of a circle inside of a square over all formats. Verifies that the aspect ratio of the circle doesn't change, the cropped images keep the circle in center, and the circle size doesn't change for a constant format or with different resolution (field of view check).

APIs tested:

Pass: Images aren't stretched, the center of images don't differ by more than 3%, and the maximum possible FOV (field of view) is preserved.

test_multi_camera_alignment

Tests the multi camera system parameters related to camera spacing. Using the multi-camera physical sub-cameras, takes a picture with one of the physical cameras. Finds the circle center. Projects the circle center to the world coordinates for each camera. Compares the difference between the cameras' circle centers in world coordinates. Reprojects the world coordinate back to pixel coordinates and compares against originals as a validity check. Compares the circle sizes checking if the focal lengths of the cameras are different.

APIs tested:

Pass: Focal lengths and circles sizes are consistent.

test_preview_stabilization_fov

Checks the supported preview sizes to ensure the FoV is cropped appropriately. The test captures two videos, one with preview stabilization ON , and another with preview stabilization OFF . A representative frame is selected from each video, and analyzed to ensure that the FoV changes in the two videos are within spec.

APIs tested:

Pass: The circle aspect ratio remains about constant, the center location of the circle remains stable, and the size of circle changes no more that 20%. ie the FOV changes at most 20%

test_video_aspect_ratio_and_crop

Takes videos of a circle inside of a square over all video formats. Extracts the key frames, and verifies the aspect ratio of the circle doesn't change, the cropped images keep the circle in center, and the circle size doesn't change for a constant format or with different resolution (field of view check).

APIs tested:

Pass: Video frames aren't stretched, the center of frames don't differ by more than 3%, and the maximum possible FoV (field of view) is preserved.

scene5/diffuser

test_lens_shading_and_color_uniformity

Tests that the lens shading correction is applied appropriately, and color of a monochrome uniform scene is evenly distributed. Performs this test on a YUV frame with auto 3A. Lens shading is evaluated based on the y channel. Measures the average y value for each sample block specified, and determines pass or fail by comparing with the center y value. The color uniformity test is evaluated in r/g and b/g space.

APIs tested:

Pass: At the specified radius of the image, the variance of r/g and b/g value must be less than 20% to pass the test.

scene6

Scene6 is a grid of small circles with a square in one corner to indicate orientation. The small circles are needed to test zoom function over a large range.

scene6

scene6

test_zoom

Tests the camera zoom behavior. Takes captures over the zoom range and checks if the circles get bigger as the camera zooms in.

APIs tested:

Pass: Relative size of captured circle is accurate against requested zoom ratio to ensure camera is zooming correctly.

test_zoom

test_zoom to find the contour of the circle closest to the center.

sensor_fusion

Sensor fusion tests require specific phone movement in front of a checkerboard pattern. The sensor_fusion tests can be automated with the Sensor Fusion Box .

checkerboard

Image of checkerboard

test_multi_camera_frame_sync

Tests that frame timestamps captured by logical camera are within 10 ms by computing angles of squares within the checkerboard to determine the timestamp.

APIs tested:

Pass: Angle between images from each camera doesn't change appreciably as phone is rotated.

test_preview_stabilization

Tests that stabilized preview video rotates less than gyroscope.

APIs tested:

Pass: Max angle rotation over frames is less than 70% of gyroscope rotation.

The following are sample videos with and without stabilization.

  • Sample video with stabilization

  • Sample video without stabilization

    test_sensor_fusion

Tests the timestamp difference between the camera and the gyroscope for AR and VR applications. Phone is rotated 90 degrees 10 times in front of the checkerboard pattern. Motion is about 2 s round trip. This test is skipped if no gyroscope is included or if the timestamp source REALTIME parameter is not enabled.

The test_sensor_fusion test generates a number of plots. The two most important plots for debugging are:

  • test_sensor_fusion_gyro_events : Shows the gyroscope events for the phone during the test. Movement in the x and y direction implies the phone isn't securely mounted on the mounting plate, reducing the probability of the test passing. The number of cycles in the plot depends on the write speed for saving frames.

    test_sensor_fusion_gyro_events.png

    test_sensor_fusion_gyro_events

  • test_sensor_fusion_plot_rotations : Shows the alignment of the gyroscope and camera events. This plot must show matching movement between camera and gyroscope to +/-1 ms.

    test_sensor_fusion_plot_rotations.png

    test_sensor_fusion_plot_rotations

APIs tested:

Pass: Camera and gyroscope timestamps' offset is less than 1 ms as per CDD section 7.3.9 High Fidelity Sensors [C-2-14] .

test_video_stabilization

Tests that stabilized video rotates less than gyroscope.

APIs tested:

Pass: Max angle rotation over frames is less than 60% of gyroscope rotation.

The following are sample videos with and without stabilization.

  • Sample video with stabilization

  • Sample video without stabilization