Google은 흑인 공동체를 위한 인종 간 평등을 진전시키기 위해 노력하고 있습니다. Google에서 어떤 노력을 하고 있는지 확인하세요.

Android 11 카메라 이미지 테스트 도구 모음 출시 노트

이 페이지에서는 Android 11에서 카메라 이미지 테스트 도구 모음(ITS)의 변경사항을 간략히 설명합니다. 변경사항은 다음 카테고리로 분류됩니다.

하드웨어 변경사항

Android 11에서는 여러 하드웨어 변경사항을 도입하여 비용을 절감하고 가용성을 높였습니다. 이러한 변경사항은 다음 카테고리로 분류됩니다.

추가 제조업체

Rahi Systems는 기존의 공급업체인 MYWAY design 외에 ITS 테스트 인클로저를 생산하도록 공인되었습니다. 공인 공급업체의 회사 정보는 다음과 같습니다.

통합 제조 방식

rev1 일반 시야(RFoV) ITS-in-a-box 테스트 인클로저는 넓은 시야(WFoV) 상자센서 퓨전 상자 테스트 인클로저에서 사용하는 제조 방식을 사용하도록 재설계되었습니다. 기능은 동일하며 이 디자인은 간단하게 rev1a라고 부릅니다. 재설계를 통해 제조업체는 단일 유형의 플라스틱을 비축하여 모든 테스트 인클로저를 제조할 수 있습니다. 또한 태블릿 마운트와 조명 홀더가 재설계되어 태블릿과 LED 조명 막대의 다양한 변형을 처리합니다.

최신 설명 및 기계 도면을 다운로드하려면 RFoV 상자(rev1a)WFoV 상자(rev2.9)를 참고하세요.

늘어난 태블릿 옵션

Samsung Galaxy Tab A 10.1 및 Chuwi Hi9 Air 10.1을 비롯하여 여러 태블릿이 추천 태블릿 목록에 추가되었습니다. 캡처된 이미지에서 밴딩을 제거하려면 태블릿에 화면 밝기를 조정하는 펄스 폭 변조(PWM)가 없어야 합니다.

추천 태블릿에 관한 최신 정보는 태블릿 요구사항을 참고하세요.

태블릿 개구부 축소

Galaxy Tab A 10.1을 사용할 수 있도록 RFoV(rev1a) 및 WFoV(rev2) 테스트 인클로저에서 모두 태블릿 개구부의 높이를 약간 줄였습니다. 이러한 변경사항을 반영하는 버전은 rev1a.1 및 rev2.9입니다. 도면은 RFoV 상자(rev1a)WFoV 상자(rev2.9)를 참고하세요.

새로운 센서 퓨전 컨트롤러

센서 퓨전 컨트롤러의 하드웨어가 제조 가능성 향상을 위해 재설계되었습니다. 새 컨트롤러는 Arduino에 기반하며 Arduino 위에 마운트되는 맞춤 라우팅 보드 실드가 적용되었습니다. 그림 1은 실드를 보여 주고 그림 2는 인클로저의 기계 도면을 보여 줍니다. 새 컨트롤러는 모터에 직접 전원을 공급하는 단일 5V 공급 장치로 구동됩니다. 전자 기기는 USB 커넥터를 통해 완전히 제어됩니다. 별도의 전원 공급 장치로 제어 전자 기기와 서보 모터 간 완전한 격리가 가능해집니다. 또한 단일 컨트롤러는 최대 서보 모터 6개를 제어할 수 있습니다.

위에서 본 Arduino 이미지

그림 1. 위에서 본 Arduino 실드 이미지

인클로저 디자인

그림 2. 인클로저 디자인

Android 11은 기존 컨트롤러와 호환됩니다. Arduino 기반 컨트롤러로 테스트를 호출하려면 다음을 사용하세요.

python tools/run_all_tests.py device=# camera=# rot_rig=arduino:1 scenes=sensor_fusion

첫 번째 API 수준

Android 10에서 ITS 테스트는 MANDATEDNOT_YET_MANDATED로 지정됩니다. Android 10 기기로 출시하려면 모든 MANDATED 테스트를 통과해야 합니다. NOT_YET_MANDATED 테스트에는 실패할 수 있지만 CTS 인증 도구 보고를 위해 PASS로 표시됩니다. MANDATED 테스트 요구사항은 업그레이드된 기기에도 적용됩니다. 업그레이드된 기기가 모든 MANDATED 테스트를 통과해야 한다는 요구사항으로 인해 기존 기기도 테스트를 통과해야 하므로 테스트가 MANDATED 테스트가 되는 데 지연이 발생했습니다.

