หน้านี้มีรายการการทดสอบที่ครอบคลุมภายใต้ 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_jitter
วัดความกระวนกระวายใจในการประทับเวลาของกล้อง
API ที่ทดสอบ:
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
ผ่าน: มีเดลต้าอย่างน้อย 30 มิลลิวินาทีระหว่างเฟรม
test_jitter_plot.png (สังเกตช่วงแกน y ที่มีขนาดเล็ก อันที่จริงแล้ว Jitter มีขนาดเล็กในพล็อตนี้)
test_metadata
ทดสอบความถูกต้องของรายการข้อมูลเมตา ดูผลการจับภาพและลักษณะเฉพาะของวัตถุในกล้อง การทดสอบนี้ใช้ auto_capture_request
Exposure และรับค่า เนื่องจากเนื้อหารูปภาพไม่สำคัญ
API ที่ทดสอบ:
-
android.hardware.camera2.CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL
-
android.hardware.camera2.CameraCharacteristics#SCALER_CROPPING_TYPE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_BLACK_LEVEL_PATTERN
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE
-
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
-
android.hardware.camera2.CaptureResult#SENSOR_ROLLING_SHUTTER_SKEW
ผ่าน: ระดับฮาร์ดแวร์, rollingShutterSkew
, แท็ก frameDuration
, timestampSource
, croppingType
, blackLevelPattern
, pixel_pitch
, FOV, ระยะไฮเปอร์โฟกัสมีอยู่และมีค่าที่ถูกต้อง
test_param_sensitivity_burst
ทดสอบว่าใช้พารามิเตอร์ android.sensor.sensitivity
อย่างถูกต้องในการถ่ายภาพต่อเนื่อง ตรวจสอบข้อมูลเมตาของเอาต์พุตเท่านั้น
API ที่ทดสอบ:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
ผ่าน: ข้อมูลเอาต์พุตมีความทนทานต่อข้อผิดพลาดน้อยกว่า 0.2%
ทดสอบ_อ่าน_เขียน
ทดสอบว่าอุปกรณ์เขียนการเปิดรับแสงที่ถูกต้องและรับค่าโดยการอ่านข้อมูลเมตาของการจับภาพ
API ที่ทดสอบ:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_EXPOSURE_TIME_RANGE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
-
android.hardware.camera2.CaptureResult#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureResult#SENSOR_SENSITIVITY
ผ่าน: ค่าอ่านและเขียนตรงกันในทุกช็อต
test_sensor_events
ทดสอบว่าอุปกรณ์ค้นหาและพิมพ์เหตุการณ์เซ็นเซอร์สำหรับอุปกรณ์ที่โฆษณาว่ารองรับเซ็นเซอร์ฟิวชัน เซ็นเซอร์ที่คาดหวัง ได้แก่ มาตรความเร่ง ไจโรสโคป และแมกนีโตมิเตอร์ การทดสอบนี้ใช้ได้เฉพาะเมื่อหน้าจอเปิดอยู่ หมายความว่าอุปกรณ์ไม่ได้อยู่ในโหมดสแตนด์บาย
API ที่ทดสอบ:
ผ่าน: ได้รับเหตุการณ์สำหรับแต่ละเซ็นเซอร์
test_solid_color_test_pattern
ทดสอบว่ารูปแบบการทดสอบสีทึบถูกสร้างขึ้นอย่างเหมาะสมสำหรับการปิดเสียงกล้อง หากรองรับการปิดเสียงกล้อง จะต้องรองรับรูปแบบการทดสอบสีทึบ หากไม่รองรับการปิดเสียงกล้อง รูปแบบการทดสอบสีทึบจะถูกทดสอบเฉพาะเมื่อมีการโฆษณาความสามารถ
หากรองรับภาพ RAW การกำหนดสีจะได้รับการทดสอบด้วย สีที่ทดสอบคือ ดำ ขาว แดง น้ำเงิน และเขียว สำหรับกล้องที่ไม่รองรับภาพ RAW จะมีการทดสอบเฉพาะสีดำเท่านั้น
API ที่ทดสอบ:
-
android.hardware.camera2.CameraCharacteristic#SENSOR_AVAILABLE_TEST_PATTERN_MODES
-
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_DATA
-
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
ผ่าน: รูปแบบการทดสอบทึบที่รองรับคือสีที่ถูกต้องและมีความแปรปรวนต่ำในภาพ
test_test_pattern
ทดสอบพารามิเตอร์ android.sensor.testPatternMode
เพื่อจับเฟรมสำหรับรูปแบบการทดสอบที่ถูกต้องแต่ละรูปแบบ และตรวจสอบว่าเฟรมสร้างอย่างถูกต้องสำหรับสีทึบและแถบสี การทดสอบนี้ประกอบด้วยขั้นตอนต่อไปนี้:
- จับภาพสำหรับรูปแบบการทดสอบที่รองรับทั้งหมด
- ทำการตรวจสอบความถูกต้องอย่างง่ายสำหรับรูปแบบการทดสอบสีทึบและแถบสี
API ที่ทดสอบ:
-
android.hardware.camera2.CameraCharacteristic#SENSOR_AVAILABLE_TEST_PATTERN_MODES
-
android.hardware.camera2.CaptureResult#SENSOR_TEST_PATTERN_MODE
ผ่าน: รูปแบบการทดสอบที่รองรับถูกสร้างขึ้นอย่างถูกต้อง
test_test_patterns_2.jpg
test_tonemap_curve
ทดสอบการแปลงรูปแบบการทดสอบจาก RAW เป็น YUV ด้วยโทนแมปเชิงเส้น การทดสอบนี้ต้องใช้ android.sensor.testPatternMode = 2
(COLOR_BARS) เพื่อสร้างรูปแบบภาพที่สมบูรณ์แบบสำหรับการแปลงโทนแมป ตรวจสอบให้แน่ใจว่าไปป์ไลน์มีเอาต์พุตสีที่เหมาะสมด้วยโทนแมปเชิงเส้นและการป้อนรูปภาพในอุดมคติ (อาศัย test_test_patterns
)
API ที่ทดสอบ:
-
android.hardware.camera2.CaptureRequest#DISTORTION_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#SENSOR_TEST_PATTERN_MODE
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
ผ่าน: YUV และ RAW ดูคล้ายกัน
test_tonemap_curve_raw_2.jpg
test_tonemap_curve_yuv_2.jpg
test_unified_timestamp
ทดสอบว่าเหตุการณ์เซ็นเซอร์ภาพและการเคลื่อนไหวอยู่ในโดเมนเวลาเดียวกันหรือไม่
API ที่ทดสอบ:
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.Sensor
-
android.hardware.SensorEvent
-
android.hardware.Sensor#TYPE_ACCELEROMETER
-
android.hardware.Sensor#TYPE_GYROSCOPE
ผ่าน: การประทับเวลาการเคลื่อนไหวอยู่ระหว่างการประทับเวลาของภาพสองภาพ
test_vibration_restriction
ทดสอบว่าการสั่นสะเทือนของอุปกรณ์ทำงานได้ตามปกติหรือไม่
API ที่ทดสอบ:
-
android.hardware.Sensor
-
android.hardware.SensorEvent
-
android.hardware.Sensor#TYPE_ACCELEROMETER
-
android.os.Vibrator
-
android.hardware.camera2.CameraDevice#setCameraAudioRestriction
ผ่าน: อุปกรณ์ไม่สั่นเมื่อปิดเสียงโดย API การจำกัดเสียงของกล้อง
ฉากที่ 1
ฉากที่ 1 เป็นแผนภูมิสีเทา แผนภูมิสีเทาต้องครอบคลุมพื้นที่ตรงกลาง 30% ของขอบเขตการมองเห็นของกล้อง แผนภูมิสีเทาคาดว่าจะท้าทาย 3A (การเปิดรับแสงอัตโนมัติ ไวต์บาลานซ์อัตโนมัติ โฟกัสอัตโนมัติ) ในระดับปานกลางเนื่องจากพื้นที่ตรงกลางไม่มีคุณสมบัติ อย่างไรก็ตาม คำขอจับภาพจะระบุฉากทั้งหมดซึ่งมีคุณสมบัติเพียงพอสำหรับ 3A ในการรวมเข้าด้วยกัน
สามารถทดสอบกล้อง RFoV ได้ใน WFoV หรือแท่นทดสอบ RFoV หากมีการทดสอบกล้อง RFoV ในแท่นทดสอบ WFoV แผนภูมิจะถูกปรับขนาดเป็น ⅔ เพื่อให้แน่ใจว่ามีขอบเขตสำหรับแผนภูมิสีเทาใน FoV เพื่อช่วยให้ 3A มาบรรจบกัน
ฉากที่ 1: แผนภูมิขนาดเต็ม (ซ้าย) ⅔ แผนภูมิมาตราส่วน (ขวา)
test_3a
ทดสอบการบรรจบกันของ 3A กับเป้าหมายที่ท้าทายปานกลาง
API ที่ทดสอบ:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
ผ่าน: 3A บรรจบกันและค่า 3A ที่ส่งคืนนั้นถูกต้อง
test_ae_af
ทดสอบอัลกอริธึมการเปิดรับแสงอัตโนมัติ 3A (AE) และโฟกัสอัตโนมัติ (AF) แยกจากกัน
API ที่ทดสอบ:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
ผ่าน: 3A บรรจบกันและค่า 3A ที่ส่งคืนนั้นถูกต้องตามกฎหมาย
test_ae_precapture_trigger
ทดสอบเครื่องสถานะ AE เมื่อใช้ทริกเกอร์ precapture บันทึกคำขอด้วยตนเองห้ารายการโดยปิดใช้งาน AE คำขอล่าสุดมีทริกเกอร์ AE precapture ซึ่งควรละเว้นเนื่องจาก AE ถูกปิดใช้งาน
API ที่ทดสอบ:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
ผ่าน: AE มาบรรจบกัน
test_auto_vs_manual
การทดสอบที่ถ่ายแบบอัตโนมัติและแบบแมนนวลมีลักษณะเหมือนกัน
API ที่ทดสอบ:
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureResult#TONEMAP_CURVE
-
android.hardware.camera2.CaptureResult#TONEMAP_MODE
ผ่าน: การเพิ่มและการเปลี่ยนแปลงของไวต์บาลานซ์แบบแมนนวลที่รายงานในผลการจับภาพแต่ละครั้งจะตรงกับการ estimate
ไวต์บาลานซ์อัตโนมัติจากอัลกอริทึม 3A ของกล้อง
test_auto_vs_manual_auto.jpg
test_auto_vs_manual_wb.jpg
test_auto_vs_manual_manual_wb_tm.jpg
ทดสอบ_black_white
ทดสอบว่าอุปกรณ์สร้างภาพขาวดำแบบเต็ม ถ่ายภาพสองครั้ง ภาพแรกมีอัตราขยายต่ำมากและเปิดรับแสงสั้น ซึ่งส่งผลให้ภาพถ่ายมีสีดำ และภาพที่สองมีอัตราขยายสูงมากและเปิดรับแสงนาน ซึ่งส่งผลให้ภาพถ่ายมีสีขาว
API ที่ทดสอบ:
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
ผ่าน: สร้างภาพขาวดำ ช่องอิ่มตัวของภาพสีขาวมีค่า RGB เป็น [255, 255, 255] โดยมีค่าความคลาดเคลื่อนน้อยกว่า 1%
![]() | ![]() | |
test_black_white_black.jpg | test_black_white_white.jpg |
test_black_white_plot_means.png
test_burst_sameness_manual
ถ่ายภาพต่อเนื่อง 5 ภาพ 50 ภาพด้วยการตั้งค่าการจับภาพแบบแมนนวล และตรวจสอบว่าเหมือนกันทั้งหมด การทดสอบนี้สามารถใช้เพื่อระบุว่ามีเฟรมเป็นระยะๆ ที่มีการประมวลผลแตกต่างกันหรือมีข้อผิดพลาดหรือไม่
API ที่ทดสอบ:
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR
-
android.hardware.camera2.CameraMetadata#SYNC_MAX_LATENCY_PER_FRAME_CONTROL
ผ่าน: รูปภาพจะเหมือนกันทั้งทางสายตาและค่า RGB
ล้มเหลว: แสดงแผนภูมิค่าเฉลี่ย RGB ที่พุ่งขึ้นหรือลดลงที่จุดเริ่มต้นของการระเบิดแต่ละครั้ง
- ความอดทนคือ 3% สำหรับ
first_API_level
< 30 - ความคลาดเคลื่อนคือ 2% สำหรับ
first_API_level
>= 30
test_burst_sameness_manual_mean.jpg
test_burst_sameness_manual_plot_means.png
test_capture_result
ทดสอบว่าข้อมูลที่ถูกต้องกลับมาในวัตถุ CaptureResult
ถ่ายภาพอัตโนมัติ แมนนวล และอัตโนมัติ
API ที่ทดสอบ:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_REGIONS
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_REGIONS
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_REGIONS
-
android.hardware.camera2.CaptureRequest#CONTROL_MODE
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
-
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
-
android.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
ผ่าน: ข้อมูลเมตาถูกต้องสำหรับการจับภาพทั้งหมดและการตั้งค่าด้วยตนเองจะไม่รั่วไหลในการจับภาพอัตโนมัติครั้งที่สอง วางแผนการแก้ไขการแรเงาของเลนส์สำหรับการจับภาพ
test_capture_result_plot_lsc_auto_ch0.png
test_crop_region_raw
ทดสอบว่าสตรีม RAW ไม่สามารถครอบตัดได้
API ที่ทดสอบ:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CaptureResult#SCALER_CROP_REGION
-
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
ผ่าน: ภาพ YUV ได้รับการครอบตัดตรงกลาง แต่ไม่ใช่ภาพ RAW
test_crop_region_raw_comp_raw_crop.jpg
test_crop_region_raw_comp_raw_full.jpg
test_crop_region_raw_comp_yuv_crop.jpg
test_crop_region_raw_yuv_full.jpg
test_crop_regions
ทดสอบว่าพื้นที่ครอบตัดทำงาน ถ่ายภาพเต็มและสร้างแพทช์ของ 5 ขอบเขตที่แตกต่างกัน (มุมและตรงกลาง) ถ่ายภาพด้วยการตั้งค่าการครอบตัดสำหรับ 5 ขอบเขต เปรียบเทียบแพทช์และค่าภาพครอบตัด
API ที่ทดสอบ:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
ผ่าน: รูปภาพของพื้นที่ครอบตัดตรงกับแพทช์ที่สอดคล้องกับรูปภาพครอบตัด
test_dng_noise_model
ตรวจสอบว่าพารามิเตอร์โมเดล RAW ของ DNG ถูกต้อง โครงเรื่องแสดงค่าความแปรปรวนที่วัดได้ของแพตช์ตรงกลางของเกรย์การ์ดในช็อตดิบที่บันทึกในช่วงความไวแสงต่างๆ และเปรียบเทียบค่าเหล่านี้กับความแปรปรวนที่คาดไว้ในแต่ละความไวโดยโมเดลสัญญาณรบกวน DNG ในกล้อง HAL (อ้างอิงจาก พารามิเตอร์ O,S ที่ส่งกลับในวัตถุผลลัพธ์การจับภาพ) สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับโมเดลเสียงรบกวน DNG ให้ดาวน์โหลดเอกสารเกี่ยวกับ โมเดลเสียงรบกวน DNG ต่อไปนี้
API ที่ทดสอบ:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
-
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
-
android.hardware.camera2.CaptureResult#SENSOR_NOISE_PROFILE
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
ผ่าน: พารามิเตอร์โมเดลดิบ DNG ถูกต้อง ค่า RGB ที่คาดหวังจะตรงกับค่า RGB จริงที่วัดได้
test_dng_noise_model_plog.png
test_ev_compensation_advanced
ทดสอบว่าใช้การชดเชยแสง (EV) การทดสอบจะเพิ่มการรับแสงในแปดขั้นตอน และตรวจสอบความสว่างที่วัดได้เทียบกับความสว่างที่คาดไว้ ค่าที่คาดหวังจะคำนวณจากความสว่างของภาพโดยไม่มีการชดเชย EV และค่าที่คาดหวังจะอิ่มตัวหากค่าที่คำนวณได้เกินช่วงค่าของภาพจริง การทดสอบล้มเหลวหากค่าที่คาดไว้และค่าที่วัดได้ไม่ตรงกันหรือภาพเปิดรับแสงมากเกินไปภายในห้าขั้นตอน
API ที่ทดสอบ:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
-
android.hardware.camera2.CaptureResult#TONEMAP_CURVE
-
android.hardware.camera2.CaptureResult#TONEMAP_MODE
ผ่าน: ภาพแสดงการรับแสงที่เพิ่มขึ้นโดยไม่เปิดรับแสงมากเกินไปภายในห้าขั้นตอน
test_ev_compensation_advanced_plot_means.png
test_ev_compensation_basic
ทดสอบว่าใช้การชดเชย EV โดยใช้ช่วงที่สร้างขึ้นด้วย CONTROL_AE_COMPENSATION_STEP
จับภาพแปดเฟรมที่ค่าชดเชยแต่ละค่า
API ที่ทดสอบ:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_COMPENSATION_STEP
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_EXPOSURE_COMPENSATION
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
-
android.hardware.camera2.CaptureResult#CONTROL_AE_EXPOSURE_COMPENSATION
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
ผ่าน: จับภาพลูม่าที่เพิ่มขึ้นด้วยการตั้งค่าการชดเชย EV ที่เพิ่มขึ้น และแปดเฟรมที่จับภาพสำหรับการตั้งค่าการชดเชย EV แต่ละค่าจะมีค่าลูม่าที่คงที่
test_ev_compensation_basic.png
test_exposure
ทดสอบว่าได้รับค่าแสงคงที่เมื่อ ISO และเวลาเปิดรับแสงแตกต่างกัน ถ่ายภาพเป็นชุดโดยเลือก ISO และเวลาเปิดรับแสงเพื่อให้สมดุลกัน ผลลัพธ์ควรมีความสว่างเท่ากัน แต่ในลำดับภาพควรมีนอยส์มากกว่า ตรวจสอบว่าค่าเฉลี่ยพิกเซลตัวอย่างอยู่ใกล้กัน ตรวจสอบให้แน่ใจว่ารูปภาพไม่ถูกบีบให้เป็น 0 หรือ 1 (ซึ่งจะทำให้ดูเหมือนเส้นแบนๆ) การทดสอบยังสามารถเรียกใช้กับภาพ RAW ได้ด้วยการตั้งค่าแฟล็กการ debug
ในไฟล์กำหนดค่าของคุณ
API ที่ทดสอบ:
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
ผ่าน: ภาพมีความสว่างเท่าเดิม แต่มีจุดรบกวนมากขึ้นด้วย ISO ที่สูงขึ้น ระนาบ RGB จะแบนราบเมื่อค่าการ เปิดรับแสง ISO* คงที่เหนือพื้นที่เกนที่ทดสอบ
test_exposure_plot_means.png
![]() | ![]() | |
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.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.jpg | test_latching_i=01.jpg | test_latching_i=02.jpg | |
![]() | ![]() | ![]() | |
test_latching_i=03.jpg | test_latching_i=04.jpg | test_latching_i=05.jpg | |
![]() | ![]() | ![]() | |
test_latching_i=06.jpg | test_latching_i=07.jpg | test_latching_i=08.jpg | |
![]() | ![]() | ![]() | |
test_latching_i=09.jpg | test_latching_i=10.jpg | test_latching_i=11.jpg | |
![]() | |||
test_latching_i=12.jpg |
test_latching_plot_means.png
test_linearity
ทดสอบว่าการประมวลผลของอุปกรณ์สามารถเปลี่ยนเป็นพิกเซลเชิงเส้นได้ จับภาพต่อเนื่องโดยหันอุปกรณ์ไปที่เป้าหมายที่เหมือนกัน
API ที่ทดสอบ:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CaptureRequest#BLACK_LEVEL_LOCK
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
ผ่าน: ค่า R, G, B จะต้องเพิ่มขึ้นเชิงเส้นพร้อมกับความไวที่เพิ่มขึ้น
test_linearity_plot_means.png
test_locked_burst
ทดสอบการล็อค 3A และระเบิด YUV (โดยใช้การตั้งค่าอัตโนมัติ) การทดสอบนี้ออกแบบมาเพื่อให้ผ่านแม้ในอุปกรณ์จำกัดที่ไม่มี MANUAL_SENSOR
หรือ PER_FRAME_CONTROLS
การทดสอบจะตรวจสอบความสอดคล้องของภาพ YUV ขณะที่การตรวจสอบอัตราเฟรมอยู่ใน CTS
API ที่ทดสอบ:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_LOCK
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_LOCK
ผ่าน: การจับภาพดูสอดคล้องกัน
test_locked_burst_frame0.jpg
test_locked_burst_frame1.jpg
test_locked_burst_frame2.jpg
test_multi_camera_match
ทดสอบเพื่อดูว่ากล้องหลายตัวบนอุปกรณ์ให้ค่า RGB ที่คล้ายกันสำหรับแพตช์สีเทาหรือไม่
API ที่ทดสอบ:
-
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
-
android.hardware.camera2.CaptureRequest#LENS_FOCAL_LENGTH
ผ่าน: กล้องที่แตกต่างกันสร้างค่า RGB ที่คล้ายกันสำหรับแพตช์สีเทาเดียวกัน
test_multi_camera+match_yuv_fl=4.38.jpg
test_param_color_correction
ทดสอบว่าใช้พารามิเตอร์ android.colorCorrection.*
เมื่อตั้งค่า ถ่ายภาพด้วยค่าการเปลี่ยนรูปและค่าเกนที่แตกต่างกัน และทดสอบว่าค่าเหล่านี้ดูแตกต่างกันอย่างสอดคล้องกัน การแปลงและอัตราขยายถูกเลือกเพื่อทำให้เอาต์พุตเป็นสีแดงหรือสีน้ำเงินมากขึ้น ใช้โทนแมปเชิงเส้น การแมปโทนสีเป็นเทคนิคที่ใช้ในการประมวลผลภาพเพื่อแมปชุดสีหนึ่งกับอีกสีหนึ่งเพื่อประมาณลักษณะที่ปรากฏของภาพช่วงไดนามิกสูงในสื่อที่มีช่วงไดนามิกที่จำกัดมากขึ้น
API ที่ทดสอบ:
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
ผ่าน: เพิ่มค่า R และ B ตามการเปลี่ยนแปลง
test_param_color_correction_plot_means.png
*แกน x คือคำขอการจับภาพ: 0 = ความสามัคคี, 1 = การเพิ่มสีแดง, 2 = การเพิ่มสีน้ำเงิน
test_param_color_correction_req=0.jpg
test_param_color_correctness_req=1.jpg (เพิ่ม R)
test_param_color_correction_req=2.jpg (บูสต์ B)
test_param_exposure_time
ทดสอบว่าใช้พารามิเตอร์ android.sensor.exposureTime
API ที่ทดสอบ:
ผ่าน: แต่ละช็อตสว่างกว่าช็อตก่อนหน้า
test_param_exposure_time_frame0.jpg
test_param_exposure_time_plot.png
test_param_flash_mode
ทดสอบว่าใช้พารามิเตอร์ android.flash.mode
ตั้งค่าระดับแสงด้วยตนเองให้เป็นด้านมืด เพื่อให้เห็นได้ชัดว่ายิงแฟลชหรือไม่ และใช้โทนแมปเชิงเส้น ตรวจสอบตรงกลางด้วยภาพไทล์เพื่อดูว่ามีการไล่ระดับสีขนาดใหญ่ที่สร้างขึ้นเพื่อตรวจสอบว่าใช้แฟลชหรือไม่
API ที่ทดสอบ:
ผ่าน: ตรงกลางของภาพเรียงต่อกันมีการไล่ระดับสีขนาดใหญ่ หมายความว่ามีการยิงแฟลช
test_param_flash_mode_1.jpg
test_param_flash_mode_1_tile.jpg
ทดสอบ_param_flash_mode_2.jpg
test_param_flash_mode_2_tile.jpg
test_param_noise_reduction
ทดสอบว่าใช้พารามิเตอร์ android.noiseReduction.mode
อย่างถูกต้องเมื่อตั้งค่า ถ่ายภาพด้วยกล้องที่มีแสงน้อย ใช้อัตราขยายแบบอะนาล็อกสูงเพื่อให้แน่ใจว่าภาพที่ถ่ายจะมีสัญญาณรบกวน จับภาพสามภาพ สำหรับปิด NR, "รวดเร็ว" และ "คุณภาพสูง" ยังจับภาพที่มีค่าเกนต่ำและปิด NR และใช้ความแปรปรวนของสิ่งนี้เป็นพื้นฐาน ยิ่ง SNR (อัตราส่วนสัญญาณต่อสัญญาณรบกวน) สูงเท่าใด คุณภาพของภาพก็จะยิ่งดีขึ้นเท่านั้น
API ที่ทดสอบ:
ผ่าน: SNR จะแตกต่างกันไปตามโหมดลดสัญญาณรบกวนต่างๆ และทำงานคล้ายกับกราฟด้านล่าง
test_param_noise_reduction_plot_SNRs.png
0: ปิด 1: เร็ว 2: กองบัญชาการ 3: นาที 4: ZSL
test_param_noise_reduction_high_gain_nr=0.jpg
test_param_noise_reduction_high_gain_nr=1.jpg
test_param_noise_reduction_high_gain_nr=2.jpg
test_param_noise_reduction_high_gain_nr=3.jpg
test_param_noise_reduction_low_gain.jpg
test_param_sensitivity
ทดสอบว่าใช้พารามิเตอร์ android.sensor.sensitivity
การทดสอบจะเพิ่มความไวใน 5 ระดับโดยมีค่าแสงคงที่ในแต่ละช็อต
API ที่ทดสอบ:
ผ่าน: ค่า RGB ตรงกลาง 10% สว่างขึ้นด้วยความไวที่เพิ่มขึ้น
test_param_sensitivity_iso=0055.jpg
test_param_sensitivity_iso=1819.jpg
test_param_sensitivity_iso=3583.jpg
test_param_sensitivity_iso=5347.jpg
test_param_sensitivity_iso=7111.jpg
test_param_sensitivity_plot.png
test_param_shading_mode
ทดสอบว่าใช้พารามิเตอร์ android.shading.mode
API ที่ทดสอบ:
-
android.hardware.camera2.CaptureRequest#SHADING_MODE
-
android.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
-
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
ผ่าน: โหมดการแรเงาถูกเปลี่ยนและแผนผังการบังแสงของเลนส์จะได้รับการแก้ไขตามที่คาดไว้
test_param_shading_mode_ls_maps_mode_0_loop_0.png
test_param_shading_mode_ls_maps_mode_1_loop_0.png
test_param_shading_mode_ls_maps_mode_2_loop_0.png
test_param_tonemap_mode
ทดสอบว่าใช้พารามิเตอร์ android.tonemap.mode ใช้เส้นโค้งโทนแมปที่แตกต่างกันกับแต่ละแชนเนล R, G, B และตรวจสอบว่าภาพที่ส่งออกได้รับการแก้ไขตามที่คาดไว้ การทดสอบนี้ประกอบด้วยสองการทดสอบ การทดสอบที่ 1 และการทดสอบที่ 2
API ที่ทดสอบ:
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
ผ่าน:
- ทดสอบ 1: ทั้งสองภาพมีโทนแมปเชิงเส้น แต่ n=1 มีการไล่ระดับสีที่ชันกว่า ช่อง G (สีเขียว) สว่างกว่าสำหรับภาพ n=1
- ทดสอบ 2: โทนแมปเดียวกัน แต่ความยาวต่างกัน รูปภาพเหมือนกัน
![]() | ![]() | |
test_param_tonemap_mode_n=0.jpg | test_param_tonemap_mode_n=1.jpg |
test_post_raw_sensitivity_boost
ตรวจสอบการเพิ่มความไวหลัง RAW จับภาพ RAW และ YUV ชุดหนึ่งที่มีความไวต่างกัน โพสต์ชุดค่าผสมการเพิ่มความไว RAW และตรวจสอบว่าค่าเฉลี่ยพิกเซลที่ส่งออกตรงกับการตั้งค่าคำขอหรือไม่
API ที่ทดสอบ:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
-
android.hardware.camera2.CaptureRequest#CONTROL_POST_RAW_SENSITIVITY_BOOST
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
ผ่าน: ภาพ RAW จะมืดลงเมื่อบูสต์เพิ่มขึ้น ในขณะที่ภาพ YUV จะมีความสว่างคงที่
test_post_raw_sensitivity_boost_raw_s=3583_boost=0100.jpg
test_post_raw_sensitivity_boost_raw_s=1792_boost=0200.jpg
test_post_raw_sensitivity_boost_raw_s=0896_boost=0400.jpg
test_post_raw_sensitivity_boost_raw_s=0448_boost=0800.jpg
test_post_raw_sensitivity_boost_raw_s=0224_boost=1600.jpg
test_post_raw_sensitivity_boost_raw_s=0112_boost=3199.jpg
test_post_raw_sensitivity_boost_raw_plot_means.png
test_post_raw_sensitivity_boost_yuv_s=0112_boost=3199.jpg
test_post_raw_sensitivity_boost_yuv_s=0448_boost=0800.jpg
test_post_raw_sensitivity_boost_yuv_s=0896_boost=0400.jpg
test_post_raw_sensitivity_boost_yuv_s=1792_boost=0200.jpg
test_post_raw_sensitivity_boost_yuv_s=3585_boost=0100.jpg
test_post_raw_sensitivity_boost_yuv_plot_means.png
test_raw_burst_sensitivity
จับภาพชุดของภาพดิบที่มีเกนเพิ่มขึ้นและวัดจุดรบกวน จับภาพดิบเท่านั้นในการถ่ายภาพต่อเนื่อง
API ที่ทดสอบ:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
-
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
ผ่าน: แต่ละช็อตจะมีเสียงดังกว่าช็อตก่อนหน้า เนื่องจากเกนจะเพิ่มขึ้น
ใช้ความแปรปรวนของเซลล์กริดสถิติศูนย์
test_raw_burst_sensitivity_variance.png
test_raw_exposure
จับภาพชุดของภาพดิบด้วยเวลาเปิดรับแสงที่เพิ่มขึ้นและวัดค่าพิกเซล
API ที่ทดสอบ:
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
ผ่าน: การเพิ่ม ISO (เกน) ทำให้พิกเซลมีความไวต่อแสงมากขึ้น พล็อตจึงเลื่อนไปทางซ้าย
test_raw_exposure_s=55.png
(10⁰ คือ 1 มิลลิวินาที, 10¹ คือ 10 มิลลิวินาที, 10⁻¹ คือ 0.1 มิลลิวินาที)
test_raw_exposure_s=132.png
test_raw_exposure_s=209.png
test_raw_exposure_s=286.png
test_raw_exposure_s=363.png
test_raw_exposure_s=440.png
test_raw_sensitivity
จับภาพดิบชุดหนึ่งด้วยความไวแสงที่เพิ่มขึ้น และวัดสัญญาณรบกวน (ความแปรปรวน) ที่กึ่งกลางภาพ 10% ทดสอบว่าแต่ละช็อตมีเสียงดังกว่าครั้งก่อน
API ที่ทดสอบ:
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_SENSITIVITY_RANGE
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_WHITE_LEVEL
-
android.hardware.camera2.CameraCharacteristics#SENSOR_MAX_ANALOG_SENSITIVITY
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
ผ่าน: ความแปรปรวนเพิ่มขึ้นในแต่ละนัด
test_raw_sensitivity_variance.png
test_reprocess_noise_reduction
ทดสอบว่าใช้ android.noiseReduction.mode
สำหรับการประมวลผลคำขอใหม่ จับภาพที่ประมวลผลใหม่โดยที่กล้องมีแสงน้อย ใช้อัตราขยายแบบอะนาล็อกสูงเพื่อให้แน่ใจว่าภาพที่ถ่ายจะมีสัญญาณรบกวน จับภาพที่ประมวลผลใหม่สามภาพ สำหรับปิด NR, "รวดเร็ว" และ "คุณภาพสูง" จับภาพที่ประมวลผลใหม่โดยมีค่าเกนต่ำและปิด NR และใช้ค่าความแปรปรวนของค่านี้เป็นค่าพื้นฐาน
API ที่ทดสอบ:
ผ่าน: FAST >= OFF, HQ >= FAST, HQ >> OFF
พล็อต SNR ทั่วไปกับ NR_MODE
test_tonemap_sequence
ทดสอบลำดับภาพด้วยเส้นโค้งโทนแมปต่างๆ ถ่ายภาพแบบแมนนวล 3 ภาพด้วยโทนแมปเชิงเส้น ถ่ายภาพแบบแมนนวล 3 ภาพด้วยโทนแมปเริ่มต้น คำนวณเดลต้าระหว่างคู่เฟรมที่ต่อเนื่องกัน
API ที่ทดสอบ:
ผ่าน: มีเฟรมที่เหมือนกัน 3 เฟรมตามด้วยเฟรมที่เหมือนกัน 3 ชุดที่แตกต่างกัน
test_tonemap_sequence_i=0.jpg
test_tonemap_sequence_i=1.jpg
test_tonemap_sequence_i=2.jpg
test_tonemap_sequence_i=3.jpg
test_tonemap_sequence_i=4.jpg
test_tonemap_sequence_i=5.jpg
test_yuv_jpeg_all
ทดสอบว่าขนาดและรูปแบบที่รายงานทั้งหมดสำหรับการจับภาพทำงานได้ ใช้คำขอด้วยตนเองกับแผนผังโทนเชิงเส้นเพื่อให้ YUV และ JPEG ดูเหมือนกันเมื่อแปลงโดยโมดูล image_processing_utils
รูปภาพจะไม่ถูกบันทึกโดยค่าเริ่มต้น แต่สามารถบันทึกได้โดยการเปิดใช้งาน debug_mode
API ที่ทดสอบ:
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
-
android.graphics.ImageFormat#JPEG
ผ่าน: ศูนย์ภาพทั้งหมดมีความแตกต่าง RMS สูงสุด (ค่ารูทค่าเฉลี่ยกำลังสองของสัญญาณ) ในภาพที่แปลง RGB โดยมี 3% ของภาพ YUV ที่มีความละเอียดสูงสุด
test_yuv_jpeg_all.png
test_yuv_plus_dng
ทดสอบว่าขนาดและรูปแบบที่รายงานสำหรับการจับภาพทำงานได้หรือไม่
API ที่ทดสอบ:
ผ่าน: การทดสอบเสร็จสิ้นและส่งกลับภาพที่ร้องขอ
test_yuv_plus_dng.jpg
test_yuv_plus_jpeg
ทดสอบการจับภาพเฟรมเดียวเป็นทั้งเอาต์พุต YUV และ JPEG ใช้คำขอด้วยตนเองกับแผนผังโทนเชิงเส้นเพื่อให้ YUV และ JPEG ดูเหมือนกันเมื่อแปลงโดยโมดูล image_processing_utils
API ที่ทดสอบ:
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
-
android.graphics.ImageFormat#JPEG
ผ่าน: ภาพ YUV และ JPEG มีความคล้ายคลึงกันและมีความแตกต่างน้อยกว่า 1% RMS (ค่ารูทค่าเฉลี่ยกำลังสองของสัญญาณ)
![]() | ![]() | |
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 ที่ทดสอบ:
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_MODE
-
android.hardware.camera2.CaptureRequest#SHADING_MODE
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
ผ่าน: ภาพ YUV และ JPEG มีความคล้ายคลึงกันและมีความแตกต่างน้อยกว่า 3.5% RMS (ค่ารูทเฉลี่ยกำลังสองของสัญญาณ)
![]() | ![]() | |
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 ที่ทดสอบ:
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_MODE
-
android.hardware.camera2.CaptureRequest#SHADING_MODE
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
-
android.hardware.graphics.ImageFormat#RAW10
ผ่าน: ภาพ RAW10 และ YUV มีความคล้ายคลึงกันและมีความแตกต่างน้อยกว่า 3.5% RMS (ค่ารูทค่าเฉลี่ยกำลังสองของสัญญาณ)
![]() | ![]() | |
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 ที่ทดสอบ:
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_MODE
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_MODE
-
android.hardware.camera2.CaptureRequest#SHADING_MODE
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
-
android.hardware.graphics.ImageFormat#RAW12
ผ่าน: ภาพ RAW12 และ YUV มีความคล้ายคลึงกันและมีความแตกต่างน้อยกว่า 3.5% RMS (ค่ารูทค่าเฉลี่ยกำลังสองของสัญญาณ)
![]() | ![]() | |
test_yuv_plus_raw12_shading=1_raw.jpg | test_yuv_plus_raw12_shading=1_yuv.jpg |
ฉาก2_a
ฉาก2_a มีสามหน้าที่มีพื้นหลังสีเทาและเสื้อผ้าที่เป็นกลาง ใบหน้าถูกเลือกให้มีโทนสีผิวที่หลากหลาย
ฉาก2_a
ทดสอบ_auto_flash
ทดสอบว่าใช้แฟลชอัตโนมัติในฉากที่มืด ตรวจสอบว่ามีการใช้แฟลชอัตโนมัติโดยตรวจสอบว่าตรงกลางของภาพเรียงต่อกันมีการไล่ระดับสีขนาดใหญ่ ในการเปิดใช้แฟลชอัตโนมัติ ต้องปิดแท็บเล็ตและไฟในอุปกรณ์ทดสอบ แท็บเล็ตปิดโดยการทดสอบ และสามารถปิดไฟโดยอัตโนมัติด้วยตัวควบคุม Arduino ฉากต้องมืดสนิทเพื่อให้การทดสอบทำงานได้อย่างถูกต้อง ด้วยเหตุนี้ ช่องเปิดแท็บเล็ตด้านหลังจะต้องถูกปิดโดยแท็บเล็ตฉากทั้งหมด และช่องเปิดด้านหน้าต้องปิดด้วยรูรับแสงและโทรศัพท์ DUT เพื่อป้องกันไม่ให้แสงเล็ดลอดเข้ามาในอุปกรณ์
API ที่ทดสอบ:
-
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#FLASH_MODE
ผ่าน: ตรงกลางของภาพเรียงต่อกันมีการไล่ระดับสีขนาดใหญ่ ซึ่งหมายถึงการยิงแฟลชอัตโนมัติ
ทดสอบผล
จับเฟรมสำหรับเอฟเฟกต์กล้องที่รองรับและตรวจสอบว่าสร้างอย่างถูกต้องหรือไม่ การทดสอบจะตรวจสอบเฉพาะเอฟเฟ็กต์ OFF
และ MONO
แต่จะบันทึกภาพสำหรับเอฟเฟ็กต์ที่รองรับทั้งหมด
API ที่ทดสอบ:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_EFFECTS
-
android.hardware.camera2.CaptureRequest#CONTROL_EFFECT_MODE
ผ่าน: จับภาพฉากโดย OFF
เอฟเฟกต์และภาพขาวดำโดยตั้งค่าเอฟเฟกต์เป็น MONO
test_effects_MONO.jpg
test_format_combo
ทดสอบชุดรูปแบบเอาต์พุตต่างๆ
API ที่ทดสอบ:
android.hardware.camera2.CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP
android.hardware.camera2.params.StreamConfigurationMap#getOutputSizes()
android.hardware.camera2.CameraCaptureSession#captureBurst()
ผ่าน: จับชุดค่าผสมทั้งหมดได้สำเร็จ
test_jpeg_คุณภาพ
ทดสอบคุณภาพการบีบอัด JPEG ของกล้อง ยกระดับคุณภาพ JPEG ผ่าน android.jpeg.quality
และรับรองว่า Quantization Tables เปลี่ยนแปลงอย่างถูกต้อง
API ที่ทดสอบ:
ผ่าน: เมทริกซ์เชิงปริมาณลดลงเมื่อคุณภาพเพิ่มขึ้น (เมทริกซ์แสดงถึงตัวประกอบการหาร)
ค่าเฉลี่ยของกล้องหลัง Pixel 4 luma/chroma DQT matrix เทียบกับคุณภาพ JPEG
ตัวอย่างการทดสอบที่ล้มเหลว
โปรดทราบว่าสำหรับรูปภาพคุณภาพต่ำมาก (jpeg.quality < 50) จะไม่มีการบีบอัดเพิ่มขึ้นในเมทริกซ์การวัดปริมาณ
test_num_faces
ทดสอบการตรวจจับใบหน้า
API ที่ทดสอบ:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
ผ่าน: ค้นหาสามใบหน้า
test_num_faces_fd_mode_1.jpg
ฉาก2_b
test_auto_per_frame_control
ทดสอบคุณสมบัติ PER_FRAME_CONTROL
สำหรับคำขอบันทึกอัตโนมัติ
API ที่ทดสอบ:
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
-
android.hardware.camera2.CaptureResult#CONTROL_AWB_STATE
-
android.hardware.camera2.CaptureRequest#CONTROL_POST_RAW_SENSITIVITY_BOOST
-
android.hardware.camera2.CaptureRequest#LENS_FOCUS_DISTANCE
-
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureRequest#SENSOR_SENSITIVITY
-
android.hardware.camera2.CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE
-
android.hardware.camera2.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
-
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
-
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
ผ่าน: คุณสมบัติ PER_FRAME_CONTROL
ทั้งหมดมีอยู่
ทดสอบ_auto_per_frame_control_frame_1.jpg
ทดสอบ_auto_per_frame_control_frame_10.jpg
ทดสอบ_auto_per_frame_control_frame_29.jpg
test_auto_per_frame_control_plot.png
test_num_faces
ทดสอบการตรวจจับใบหน้าด้วยโทนสีผิวที่หลากหลายมากขึ้นในฉากใบหน้า
API ที่ทดสอบ:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
ผ่าน: ค้นหา 3 ใบหน้า
test_num_faces_fd_mode_1.jpg
test_yuv_jpg_capture_sameness
จับภาพสองภาพโดยใช้รูปแบบ YUV และ JPEG ทั่วไปที่ใหญ่ที่สุดที่มีอัตราส่วนภาพเดียวกันกับรูปแบบ JPEG ที่ใหญ่ที่สุดไม่เกินความละเอียด 1920x1440 ตั้งค่า jpeg.quality
เป็น 100 และบันทึกคำขอพื้นผิวคู่ แปลงทั้งสองภาพเป็นอาร์เรย์ RGB และคำนวณความแตกต่างของค่าเฉลี่ยกำลังสองของราก 3 มิติ (RMS) ระหว่างสองภาพ
API ที่ทดสอบ:
-
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASES
-
android.hardware.camera2.CaptureRequest#JPEG_QUALITY
-
android.graphics.ImageFormat#JPEG
ผ่าน: ภาพ YUV และ JPEG มีความคล้ายคลึงกันและมีความแตกต่างน้อยกว่า 1% RMS (ค่ารูทค่าเฉลี่ยกำลังสองของสัญญาณ)
ฉาก2_c
test_num_faces
ทดสอบการตรวจจับใบหน้าด้วยโทนสีผิวที่หลากหลายมากขึ้นในฉากใบหน้า
API ที่ทดสอบ:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
ผ่าน: ค้นหา 3 ใบหน้า
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 ที่ทดสอบ:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
ผ่าน: ค้นหา 3 ใบหน้า
ฉาก2_e
test_continuous_picture
จับภาพเฟรมความละเอียด VGA 50 เฟรมด้วยคำขอจับภาพก่อน โดยตั้งค่า android.control.afMode = 4 (CONTINUOUS_PICTURE).
API ที่ทดสอบ:
-
android.hardware.camera2.CaptureRequest#CONTROL_AF_MODE
-
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
-
android.hardware.camera2.CaptureResult#CONTROL_AF_STATE
-
android.hardware.camera2.CaptureResult#CONTROL_AWB_STATE
ผ่าน: ระบบ 3A จะสิ้นสุดการจับภาพ 50 เฟรม
test_num_faces
ทดสอบการตรวจจับใบหน้าด้วยโทนสีผิวที่หลากหลายมากขึ้นในฉากใบหน้า
API ที่ทดสอบ:
-
android.hardware.camera2.CaptureResult#STATISTICS_FACES
-
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
ผ่าน: ค้นหา 3 ใบหน้า
ฉากที่ 3
Scene3 ใช้แผนภูมิ ISO12233 และการทดสอบส่วนใหญ่ใช้วิธีแยกแผนภูมิเพื่อค้นหาแผนภูมิในฉาก ด้วยเหตุนี้ รูปภาพที่บันทึกไว้ส่วนใหญ่จึงไม่มีเส้นขอบเหมือนรูปภาพสำหรับฉากที่ 1, 2 หรือ 4 แต่จะมีเพียงแผนภูมิเท่านั้น
test_3a_consistency
ทดสอบความสอดคล้อง 3A
API ที่ทดสอบ:
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_GAINS
-
android.hardware.camera2.CaptureRequest#COLOR_CORRECTION_TRANSFORM
-
android.hardware.camera2.CaptureRequest#LENS_FOCUS_DISTANCE
-
android.hardware.camera2.CaptureResult#SENSOR_EXPOSURE_TIME
-
android.hardware.camera2.CaptureResult#SENSOR_SENSITIVITY
ผ่าน: 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.jpg
test_edge_enhancement_edge=1.jpg (โหมดเร็ว)
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.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:
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_MINIMUM_FOCUS_DISTANCE
-
android.hardware.camera2.CaptureResult#LENS_STATE
-
android.hardware.camera2.CaptureResult#LENS_FOCUS_DISTANCE
-
android.hardware.camera2.CaptureResult#SENSOR_TIMESTAMP
-
android.hardware.camera2.CaptureRequest#LENS_FOCUS_DISTANCE
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:
-
android.hardware.camera2.CaptureRequest#EDGE_MODE
-
android.hardware.camera2.CaptureRequest#REPROCESS_EFFECTIVE_EXPOSURE_FACTOR
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.png
scene4
Scene4 consists of a black circle on a white background inside a square.
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:
-
android.hardware.camera2.CaptureResult#LENS_DISTORTION
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
-
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
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:
-
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
-
android.hardware.camera2.CameraCharacteristics#LENS_DISTORTION
-
android.hardware.camera2.CameraCharacteristics#LENS_INTRINSIC_CALIBRATION
-
android.hardware.camera2.CameraCharacteristics#LENS_POSE_ROTATION
-
android.hardware.camera2.CameraCharacteristics#LENS_POSE_TRANSLATION
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
-
android.hardware.camera2.CaptureRequest#SCALER_CROP_REGION
-
android.hardware.camera2.CaptureRequest#DISTORTION_CORRECTION_MODE
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:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
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:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.hardware.camera2.CaptureResult#LENS_DISTORTION
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
-
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
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:
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
-
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
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
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:
-
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
-
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
-
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
-
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
Pass: Relative size of captured circle is accurate against requested zoom ratio to ensure camera is zooming correctly.
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 .
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:
-
android.hardware.camera2.CameraCharacteristics#LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE
-
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
-
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
-
android.hardware.camera2.params.OutputConfiguration#setPhysicalCameraId()
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:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
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
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
APIs tested:
-
android.hardware.camera2.CameraCharacteristics#LENS_FACING
-
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE
-
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
-
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
-
android.hardware.camera2.CaptureRequest#SENSOR_TIMESTAMP
-
android.hardware.camera2.CaptureResult#SENSOR_ROLLING_SHUTTER_SKEW
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:
-
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
-
android.media.MediaRecorder
-
android.media.CamcorderProfile
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