카메라 ITS 테스트

이 페이지에서는 Android 호환성 테스트 모음(CTS) 인증 도구의 일부인 카메라 이미지 테스트 모음(ITS)의 전체 테스트 목록을 제공합니다. ITS 테스트는 기능 테스트입니다. 즉, 이미지 품질을 측정하는 것이 아니라 알려진 모든 카메라 기능이 예상대로 작동하는지 측정하는 것입니다. 이 문서를 통해 개발자와 테스터는 개별 테스트에서 실행하는 작업과 테스트 실패를 디버그하는 방법을 알 수 있습니다.

카메라 ITS는 필수 카메라 속성과 API 수준, 미디어 성능 등급(MPC) 수준을 기준으로 테스트를 제어합니다. API 수준의 경우 ITS는 ro.product.first_api_level을 사용하여 더 낮은 API 수준의 기능에 관한 부정적인 사용자 환경을 테스트하는 특정 API 수준에 추가된 테스트를 제어합니다. ITS는 ro.vendor.api_level을 사용하여 새 하드웨어 기능이 필요한 특정 API 수준에 추가된 기능의 테스트를 제어합니다. ro.odm.build.media_performance_class가 기기에 정의된 경우 ITS에서는 MPC 수준에 따라 특정 테스트를 실행해야 합니다.

테스트는 다음과 같이 장면별로 그룹화됩니다.

  • scene0: 메타데이터, 잡음, 자이로스코프, 진동 감지
  • scene1: 노출, 감도, EV 보정, YUV와 JPEG/RAW 비교
  • scene2: 얼굴 인식, 색상 장면 또는 완전한 어두움이 필요한 테스트
  • scene3: 에지 개선, 렌즈 이동
  • scene4: 가로세로 비율, 자르기, 시야
  • scene5: 렌즈 음영
  • scene6: 확대/축소
  • scene_extensions: 카메라 확장 프로그램
  • sensor_fusion: 카메라/자이로스코프 타이밍 오프셋

각 장면에 관한 설명은 개별 섹션을 참고하세요.

scene0

Scene0 테스트에는 구체적인 장면 정보가 필요하지 않습니다. 그러나 휴대전화는 자이로스코프와 진동 테스트를 위해 고정되어 있어야 합니다.

test_burst_capture

전체 캡처 파이프라인이 원본 크기 캡처 속도와 CPU 시간을 따라잡을 수 있는지 확인합니다.

테스트 대상 API:

통과: 원본 크기 이미지의 버스트를 캡처하고 카메라가 충분히 빨라서 시간 초과를 방지합니다.

test_capture_result_dump

캡처 결과가 수동 캡처에서 반환되는지 테스트한 후 덤프합니다.

테스트 대상 API:

통과: 캡처를 완료하고 캡처 결과를 덤프합니다.

test_gyro_bias

기기가 고정 상태일 때 자이로스코프가 안정적으로 출력되는지 테스트합니다. 데이터는 평균 20개의 데이터 포인트로 표시됩니다.

테스트 대상 API:

통과: 자이로스코프 판독의 델타 값이 시간이 지남에 따라 0.01 미만입니다.

test_gyro_bias_plot.png

test_gyro_bias_plot.png

test_jitter

카메라 타임스탬프의 잡음을 측정합니다.

테스트 대상 API:

통과: 프레임과 프레임 사이에 최소 30ms 델타가 있습니다.

test_jitter_plot.png

test_jitter_plot.png(작은 y축 범위에 유의하세요. 잡음은 사실 이 도표에서는 작습니다.)

test_metadata

메타데이터 항목의 유효성을 테스트합니다. 캡처 결과와 카메라 특성 객체를 확인합니다. 이 테스트에서는 auto_capture_request 노출과 게인 값을 사용합니다. 이미지 콘텐츠가 중요하지 않기 때문입니다.

테스트 대상 API:

통과: 하드웨어 수준, rollingShutterSkew, frameDuration 태그, timestampSource, croppingType, blackLevelPattern, pixel_pitch, FoV, 과초점 거리가 있고 값이 유효합니다.

test_param_sensitivity_burst

android.sensor.sensitivity 매개변수가 버스트에서 올바르게 적용되는지 테스트합니다. 출력 메타데이터만 검사합니다.

테스트 대상 API:

통과: 출력 데이터의 허용 오차가 0.2% 미만입니다.

test_read_write

기기가 캡처 메타데이터를 다시 읽어 올바른 노출과 게인 값을 작성하는지 테스트합니다.

테스트 대상 API:

통과: 읽기 및 쓰기 값이 모든 장면에서 일치합니다.

test_sensor_events

기기가 센서 퓨전 지원을 공지하는 기기의 센서 이벤트를 쿼리하고 출력하는지 테스트합니다. 예상되는 센서는 가속도계, 자이로스코프, 자기계입니다. 이 테스트는 화면이 켜져 있는 경우, 즉, 기기가 대기 모드에 있지 않은 경우에만 작동합니다.

테스트 대상 API:

통과: 각 센서의 이벤트를 수신합니다.

test_solid_color_test_pattern

카메라 음소거 시 단색 테스트 패턴이 제대로 생성되는지 테스트합니다. 카메라 음소거가 지원되는 경우 단색 테스트 패턴이 지원되어야 합니다. 카메라 음소거가 지원되지 않는 경우 단색 테스트 패턴은 기능이 공지되는 경우에만 테스트됩니다.

RAW 이미지가 지원되는 경우 색상 할당도 테스트됩니다. 테스트 색상은 검은색, 흰색, 빨간색, 파란색, 초록색입니다. RAW 이미지를 지원하지 않는 카메라의 경우 검은색만 테스트됩니다.

테스트 대상 API:

통과: 지원되는 단색 테스트 패턴이 정확한 색상이며 이미지 편차가 적습니다.

test_test_pattern

android.sensor.testPatternMode 매개변수를 테스트하여 유효한 각 테스트 패턴의 프레임을 캡처하고 프레임이 단색과 색상 막대에서 올바르게 생성되는지 확인합니다. 이 테스트에는 다음 단계가 포함됩니다.

  1. 지원되는 모든 테스트 패턴의 이미지를 캡처합니다.
  2. 단색 테스트 패턴과 색상 막대의 간단한 정확성 검사를 실행합니다.

테스트 대상 API:

통과: 지원되는 테스트 패턴이 올바르게 생성됩니다.

test_test_patterns_2

test_test_patterns_2.jpg

test_tonemap_curve

선형 톤맵을 사용하여 RAW에서 YUV로 테스트 패턴을 변환하는 것을 테스트합니다. 이 테스트에는 톤맵 변환을 위한 완벽한 이미지 패턴을 생성하기 위해 android.sensor.testPatternMode = 2(COLOR_BARS)가 필요합니다. 파이프라인에 선형 톤맵과 적합한 이미지 입력으로 적절한 색상 출력이 있는지 확인합니다(test_test_patterns에 의존).

테스트 대상 API:

통과: YUV와 RAW가 서로 유사하게 보입니다.

test_tonemap_curve_raw_2

test_tonemap_curve_raw_2.jpg

