이 페이지에서는 Android 호환성 테스트 모음(CTS) 인증 도구의 일부인 카메라 이미지 테스트 모음(ITS)의 전체 테스트 목록을 제공합니다. ITS 테스트는 기능 테스트입니다. 즉, 이미지 품질을 측정하는 것이 아니라 알려진 모든 카메라 기능이 예상대로 작동하는지 측정하는 것입니다. 이 문서를 통해 개발자와 테스터는 개별 테스트에서 실행하는 작업과 테스트 실패를 디버그하는 방법을 알 수 있습니다.
테스트는 다음과 같이 장면별로 그룹화됩니다.
- scene0: 메타데이터, 잡음, 자이로스코프, 진동 감지
- scene1: 노출, 감도, EV 보정, YUV와 JPEG/RAW 비교
- scene2: 얼굴 인식, 색상 장면 또는 완전한 어두움이 필요한 테스트
- scene3: 에지 개선, 렌즈 이동
- scene4: 가로세로 비율, 자르기, 시야
- scene5: 렌즈 음영
- scene6: 확대/축소
- 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 수렴을 지원합니다.
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_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.*
매개변수가 적용되는지 테스트합니다.
다른 변환 및 게인 값을 사용하여 장면을 찍고 이에 따라 장면이 다르게 보이는지 테스트합니다. 변환 및 게인을 선택하여 출력이 점점 더 빨간색이나 파란색이 되도록 합니다. 선형 톤맵을 사용합니다. 톤 매핑은 이미지 처리에서 사용되는 기법으로, 한 가지 색상 세트를 다른 색상 세트에 매핑하여 동적 범위가 더 제한된 매체의 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 및 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
통과: YUV 및 JPEG 이미지가 유사하고 RMS(신호의 제곱 평균값) 차이가 3.5% 미만입니다.
![]() |
![]() |
|
test_yuv_plus_raw_shading=1_raw.jpg | test_yuv_plus_raw_shading=1_yuv.jpg |
test_yuv_plus_raw10
단일 프레임을 RAW10 및 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
통과: RAW10 및 YUV 이미지가 유사하고 RMS(신호의 제곱 평균값) 차이가 3.5% 미만입니다.
![]() |
![]() |
|
test_yuv_plus_raw10_shading=1_raw.jpg | test_yuv_plus_raw10_shading=1_yuv.jpg |
test_yuv_plus_raw12
단일 프레임을 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#RAW12
통과: RAW12 및 YUV 이미지가 유사하고 RMS(신호의 제곱 평균값) 차이가 3.5% 미만입니다.
![]() |
![]() |
|
test_yuv_plus_raw12_shading=1_raw.jpg | test_yuv_plus_raw12_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_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
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개 찾습니다.
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_lens_movement_reporting
렌즈 이동 플래그가 올바르게 보고되는지 테스트합니다. 최적의 초점 거리(3A로 확인)에서 첫 12개 프레임과 최소 초점 거리에서 마지막 12개 프레임으로 24개 이미지 버스트를 캡처합니다. 12프레임 주위에서 렌즈가 움직이면서 선명도가 떨어집니다. 선명도는 렌즈가 최종 위치로 이동하면서 결국 안정화됩니다. 렌즈 이동 플래그는 최적 초점 거리에서 렌즈가 고정된 첫 10개 프레임과 최소 초점 거리에서 렌즈가 고정된 마지막 10개 프레임에서 선명도가 중간인 모든 프레임에 어셜션되어야 합니다. 렌즈가 이동하는 정확한 프레임은 중요하지 않습니다. 렌즈가 이동할 때 이동 플래그가 어설션되는지 확인하는 것이 중요합니다.
테스트 대상 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_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(시야)가 유지됩니다.
test_multi_camera_alignment
카메라 간격과 관련된 다중 카메라 시스템 매개변수를 테스트합니다. 다중 카메라 물리적 하위 카메라를 사용하여 물리적 카메라 중 하나로 사진을 찍습니다. 원 중심을 찾습니다. 원 중심을 각 카메라의 세계 좌표에 투영합니다. 세계 좌표에서 카메라의 원 중심 간의 차이를 비교합니다. 세계 좌표를 다시 픽셀 좌표로 재투영하고 유효성 검사로 원본과 비교합니다. 카메라의 초점 거리가 다른지 확인하는 원 크기를 비교합니다.
테스트 대상 API:
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
통과: 초점 거리와 원 크기가 일관됩니다.
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/diffuser
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_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
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 미만입니다.
test_video_stabilization
안정화된 동영상이 자이로스코프보다 적게 회전하는지 테스트합니다.
테스트 대상 API:
android.hardware.camera2.CameraCharacteristics#SCALAR_AVAILABLE_CAPABILITIES_STREAM_USE_CASES
android.media.MediaRecorder
android.media.CamcorderProfile
통과: 프레임에 대한 최대 각도 회전이 자이로스코프 회전의 60% 미만입니다.
다음은 흔들림을 보정한 샘플 동영상과 보정하지 않은 샘플 동영상입니다.
흔들림 보정이 적용된 샘플 동영상
흔들림 보정이 적용되지 않은 샘플 동영상