이 페이지에서는 Android 호환성 테스트 모음(CTS) 인증 도구의 일부인 카메라 이미지 테스트 모음(ITS)의 전체 테스트 목록을 제공합니다. ITS 테스트는 기능 테스트입니다. 즉, 이미지 품질을 측정하는 것이 아니라 알려진 모든 카메라 기능이 예상대로 작동하는지 측정하는 것입니다. 이 문서를 통해 개발자와 테스터는 개별 테스트에서 실행하는 작업과 테스트 실패를 디버그하는 방법을 알 수 있습니다.
카메라 ITS는 필수 카메라 속성과 API 수준, 미디어 성능 등급(MPC) 수준을 기준으로 테스트를 제어합니다. API 수준의 경우 ITS는 ro.product.first_api_level
을 사용하여 더 낮은 API 수준의 기능에 관한 부정적인 사용자 환경을 테스트하는 특정 API 수준에 추가된 테스트를 제어합니다. ITS는 ro.vendor.api_level
을 사용하여 새 하드웨어 기능이 필요한 특정 API 수준에 추가된 기능의 테스트를 제어합니다. ro.odm.build.media_performance_class
가 기기에 정의된 경우 ITS에서는 MPC 수준에 따라 특정 테스트를 실행해야 합니다.
테스트는 다음과 같이 장면별로 그룹화됩니다.
- scene0: 메타데이터, 잡음, 자이로스코프, 진동 감지
- scene1: 노출, 감도, EV 보정, YUV와 JPEG/RAW 비교
- scene2: 얼굴 인식, 색상 장면 또는 완전한 어두움이 필요한 테스트
- scene3: 에지 개선, 렌즈 이동
- scene4: 가로세로 비율, 자르기, 시야
- scene5: 렌즈 음영
- scene6: 확대/축소
- scene_extensions: 카메라 확장 프로그램
- sensor_fusion: 카메라/자이로스코프 타이밍 오프셋
각 장면에 관한 설명은 개별 섹션을 참고하세요.
scene0
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
통과: 프레임과 프레임 사이에 최소 30ms 델타가 있습니다.
test_jitter_plot.png(작은 y축 범위에 유의하세요. 잡음은 사실 이 도표에서는 작습니다.)
test_metadata
메타데이터 항목의 유효성을 테스트합니다. 캡처 결과와 카메라 특성 객체를 확인합니다. 이 테스트에서는 auto_capture_request
노출과 게인 값을 사용합니다. 이미지 콘텐츠가 중요하지 않기 때문입니다.
테스트 대상 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% 미만입니다.
test_read_write
기기가 캡처 메타데이터를 다시 읽어 올바른 노출과 게인 값을 작성하는지 테스트합니다.
테스트 대상 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
통과: Camera Audio Restriction API로 음소거했을 때 기기가 진동하지 않습니다.
scene1
scene1은 회색 차트입니다. 회색 차트는 카메라 시야의 중앙 30%를 포함해야 합니다. 중앙 영역에는 특징이 없으므로 회색 차트는 3A(자동 노출, 자동 화이트 밸런스, 자동 초점)를 적절히 테스트할 것으로 예상됩니다. 그러나 캡처 요청은 3A가 수렴되기에 충분한 특징이 포함된 전체 장면을 지정합니다.
RFoV 카메라는 WFoV 또는 RFoV 테스트 장비에서 테스트할 수 있습니다. RFoV 카메라를 WFoV 테스트 장비에서 테스트하면 차트는 FoV에서 회색 차트의 일부 경계를 보장하도록 ⅔만큼 조정되어 3A 수렴을 지원합니다. 카메라 테스트 장비에 관한 자세한 내용은 카메라 ITS-in-a-box를 참고하세요.
scene1: 원본 크기 차트(왼쪽). ⅔만큼 조정된 차트(오른쪽).
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 상태 머신을 테스트합니다. AE가 사용 중지된 수동 요청 5개를 캡처합니다. 마지막 요청에는 AE 사전 캡처 트리거가 있습니다. 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
통과: 각 캡처 결과에서 보고된 수동 화이트 밸런스 게인 및 변환이 카메라 3A 알고리즘의 자동 화이트 밸런스 estimate
와 일치합니다.
test_auto_vs_manual_auto.jpg
test_auto_vs_manual_wb.jpg
test_auto_vs_manual_manual_wb_tm.jpg
test_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
수동 캡처 설정으로 이미지 50개를 5번 버스트하고 모두 동일한지 확인합니다. 이 테스트는 다르게 처리되거나 아티팩트가 있는 프레임이 산발적으로 있는지 확인하는 데 사용할 수 있습니다.
테스트 대상 API:
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_MANUAL_SENSOR
android.hardware.camera2.CameraMetadata#SYNC_MAX_LATENCY_PER_FRAME_CONTROL
통과: 이미지가 시각적으로 동일하고 RGB 값도 동일합니다.
실패: 각 버스트 시작 시 RGB 평균 차트의 급등 또는 하락을 보여 줍니다.
first_API_level
이 30 미만인 경우 허용 오차는 3%입니다.first_API_level
이 30 이상인 경우 허용 오차는 2%입니다.
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
DNG 원시 모델 매개변수가 올바른지 확인합니다. 도표는 감도 범위에 걸쳐 캡처된 원본 장면에서 회색 카드의 중앙 패치에 관한 측정된 편차를 설명하고 이러한 값을 카메라 HAL의 DNG 노이즈 모델에서 각 감도에 예상되는 편차와 비교합니다(캡처 결과 객체에 반환된 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) 보정이 적용되는지 테스트합니다. 테스트에서는 8단계로 노출을 늘리고 예상 밝기를 기준으로 측정 밝기를 확인합니다. 예상값은 EV 보정이 적용되지 않은 이미지의 밝기로 계산되며 계산값이 실제 이미지 값 범위를 초과하면 예상값이 채워집니다. 예상값과 측정값이 일치하지 않거나 이미지가 5단계 이내에 과다 노출되면 테스트가 실패합니다.
테스트 대상 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
통과: 이미지가 5단계 내에서 과다 노출되지 않고 노출을 늘리는 것을 보여 줍니다.
test_ev_compensation_advanced_plot_means.png
test_ev_compensation_basic
CONTROL_AE_COMPENSATION_STEP
으로 만든 범위를 사용하여 EV 보상이 적용되는지 테스트합니다. 8개의 프레임이 각 보상 값에서 캡처됩니다.
테스트 대상 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 보정 설정에서 캡처된 8개의 프레임은 안정적인 루마 값이 있습니다.
test_ev_compensation_basic.png
test_exposure
ISO 및 노출 시간이 다양할 때 일정한 노출이 달성되는지 테스트합니다. ISO 및 노출 시간이 서로 균형을 이루도록 선택한 일련의 장면을 찍습니다.
결과의 밝기는 동일해야 하지만 시퀀스에서 이미지의 노이즈가 더 커야 합니다. 샘플 픽셀의 평균값이 서로 비슷한지 확인합니다. 이미지가 0 또는 1로 고정되지 않는지 확인합니다(이미지를 직선처럼 보이게 함). 테스트는 구성 파일에서 debug
플래그를 설정하여 RAW 이미지로 실행할 수도 있습니다.
테스트 대상 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나 노출이 증가했고 test_latching_plot_means.png
에서 더 높은 RGB 평균을 보여 줍니다.
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
가 없는 제한된 기기에서도 통과하도록 설계되었습니다.
테스트는 프레임 속도 검사가 CTS에 있는 동안 YUV 이미지의 일관성을 확인합니다.
테스트 대상 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_param_color_correction
설정할 때 android.colorCorrection.*
매개변수가 적용되는지 테스트합니다.
다른 변환 및 게인 값을 사용하여 장면을 찍고 이에 따라 장면이 다르게 보이는지 테스트합니다. 변환 및 게인을 선택하여 출력이 점점 더 빨간색이나 파란색이 되도록 합니다. 선형 톤맵을 사용합니다. 톤 매핑은 이미지 처리에서 사용되는 기법으로, 한 가지 색상 세트를 다른 색상 세트에 매핑하여 동적 범위가 더 제한된 매체의 HDR(High Dynamic Range) 이미지 모양을 추정합니다.
테스트 대상 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 = unity, 1=red boost, 2= blue boost
test_param_color_correction_req=0.jpg
test_param_color_correctness_req=1.jpg (R boost)
test_param_color_correction_req=2.jpg (B boost)
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
test_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: OFF, 1: FAST, 2: HQ, 3: MIN , 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:
통과: 중앙 10%의 RGB 평균이 높아진 감도로 더 밝아집니다.
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 채널에 다른 톤맵 곡선을 적용하고 출력 이미지가 예상대로 수정되는지 확인합니다. 이 테스트는 test1 및 test2라는 두 가지 테스트로 구성됩니다.
테스트 대상 API:
android.hardware.camera2.CameraMetadata#TONEMAP_MODE_CONTRAST_MODE
android.hardware.camera2.CameraMetadata#TONEMAP_MODE_FAST
android.hardware.camera2.CaptureRequest#TONEMAP_CURVE
android.hardware.camera2.CaptureRequest#TONEMAP_MODE
통과:
- test1: 두 이미지에 모두 선형 톤맵이 있지만 n=1의 그라데이션이 더 가파릅니다. n=1 이미지의 경우 G(녹색) 채널이 더 밝습니다.
- test2: 톤맵은 동일하지만 길이가 다릅니다. 이미지는 동일합니다.
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⁰은 1ms, 10¹은 10ms, 10⁻¹은 0.1ms)
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
통과: 모든 이미지 중앙은 RGB 변환 이미지에서 최고 해상도 YUV 이미지의 3%로 최대 RMS(신호의 제곱 평균값) 차이를 보유합니다.
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 이미지가 유사하고 RMS(신호의 제곱 평균값) 차이가 1% 미만입니다.
test_yuv_plus_jpg_jpg.jpg | test_yuv_plus_jpeg_yuv.jpg |
test_yuv_plus_raw
지원되는 경우 단일 프레임을 RAW/RAW10/RAW12 및 YUV 출력으로 모두 캡처하는 것을 테스트합니다. 선형 톤맵이 있는 수동 요청을 사용하므로 RAW 및 YUV가 동일할 것으로 예상됩니다. RGB 변환 이미지의 중앙 10% 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
android.hardware.graphics.ImageFormat#RAW12
통과: YUV 및 RAW 이미지가 유사하고 RMS(신호의 제곱 평균값) 차이가 3.5% 미만입니다.
test_yuv_plus_raw_shading=1_raw.jpg | test_yuv_plus_raw_shading=1_yuv.jpg |
scene2_a
scene2_a에는 세 가지 얼굴이 있고 배경도 회색, 옷도 회색입니다. 다양한 피부색을 나타내기 위해 선택된 얼굴입니다. 차트는 얼굴 인식이 최적으로 작동하도록 올바른 방향이어야 합니다.
scene2_a
test_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
통과: 타일 이미지의 중앙에 자동 플래시가 실행되었음을 의미하는 큰 그라데이션이 있습니다.
test_autoframing
카메라 기기의 자동 프레이밍 동작을 테스트합니다. 장면의 어떤 얼굴도 표시되지 않도록 큰 확대/축소를 실행하고, CaptureRequest
의 AUTOFRAMING
을 True
로 설정하여 자동 프레이밍을 사용 설정하고, 상태가 수렴될 때(즉, CaptureResult
의 AUTOFRAMING_STATE
가 AUTOFRAMING_STATE_CONVERGED
로 설정될 때) 원래 장면의 모든 얼굴이 감지될 수 있는지 확인합니다.
테스트 대상 API:
android.hardware.camera2.CameraCharacteristics#CONTROL_AUTOFRAMING_AVAILABLE
android.hardware.camera2.CaptureRequest#CONTROL_AUTOFRAMING
android.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMING
android.hardware.camera2.CaptureResult#CONTROL_AUTOFRAMING_STATE
통과: 세 얼굴이 모두 감지되었습니다.
test_display_p3
ColorSpaceProfiles
API를 사용하여 JPEG로 Display P3 캡처를 테스트합니다. 캡처된 JPEG의 헤더에 적절한 ICC 프로필이 있는지 테스트하고 이미지에 sRGB 색 공간 밖의 색상이 포함되어 있는지 테스트합니다.
테스트 대상 API:
android.hardware.camera2.params.ColorSpaceProfiles
android.hardware.camera2.params.SessionConfiguration#setColorSpace
통과: JPEG에 Display P3 ICC 프로필과 sRGB 색 공간 밖의 색상이 포함되어 있습니다.
test_effects
지원되는 카메라 효과의 프레임을 캡처하고 올바르게 생성되는지 확인합니다. 이 테스트는 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_combos
다양한 출력 형식 조합을 테스트합니다.
테스트 대상 API:
android.hardware.camera2.CameraCharacteristics#SCALER_STREAM_CONFIGURATION_MAP
android.hardware.camera2.params.StreamConfigurationMap#getOutputSizes()
android.hardware.camera2.CameraCaptureSession#captureBurst()
통과: 모든 조합이 성공적으로 캡처됩니다.
test_jpeg_quality
카메라 JPEG 압축 품질을 테스트합니다. android.jpeg.quality
를 통해 JPEG 품질을 조정하고 양자화 테이블이 올바르게 변경되는지 확인합니다.
테스트 대상 API:
통과: 품질 향상으로 양자화 행렬이 감소합니다. (행렬은 나눗셈 인수를 나타냅니다.)
Pixel 4 후면 카메라 루마/크로마 DQT 행렬 평균 대 JPEG 품질
실패한 테스트 예
품질이 매우 낮은 이미지(jpeg.quality < 50)의 경우 양자화 행렬에서 압축이 증가하지 않습니다.
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_preview_min_frame_rate
미리보기 프레임 속도가 어두운 장면에서 올바르게 줄어드는지 테스트합니다. 이 테스트가 올바로 작동하려면 테스트 장비의 조명을 컨트롤러로 끄거나 테스트 운영자가 수동으로 꺼야 합니다.
테스트 대상 API:
android.hardware.camera2.CameraCharacteristics#CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.hardware.camera2.CaptureResult#CONTROL_AE_TARGET_FPS_RANGE
android.media.CamcorderProfile
android.media.MediaRecorder
통과: 미리보기 프레임 속도가 요청된 프레임 속도 범위의 최소 수준이며 프레임 간 변형이 테스트에서 설정된 절대 허용 오차보다 적습니다.
test_reprocess_uv_swap
YUV 재처리가 U 평면과 V 평면을 교환하지 않는지 테스트합니다. 이는 재처리된 이미지와 재처리되지 않은 캡처 간 절대 차이 합계(SAD)를 계산하여 감지됩니다. 재처리된 캡처의 출력 U 평면과 V 평면을 교환하면 SAD가 증가하는 경우 출력에 올바른 U 평면과 V 평면이 있는 것으로 가정됩니다.
테스트 대상 API:
android.hardware.camera2.CameraDevice#createCaptureSession
android.hardware.camera2.CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_YUV_REPROCESSING
android.hardware.camera2.CaptureRequest#EDGE_MODE
android.hardware.camera2.CaptureResult#NOISE_REDUCTION_MODE
통과: U 평면과 V 평면이 교환되지 않습니다.
test_reprocess_uv_swap.png
scene2_b
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_jpeg_capture_sameness
해상도가 1920x1440을 초과하지 않는 최대 JPEG 형식과 가로세로 비율이 동일한 가장 큰 일반적인 YUV 및 JPEG 형식을 사용하여 두 개의 이미지를 캡처합니다.
jpeg.quality
를 100으로 설정하고 이중 노출 영역 요청을 캡처합니다. 두 이미지를 RGB 배열로 변환하고 두 이미지 간의 3D 제곱 평균값(RMS) 차이를 계산합니다.
테스트 대상 API:
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASES
android.hardware.camera2.CaptureRequest#JPEG_QUALITY
android.graphics.ImageFormat#JPEG
통과: YUV 및 JPEG 이미지가 유사하고 RMS(신호의 제곱 평균값) 차이가 1% 미만입니다.
scene2_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
CDD의 섹션 2.2.7.2 카메라에 지정된 대로 S 성능 클래스의 JPEG 캡처 지연 시간을 테스트합니다.
통과: 두 개의 기본 카메라 모두 ITS 조명 조건(3000K)에서 CTS 카메라 PerformanceTest로 측정한 1080p 해상도의 camera2 JPEG 캡처 지연 시간이 1,000ms 미만이어야 합니다(MUST).
test_camera_launch_perf_class
CDD의 섹션 2.2.7.2 카메라에 지정된 대로 S 성능 클래스의 카메라 실행 지연 시간을 테스트합니다.
통과: 두 개의 기본 카메라 모두 ITS 조명 조건(3000K)에서 CTS 카메라 PerformanceTest로 측정한 camera2 시작 지연 시간(카메라를 첫 번째 미리보기 프레임으로 열기)이 600ms 미만이어야 합니다(MUST).
scene2_d
test_num_faces
얼굴 장면에서 피부색의 다양성을 높여 얼굴 인식을 테스트합니다.
테스트 대상 API:
android.hardware.camera2.CaptureResult#STATISTICS_FACES
android.hardware.camera2.CaptureResult#STATISTICS_FACE_DETECT_MODE
통과: 얼굴을 3개 찾습니다.
scene2_e
test_continuous_picture
캡처 요청을 먼저 android.control.afMode = 4 (CONTINUOUS_PICTURE).
로 설정하여 VGA 해상도 50프레임을 캡처합니다.
테스트 대상 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개 찾습니다.
scene2_f
scene2_f에 배경과 옷이 모두 흰색인 얼굴이 3개 있습니다. 얼굴의 피부색은 다양하며 배경과 크게 대비됩니다.
scene2_f
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
scene3
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 (고화질 모드)
test_flip_mirror
CDD 섹션 7.5.2 전면 카메라 [C-1-5]에 따라 이미지 방향이 올바른지 테스트합니다.
미러링되거나 뒤집히거나 회전된 이미지는 중앙 부근의 다이아몬드 모양으로 식별할 수 있습니다.
통과: 이미지가 뒤집히거나 미러링되거나 회전되지 않습니다.
test_flip_mirror_scene_patch.jpg
test_landscape_to_portrait
가로 모드에서 세로 모드 재정의가 가로 모드 방향 센서에서 올바르게 작동하는지 테스트합니다.
테스트 대상 API:
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_ROTATE_AND_CROP_MODES
android.hardware.camera2.CameraCharacteristics#SENSOR_ORIENTATION
android.hardware.camera2.CameraCharacteristics#getCameraCharacteristics
통과: 테스트에서 예상 회전으로 차트를 찾을 수 있습니다(가로 모드에서 세로 모드 재정의가 사용 중지된 경우 0도, 사용 설정된 경우 90도).
test_landscape_to_portrait.png
test_lens_movement_reporting
렌즈 이동 플래그가 올바르게 보고되는지 테스트합니다. 최적의 초점 거리(3A로 확인)에서 첫 12개 프레임과 최소 초점 거리에서 마지막 12개 프레임으로 24개 이미지 버스트를 캡처합니다. 12프레임 주위에서 렌즈가 움직이면서 선명도가 떨어집니다. 선명도는 렌즈가 최종 위치로 이동하면서 결국 안정화됩니다. 렌즈 이동 플래그는 최적 초점 거리에서 렌즈가 고정된 첫 몇 개 프레임과 최소 초점 거리에서 렌즈가 고정된 마지막 몇 개 프레임에서 선명도가 중간인 모든 프레임에 어셜션되어야 합니다. 렌즈가 이동하는 정확한 프레임은 중요하지 않습니다. 렌즈가 이동할 때 이동 플래그가 어설션되는지 확인하는 것이 중요합니다.
테스트 대상 API:
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
통과: 렌즈 이동 플래그는 선명도가 변경된 프레임에서 True
입니다.
실패 메커니즘:
test_log.DEBUG
의lens_moving: True
(android.hardware.camera2.CaptureResult#LENS_STATE
= 1)는 선명도가 변경되지 않는 프레임에서만 어설션됩니다.test_log.DEBUG
의lens_moving: False
(android.hardware.camera2.CaptureResult#LENS_STATE
= 0)가 있는 프레임은 최적 초점 거리의 처음 몇 프레임 또는 최소 초점 거리의 마지막 몇 프레임과 비교하여 선명도 차이가 있습니다.
test_reprocess_edge_enhancement
에지 개선을 위해 지원되는 재처리 메서드가 올바르게 작동하는지 테스트합니다. 지정된 재처리 에지 모드로 캡처 요청을 처리하고 재처리 에지 모드가 사용 중지된 상태로 캡처하는 다른 모드를 비교합니다.
테스트 대상 API:
android.hardware.camera2.CaptureRequest#EDGE_MODE
android.hardware.camera2.CaptureRequest#REPROCESS_EFFECTIVE_EXPOSURE_FACTOR
통과: 다양한 에지 모드의 선명도가 정확합니다. HQ
(모드 2)는 OFF
(모드 0)보다 더 선명하고, 다른 모드 간의 개선율도 비슷합니다.
test_reprocess_edge_enhancement_plot.png
scene4
scene4는 정사각형 내부 흰색 배경에 검은색 원으로 구성되어 있습니다.
scene4
test_aspect_ratio_and_crop
이미지가 이미지 파이프라인에서 예기치 않게 왜곡되거나 잘리는지 테스트합니다. 모든 형식에서 원의 사진을 찍습니다. 원이 왜곡되지 않았는지, 원이 이미지 중앙에서 이동하지 않았는지, 원이 다른 가로세로 비율이나 해상도로 잘못 크기가 변경되지 않았는지 확인합니다.
테스트 대상 API:
android.hardware.camera2.CaptureResult#LENS_DISTORTION
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
통과: 이미지가 늘어나지 않고 이미지 중앙이 3% 이상 차이 나지 않으며 가능한 최대 FoV(시야)가 유지됩니다.
실패 메커니즘:
- 캡처된 이미지의 원이 처리 파이프라인으로 왜곡됩니다.
- 낮은 해상도 이미지가 고해상도 이미지와 저해상도 이미지 간에 다른 FoV를 만드는 이미지 파이프라인에서 이중으로 잘립니다.
- 캡처된 이미지의 원이 이미지의 높이나 너비를 줄이는 극단적인 가로세로 비율 캡처 요청으로 인해 잘립니다.
- 캡처된 이미지의 원 중앙에 반사가 있어 완전히 채워지지 않은 것처럼 보입니다.
test_multi_camera_alignment
다중 카메라 시스템의 카메라 배치와 관련된 카메라 보정 매개변수를 테스트합니다. 다중 카메라 물리적 하위 카메라를 사용하여 물리적 카메라 중 하나로 사진을 찍습니다. 원 중심을 찾습니다. 원 중심을 각 카메라의 세계 좌표에 투영합니다. 세계 좌표에서 카메라의 원 중심 간의 차이를 비교합니다. 세계 좌표를 다시 픽셀 좌표로 재투영하고 유효성 검사로 원본과 비교합니다. 카메라의 초점 거리가 다른지 확인하는 원 크기를 비교합니다.
테스트 대상 API:
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
android.hardware.camera2.CameraCharacteristics#LENS_DISTORTION
android.hardware.camera2.CameraCharacteristics#LENS_INFO_AVAILABLE_FOCAL_LENGTHS
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
통과: 카메라 보정 데이터와 초점 거리를 사용하는 캡처된 이미지에 비해 투영된 이미지에서 원 중심과 크기가 예상한 것과 같습니다.
실패 메커니즘:
LENS_INTRINSIC_CALIBRATION
,LENS_POSE_TRANSLATION
또는LENS_POSE_ROTATION
이 설계 값이며 실제 보정 데이터가 아닙니다.- 카메라 시스템이 테스트 설정에 적합하지 않습니다. 예를 들어 RFoV 테스트 장비로 광각 및 초광각 카메라 시스템을 테스트합니다. 자세한 내용은 카메라 ITS-in-a-box FAQ1을 참고하세요.
test_preview_aspect_ratio_and_crop
스틸 캡처를 위한 test_aspect_ratio_and_crop 테스트와 마찬가지로 이 테스트는 지원되는 미리보기 형식을 확인하여 미리보기 프레임이 부적절하게 늘어나거나 잘리지 않도록 합니다. 원의 가로세로 비율이 변경되지 않고 잘린 이미지가 원을 프레임의 중앙에 유지하며 원 크기가 일정한 형식이나 다른 해상도에서 변경되지 않는지(시야 검사) 확인합니다.
테스트 대상 API:
android.hardware.camera2.CaptureResult#LENS_DISTORTION
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
통과: 이미지가 늘어나지 않고 이미지 중앙이 3% 이상 차이 나지 않으며 가능한 최대 FoV(시야)가 유지됩니다.
test_preview_stabilization_fov
지원되는 미리보기 크기를 확인하여 FoV가 적절하게 잘렸는지 확인합니다.
이 테스트는 두 개의 동영상을 캡처합니다. 하나는 미리보기 안정화를 ON
으로 하고 다른 하나는 미리보기 안정화를 OFF
로 합니다. 각 동영상에서 대표 프레임을 선택하고 이를 분석하여 두 동영상의 FoV 변화가 사양 내에 있는지 확인합니다.
테스트 대상 API:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
통과: 원의 가로세로 비율이 일정하게 유지되고 원의 중심 위치가 안정적으로 유지되며 원의 크기가 20%를 초과하여 변경되지 않습니다.
test_video_aspect_ratio_and_crop
모든 동영상 형식에서 정사각형 내부의 원을 촬영합니다. 키 프레임을 추출하고 원의 가로세로 비율이 변경되지 않는지 확인합니다. 또한, 잘린 이미지 중심에 원이 유지되고 원 크기가 일정한 형식이나 다른 해상도에서 변경되지 않는지 확인합니다(시야 확인)
테스트 대상 API:
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
통과: 동영상 프레임이 늘어나지 않고 프레임 중앙이 3% 이상 차이 나지 않으며 가능한 최대 FoV(시야)를 유지합니다.
scene5
Scene5에는 조명이 균일한 회색 장면이 필요합니다. 카메라 렌즈 위에 산광기를 배치하면 됩니다. 다음 산광기를 사용하는 것이 좋습니다. www.edmundoptics.com/optics/window-diffusers/optical-diffusers/opal-diffusing-glass/46168
장면을 준비하려면 카메라 앞에 산광기를 부착하고 카메라가 약 2000럭스 광원을 향하도록 합니다. scene5의 캡처된 이미지에는 명확한 특징이 없는 확산 조명이 필요합니다. 다음은 샘플 이미지입니다.
scene5 캡처
test_lens_shading_and_color_uniformity
렌즈 음영 보정이 적절하게 적용되고 흑백 균일한 장면의 색상이 고르게 분포되는지 테스트합니다. 이 테스트를 자동 3A가 있는 YUV 프레임에서 실행합니다. 렌즈 음영은 y 채널에 기반하여 평가됩니다. 지정된 각 샘플 블록의 평균 y 값을 측정하고 중앙 y 값과 비교하여 통과 또는 실패를 결정합니다. 색상 균일성 테스트는 r/g 및 b/g 공간에서 평가됩니다.
테스트 대상 API:
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AWB_MODE
통과: 지정된 이미지 반경에서 r/g 및 b/g 값의 편차가 20% 미만이어야 테스트에 통과합니다.
scene6
scene6는 작은 원의 그리드이며 한 모서리에 정사각형이 있어 방향을 나타냅니다. 넓은 범위에서 확대/축소 기능을 테스트하려면 작은 원이 필요합니다.
scene6
test_in_sensor_zoom
잘린 RAW 이미지를 생성하는 카메라 센서 내 확대/축소 기능의 동작을 테스트합니다.
스트림 사용 사례를 CROPPED_RAW
로 설정한 상태에서 테스트는 확대/축소 범위에 걸쳐 두 가지 캡처 이미지를 찍습니다. 전체 시야(FoV) RAW 이미지와 잘린 RAW 이미지입니다. 테스트에서는 이미지를 RGB 배열로 변환하고, 전체 크기의 잘린 RAW 이미지를 SCALER_RAW_CROP_REGION
에서 보고된 크기로 축소하고, 두 이미지 간 3D 제곱평균제곱근(RMS) 차이를 계산합니다.
테스트 대상 API:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.hardware.camera2.CameraMetadata#SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CaptureResult#SCALER_RAW_CROP_REGION
통과: 축소된 잘린 RAW 이미지와 전체 FoV RAW 이미지 간 3D 제곱평균제곱근(RMS) 차이가 1% 미만입니다.
test_zoom
카메라 확대/축소 동작을 테스트합니다. 확대/축소 범위에서 캡처하고 카메라가 확대됨에 따라 원이 커지는지 확인합니다.
테스트 대상 API:
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
통과: 캡처된 원의 상대적 크기가 요청된 확대/축소 비율에 따라 정확하여 카메라가 제대로 확대/축소하는지 확인합니다.
중심에서 가장 가까운 원의 윤곽을 찾는 test_zoom
test_low_latency_zoom
카메라의 짧은 지연 시간 확대/축소 동작을 테스트합니다. android.control.settingsOverride = 1 (SETTINGS_OVERRIDE_ZOOM)
을 사용하여 확대/축소 범위에서 캡처하고 출력 이미지의 원이 캡처 메타데이터의 확대/축소 비율과 일치하는지 확인합니다.
테스트 대상 API:
android.hardware.camera2.CameraCharacteristics#CONTROL_AVAILABLE_SETTINGS_OVERRIDES
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CaptureRequest#CONTROL_SETTINGS_OVERRIDE
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CaptureResult#CONTROL_SETTINGS_OVERRIDE
통과: 캡처된 원의 상대적 크기가 확대/축소 비율 결과 메타데이터와 비교해 정확합니다.
test_preview_video_zoom_match
녹화 및 확대/축소 중에 동영상 미리보기와 동영상 출력이 표시되고 동일한 출력을 녹화하는지 테스트합니다. 다양한 확대/축소 비율에서 중앙에 가장 가까운 원의 크기를 계산하고 원의 크기가 확대 비율이 증가함에 따라 늘어나는지 확인합니다.
테스트 대상 API:
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
통과: 캡처된 원의 상대적 크기가 동영상 및 미리보기에서 요청된 확대/축소 비율과 비교해 정확합니다.
VGA_640x480_key_frame.png(확대/축소 전)
preview_640x480_key_frame.png(확대/축소 전)
VGA_640x480_key_frame.png(확대/축소 후)
preview_640x480_key_frame.png(확대/축소 후)
scene_extensions
scene_extensions
테스트는 카메라 확장 프로그램용이며 테스트 환경을 정밀하게 제어해야 하므로 카메라 ITS-in-a-Box를 사용해야 합니다.
scene_hdr
scene_hdr
장면은 왼쪽에는 세로 모드가 있고 오른쪽에는 저대비 QR 코드가 있습니다.
scene_hdr
test_hdr_extension
HDR 확장 프로그램을 테스트합니다. 확장 프로그램을 사용 설정 및 사용 중지한 상태로 캡처하고 확장 프로그램으로 인해 QR 코드를 더 쉽게 감지할 수 있는지 확인합니다.
테스트 대상 API:
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
android.hardware.camera2.CameraExtensionSession#capture
통과: HDR 확장 프로그램이 QR 코드를 감지하는 데 필요한 대비 변경 횟수를 줄이거나 QR 코드 전체의 그라데이션을 줄입니다.
scene_night
scene_night
장면은 흰색 원과 그 안에 작은 원이 네 개 있으며 배경은 모두 검은색입니다. 오른쪽 상단의 작은 원은 방향을 나타내기 위해 나머지 원보다 어둡습니다.
scene_night
test_night_extension
야간 확장 프로그램을 테스트합니다. 확장 프로그램을 사용 설정 및 사용 중지한 상태에서 캡처한 후 다음을 확인합니다.
- 야간 확장 프로그램이 사용 설정된 상태에서 캡처하는 데 더 오래 걸립니다.
- 야간 확장 프로그램이 사용 설정된 상태의 캡처가 더 밝거나 장면 아티팩트의 모양이 개선됩니다.
테스트 대상 API:
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
android.hardware.camera2.CameraExtensionSession#capture
통과: 야간 확장 프로그램이 사용 설정되지 않은 상태의 캡처와 비교할 때 야간 확장 프로그램이 사용 설정된 상태의 캡처에 최소 0.5초가 더 걸립니다. 캡처가 최소 10% 더 밝아야 합니다. 또는 장면의 회색 점이 주변 원의 중심보다 20픽셀 값 낮아야 합니다.
sensor_fusion
센서 퓨전 테스트에서는 격자무늬 패턴을 배경으로 휴대전화를 특정하게 움직여야 합니다. 최적의 결과를 내려면 테스트 차트가 평평하게 마운트되어야 합니다. 평평하지 않은 차트는 대다수 테스트의 회전 계산에 영향을 미칩니다.
sensor_fusion
테스트는 센서 퓨전 상자를 사용하여 자동화할 수 있습니다.
격자무늬 이미지
test_multi_camera_frame_sync
타임스탬프를 결정하기 위해 격자무늬 내에서 정사각형의 각도를 계산하여 논리 카메라로 캡처한 프레임 타임스탬프가 10ms 이내에 있는지 테스트합니다.
테스트 대상 API:
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()
통과: 각 카메라의 이미지 간 각도가 휴대전화가 회전할 때 눈에 띄게 변경되지 않습니다.
test_preview_stabilization
안정화된 미리보기 동영상이 자이로스코프보다 적게 회전하는지 테스트합니다.
테스트 대상 API:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
통과: 프레임에 대한 최대 각도 회전이 자이로스코프 회전의 70% 미만입니다.
다음은 흔들림을 보정한 샘플 동영상과 보정하지 않은 샘플 동영상입니다.
흔들림 보정이 적용된 샘플 동영상
흔들림 보정이 적용되지 않은 샘플 동영상
test_sensor_fusion
AR 및 VR 애플리케이션의 카메라와 자이로스코프 간 타임스탬프 차이를 테스트합니다. 휴대전화가 격자무늬 패턴을 배경으로 90도로 10번 회전합니다. 모션은 왕복 약 2초입니다. 자이로스코프가 포함되어 있지 않거나 타임스탬프 소스 REALTIME
매개변수가 사용 설정되어 있지 않다면 이 테스트는 건너뜁니다.
test_sensor_fusion
테스트는 여러 도표를 생성합니다. 디버깅에 가장 중요한 두 가지 플롯은 다음과 같습니다.
test_sensor_fusion_gyro_events
: 테스트 중 휴대전화의 자이로스코프 이벤트를 표시합니다. x 및 y 방향으로의 이동은 휴대전화가 장착판에 안전하게 장착되지 않아 테스트 통과 가능성이 작아짐을 의미합니다. 도표의 사이클 수는 프레임 저장을 위한 쓰기 속도에 따라 다릅니다.test_sensor_fusion_gyro_events
test_sensor_fusion_plot_rotations
: 자이로스코프와 카메라 이벤트의 정렬을 표시합니다. 이 도표는 카메라와 자이로스코프 사이의 이동이 +/-1ms로 일치함을 표시해야 합니다.test_sensor_fusion_plot_rotations
테스트 대상 API:
android.hardware.camera2.CameraCharacteristics#LENS_FACING
android.hardware.camera2.CameraCharacteristics#SENSOR_INFO_TIMESTAMP_SOURCE
android.hardware.camera2.CameraMetadata#SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME
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
통과: CDD 섹션 7.3.9 Hi-Fi 센서 [C-2-14]에 따라 카메라 및 자이로스코프 타임스탬프의 오프셋이 1ms 미만입니다.
실패 메커니즘:
- 오프셋 오류: 카메라-자이로스코프 오프셋이 +/-1ms 이내로 올바르게 보정되지 않았습니다.
- 프레임 드롭: 파이프라인의 속도가 200프레임을 연속으로 캡처하기에 충분하지 않습니다.
- 소켓 오류:
adb
가 테스트를 실행할 만큼 오래 DUT에 안정적으로 연결할 수 없습니다. - 차트가 평평하게 마운트되지 않았습니다.
test_sensor_fusion_plot_rotations
플롯에는 평평하지 않은 차트 부분을 통해 카메라가 회전할 때 자이로스코프와 카메라 회전이 상당히 달라지는 프레임이 있습니다. - 카메라가 평평하게 마운트되지 않았습니다.
test_sensor_fusion_gyro_events
플롯이 X 평면과 Y 평면의 이동을 보여줍니다. 이 실패는 전면 카메라에서 더 일반적입니다. 후면 카메라는 나머지 휴대전화 본체보다 돌출되어 있는 경우가 많아 장착판에 휴대전화 후면을 마운트할 때 기울어지기 때문입니다.
test_video_stabilization
안정화된 동영상이 자이로스코프보다 적게 회전하는지 테스트합니다.
테스트 대상 API:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
통과: 프레임에 대한 최대 각도 회전이 자이로스코프 회전의 60% 미만입니다.
다음은 흔들림을 보정한 샘플 동영상과 보정하지 않은 샘플 동영상입니다.
흔들림 보정이 적용된 샘플 동영상
흔들림 보정이 적용되지 않은 샘플 동영상
test_led_snapshot
LED 스냅샷이 이미지의 채도나 색조를 조정하지 않는지 테스트합니다.
이 테스트에서는 조명 컨트롤러를 센서 퓨전 상자에 추가하여 조명을 제어합니다. 조명을 OFF
로 설정한 상태에서 테스트는 AUTO_FLASH
모드를 ON
으로 설정하여 캡처합니다. 이 캡처 중에 테스트는 aePrecapture
트리거를 START
로 설정하여 사전 캡처 시퀀스를 실행하고, 캡처 인텐트를 Preview
로 설정하여 플래시로 캡처를 실행합니다.
플래시로 인해 캡처에 고유한 핫스팟이 있으므로 테스트는 전체 캡처의 플래시 이미지 평균을 계산하고 값이 (68, 102) 범위 이내인지 확인합니다. 이미지의 화이트 밸런스가 적절한지 확인하기 위해 테스트에서는 R/G 및 B/G 비율을 계산하고 비율이 0.95 및 1.05 이내인지 확인합니다.
테스트 대상 API:
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLE
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#FLASH_MODE
통과: R/G 및 B/G 비율이 0.95 및 1.05 이내입니다. 플래시 이미지 평균이 (68, 102) 범위 이내입니다.