test_tonemap_curve_yuv_2.jpg

test_tonemap_curve_yuv_2.jpg

test_unified_timestamp

이미지 및 움직임 감지 센서 이벤트가 동일한 시간 도메인에 있는지 테스트합니다.

테스트 대상 API:

통과: 모션 타임스탬프가 두 이미지 타임스탬프 사이에 있습니다.

test_vibration_restriction

기기의 진동이 예상대로 작동하는지 테스트합니다.

테스트 대상 API:

통과: Camera Audio Restriction API로 음소거했을 때 기기가 진동하지 않습니다.

scene1

scene1은 회색 차트입니다. 회색 차트는 카메라 시야의 중앙 30%를 포함해야 합니다. 중앙 영역에는 특징이 없으므로 회색 차트는 3A(자동 노출, 자동 화이트 밸런스, 자동 초점)를 적절히 테스트할 것으로 예상됩니다. 그러나 캡처 요청은 3A가 수렴되기에 충분한 특징이 포함된 전체 장면을 지정합니다.

RFoV 카메라는 WFoV 또는 RFoV 테스트 장비에서 테스트할 수 있습니다. RFoV 카메라를 WFoV 테스트 장비에서 테스트하면 차트는 FoV에서 회색 차트의 일부 경계를 보장하도록 ⅔만큼 조정되어 3A 수렴을 지원합니다. 카메라 테스트 장비에 관한 자세한 내용은 카메라 ITS-in-a-box를 참고하세요.

scene1

scene1: 원본 크기 차트(왼쪽). ⅔만큼 조정된 차트(오른쪽).

test_3a

다소 어려운 타겟으로 3A 수렴을 테스트합니다.

테스트 대상 API:

통과: 3A가 수렴되고 반환된 3A 값이 유효합니다.

test_ae_af

3A 자동 노출(AE) 및 자동 초점(AF) 알고리즘을 개별적으로 테스트합니다.

테스트 대상 API:

통과: 3A가 수렴되고 반환된 3A 값이 합법적입니다.

test_ae_precapture_trigger

사전 캡처 트리거를 사용할 때 AE 상태 머신을 테스트합니다. AE가 사용 중지된 수동 요청 5개를 캡처합니다. 마지막 요청에는 AE 사전 캡처 트리거가 있습니다. AE가 사용 중지되었으므로 무시되어야 합니다.

테스트 대상 API:

통과: AE가 수렴됩니다.

test_auto_vs_manual

캡처된 자동 및 수동 장면이 동일한지 테스트합니다.

테스트 대상 API:

통과: 각 캡처 결과에서 보고된 수동 화이트 밸런스 게인 및 변환이 카메라 3A 알고리즘의 자동 화이트 밸런스 estimate와 일치합니다.

test_auto_vs_manual_auto

test_auto_vs_manual_auto.jpg

test_auto_vs_manual_wb

test_auto_vs_manual_wb.jpg

test_auto_vs_manual_manual_wb_tm

test_auto_vs_manual_manual_wb_tm.jpg

test_black_white

기기에서 완전한 흑백 이미지를 생성하는지 테스트합니다. 두 번 캡처합니다. 매우 낮은 게인과 짧은 노출을 사용한 첫 번째 캡처를 통해 검은색 사진을 얻고 매우 높은 게인과 긴 노출을 사용한 두 번째 캡처를 통해 흰색 사진을 얻습니다.

테스트 대상 API:

통과: 흑백 이미지를 생성합니다. 백색 이미지의 채워진 채널은 RGB 값이 [255, 255, 255]이며 오차 범위의 차이는 1% 미만입니다.

test_black_white_black test_black_white_black
test_black_white_black.jpg test_black_white_white.jpg

test_black_white_plot_means

test_black_white_plot_means.png

test_burst_sameness_manual

수동 캡처 설정으로 이미지 50개를 5번 버스트하고 모두 동일한지 확인합니다. 이 테스트는 다르게 처리되거나 아티팩트가 있는 프레임이 산발적으로 있는지 확인하는 데 사용할 수 있습니다.

테스트 대상 API:

통과: 이미지가 시각적으로 동일하고 RGB 값도 동일합니다.

실패: 각 버스트 시작 시 RGB 평균 차트의 급등 또는 하락을 보여 줍니다.

  • first_API_level이 30 미만인 경우 허용 오차는 3%입니다.
  • first_API_level이 30 이상인 경우 허용 오차는 2%입니다.

test_burst_sameness_manual_mean

test_burst_sameness_manual_mean.jpg

test_burst_sameness_manual_plot_means

test_burst_sameness_manual_plot_means.png

test_capture_result

유효한 데이터가 CaptureResult 객체에 반환되는지 테스트합니다. 자동, 수동, 자동 캡처를 실행합니다.

테스트 대상 API:

통과: 메타데이터가 모든 캡처에 유효하고 수동 설정이 두 번째 자동 캡처로 유출되지 않습니다. 캡처의 렌즈 음영 보정을 표시합니다.

test_capture_result_plot_lsc_auto_ch0

test_capture_result_plot_lsc_auto_ch0.png

test_crop_region_raw

RAW 스트림을 자를 수 없는지 테스트합니다.

테스트 대상 API:

통과: YUV 이미지는 중앙에서 잘리지만 RAW 이미지는 잘리지 않습니다.

test_crop_region_raw_comp_raw_crop

test_crop_region_raw_comp_raw_crop.jpg

test_crop_region_raw_comp_raw_full

test_crop_region_raw_comp_raw_full.jpg

test_crop_region_raw_comp_yuv_crop

test_crop_region_raw_comp_yuv_crop.jpg

test_crop_region_raw_yuv_full

test_crop_region_raw_yuv_full.jpg

test_crop_regions

자르기 영역이 작동하는지 테스트합니다. 전체 이미지를 가져와 다른 영역 5개(모서리, 중앙)의 패치를 만듭니다. 5개 영역의 자르기 세트로 이미지를 가져옵니다. 패치와 자르기 이미지 값을 비교합니다.

테스트 대상 API:

통과: 잘린 영역의 이미지가 자르기 이미지에 상응하는 패치와 일치합니다.

test_dng_noise_model

DNG 원시 모델 매개변수가 올바른지 확인합니다. 도표는 감도 범위에 걸쳐 캡처된 원본 장면에서 회색 카드의 중앙 패치에 관한 측정된 편차를 설명하고 이러한 값을 카메라 HAL의 DNG 노이즈 모델에서 각 감도에 예상되는 편차와 비교합니다(캡처 결과 객체에 반환된 O, S 매개변수에 기반함). DNG 노이즈 모델에 관해 자세히 알아보려면 DNG 노이즈 모델에 관한 다음 문서를 다운로드하세요.

테스트 대상 API:

통과: DNG 원시 모델 매개변수가 올바릅니다. 예상 RGB 값이 측정된 실제 RGB 값과 일치합니다.

test_dng_noise_model_plog

test_dng_noise_model_plog.png

test_ev_compensation_advanced