Android 11에서는 전화 속성에서 첫 번째 API 수준 플래그로 MANDATED 테스트가 제어됩니다. Android 11로 업그레이드하는 기기의 경우 테스트가 NOT_YET_MANDATED 테스트로 실행됩니다. 즉, 테스트에는 실패하더라도 CtsVerifier.apkPASS로 표시될 수 있습니다.

예:

  • Android 11에서 test_channel_saturation 테스트는 첫 번째 API 수준이 29보다 큰 기기에 MANDATED입니다.
  • Android 10에서 test_channel_saturation 테스트는 모든 기기에 MANDATED입니다.

장면 조명 검증

Android 11에서는 장면 모서리의 밝기를 분석하여 장면 조명이 검증됩니다. 모든 수동 장면의 경우 조명이 검증되고 태블릿 기반 장면의 경우 RFoV 테스트 장비의 RFoV 카메라와 WFoV 테스트 장비의 WFoV 카메라가 검증됩니다. 조명 수준이 적절하지 않으면 오류가 보고되고 테스트에 실패합니다.

장면 이름 변경사항

Android 10에서 장면 1은 대다수 테스트와 총 테스트 시간의 대부분을 차지합니다. 장면 1 내의 테스트에 실패하면 전체 장면을 다시 실행해야 합니다. 전체 장면을 다시 실행하면 한계 테스트의 통과율이 줄어들도록 설계되었습니다. Android 11에서는 장면 1을 scene1_1과 scene1_2 두 개로 분할하여 재실행 시간을 줄입니다.

다음 표는 다양한 장면에서 Pixel 4 후면 카메라의 테스트 시간을 보여 줍니다. 테스트 수는 테스트 수가 아니라 테스트 시간을 동등하게 하기 위해서 분할되었습니다.

또한 이름을 정리했습니다. 장면 2는 문자로 분할되고 장면 1은 숫자로 분할됩니다. 다양한 확장 프로그램의 명명법은 다음과 같습니다.

  • 차트는 동일하지만 테스트가 다른 장면: *_1,2,3
  • 차트는 다르고 테스트가 동일한 장면: *_a,b,c
장면 테스트 수 Pixel 4 실행 시간(분:초)
0 11 1:12
1_1 22 5:12
1_2 13 5:20
2_a 5 3:22
2_b 1 0:24
2_c 1 0:24
3 6 2:04
4 2 2:46

테스트 변경사항

첫 번째 API 수준을 사용하도록 업데이트된 테스트

Android 11에서 다음 표의 테스트는 첫 번째 API 수준 플래그를 사용하도록 업데이트되었습니다. 이러한 모든 테스트는 첫 번째 API 수준 30을 사용하는 test_tonemap_curve 테스트를 제외하고 첫 번째 API 수준 29를 사용합니다.

장면 테스트 이름 첫 번째 API 수준 설명
0 test_tonemap_curve 30 파이프라인에 선형 톤맵과 적합한 이미지 입력으로 적절한 색상 출력이 있는지 확인합니다(test_test_patterns에 의존).
1 test_ae_precapture_trigger 29 사전 캡처 트리거를 사용할 때 AE 상태 머신을 테스트합니다. AE가 사용 중지된 상태에서 사전 캡처 트리거가 효과가 없는지 확인합니다.
test_channel_saturation 29 RGB 채널을 유사한 값으로 채워 채운 영역에서 색조를 제거하는지 확인합니다.
2_a/b/c test_num_faces 29 얼굴 장면에서 연령 다양성을 높입니다.

변경사항 테스트

다음 표의 테스트는 Android 11에서 업데이트되었습니다. 변경사항은 변경사항 설명 열에 설명되어 있습니다.

장면 테스트 이름 첫 번째 API 수준 변경사항 설명
1 test_burst_sameness_manual 30 허용 오차를 2%로 줄입니다.
4 test_aspect_ratio_and_crop 30 제한된 기기에서 실행되도록 변경합니다.
test_multi_camera_alignment 30 다중 카메라 캡처가 지원되지 않으면 카메라를 하나씩 진행합니다. 3개~4개 카메라 시스템을 처리하고 모노, 심도 전용, IR 카메라를 건너뛰도록 카메라 선택 로직을 수정합니다.

새로운 테스트

다음 표의 테스트는 Android 11에서 사용 설정됩니다. 테스트는 표에 간략하게 설명되어 있고 다음 섹션에서 자세히 설명합니다.

