이 페이지에서는 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: 확대/축소
- scene7: 다중 카메라 스위치
- scene8: AE 및 AWB 영역 측광
- scene9: JPEG 압축
- scene_extensions: 카메라 확장 프로그램
- scene_flash: Autoflash, 최소 프레임 속도
- scene_video: 프레임 드롭
- sensor_fusion: 카메라/자이로스코프 타이밍 오프셋
- feature_combination: 기능 조합
각 장면에 관한 설명은 개별 섹션을 참고하세요.
scene0
Scene0 테스트에는 구체적인 장면 정보가 필요하지 않습니다. 그러나 휴대전화는 자이로스코프와 진동 테스트를 위해 고정되어 있어야 합니다.
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_request_capture_match
기기가 캡처 메타데이터를 다시 읽어 올바른 노출과 게인 값을 작성하는지 테스트합니다.
테스트 대상 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_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_capture
전체 캡처 파이프라인이 원본 크기 캡처 속도와 CPU 시간을 따라잡을 수 있는지 확인합니다.
테스트 대상 API:
통과: 원본 크기 이미지의 버스트를 캡처하고 프레임 드롭과 이미지 밝기를 확인합니다.
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_x_iso
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
에서 게인 승수 값(x축)이 증가함에 따라 정규화된 RGB 평면 평균값(y축)이 낮은 게인 승수 값과 달라지기 시작합니다.
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_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_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.CaptureResult#STATISTICS_LENS_SHADING_CORRECTION_MAP
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_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_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_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) 차이를 계산합니다.
이에 더해 이 테스트는 모든 지원되는 스트림 사용 사례의 YUV 출력이 STILL_CAPTURE
사용 사례의 YUV와 합리적으로 유사한지 확인합니다.
테스트 대상 API:
android.hardware.camera2.CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASES
android.hardware.camera2.CaptureRequest#JPEG_QUALITY
android.graphics.ImageFormat#JPEG
통과: STILL_CAPTURE
사용 사례의 YUV 및 JPEG 이미지는 RMS(신호의 제곱평균제곱근 값) 차이가 3% 미만이고 모든 지원되는 사용 사례의 YUV 이미지는 STILL_CAPTURE
사용 사례의 YUV 이미지와 RMS 차이가 10% 미만입니다.
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).
test_default_camera_hdr
기본 카메라 캡처가 CDD의 섹션 2.2.7.2 카메라에 지정된 성능 등급 15에 대해 울트라 HDR인지 테스트합니다.
통과: 기본 카메라 패키지 캡처가 성능 등급 15 기기에 대해 울트라 HDR이어야 합니다(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_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_imu_drift
기기가 고정된 상태에서 고화질 미리보기를 캡처하는 동안 관성 측정 장치(IMU)가 30초간 안정적으로 출력되는지 테스트합니다.
테스트 대상 API:
android.hardware.Sensor
android.hardware.SensorEvent
android.hardware.Sensor#TYPE_GYROSCOPE
android.hardware.Sensor#TYPE_ROTATION_VECTOR
통과:
- 자이로스코프의 드리프트가 테스트 시간 동안 0.01rad 미만입니다.
- 자이로스코프 판독값의 편차가 테스트 시간 동안 1E-7rad2/s2/Hz 미만입니다.
- 회전 벡터의 드리프트가 테스트 시간 동안 0.01rad 미만입니다.
- (의무화 시행 전) 자이로스코프의 드리프트가 초당 1도 미만입니다.
test_imu_drift_gyro_drift.png
test_imu_drift_rotation_vector_drift.png
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의 테스트는 정렬에 민감할 수 있으므로 15부터는 tools 디렉터리의 check_alignment.py
를 사용하여 DUT 및 차트 정렬 검사를 사용 설정할 수 있습니다.
scene4
test_30_60fps_preview_fov_match
30FPS 및60FPS 미리보기 동영상이 동일한 FoV를 갖는지 테스트합니다. 테스트는 30FPS 동영상 1개와 60FPS 동영상 1개를 각각 캡처합니다. 두 동영상의 FoV 변화가 사양 내에 있는지 확인하기 위해 각 동영상에서 하나의 대표 프레임이 선택되어 분석됩니다. 원의 가로세로 비율이 일정하게 유지되고 원의 중심이 안정적으로 유지되며 원의 반경이 일정하게 유지되는지 테스트합니다.
테스트 대상 API:
android.hardware.camera2.CaptureRequest#CONTROL_AE_TARGET_FPS_RANGE
android.hardware.camera2.CaptureRequest#SENSOR_FRAME_DURATION
android.hardware.camera2.CaptureRequest#SENSOR_EXPOSURE_TIME
android.hardware.camera2.CaptureResult#LENS_DISTORTION
android.hardware.camera2.CaptureResult#LENS_FOCAL_LENGTH
android.hardware.camera2.CaptureResult#LENS_INTRINSIC_CALIBRATION
통과: 이미지가 늘어나지 않고 이미지의 중심이 3% 이상 차이 나지 않으며 30FPS 동영상과 60FPS 동영상의 최대 가로세로 비율 변화가 7.5%를 넘지 않습니다.
실패 메커니즘:
- 30FPS 동영상과 60FPS 동영상의 원 크기가 크게 다릅니다.
- 캡처된 이미지의 원이 처리 파이프라인으로 왜곡됩니다.
- 캡처된 이미지의 원이 이미지의 높이나 너비를 줄이는 극단적인 가로세로 비율 캡처 요청으로 인해 잘립니다.
- 캡처된 이미지의 원 중심에 반사가 있어 완전히 채워지지 않은 것처럼 보입니다.
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의 테스트는 정렬에 민감할 수 있으므로 15부터는 tools 디렉터리의 check_alignment.py
를 사용하여 DUT 및 차트 정렬 검사를 사용 설정할 수 있습니다.
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) 차이가 테스트에서 설정된 기준값 미만입니다.
test_zoom
카메라 확대/축소 동작을 테스트합니다. 확대/축소 범위에 걸쳐 캡처를 가져와서 카메라가 확대됨에 따라 원이 커지는지 확인합니다. 각 형식(YUV, JPEG)에 대해, 3A를 수렴하고 캡처하는 데 동일한 카메라 캡처 세션이 사용됩니다.
테스트 대상 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)
을 사용하여 확대/축소 범위에 걸쳐 캡처를 가져와서 출력 이미지의 원이 캡처 메타데이터의 확대/축소 비율과 일치하는지 확인합니다. 3A를 수렴하고 캡처하는 데 동일한 카메라 캡처 세션이 사용됩니다.
테스트 대상 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(확대/축소 후)
test_preview_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_preview_zoom 이미지
test_session_characteristics_zoom
CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION
에 나열된 모든 지원되는 세션 구성에 대해 확대/축소 비율 범위를 테스트합니다.
각 구성에 대해, CameraDeviceSetup#isSessionConfigurationSupported
가 true를 반환하는 경우 테스트는 CameraDeviceSetup#getSessionCharacteristics
로 반환된 확대/축소 비율 범위가 도달될 수 있는지 테스트합니다.
테스트 대상 API:
android.hardware.camera2.CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION
android.hardware.camera2.CameraDevice.CameraDeviceSetup#isSessionConfigurationSupported
android.hardware.camera2.CameraDevice.CameraDeviceSetup#getSessionCharacteristics
통과: CameraCharacteristics#INFO_SESSION_CONFIGURATION_QUERY_VERSION
에 나열된 각 지원되는 SessionConfiguration
에 대해 최소 및 최대 확대/축소 비율이 도달될 수 있습니다.
scene7
Scene7은 직사각형 프레임이 각각 서로 다른 색상으로 채워진 네 개의 동일한 사분면으로 나뉜 이미지입니다. 직사각형의 중심에는 선명도 검사를 위한 기울어진 에지 차트가 있습니다. 여러 확대/축소 비율에서 기본 직사각형 프레임의 정확한 좌표를 얻기 위해 직사각형의 4개의 바깥쪽 모서리에 4개의 ArUco 마커가 정렬되어 있습니다.
scene7
test_multi_camera_switch
이 테스트는 여러 확대/축소 비율에서 미리보기 촬영 중에 울트라와이드(UW) 렌즈와 와이드(W) 렌즈 간에 전환하면 RGB 값이 유사한지 테스트합니다.
테스트는 미리 정의된 범위 안에 있는 여러 확대/축소 비율을 사용하여 동적 미리보기 촬영을 실행하고 실제 카메라가 변경되는 지점을 식별합니다. 이 지점은 UW 렌즈가 W 렌즈로 전환되는 지점입니다.
전환 지점과 그 직전에 캡처된 프레임을 분석하여 자동 노출(AE), 자동 화이트 밸런스(AWB), 자동 초점(AF)이 확인됩니다.
AE 검사는 루마 변경이 UW 렌즈 이미지와 W 렌즈 이미지 양쪽에서 예상 범위 내에 있는지 확인합니다. AWB 검사는 R/G 비율과 B/G 비율이 UW 렌즈 이미지와 W 렌즈 이미지 양쪽에서 기준값 안에 있는지 확인합니다. AF 검사는 UW 렌즈 이미지와 W 렌즈 이미지 간의 평균 그래디언트 크기를 기반으로 선명도 추정값을 평가합니다.
이 테스트를 실행하는 동안 모아레 현상이 결과에 간섭을 유발하는 경우 카메라 ITS 승인 태블릿 목록에 있는 보다 높은 해상도의 태블릿을 사용하세요.
테스트 대상 API:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.media.CamcorderProfile
android.media.MediaRecorder
통과: 테스트가 통과하려면 AE 검사와 AWB 검사를 통과해야 합니다. AF 검사 결과는 로깅 용도로만 사용됩니다. 각 검사의 조건은 다음과 같습니다.
- AE 검사: 기기가
ae_regions
와awb_regions
를 둘 다 지원하는 경우 UW 렌즈 이미지와 W 렌즈 이미지 간의 루마 변경이 모든 색상 패치에 대해 4% 미만이어야 합니다. 기기가ae_regions
만 지원하는 경우 회색 패치 값만 조건을 충족하면 됩니다. - AWB 검사: UW 렌즈 이미지와 W 렌즈 이미지의 R/G 값과 B/G 값의 차이가 회색 패치에 대해 3% 미만이어야 하며 기기가
ae_regions
와awb_regions
를 둘 다 지원하는 경우 나머지 색상 패치에 대해 10% 미만이어야 합니다. - AF 검사: W 렌즈 캡처의 이미지 선명도가 UW 캡처의 선명도보다 높아야 합니다.
scene8
Scene8은 직사각형 프레임이 각각 서로 다른 노출이 적용되었거나 서로 다른 색상이 오버레이된 채로 촬영된 인물 사진(파란색, 노출 증가, 노출 감소, 노란색)을 포함하는 네 개의 동일한 영역으로 나뉜 이미지입니다. 기본 직사각형 프레임의 정확한 좌표를 얻기 위해 직사각형의 4개의 바깥쪽 모서리에 4개의 ArUco 마커가 정렬되어 있습니다.
scene8
test_ae_awb_regions
서로 다른 자동 노출(AE) 및 자동 화이트 밸런스(AWB) 영역에서 미리보기 촬영 시 RGB 값과 루마 값이 다른지 테스트합니다.
테스트는 8초 미리보기 촬영을 레코딩하여 각 사분면에서 AE 측광과 AWB 측광을 각각 2초간 실행합니다. 그런 다음 각 영역의 미리보기 촬영으로부터 프레임 하나를 추출하고 추출된 프레임을 사용하여 다음과 같은 AE 및 AWB 검사를 실행합니다.
- AE 검사: 줄어든 노출로 영역을 측광하는 프레임의 루마 값이 늘어난 노출로 영역을 측광하는 프레임의 루마 값보다 1% 넘게 큰지 확인합니다. 이는 어두운 영역을 측광하면 이미지가 밝아짐을 입증합니다.
- AWB 검사: 파란색 측광 영역이 있는 프레임의 (이미지의 평균 RGB 값의) 빨간색 대 파란색 비율이 노란색 측광 영역이 있는 프레임의 빨간색 대 파란색 비율보다 2% 넘게 높은지 확인합니다. 이는 노란색(따뜻한 색) 또는 파란색(차가운 색) 영역을 측광하면 이미지가 균형 잡힌 RGB 값을 가짐을 입증합니다.
테스트 대상 API:
android.hardware.camera2.CaptureRequest#CONTROL_AWB_REGIONS
android.hardware.camera2.CaptureRequest#CONTROL_AE_REGIONS
android.hardware.camera2.CameraCharacteristics#CONTROL_MAX_REGIONS_AE
android.hardware.camera2.CameraCharacteristics#CONTROL_MAX_REGIONS_AWB
통과: AE 검사와 AWB 검사를 둘 다 통과합니다.
실패 메커니즘:
이 테스트에서는 ArUco 마커 4개의 정확한 감지가 중요합니다. 초기 감지가 실패하면 시스템이 이미지의 흑백 버전을 사용하여 두 번째 감지 통과를 시도합니다. 다음 그레이 스케일 이미지는 두 번째 처리 단계를 나타냅니다.
scene9
Scene9는 JPEG 압축 알고리즘에 부담을 주기 위해 반복 가능성이 매우 낮은 장면을 만드는 크기와 색상이 무작위인 수천 개의 원으로 구성되어 있습니다.
scene9
test_jpeg_high_entropy
카메라의 JPEG 압축이 scene9를 높은 엔트로피로 처리하며 JPEG 품질 인자가 100%로 설정되어 있는지 테스트합니다. 태블릿에 표시되는 장면이 카메라의 시야각을 채우도록 확대/축소 인자가 커집니다.
테스트 대상 API:
통과: JPEG 파일이 올바르게 압축되고, 쓰여지고, 디스크에서 다시 읽을 수 있습니다.
test_jpeg_quality
카메라 JPEG 압축 품질을 테스트합니다. android.jpeg.quality
를 통해 JPEG 품질을 조정하고 양자화 테이블이 올바르게 변경되는지 확인합니다.
테스트 대상 API:
통과: 품질 향상으로 양자화 행렬이 감소합니다. (행렬은 나눗셈 인수를 나타냅니다.)
Pixel 4 후면 카메라 루마/크로마 DQT 행렬 평균 대 JPEG 품질
실패한 테스트 예
품질이 매우 낮은 이미지(jpeg.quality < 50)의 경우 양자화 행렬에서 압축이 증가하지 않습니다.
scene_video
scene_video
장면은 동영상 장면입니다. 이 장면은 흰색 배경 위에서 서로 다른 프레임 속도로 왼쪽과 오른쪽으로 반복해서 이동하는 서로 다른 색상의 원 네 개로 구성되어 있습니다.
scene_video
test_preview_frame_drop
동적 장면에서 요청된 미리보기 프레임 속도가 유지되는지 테스트합니다. 이 테스트는 서드 파티 앱에 노출되는 모든 카메라에서 실행됩니다.
테스트 대상 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
통과: 미리보기 프레임 속도가 요청된 프레임 속도 범위의 최대 수준이며 연속된 프레임 간 평균 편차가 테스트에서 설정된 상대 허용 오차보다 작습니다.
scene_extensions
scene_extensions
테스트는 카메라 확장 프로그램용이며 테스트 환경을 정밀하게 제어해야 하므로 카메라 ITS-in-a-Box를 사용해야 합니다. 이에 더해 모든 빛샘을 제어해야 합니다. 그러려면 테스트 장비, DUT, 태블릿을 덮개로 씌우고 DUT 전면 화면의 빛샘을 없애야 할 수 있습니다.
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_low_light
scene_low_light
장면은 검은색 배경 위에 서로 다른 명암을 갖는 여러 개의 회색 정사각형이 그리드를 이루고 있고 그리드 전체가 빨간색 윤곽선으로 둘러싸인 이미지입니다. 정사각형은 힐베르트 곡선 방향에 따라 배치되어 있습니다.
scene_low_light
test_night_extension
야간 확장 프로그램을 테스트합니다. 확장 프로그램이 사용 설정된 상태로 캡처를 가져와서 다음을 실행합니다.
- 정사각형 20개가 있음을 감지합니다.
- 각 정사각형 영역의 루마를 계산합니다.
- 힐베르트 곡선 그리드 방향을 기준으로 처음 6개 정사각형의 평균 루마 값을 계산합니다.
- 인접한 정사각형의 루마 값 차이(예: square2 - square1)를 정사각형 5와 6까지(square6 - square5) 계산한 후 이 다섯 개 차이 값의 평균을 구합니다.
테스트 대상 API:
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
android.hardware.camera2.CameraExtensionSession#capture
통과: 처음 6개 정사각형의 평균 루마 값이 최소 85이고 정사각형 5와 6까지 계산한 인접한 정사각형의 루마 값 차이의 평균이 최소 17이어야 합니다.
다음 휘도 플롯은 통과된 테스트 결과의 예시를 보여줍니다.
test_low_light_boost_extension
어두운 조명 AE 모드를 테스트합니다. Camera2가 어두운 조명 AE 모드를 지원하는 경우 이 테스트는 Camera2에 대해 실행됩니다. 야간 모드 카메라 확장 프로그램이 지원되고 확장 프로그램이 어두운 조명 AE 모드를 지원하는 경우 이 테스트는 야간 모드 카메라 확장 프로그램에 대해서도 실행됩니다. 이 테스트는 AE 모드를 어두운 조명 모드로 설정하고 미리보기에서 프레임 하나를 가져온 후 다음을 실행합니다.
- 상자 20개가 있음을 감지합니다.
- 각 상자 영역의 루마를 계산합니다.
- 힐베르트 곡선 그리드 방향을 기준으로 처음 6개 정사각형의 평균 루마 값을 계산합니다.
- 인접한 정사각형의 루마 값 차이(예: square2 - square1)를 정사각형 5와 6까지(square6 - square5) 계산한 후 이 다섯 개 차이 값의 평균을 구합니다.
테스트 대상 API:
android.hardware.camera2.CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES
android.hardware.camera2.CameraMetadata#CONTROL_AE_MODE_ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY
android.hardware.camera2.CameraExtensionCharacteristics#getSupportedExtensions
통과: 처음 6개 정사각형의 평균 루마 값이 최소 70이고 정사각형 5와 6까지 계산한 인접한 정사각형의 루마 값 차이의 평균이 최소 17이어야 합니다.
scene_flash
scene_flash
테스트를 실행하려면 센서 퓨전 상자 안의 어두운 장면이 필요합니다.
test_auto_flash
후면 카메라와 전면 카메라에 대해 어두운 장면에서 자동 플래시가 트리거되는지 테스트합니다. 전면 카메라의 경우 자동 플래시는 실제 플래시 유닛이 아니라 화면을 사용하여 장면을 밝힙니다. 테스트는 자동 플래시가 사용 설정된 경우 타일 이미지의 중앙이 더 밝은지 검사하여 자동 플래시가 실행되는지 확인합니다. 자동 플래시를 트리거하려면 테스트 장비의 조명이 꺼져 있어야 합니다. 조명은 Arduino 컨트롤러를 통해 자동으로 끌 수 있습니다. 테스트가 올바르게 작동하려면 장면이 완전히 어두워야 합니다. 테스트에 앞서 Jetpack Camera 앱(JCA)을 설치해야 합니다. 후면 카메라의 자동 플래시는 AE 상태에 따라 트리거되나, 전면 카메라의 자동 플래시는 AE와 관계없이 항상 트리거됩니다.
테스트 대상 API:
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_AVAILABLE
android.hardware.camera2.CaptureRequest#CONTROL_AE_MODE
android.hardware.camera2.CaptureRequest#CONTROL_AE_PRECAPTURE_TRIGGER
android.hardware.camera2.CaptureResult#CONTROL_AE_STATE
android.hardware.camera2.CaptureRequest#FLASH_MODE
통과: 모든 카메라에 대해, 자동 플래시가 사용 설정된 경우 타일 이미지의 중앙이 원본 장면 이미지보다 밝습니다.
test_flash_strength
SINGLE
모드에서 플래시 강도 제어가 올바르게 구현되었는지 테스트합니다.
카메라를 SINGLE
모드로 사용 중일 때 플래시 강도 제어를 지원하는 기기인 경우 플래시 강도가 요청된 여러 강도 수준으로 변경되는지 확인합니다. 플래시 강도 제어가 여러 AE_MODES
에서 작동하는지 확인합니다.
예를 들어, 자동 노출 모드가 ON
또는 OFF
이면 플래시 강도 수준이 밝기에 영향을 주고, 모드가 ON_AUTO_FLASH
이면 플래시 강도 수준이 밝기에 영향을 주지 않습니다.
테스트를 실행하려면 테스트 장비의 조명을 꺼야 합니다. 조명은 Arduino 컨트롤러를 통해 자동으로 끌 수 있습니다.
테스트가 올바르게 작동하려면 장면이 완전히 어두워야 합니다.
테스트 대상 API:
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_DEFAULT_LEVEL
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_MAXIMUM_LEVEL
android.hardware.camera2.CameraCharacteristics#FLASH_SINGLE_STRENGTH_DEFAULT_LEVEL
android.hardware.camera2.CameraCharacteristics#FLASH_SINGLE_STRENGTH_MAX_LEVEL
통과:
자동 노출 모드가 ON
또는 OFF
인 경우, 플래시 강도 수준이 플래시 없음부터 FLASH_SINGLE_STRENGTH_MAX_LEVEL
까지 증가함에 따라 이미지 패치의 밝기가 증가합니다.
자동 노출 모드가 ON_AUTO_FLASH
인 경우, 플래시 강도 수준이 플래시 없음부터 FLASH_SINGLE_STRENGTH_MAX_LEVEL
까지 증가함에 따라 이미지 패치의 밝기 변화가 허용 오차 내에 있습니다.
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) 범위 이내입니다.
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_torch_strength
TORCH
모드에서 플래시 강도 제어가 올바르게 구현되었는지 테스트합니다.
카메라를 TORCH
모드로 사용 중일 때 플래시 강도 제어를 지원하는 기기인 경우 토치 강도가 요청된 여러 강도 수준으로 변경되는지 확인합니다. 플래시 강도 제어가 여러 AE_MODES
에서 작동하는지 확인합니다.
예를 들어, 자동 노출 모드가 ON
또는 OFF
이면 플래시 강도 수준이 밝기에 영향을 주고, 모드가 ON_AUTO_FLASH
이면 플래시 강도 수준이 밝기에 영향을 주지 않습니다.
버스트가 지속되는 동안 토치 강도가 동일하게 유지되어 동영상 캡처 세션을 시뮬레이션하는지 확인합니다. 테스트를 실행하려면 테스트 장비의 조명을 꺼야 합니다. 조명은 Arduino 컨트롤러를 통해 자동으로 끌 수 있습니다. 테스트가 올바르게 작동하려면 장면이 완전히 어두워야 합니다.
테스트 대상 API:
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_DEFAULT_LEVEL
android.hardware.camera2.CameraCharacteristics#FLASH_INFO_STRENGTH_MAXIMUM_LEVEL
android.hardware.camera2.CameraCharacteristics#FLASH_TORCH_STRENGTH_DEFAULT_LEVEL
android.hardware.camera2.CameraCharacteristics#FLASH_TORCH_STRENGTH_MAX_LEVEL
통과:
자동 노출 모드가 ON
또는 OFF
인 경우, 플래시 강도 수준이 플래시 없음부터 FLASH_TORCH_STRENGTH_MAX_LEVEL
까지 증가함에 따라 이미지 버스트 패치의 밝기가 증가합니다.
자동 노출 모드가 ON_AUTO_FLASH
인 경우, 플래시 강도 수준이 플래시 없음부터 FLASH_TORCH_STRENGTH_MAX_LEVEL
까지 증가함에 따라 이미지 버스트 패치의 밝기 변화가 허용 오차 내에 있습니다.
sensor_fusion
센서 퓨전 테스트에서는 격자무늬 패턴과 ArUco 마커를 배경으로 휴대전화를 특정 방식으로 움직여야 합니다. 최적의 결과를 내려면 테스트 차트가 평평하게 마운트되어야 합니다. 평평하지 않은 차트는 여러 테스트의 회전 계산에 영향을 줍니다. 차트가 센서 퓨전 상자 뒤쪽을 채우도록 43x43cm(17x17인치)로 인쇄해야 합니다. sensor_fusion
테스트는 센서 퓨전 상자를 사용하여 자동화할 수 있습니다.
센서 퓨전 차트
센서 퓨전 상자의 뒤쪽을 채우는 센서 퓨저 차트
test_lens_intrinsic_calibration
광학식 손떨림 보정(OIS)으로 인해 렌즈가 움직이면 렌즈 내부 매개변수의 광학 중심이 변경되는지 테스트합니다. 렌즈 내부 매개변수 샘플이 지원되는 경우, 광학식 손떨림 보정(OIS)으로 인해 렌즈가 움직이면 렌즈 내부 매개변수 샘플의 광학 중심이 변경되는지 테스트합니다.
테스트 대상 API:
android.hardware.camera2.CameraCharacteristics#LENS_INTRINSIC_CALIBRATION
android.media.MediaRecorder
android.media.CamcorderProfile
통과: 렌즈 내부 매개변수의 광학 중심이 1픽셀 이상만큼 변경됩니다. 렌즈 내부 매개변수 샘플이 지원되는 경우, 렌즈 내부 매개변수 샘플의 광학 중심이 1픽셀 이상만큼 변경됩니다.
각 프레임에 대해 픽셀의 주요 포인트 변화를 보여주는 test_lens_intrinsic_calibration
플롯 예시
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_distortion
여러 확대/축소 수준에서 가져온 각 미리보기 프레임 전체에서 왜곡이 정정되는지 테스트합니다. levels. 테스트는 각 미리보기 프레임에 대해 카메라 내부 매개변수와 외적을 기반으로 이상적인 포인트를 계산합니다. 예시 이미지에서 이상적인 포인트는 녹색으로, 실제 포인트는 빨간색으로 표시되어 있습니다. 왜곡 오차는 실제 포인트와 이상적인 포인트 사이의 제곱평균제곱근(RMS) 픽셀 서리를 기반으로 계산됩니다. 이미지의 녹색 하이라이트와 빨간색 하이라이트는 왜곡 오차를 시각적으로 감지하는 데 사용됩니다.
이상적인 포인트는 녹색으로, 실제 포인트는 빨간색으로 표시된 격자무늬 이미지
테스트 대상 API:
android.hardware.camera2.CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds()
android.media.CamcorderProfile
android.media.MediaRecorder
통과: 각 미리보기 프레임의 정규화된 왜곡 오차가 테스트에서 설정된 기준값보다 작습니다.
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% 미만입니다.
다음은 흔들림을 보정한 샘플 동영상과 보정하지 않은 샘플 동영상입니다.
흔들림 보정이 적용된 샘플 동영상
흔들림 보정이 적용되지 않은 샘플 동영상
feature_combination
feature_combination
은 여러 카메라 기능이 동시에 사용 설정된 경우 기능이 올바르게 작동하는지 확인합니다. 이 테스트는 센서 퓨전 장면에서 사용된 격자무늬 이미지와 동일한 이미지를 사용합니다.
test_feature_combination
카메라 기기가 지원하는 여러 스트림 조합, 미리보기 손떨림 보정, 타겟 FPS 범위, 10비트 HDR 동영상, 울트라 HDR의 모든 조합을 테스트합니다. 이 테스트는 메모리를 매우 많이 사용하므로 RAM이 최소 128GB 이상인 호스트를 사용할 것을 권장합니다.
Android 15 및 이후 버전의 경우 구성 파일에 log_feature_combo_support
필드가 포함되며, 기본값은 False
입니다. log_feature_combo_support
필드가 True
로 설정된 경우 테스트는 지원되는 기능의 모든 조합을 실행하고 테스트 실패 없이 결과를 proto 파일에 로깅합니다. 규정 준수 테스트를 위해서는 log_feature_combo_support
필드를 False
로 설정해야 합니다.
테스트 대상 API:
android.hardware.camera2.CameraDevice.CameraDeviceSetup#isSessionConfigurationSupported
android.hardware.camera2.CameraDevice.CameraDeviceSetup#createCaptureRequest
통과: 지원되는 기능 조합 각각에 대해:
- 미리보기 손떨림 보정이 설정된 경우 미리보기 스트림의 손떨림이 보정됩니다.
- 미리보기 프레임 속도가 구성된
AE_TARGET_FPS_RANGE
내에 있습니다. - 레코딩된 미리보기 스트림의 색상 공간이 설정된 공간과 일치합니다.
- 울트라 HDR 캡처가 유효한 게인 맵을 갖습니다.