노출값(EV) 보정이 적용되는지 테스트합니다. 테스트에서는 8단계로 노출을 늘리고 예상 밝기를 기준으로 측정 밝기를 확인합니다. 예상값은 EV 보정이 적용되지 않은 이미지의 밝기로 계산되며 계산값이 실제 이미지 값 범위를 초과하면 예상값이 채워집니다. 예상값과 측정값이 일치하지 않거나 이미지가 5단계 이내에 과다 노출되면 테스트가 실패합니다.

테스트 대상 API:

통과: 이미지가 5단계 내에서 과다 노출되지 않고 노출을 늘리는 것을 보여 줍니다.

test_ev_compensation_advanced_plot_means

test_ev_compensation_advanced_plot_means.png

test_ev_compensation_basic

CONTROL_AE_COMPENSATION_STEP으로 만든 범위를 사용하여 EV 보상이 적용되는지 테스트합니다. 8개의 프레임이 각 보상 값에서 캡처됩니다.

테스트 대상 API:

통과: EV 보정 설정을 높여 루마 증가를 캡처합니다. 각 EV 보정 설정에서 캡처된 8개의 프레임은 안정적인 루마 값이 있습니다.

test_ev_compensation_basic

test_ev_compensation_basic.png

test_exposure

ISO 및 노출 시간이 다양할 때 일정한 노출이 달성되는지 테스트합니다. ISO 및 노출 시간이 서로 균형을 이루도록 선택한 일련의 장면을 찍습니다. 결과의 밝기는 동일해야 하지만 시퀀스에서 이미지의 노이즈가 더 커야 합니다. 샘플 픽셀의 평균값이 서로 비슷한지 확인합니다. 이미지가 0 또는 1로 고정되지 않는지 확인합니다(이미지를 직선처럼 보이게 함). 테스트는 구성 파일에서 debug 플래그를 설정하여 RAW 이미지로 실행할 수도 있습니다.

테스트 대상 API:

통과: 이미지의 밝기는 동일하지만 ISO가 더 높을수록 노이즈가 커집니다. RGB 평면은 ISO* 노출 값이 테스트된 게인 공간에서 일정하면 평평합니다.

test_exposure_plot_means

test_exposure_plot_means.png

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

test_jpeg

변환된 YUV 이미지와 기기 JPEG 이미지가 동일한지 테스트합니다. 테스트는 이미지의 중앙 10%를 가져와 RGB 값을 계산하고 일치하는지 확인합니다.

테스트 대상 API:

통과: 각 이미지의 평균 RGB 차이가 3% 미만입니다.

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

test_latching

설정(노출 및 게인)이 FULLLEVEL_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=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=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=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=09.jpg test_latching_i=10.jpg test_latching_i=11.jpg
test_latching_i=12.jpg
test_latching_i=12.jpg

test_latching_plot_means

test_latching_plot_means.png

test_linearity

기기 처리가 선형 픽셀로 반전될 수 있는지 테스트합니다. 동일한 타겟을 가리키는 기기로 일련의 장면을 캡처합니다.

테스트 대상 API:

통과: 민감도가 증가하면 R, G, B 값이 선형으로 증가해야 합니다.

test_linearity_plot_means

test_linearity_plot_means.png

test_locked_burst

3A 잠금 및 YUV 버스트를 테스트합니다(자동 설정 사용). 이 테스트는 MANUAL_SENSOR 또는 PER_FRAME_CONTROLS가 없는 제한된 기기에서도 통과하도록 설계되었습니다. 테스트는 프레임 속도 검사가 CTS에 있는 동안 YUV 이미지의 일관성을 확인합니다.

테스트 대상 API:

통과: 캡처가 일관되게 보입니다.

test_locked_burst_frame0

test_locked_burst_frame0.jpg

test_locked_burst_frame1

test_locked_burst_frame1.jpg

test_locked_burst_frame2

test_locked_burst_frame2.jpg

test_param_color_correction

설정할 때 android.colorCorrection.* 매개변수가 적용되는지 테스트합니다. 다른 변환 및 게인 값을 사용하여 장면을 찍고 이에 따라 장면이 다르게 보이는지 테스트합니다. 변환 및 게인을 선택하여 출력이 점점 더 빨간색이나 파란색이 되도록 합니다. 선형 톤맵을 사용합니다. 톤 매핑은 이미지 처리에서 사용되는 기법으로, 한 가지 색상 세트를 다른 색상 세트에 매핑하여 동적 범위가 더 제한된 매체의 HDR(High Dynamic Range) 이미지 모양을 추정합니다.

테스트 대상 API:

통과: R 및 B 값은 변환에 따라 증가합니다.

test_param_color_correction_plot_means

test_param_color_correction_plot_means.png

*x축은 캡처 요청입니다. 0 = unity, 1=red boost, 2= blue boost

test_param_color_correction_req=0

test_param_color_correction_req=0.jpg

test_param_color_correctness_req=1

test_param_color_correctness_req=1.jpg (R boost)

test_param_color_correction_req=2

test_param_color_correction_req=2.jpg (B boost)

test_param_exposure_time

android.sensor.exposureTime 매개변수가 적용되는지 테스트합니다.

테스트 대상 API:

통과: 각 장면이 이전 장면보다 밝습니다.

test_param_exposure_time_frame0

test_param_exposure_time_frame0.jpg

test_param_exposure_time_plot

test_param_exposure_time_plot.png

test_param_flash_mode

android.flash.mode 매개변수가 적용되는지 테스트합니다. 플래시가 터졌는지 명확하게 알 수 있도록 노출을 어두운 면으로 수동으로 설정하고 선형 톤맵을 사용합니다. 플래시가 터졌는지 확인하기 위해 만들어진 큰 그라데이션이 있는지 타일 이미지가 있는 중앙을 확인합니다.

테스트 대상 API:

통과: 타일 이미지의 중앙에 플래시가 터졌음을 의미하는 큰 그라데이션이 있습니다.

test_param_flash_mode_1

test_param_flash_mode_1.jpg

test_param_flash_mode_1_tile

test_param_flash_mode_1_tile.jpg

test_param_flash_mode_2

test_param_flash_mode_2.jpg

test_param_flash_mode_2_tile

test_param_flash_mode_2_tile.jpg

test_param_noise_reduction

설정할 때 android.noiseReduction.mode 매개변수가 올바르게 적용되는지 테스트합니다. 어두운 조명의 카메라로 이미지를 캡처합니다. 높은 아날로그 게인을 사용하여, 캡처된 이미지에 노이즈가 있는지 확인합니다. NR 사용 안 함, '빠름', '고화질'로 세 가지 이미지를 캡처합니다. 게인이 낮고 NR을 사용하지 않는 이미지도 캡처하고 기준으로 이 편차를 사용합니다. SNR(신호 대 노이즈 비율)이 높을수록 이미지 품질이 좋아집니다.

테스트 대상 API:

통과: SNR이 다양한 노이즈 감소 모드에 따라 다르고 아래 그래프와 유사하게 동작합니다.

test_param_noise_reduction_plot_SNRs

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

test_param_noise_reduction_high_gain_nr=0.jpg

test_param_noise_reduction_high_gain_nr=1

test_param_noise_reduction_high_gain_nr=1.jpg