장면 테스트 이름 첫 번째 API 수준 설명
0 test_vibration_restrictions 30 이미지를 캡처하는 동안 알림과 진동이 활성화되지 않는지 확인합니다.
2_a test_jpeg_quality 30 양자화 표가 JPEG 품질 향상을 위해 압축을 줄이는지 테스트합니다.
2_d/2_e test_num_faces 30 얼굴 연령 다양성을 높입니다.
2_e test_continuous_picture 30 3A가 android.control.afAvailableModes = CONTINUOUS_PICTURE.에 정착하는지 확인합니다.
변경 test_scene_change 31 android.control.afSceneChange가 장면 변경 시 어설션되었습니다.
6 test_zoom 30 android.control.zoomRatioRange를 테스트합니다.

scene0/test_vibration_restriction

이 테스트에는 특정 장면이 필요하지 않지만 테스트 중인 기기(DUT)는 단단한 표면에 배치하거나 마운트해야 합니다. 여기에는 ITS-in-a-box 테스트 인클로저에 마운트하는 것도 포함됩니다.

어설션

  • 카메라 사용 중에 진동이 없습니다.

scene2_a/test_jpeg_quality

메서드

JPEG 파일의 여러 부분이 2바이트 마커로 정의됩니다. 자세한 내용은 JPEG를 참고하세요.

이 테스트에서는 JPEG 캡처에서 양자화 행렬을 추출합니다. JPEG 캡처에서 양자화 행렬의 마커는 시퀀스 [255, 219]입니다. 마커가 발견되면 다음 두 목록 항목은 크기입니다. JPEG DQT 크기 마커는 일반적으로 [0, 132] = 256*0 + 132 = 132이며 JPEG 캡처의 DQT 데이터 크기를 설명합니다. 삽입된 데이터는 [255, 219, 0, 132, 0(루마 마커), 8x8 루마 행렬, 1(크로마 마커), 8x8 크로마 행렬] 형식입니다.

루마 행렬 마커의 0과 크로마 마커의 1은 JPEG 파일에서 별도의 DQT 섹션으로 두 행렬을 분리하는 휴대전화를 비롯하여 여러 기기에서 일관되게 나타납니다. 루마 행렬이 크로마 행렬과 비교해 값의 다양성이 더 높은 경향이 있습니다. 사람의 눈이 크로마보다 루마에 더 민감하고 JPEG 이미지에는 이러한 사실이 고려되었기 때문입니다.

ITS 테스트 장비로 scene2_a를 캡처하는 Pixel 4 후면 카메라의 품질 요소 85 및 25에서 추출된 루마 및 크로마 행렬 샘플이 아래에 나와 있습니다. 행렬 값은 낮은 품질 설정에서 크게 증가합니다(증가한 압축을 나타냄). 이러한 행렬은 debug=True 플래그가 적용되는 경우에만 스크립트로 출력됩니다. 루마 행렬이 크로마 행렬과 비교해 항목의 변화가 큽니다.

    luma matrix (quality = 85)    chroma matrix (quality = 85)

    [[ 5  3  4  4  4  3  5  4]    [[ 5  5  5  7  6  7 14  8]
     [ 4  4  5  5  5  6  7 12]     [ 8 14 30 20 17 20 30 30]
     [ 8  7  7  7  7 15 11 11]     [30 30 30 30 30 30 30 30]
     [ 9 12 17 15 18 18 17 15]     [30 30 30 30 30 30 30 30]
     [17 17 19 22 28 23 19 20]     [30 30 30 30 30 30 30 30]
     [26 21 17 17 24 33 24 26]     [30 30 30 30 30 30 30 30]
     [29 29 31 31 31 19 23 34]     [30 30 30 30 30 30 30 30]
     [36 34 30 36 28 30 31 30]]     [30 30 30 30 30 30 30 30]]

    luma matrix (quality = 25)            chroma matrix (quality = 25)

    [[ 32  22  24  28  24  20  32  28]    [[ 34  36  36  48  42  48  94  52]
     [ 26  28  36  34  32  38  48  80]     [ 52  94 198 132 112 132 198 198]
     [ 52  48  44  44  48  98  70  74]     [198 198 198 198 198 198 198 198]
     [ 58  80 116 102 122 120 114 102]     [198 198 198 198 198 198 198 198]
     [112 110 128 144 184 156 128 136]     [198 198 198 198 198 198 198 198]
     [174 138 110 112 160 218 162 174]     [198 198 198 198 198 198 198 198]
     [190 196 206 208 206 124 154 226]     [198 198 198 198 198 198 198 198]
     [242 224 200 240 184 202 206 198]]     [198 198 198 198 198 198 198 198]]