test_param_noise_reduction_high_gain_nr=2

test_param_noise_reduction_high_gain_nr=2.jpg

test_param_noise_reduction_high_gain_nr=3

test_param_noise_reduction_high_gain_nr=3.jpg

test_param_noise_reduction_low_gain

test_param_noise_reduction_low_gain.jpg

test_param_sensitivity

android.sensor.sensitivity 매개변수가 적용되는지 테스트합니다. 이 테스트는 5단계로 감도를 늘리며 각 장면의 노출은 고정되어 있습니다.

테스트 대상 API:

통과: 중앙 10%의 RGB 평균이 높아진 감도로 더 밝아집니다.

test_param_sensitivity_iso=0055

test_param_sensitivity_iso=0055.jpg

test_param_sensitivity_iso=1819

test_param_sensitivity_iso=1819.jpg

test_param_sensitivity_iso=3583

test_param_sensitivity_iso=3583.jpg

test_param_sensitivity_iso=5347

test_param_sensitivity_iso=5347.jpg

test_param_sensitivity_iso=7111

test_param_sensitivity_iso=7111.jpg

test_param_sensitivity_plot

test_param_sensitivity_plot.png

test_param_shading_mode

android.shading.mode 매개변수가 적용되는지 테스트합니다.

테스트 대상 API:

통과: 음영 모드가 전환되고 렌즈 음영 지도가 예상대로 수정됩니다.

test_param_shading_mode_ls_maps_mode_0_loop_0

test_param_shading_mode_ls_maps_mode_0_loop_0.png

test_param_shading_mode_ls_maps_mode_1_loop_0

test_param_shading_mode_ls_maps_mode_1_loop_0.png

test_param_shading_mode_ls_maps_mode_2_loop_0

test_param_shading_mode_ls_maps_mode_2_loop_0.png

test_param_tonemap_mode

android.tonemap.mode 매개변수가 적용되는지 테스트합니다. 각 R, G, B 채널에 다른 톤맵 곡선을 적용하고 출력 이미지가 예상대로 수정되는지 확인합니다. 이 테스트는 test1 및 test2라는 두 가지 테스트로 구성됩니다.

테스트 대상 API:

통과:

  • test1: 두 이미지에 모두 선형 톤맵이 있지만 n=1의 그라데이션이 더 가파릅니다. n=1 이미지의 경우 G(녹색) 채널이 더 밝습니다.
  • test2: 톤맵은 동일하지만 길이가 다릅니다. 이미지는 동일합니다.
test_param_tonemap_mode_n=0.jpg test_param_tonemap_mode_n=1.jpg
test_param_tonemap_mode_n=0.jpg test_param_tonemap_mode_n=1.jpg

test_post_raw_sensitivity_boost

RAW 감도 부스트 이후를 확인합니다. 감도가 다른 일련의 RAW 및 YUV 이미지를 캡처하고 RAW 감도 부스트 조합을 게시하며 출력 픽셀 평균이 요청 설정과 일치하는지 확인합니다.

테스트 대상 API:

통과: RAW 이미지는 부스트가 증가함에 따라 어두워지는 반면 YUV 이미지는 밝기가 일정하게 유지됩니다.

test_post_raw_sensitivity_boost_raw_s=3583_boost=0100

test_post_raw_sensitivity_boost_raw_s=3583_boost=0100.jpg

test_post_raw_sensitivity_boost_raw_s=1792_boost=0200

test_post_raw_sensitivity_boost_raw_s=1792_boost=0200.jpg

test_post_raw_sensitivity_boost_raw_s=0896_boost=0400

test_post_raw_sensitivity_boost_raw_s=0896_boost=0400.jpg

test_post_raw_sensitivity_boost_raw_s=0448_boost=0800

test_post_raw_sensitivity_boost_raw_s=0448_boost=0800.jpg

test_post_raw_sensitivity_boost_raw_s=0224_boost=1600

test_post_raw_sensitivity_boost_raw_s=0224_boost=1600.jpg

test_post_raw_sensitivity_boost_raw_s=0112_boost=3199

test_post_raw_sensitivity_boost_raw_s=0112_boost=3199.jpg

test_post_raw_sensitivity_boost_raw_plot_means

test_post_raw_sensitivity_boost_raw_plot_means.png

test_post_raw_sensitivity_boost_yuv_s=0112_boost=3199

test_post_raw_sensitivity_boost_yuv_s=0112_boost=3199.jpg

test_post_raw_sensitivity_boost_yuv_s=0448_boost=0800

test_post_raw_sensitivity_boost_yuv_s=0448_boost=0800.jpg

test_post_raw_sensitivity_boost_yuv_s=0896_boost=0400

test_post_raw_sensitivity_boost_yuv_s=0896_boost=0400.jpg

test_post_raw_sensitivity_boost_yuv_s=1792_boost=0200

test_post_raw_sensitivity_boost_yuv_s=1792_boost=0200.jpg

test_post_raw_sensitivity_boost_yuv_s=3585_boost=0100

test_post_raw_sensitivity_boost_yuv_s=3585_boost=0100.jpg

test_post_raw_sensitivity_boost_yuv_plot_means

test_post_raw_sensitivity_boost_yuv_plot_means.png

test_raw_burst_sensitivity

게인이 증가하는 일련의 원본 이미지를 캡처하고 노이즈를 측정합니다. 버스트에서 원본만 캡처합니다.

테스트 대상 API:

통과: 게인이 증가함에 따라 각 장면의 노이즈가 이전 장면보다 더 큽니다.

중앙 통계 그리드 셀의 편차를 사용합니다.

test_raw_burst_sensitivity_variance

test_raw_burst_sensitivity_variance.png

test_raw_exposure

노출 시간이 증가하는 일련의 원본 이미지를 캡처하고 픽셀 값을 측정합니다.

테스트 대상 API:

통과: ISO(게인)를 높이면 픽셀이 빛에 더 민감해지므로 도표가 왼쪽으로 이동합니다.

test_raw_exposure_s=55

test_raw_exposure_s=55.png

(10⁰은 1ms, 10¹은 10ms, 10⁻¹은 0.1ms)

test_raw_exposure_s=132

test_raw_exposure_s=132.png

test_raw_exposure_s=209

test_raw_exposure_s=209.png

test_raw_exposure_s=286

test_raw_exposure_s=286.png

test_raw_exposure_s=363

test_raw_exposure_s=363.png

test_raw_exposure_s=440

test_raw_exposure_s=440.png

test_raw_sensitivity

감도가 증가하는 일련의 원본 이미지를 캡처하고 이미지 중앙 10%의 노이즈(편차)를 측정합니다. 각 장면의 노이즈가 이전 장면보다 큰지 테스트합니다.

테스트 대상 API:

통과: 장면마다 편차가 증가합니다.

test_raw_sensitivity_variance

test_raw_sensitivity_variance.png

test_reprocess_noise_reduction

요청을 재처리하는 데 android.noiseReduction.mode가 적용되는지 테스트합니다. 재처리된 이미지를 어두운 조명의 카메라로 캡처합니다. 높은 아날로그 게인을 사용하여 캡처 이미지에 노이즈가 있는지 확인합니다. NR 사용 안 함, '빠름', '고화질'로 세 가지 재처리된 이미지를 캡처합니다. 게인이 낮고 NR을 사용하지 않는 재처리된 이미지를 캡처하고 이 편차를 기준으로 사용합니다.

테스트 대상 API:

통과: FAST >= OFF, HQ >= FAST, HQ >> OFF

일반적인 SNR 및 NR_MODE 도표

일반적인 SNR 및 NR_MODE 도표

test_tonemap_sequence

톤맵 곡선이 다른 일련의 장면을 테스트합니다. 선형 톤맵으로 수동 장면 3개를 캡처합니다. 기본 톤맵으로 수동 장면 3개를 캡처합니다. 각 연속 프레임 쌍 사이의 델타를 계산합니다.

테스트 대상 API:

통과: 동일한 프레임이 3개 있고 그다음에 이와는 다른 동일한 프레임이 3개 있습니다.

test_tonemap_sequence_i=0

test_tonemap_sequence_i=0.jpg

test_tonemap_sequence_i=1

test_tonemap_sequence_i=1.jpg

test_tonemap_sequence_i=2

test_tonemap_sequence_i=2.jpg

test_tonemap_sequence_i=3

test_tonemap_sequence_i=3.jpg

test_tonemap_sequence_i=4

test_tonemap_sequence_i=4.jpg

test_tonemap_sequence_i=5

test_tonemap_sequence_i=5.jpg

test_yuv_jpeg_all

이미지 캡처의 보고된 모든 크기와 형식이 작동하는지 테스트합니다. YUV 및 JPEG가 image_processing_utils 모듈에서 변환될 때 동일하게 보이도록 선형 톤맵이 있는 수동 요청을 사용합니다. 이미지는 기본적으로 저장되지 않지만 debug_mode를 사용 설정하면 저장할 수 있습니다.

테스트 대상 API:

통과: 모든 이미지 중앙은 RGB 변환 이미지에서 최고 해상도 YUV 이미지의 3%로 최대 RMS(신호의 제곱 평균값) 차이를 보유합니다.

test_yuv_jpeg_all

test_yuv_jpeg_all.png

test_yuv_plus_dng

이미지 캡처의 보고된 크기와 형식이 작동하는지 테스트합니다.

테스트 대상 API:

통과: 테스트가 완료되고 요청된 이미지를 반환합니다.

test_yuv_plus_dng

test_yuv_plus_dng.jpg

test_yuv_plus_jpeg

단일 프레임을 YUV 및 JPEG 출력으로 모두 캡처하는 것을 테스트합니다. YUV 및 JPEG가 image_processing_utils 모듈에서 변환될 때 동일하게 보이도록 선형 톤맵이 있는 수동 요청을 사용합니다.

테스트 대상 API:

통과: YUV 및 JPEG 이미지가 유사하고 RMS(신호의 제곱 평균값) 차이가 1% 미만입니다.

test_yuv_plus_jpg_jpg.jpg test_yuv_plus_jpeg_yuv.jpg
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:

통과: YUV 및 RAW 이미지가 유사하고 RMS(신호의 제곱 평균값) 차이가 3.5% 미만입니다.

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

scene2_a

scene2_a에는 세 가지 얼굴이 있고 배경도 회색, 옷도 회색입니다. 다양한 피부색을 나타내기 위해 선택된 얼굴입니다. 차트는 얼굴 인식이 최적으로 작동하도록 올바른 방향이어야 합니다.

scene2_a

scene2_a

test_auto_flash

어두운 장면에서 자동 플래시가 트리거되는지 테스트합니다. 타일 이미지의 중앙에 큰 그라데이션이 있는지 검사하여 자동 플래시가 실행되는지 확인합니다. 자동 플래시를 트리거하려면 테스트 장비의 태블릿과 조명이 꺼져 있어야 합니다. 태블릿은 테스트에서 끄고 조명은 Arduino 컨트롤러를 통해 자동으로 끌 수 있습니다. 테스트가 올바르게 작동하려면 장면이 완전히 어두워야 합니다. 따라서 후면 태블릿 개구부는 장면 태블릿으로 완전히 덮어야 하고, 전면 개구부는 조리개 및 DUT 스마트폰으로 가려져서 장치에 잘못된 빛이 들어가는 것을 차단해야 합니다.

테스트 대상 API:

통과: 타일 이미지의 중앙에 자동 플래시가 실행되었음을 의미하는 큰 그라데이션이 있습니다.

test_autoframing

카메라 기기의 자동 프레이밍 동작을 테스트합니다. 장면의 어떤 얼굴도 표시되지 않도록 큰 확대/축소를 실행하고, CaptureRequestAUTOFRAMINGTrue로 설정하여 자동 프레이밍을 사용 설정하고, 상태가 수렴될 때(즉, CaptureResultAUTOFRAMING_STATEAUTOFRAMING_STATE_CONVERGED로 설정될 때) 원래 장면의 모든 얼굴이 감지될 수 있는지 확인합니다.

테스트 대상 API:

통과: 세 얼굴이 모두 감지되었습니다.

test_display_p3

ColorSpaceProfiles API를 사용하여 JPEG로 Display P3 캡처를 테스트합니다. 캡처된 JPEG의 헤더에 적절한 ICC 프로필이 있는지 테스트하고 이미지에 sRGB 색 공간 밖의 색상이 포함되어 있는지 테스트합니다.

테스트 대상 API:

통과: JPEG에 Display P3 ICC 프로필과 sRGB 색 공간 밖의 색상이 포함되어 있습니다.

test_effects

지원되는 카메라 효과의 프레임을 캡처하고 올바르게 생성되는지 확인합니다. 이 테스트는 OFFMONO 효과만 확인하지만 지원되는 모든 효과의 이미지를 저장합니다.

테스트 대상 API:

통과: OFF 효과가 있는 장면 이미지와 효과가 MONO로 설정된 흑백 이미지를 캡처합니다.

test_effects_MONO

test_effects_MONO.jpg

test_format_combos

다양한 출력 형식 조합을 테스트합니다.

테스트 대상 API:

통과: 모든 조합이 성공적으로 캡처됩니다.

test_jpeg_quality

카메라 JPEG 압축 품질을 테스트합니다. android.jpeg.quality를 통해 JPEG 품질을 조정하고 양자화 테이블이 올바르게 변경되는지 확인합니다.

테스트 대상 API:

통과: 품질 향상으로 양자화 행렬이 감소합니다. (행렬은 나눗셈 인수를 나타냅니다.)

test_jpeg_quality

Pixel 4 후면 카메라 루마/크로마 DQT 행렬 평균 대 JPEG 품질

test_jpeg_quality 실패

실패한 테스트 예

품질이 매우 낮은 이미지(jpeg.quality < 50)의 경우 양자화 행렬에서 압축이 증가하지 않습니다.

test_num_faces

얼굴 인식을 테스트합니다.

테스트 대상 API:

통과: 얼굴을 3개 찾습니다.

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

test_preview_min_frame_rate