그림 3은 JPEG 품질과 비교하여 Pixel 4 후면 카메라의 평균 행렬 값을 보여 줍니다. JPEG 품질이 높아지면 압축 수준(루마/크로마 DQT 행렬 평균)은 낮아집니다.

Pixel 4 평균 행렬 값

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

어설션

  • [25, 45, 65, 86]의 경우 20 이상의 품질은 양자화 행렬의 평균이 20% 감소했습니다.
  • DQT 행렬 페이로드는 제곱수입니다.

그림 4는 테스트에 실패한 휴대전화의 예를 보여 줍니다. 품질이 매우 낮은 이미지(jpeg.quality < 50)의 경우 양자화 행렬에서 압축이 증가하지 않습니다.

실패한 테스트 예

그림 4. 실패한 테스트 예

scene2_d/e test_num_faces

얼굴 인식 알고리즘 검사의 얼굴 다양성을 높이기 위해 얼굴 인식 장면 두 개가 새롭게 추가되었습니다. 여러 카메라를 반복해서 테스트하는 경우 가장 어려운 얼굴은 scene2_d에서 가장 왼쪽 얼굴이 될 것으로 예상됩니다. 특히 해당 모델에는 얼굴 장면에서 처음 등장하는 모자와 턱수염이 있습니다. 그림 5와 6에 새 장면이 나와 있습니다.

scene2_d

그림 5. scene2_d

scene2_e

그림 6. scene2_e

어설션

  • num_faces == 3

scene2_e/test_continuous_picture

메서드

test_continuous_picture 테스트는 scene2_e를 사용하지만 어떤 얼굴 장면으로도 사용 설정할 수 있습니다. 이 테스트에서는 캡처 요청을 먼저 android.control.afMode = 4 (CONTINUOUS_PICTURE)로 설정하여 VGA 해상도 50프레임을 캡처합니다.

3A 시스템은 50프레임의 캡처가 끝날 때 정착할 것으로 예상됩니다.

어설션

  • 3A는 캡처가 끝날 때 수렴 상태입니다.

scene_change/test_scene_change

메서드

android.control.afSceneChange 플래그가 장면 변경으로 어설션되는지 테스트하기 위해 새 테스트가 사용 설정됩니다. 장면 변경은 태블릿을 사용하여 얼굴 장면을 표시한 후 태블릿을 켜거나 꺼서 장면 변경을 만듭니다. 장면에서는 scene2_e를 재사용하지만 필수 태블릿 컨트롤로 인해 별도의 장면에 있습니다.

또한 수동 테스트의 경우 장면 변경은 카메라 앞에서 손을 흔들어 실행될 수 있습니다.

그림 7은 테스트의 타이밍 다이어그램을 보여 줍니다. 화면 꺼짐과 캡처 사이의 타이밍은 이전 캡처의 이벤트 결과에 따라 조정됩니다.

test_scene_change 타이밍 다이어그램

그림 7. test_scene_change 타이밍 다이어그램

이동 조건

  • 장면 변경 및 afSceneChange == 1이 있으면 테스트에서는 PASS를 반환합니다.
  • 장면 변경 및 afSceneChange == 0이 있으면 장면 변경은 5프레임을 더 일찍 이동하여 afSceneChange가 어설션하는 데 더 많은 시간을 제공합니다.
  • 장면 변경과 afSceneChange == 1이 없으면 테스트에서는 FAIL을 반환합니다.
  • 장면 변경과 afSceneChange == 0이 없으면 장면 변경은 30프레임을 더 일찍 이동하여 장면 변경을 캡처합니다.

어설션

  • 화면(장면)이 전환됩니다.
  • afSceneChange 플래그는 [0, 1]에 있습니다.
  • 장면이 변경되지 않으면 3A가 수렴됩니다(test_continuous_picture와 기능적으로 동일함).
  • afSceneChange == 1인 경우 밝기가 장면에서 변경되어야 합니다.
  • 여섯 번의 시도 내에 PASS가 이전 결과에 따라 타이밍이 변경되었습니다.

scene6/test_zoom

메서드

android.control.zoomRatioRange를 테스트하려면 새 장면이 필요합니다. 기존 장면에 확대할 만큼 작은 특징이 없거나(장면 [1, 2, 4]) 장면에 쉽게 식별되지 않는 객체가 많아서 특징 추출이 어렵기 때문입니다(장면 3).