미리보기 프레임 속도가 어두운 장면에서 올바르게 줄어드는지 테스트합니다. 이 테스트가 올바로 작동하려면 테스트 장비의 조명을 컨트롤러로 끄거나 테스트 운영자가 수동으로 꺼야 합니다.

테스트 대상 API:

통과: 미리보기 프레임 속도가 요청된 프레임 속도 범위의 최소 수준이며 프레임 간 변형이 테스트에서 설정된 절대 허용 오차보다 적습니다.

test_reprocess_uv_swap

YUV 재처리가 U 평면과 V 평면을 교환하지 않는지 테스트합니다. 이는 재처리된 이미지와 재처리되지 않은 캡처 간 절대 차이 합계(SAD)를 계산하여 감지됩니다. 재처리된 캡처의 출력 U 평면과 V 평면을 교환하면 SAD가 증가하는 경우 출력에 올바른 U 평면과 V 평면이 있는 것으로 가정됩니다.

테스트 대상 API:

통과: U 평면과 V 평면이 교환되지 않습니다.

test_reprocess_uv_swap

test_reprocess_uv_swap.png

scene2_b

test_num_faces

얼굴 장면에서 피부색의 다양성을 높여 얼굴 인식을 테스트합니다.

테스트 대상 API:

통과: 얼굴을 3개 찾습니다.

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

test_yuv_jpeg_capture_sameness

해상도가 1920x1440을 초과하지 않는 최대 JPEG 형식과 가로세로 비율이 동일한 가장 큰 일반적인 YUV 및 JPEG 형식을 사용하여 두 개의 이미지를 캡처합니다. jpeg.quality를 100으로 설정하고 이중 노출 영역 요청을 캡처합니다. 두 이미지를 RGB 배열로 변환하고 두 이미지 간의 3D 제곱 평균값(RMS) 차이를 계산합니다.

테스트 대상 API:

통과: YUV 및 JPEG 이미지가 유사하고 RMS(신호의 제곱 평균값) 차이가 1% 미만입니다.

scene2_c

test_num_faces

얼굴 장면에서 피부색의 다양성을 높여 얼굴 인식을 테스트합니다.

테스트 대상 API:

통과: 얼굴을 3개 찾습니다.

test_num_faces_fd_mode_1

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:

통과: 얼굴을 3개 찾습니다.

scene2_e

test_continuous_picture

캡처 요청을 먼저 android.control.afMode = 4 (CONTINUOUS_PICTURE).로 설정하여 VGA 해상도 50프레임을 캡처합니다.

테스트 대상 API:

통과: 3A 시스템이 50프레임 캡처가 끝나면 안정됩니다.

test_num_faces

얼굴 장면에서 피부색의 다양성을 높여 얼굴 인식을 테스트합니다.

테스트 대상 API:

통과: 얼굴을 3개 찾습니다.

scene2_f

scene2_f에 배경과 옷이 모두 흰색인 얼굴이 3개 있습니다. 얼굴의 피부색은 다양하며 배경과 크게 대비됩니다.

scene2_f.png

scene2_f

test_num_faces

얼굴 장면에서 피부색의 다양성을 높여 얼굴 인식을 테스트합니다.

테스트 대상 API:

통과: 얼굴을 3개 찾습니다.

test_num_faces_fd_mode_1

test_num_faces_fd_mode_1.jpg

scene3

Scene3은 ISO12233 차트를 사용하고 테스트는 대부분 차트 추출기 메서드를 사용하여 장면에서 차트를 찾습니다. 이러한 이유로 저장된 이미지에는 대부분 장면 1, 2 또는 4의 이미지와 같은 테두리가 없고 차트만 있습니다. 차트 찾기가 최적으로 작동하려면 차트가 올바른 방향으로 있어야 합니다.

test_3a_consistency

3A 일관성을 테스트합니다.

테스트 대상 API:

통과: 3A가 허용 오차 내에서 노출, 게인, awb(자동 화이트 밸런스), fd(초점 거리)를 위해 세 번 수렴됩니다.

test_edge_enhancement

android.edge.mode 매개변수가 올바르게 적용되는지 테스트합니다. 각 에지 모드의 재처리되지 않은 이미지를 캡처하고 출력 이미지의 선명도와 캡처 결과 메타데이터를 반환합니다. 지정된 에지 모드, 감도, 노출 시간, 초점 거리, 출력 표면 매개변수로 캡처 요청을 처리합니다.

통과: HQ 모드(2)가 OFF 모드(0)보다 선명합니다. FAST 모드(1)가 OFF 모드보다 선명합니다. HQ 모드는 더 선명하거나 FAST 모드와 같습니다.

테스트 대상 API:

영향을 받는 카메라 매개변수:

  • EDGE_MODE

test_edge_enhancement_edge=0

test_edge_enhancement_edge=0.jpg

test_edge_enhancement_edge=1

test_edge_enhancement_edge=1.jpg (빠른 모드)

test_edge_enhancement_edge=2

test_edge_enhancement_edge=2.jpg (고화질 모드)

test_flip_mirror

CDD 섹션 7.5.2 전면 카메라 [C-1-5]에 따라 이미지 방향이 올바른지 테스트합니다.

미러링되거나 뒤집히거나 회전된 이미지는 중앙 부근의 다이아몬드 모양으로 식별할 수 있습니다.

통과: 이미지가 뒤집히거나 미러링되거나 회전되지 않습니다.

test_flip_mirror_scene_patch

test_flip_mirror_scene_patch.jpg

test_landscape_to_portrait

가로 모드에서 세로 모드 재정의가 가로 모드 방향 센서에서 올바르게 작동하는지 테스트합니다.

테스트 대상 API:

통과: 테스트에서 예상 회전으로 차트를 찾을 수 있습니다(가로 모드에서 세로 모드 재정의가 사용 중지된 경우 0도, 사용 설정된 경우 90도).

test_landscape_to_portrait

test_landscape_to_portrait.png

test_lens_movement_reporting

렌즈 이동 플래그가 올바르게 보고되는지 테스트합니다. 최적의 초점 거리(3A로 확인)에서 첫 12개 프레임과 최소 초점 거리에서 마지막 12개 프레임으로 24개 이미지 버스트를 캡처합니다. 12프레임 주위에서 렌즈가 움직이면서 선명도가 떨어집니다. 선명도는 렌즈가 최종 위치로 이동하면서 결국 안정화됩니다. 렌즈 이동 플래그는 최적 초점 거리에서 렌즈가 고정된 첫 몇 개 프레임과 최소 초점 거리에서 렌즈가 고정된 마지막 몇 개 프레임에서 선명도가 중간인 모든 프레임에 어셜션되어야 합니다. 렌즈가 이동하는 정확한 프레임은 중요하지 않습니다. 렌즈가 이동할 때 이동 플래그가 어설션되는지 확인하는 것이 중요합니다.

테스트 대상 API:

통과: 렌즈 이동 플래그는 선명도가 변경된 프레임에서 True입니다.

실패 메커니즘:

  • test_log.DEBUGlens_moving: True(android.hardware.camera2.CaptureResult#LENS_STATE = 1)는 선명도가 변경되지 않는 프레임에서만 어설션됩니다.
  • test_log.DEBUGlens_moving: False(android.hardware.camera2.CaptureResult#LENS_STATE = 0)가 있는 프레임은 최적 초점 거리의 처음 몇 프레임 또는 최소 초점 거리의 마지막 몇 프레임과 비교하여 선명도 차이가 있습니다.

test_reprocess_edge_enhancement

에지 개선을 위해 지원되는 재처리 메서드가 올바르게 작동하는지 테스트합니다. 지정된 재처리 에지 모드로 캡처 요청을 처리하고 재처리 에지 모드가 사용 중지된 상태로 캡처하는 다른 모드를 비교합니다.

테스트 대상 API:

통과: 다양한 에지 모드의 선명도가 정확합니다. HQ(모드 2)는 OFF(모드 0)보다 더 선명하고, 다른 모드 간의 개선율도 비슷합니다.

test_reprocess_edge_enhancement_plot

test_reprocess_edge_enhancement_plot.png

scene4

scene4는 정사각형 내부 흰색 배경에 검은색 원으로 구성되어 있습니다.

scene4

scene4

test_aspect_ratio_and_crop

이미지가 이미지 파이프라인에서 예기치 않게 왜곡되거나 잘리는지 테스트합니다. 모든 형식에서 원의 사진을 찍습니다. 원이 왜곡되지 않았는지, 원이 이미지 중앙에서 이동하지 않았는지, 원이 다른 가로세로 비율이나 해상도로 잘못 크기가 변경되지 않았는지 확인합니다.

테스트 대상 API:

통과: 이미지가 늘어나지 않고 이미지 중앙이 3% 이상 차이 나지 않으며 가능한 최대 FoV(시야)가 유지됩니다.

실패 메커니즘:

  • 캡처된 이미지의 원이 처리 파이프라인으로 왜곡됩니다.
  • 낮은 해상도 이미지가 고해상도 이미지와 저해상도 이미지 간에 다른 FoV를 만드는 이미지 파이프라인에서 이중으로 잘립니다.
  • 캡처된 이미지의 원이 이미지의 높이나 너비를 줄이는 극단적인 가로세로 비율 캡처 요청으로 인해 잘립니다.
  • 캡처된 이미지의 원 중앙에 반사가 있어 완전히 채워지지 않은 것처럼 보입니다.

test_multi_camera_alignment

다중 카메라 시스템의 카메라 배치와 관련된 카메라 보정 매개변수를 테스트합니다. 다중 카메라 물리적 하위 카메라를 사용하여 물리적 카메라 중 하나로 사진을 찍습니다. 원 중심을 찾습니다. 원 중심을 각 카메라의 세계 좌표에 투영합니다. 세계 좌표에서 카메라의 원 중심 간의 차이를 비교합니다. 세계 좌표를 다시 픽셀 좌표로 재투영하고 유효성 검사로 원본과 비교합니다. 카메라의 초점 거리가 다른지 확인하는 원 크기를 비교합니다.

테스트 대상 API:

통과: 카메라 보정 데이터와 초점 거리를 사용하는 캡처된 이미지에 비해 투영된 이미지에서 원 중심과 크기가 예상한 것과 같습니다.

실패 메커니즘:

  • 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:

통과: 이미지가 늘어나지 않고 이미지 중앙이 3% 이상 차이 나지 않으며 가능한 최대 FoV(시야)가 유지됩니다.

test_preview_stabilization_fov

지원되는 미리보기 크기를 확인하여 FoV가 적절하게 잘렸는지 확인합니다. 이 테스트는 두 개의 동영상을 캡처합니다. 하나는 미리보기 안정화를 ON으로 하고 다른 하나는 미리보기 안정화를 OFF로 합니다. 각 동영상에서 대표 프레임을 선택하고 이를 분석하여 두 동영상의 FoV 변화가 사양 내에 있는지 확인합니다.

테스트 대상 API:

통과: 원의 가로세로 비율이 일정하게 유지되고 원의 중심 위치가 안정적으로 유지되며 원의 크기가 20%를 초과하여 변경되지 않습니다.

test_video_aspect_ratio_and_crop

모든 동영상 형식에서 정사각형 내부의 원을 촬영합니다. 키 프레임을 추출하고 원의 가로세로 비율이 변경되지 않는지 확인합니다. 또한, 잘린 이미지 중심에 원이 유지되고 원 크기가 일정한 형식이나 다른 해상도에서 변경되지 않는지 확인합니다(시야 확인)

테스트 대상 API:

통과: 동영상 프레임이 늘어나지 않고 프레임 중앙이 3% 이상 차이 나지 않으며 가능한 최대 FoV(시야)를 유지합니다.

scene5

Scene5에는 조명이 균일한 회색 장면이 필요합니다. 카메라 렌즈 위에 산광기를 배치하면 됩니다. 다음 산광기를 사용하는 것이 좋습니다. www.edmundoptics.com/optics/window-diffusers/optical-diffusers/opal-diffusing-glass/46168

장면을 준비하려면 카메라 앞에 산광기를 부착하고 카메라가 약 2000럭스 광원을 향하도록 합니다. scene5의 캡처된 이미지에는 명확한 특징이 없는 확산 조명이 필요합니다. 다음은 샘플 이미지입니다.

scene5

scene5 캡처

test_lens_shading_and_color_uniformity

렌즈 음영 보정이 적절하게 적용되고 흑백 균일한 장면의 색상이 고르게 분포되는지 테스트합니다. 이 테스트를 자동 3A가 있는 YUV 프레임에서 실행합니다. 렌즈 음영은 y 채널에 기반하여 평가됩니다. 지정된 각 샘플 블록의 평균 y 값을 측정하고 중앙 y 값과 비교하여 통과 또는 실패를 결정합니다. 색상 균일성 테스트는 r/g 및 b/g 공간에서 평가됩니다.

테스트 대상 API:

통과: 지정된 이미지 반경에서 r/g 및 b/g 값의 편차가 20% 미만이어야 테스트에 통과합니다.

scene6

scene6는 작은 원의 그리드이며 한 모서리에 정사각형이 있어 방향을 나타냅니다. 넓은 범위에서 확대/축소 기능을 테스트하려면 작은 원이 필요합니다.

scene6

scene6

test_in_sensor_zoom

잘린 RAW 이미지를 생성하는 카메라 센서 내 확대/축소 기능의 동작을 테스트합니다.

스트림 사용 사례를 CROPPED_RAW로 설정한 상태에서 테스트는 확대/축소 범위에 걸쳐 두 가지 캡처 이미지를 찍습니다. 전체 시야(FoV) RAW 이미지와 잘린 RAW 이미지입니다. 테스트에서는 이미지를 RGB 배열로 변환하고, 전체 크기의 잘린 RAW 이미지를 SCALER_RAW_CROP_REGION에서 보고된 크기로 축소하고, 두 이미지 간 3D 제곱평균제곱근(RMS) 차이를 계산합니다.

테스트 대상 API:

통과: 축소된 잘린 RAW 이미지와 전체 FoV RAW 이미지 간 3D 제곱평균제곱근(RMS) 차이가 1% 미만입니다.

test_zoom

카메라 확대/축소 동작을 테스트합니다. 확대/축소 범위에서 캡처하고 카메라가 확대됨에 따라 원이 커지는지 확인합니다.

테스트 대상 API:

통과: 캡처된 원의 상대적 크기가 요청된 확대/축소 비율에 따라 정확하여 카메라가 제대로 확대/축소하는지 확인합니다.

test_zoom

중심에서 가장 가까운 원의 윤곽을 찾는 test_zoom

test_low_latency_zoom

카메라의 짧은 지연 시간 확대/축소 동작을 테스트합니다. android.control.settingsOverride = 1 (SETTINGS_OVERRIDE_ZOOM)을 사용하여 확대/축소 범위에서 캡처하고 출력 이미지의 원이 캡처 메타데이터의 확대/축소 비율과 일치하는지 확인합니다.

테스트 대상 API:

통과: 캡처된 원의 상대적 크기가 확대/축소 비율 결과 메타데이터와 비교해 정확합니다.

test_preview_video_zoom_match

녹화 및 확대/축소 중에 동영상 미리보기와 동영상 출력이 표시되고 동일한 출력을 녹화하는지 테스트합니다. 다양한 확대/축소 비율에서 중앙에 가장 가까운 원의 크기를 계산하고 원의 크기가 확대 비율이 증가함에 따라 늘어나는지 확인합니다.

테스트 대상 API:

통과: 캡처된 원의 상대적 크기가 동영상 및 미리보기에서 요청된 확대/축소 비율과 비교해 정확합니다.

VGA_640x480_key_frame.png

VGA_640x480_key_frame.png(확대/축소 전)

preview_640x480_key_frame.png

preview_640x480_key_frame.png(확대/축소 전)

VGA_640x480_key_frame_zoomed.png

VGA_640x480_key_frame.png(확대/축소 후)

preview_640x480_key_frame_zoomed.png

preview_640x480_key_frame.png(확대/축소 후)

scene_extensions

scene_extensions 테스트는 카메라 확장 프로그램용이며 테스트 환경을 정밀하게 제어해야 하므로 카메라 ITS-in-a-Box를 사용해야 합니다.

scene_hdr

scene_hdr 장면은 왼쪽에는 세로 모드가 있고 오른쪽에는 저대비 QR 코드가 있습니다.

scene_hdr

scene_hdr

test_hdr_extension

HDR 확장 프로그램을 테스트합니다. 확장 프로그램을 사용 설정 및 사용 중지한 상태로 캡처하고 확장 프로그램으로 인해 QR 코드를 더 쉽게 감지할 수 있는지 확인합니다.

테스트 대상 API:

통과: HDR 확장 프로그램이 QR 코드를 감지하는 데 필요한 대비 변경 횟수를 줄이거나 QR 코드 전체의 그라데이션을 줄입니다.

scene_night

scene_night 장면은 흰색 원과 그 안에 작은 원이 네 개 있으며 배경은 모두 검은색입니다. 오른쪽 상단의 작은 원은 방향을 나타내기 위해 나머지 원보다 어둡습니다.

scene_night

scene_night

test_night_extension

야간 확장 프로그램을 테스트합니다. 확장 프로그램을 사용 설정 및 사용 중지한 상태에서 캡처한 후 다음을 확인합니다.

  • 야간 확장 프로그램이 사용 설정된 상태에서 캡처하는 데 더 오래 걸립니다.
  • 야간 확장 프로그램이 사용 설정된 상태의 캡처가 더 밝거나 장면 아티팩트의 모양이 개선됩니다.

테스트 대상 API:

통과: 야간 확장 프로그램이 사용 설정되지 않은 상태의 캡처와 비교할 때 야간 확장 프로그램이 사용 설정된 상태의 캡처에 최소 0.5초가 더 걸립니다. 캡처가 최소 10% 더 밝아야 합니다. 또는 장면의 회색 점이 주변 원의 중심보다 20픽셀 값 낮아야 합니다.

sensor_fusion

센서 퓨전 테스트에서는 격자무늬 패턴을 배경으로 휴대전화를 특정하게 움직여야 합니다. 최적의 결과를 내려면 테스트 차트가 평평하게 마운트되어야 합니다. 평평하지 않은 차트는 대다수 테스트의 회전 계산에 영향을 미칩니다. sensor_fusion 테스트는 센서 퓨전 상자를 사용하여 자동화할 수 있습니다.

격자무늬

격자무늬 이미지

test_multi_camera_frame_sync

타임스탬프를 결정하기 위해 격자무늬 내에서 정사각형의 각도를 계산하여 논리 카메라로 캡처한 프레임 타임스탬프가 10ms 이내에 있는지 테스트합니다.

테스트 대상 API:

통과: 각 카메라의 이미지 간 각도가 휴대전화가 회전할 때 눈에 띄게 변경되지 않습니다.

test_preview_stabilization

안정화된 미리보기 동영상이 자이로스코프보다 적게 회전하는지 테스트합니다.

테스트 대상 API:

통과: 프레임에 대한 최대 각도 회전이 자이로스코프 회전의 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.png

    test_sensor_fusion_gyro_events

  • test_sensor_fusion_plot_rotations: 자이로스코프와 카메라 이벤트의 정렬을 표시합니다. 이 도표는 카메라와 자이로스코프 사이의 이동이 +/-1ms로 일치함을 표시해야 합니다.

    test_sensor_fusion_plot_rotations.png

    test_sensor_fusion_plot_rotations

테스트 대상 API:

통과: 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:

통과: 프레임에 대한 최대 각도 회전이 자이로스코프 회전의 60% 미만입니다.

다음은 흔들림을 보정한 샘플 동영상과 보정하지 않은 샘플 동영상입니다.

  • 흔들림 보정이 적용된 샘플 동영상

  • 흔들림 보정이 적용되지 않은 샘플 동영상

test_led_snapshot

LED 스냅샷이 이미지의 채도나 색조를 조정하지 않는지 테스트합니다.

이 테스트에서는 조명 컨트롤러를 센서 퓨전 상자에 추가하여 조명을 제어합니다. 조명을 OFF로 설정한 상태에서 테스트는 AUTO_FLASH 모드를 ON으로 설정하여 캡처합니다. 이 캡처 중에 테스트는 aePrecapture 트리거를 START로 설정하여 사전 캡처 시퀀스를 실행하고, 캡처 인텐트를 Preview로 설정하여 플래시로 캡처를 실행합니다.

플래시로 인해 캡처에 고유한 핫스팟이 있으므로 테스트는 전체 캡처의 플래시 이미지 평균을 계산하고 값이 (68, 102) 범위 이내인지 확인합니다. 이미지의 화이트 밸런스가 적절한지 확인하기 위해 테스트에서는 R/G 및 B/G 비율을 계산하고 비율이 0.95 및 1.05 이내인지 확인합니다.

테스트 대상 API:

통과: R/G 및 B/G 비율이 0.95 및 1.05 이내입니다. 플래시 이미지 평균이 (68, 102) 범위 이내입니다.