그림 8은 규칙적인 원 배열이 있는 새 장면을 보여 줍니다. 원의 배열은 DUT/차트 센터링의 요구사항을 완화하고 항상 캡처된 이미지의 중심 근처에 원을 허용합니다. 이 장면에서는 테두리가 검은색인 9x5 크기의 원을 배열하여 전체 태블릿을 덮습니다. 한 원은 오른쪽 상단에서 사각형으로 바뀌어 방향을 표시합니다. 원 크기의 특징은 약 80도 시야(FoV)로 캡처된 4000x3000 센서의 약 7,500픽셀 영역(radius=50pixels)이 있다는 것입니다.

test_zoom 장면

그림 8. test_zoom 장면

Pixel 4 발견된 원

그림 9. Pixel 4 cam[0] zoom = [1, 3.33, 5.67, 8] 발견된 원 이미지

그림 9는 1배에서 8배까지 네 단계로 확대가 늘어날 때 Pixel 4 후면 카메라에서 캡처된 이미지를 보여 줍니다. 이러한 이미지는 전면 및 후면 카메라를 모두 테스트할 수 있도록 두 개의 구멍이 있는 휴대전화 테스트 조리개를 사용하는 것을 제외하고 센터링에 크게 신경 쓰지 않고 캡처되었습니다. 중심으로부터 오프셋이 예상되고 차트 태블릿이 중심에서 약간 왼쪽에 있으므로 오프셋이 관찰됩니다. 또한 차트는 8배 이상의 확대/축소 비율로 테스트하기에 충분해 보입니다.

원 찾기

이 테스트에는 모든 윤곽을 찾아 다음을 테스트하여 윤곽 검색 범위를 원하는 원으로 좁히는 findContours를 사용하는 find_circle() 메서드가 포함되어 있습니다.

  • 윤곽은 영역이 10픽셀보다 커야 합니다.
  • 윤곽에는 NUM_PTS >= 15가 있어야 합니다.
  • 윤곽은 중심이 검은색이어야 합니다.
  • 윤곽은 원과 유사해야 합니다. 즉, 영역이 윤곽의 pi*r2 영역에 가깝습니다.

테스트 범위

android.control.zoomRatioRange는 10단계로 나뉩니다.

  • [1, 7] 테스트 [1, 1.67, 2.33, 3, 3.67, 4.33, 5, 5.67, 6.33, 7]

찾은 circle이 이미지의 경계를 터치하면 확대/축소가 중지됩니다. 테스트에서 충분한 확대/축소 수준(10배)에 도달했는지 확인하는 검사가 있습니다.

어설션

  • 각 확대/축소 설정에서 원이 하나 이상 발견됩니다.
  • 10배 또는 최대 android.control.zoomRatioRange를 테스트합니다.
  • 원 반경이 확대/축소로 조정됩니다(RTOL 10% 예상).
  • 중심에서 원 중심 오프셋이 확대/축소로 조정됩니다(RTOL 10% 예상).
  • 충분한 확대/축소 수준에 도달합니다(2배).

제한된 카메라 테스트 개선

Android 11에서 다음 표의 테스트는 LIMITED 카메라를 테스트합니다. 새 테스트 외에도 scene4/test_aspect_ratio_and_crop 테스트는 첫 번째 API 수준이 30 이상인 LIMITED 기기를 테스트할 수 있도록 업데이트되었습니다.

장면 테스트 이름
0 test_vibration_restrictions
2_a test_jpeg_quality
2_d/2_e test_num_faces
4 test_aspect_ratio_and_crop
6 test_zoom

그림 10은 Android 11 ITS 보안 디코더 링을 보여 줍니다. 보안 디코더 링은 개별 테스트가 어떤 테스트 설정으로 제어되는지 보여 줍니다. 이 제어는 보기 쉽도록 색상으로 구분됩니다. 주요 제어 항목은 다음과 같습니다.

  • MANUAL_SENSOR
  • READ_3A에는 MANUAL SENSOR *필요
  • COMPUTE_TARGET_EXPOSURES에는 MANUAL SENSOR *필요
  • PER_FRAME_CONTROL
  • RAW
  • SENSORS *REALTIME
  • MULTI_CAMERA

MANUAL SENSOR, READ_3A, COMPUTE_TARGET_EXPOSURES, PER_FRAME_CONTROL은 대다수 테스트를 제어합니다. 또한 LIMITED 기기에 사용 설정된 테스트는 연한 녹색으로 강조표시됩니다.

보안 디코더 링

그림 10. Android 11 보안 디코더 링