Android 11 相机图像测试套件发行说明

本页总结了 Android 11 中相机图像测试套件 (ITS)的变化。这些变化分为以下几类:

硬件变化

Android 11 引入了多项硬件更改,以降低成本并提高可用性。这些变化分为以下几类:

附加制造商

除了我们现有的供应商 MYWAY 设计之外,Rahi Systems 还具备生产 ITS 测试外壳的资格。合格供应商的公司信息如下:

统一的制造方法

rev1 常规视野 (RFoV) ITS-in-a-box测试外壳经过重新设计,以使用宽视野 (WFoV) 盒传感器融合盒测试外壳所使用的制造方法。功能是相同的,为简单起见,该设计被称为rev1a 。重新设计允许制造商储存一种塑料来制造所有测试外壳。此外,平板电脑支架和灯座经过重新设计,可应对平板电脑和 LED 灯条的更大变化。

要下载最新的描述和机械图纸,请参阅RFoV 盒 (rev1a)WFoV 盒 (rev2.9)

增加平板电脑选项

包括三星 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 显示了外壳的机械图。新控制器由一个直接为电机供电的 5 V 单电源供电。电子设备完全通过 USB 连接器进行控制。单独的电源允许控制电子设备和伺服电机之间完全隔离。此外,一个控制器最多可以控制六个伺服电机。

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 验证器报告中被列为PASSMANDATED测试要求也适用于升级设备。升级设备通过所有MANDATED测试的要求导致测试延迟成为MANDATED测试,因为旧设备也必须通过测试。

在 Android 11 中, MANDATED测试由手机属性中的第一个 API 级别标志控制。对于升级到 Android 11 的设备,测试以NOT_YET_MANDATED测试的形式运行,这意味着测试可能会失败,但在CtsVerifier.apk中会被列为PASS

例如:

  • 在 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 拆分为两个场景(场景 1_1 和场景 1_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 级别 29,除了test_tonemap_curve测试,它使用第一个 API 级别 30。

场景测试名称第一个 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如果不支持多摄像头捕获,则逐个浏览摄像头。重新设计摄像头选择逻辑以考虑三摄像头和四摄像头系统,并跳过单色、仅深度和红外摄像头。

新测试

下表中的测试已在 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

场景0/test_vibration_restriction

此测试不需要特定场景,但被测设备 (DUT) 必须放置或安装在坚硬的表面上。这包括安装在 ITS-in-a-box 测试外壳上。

断言

  • 相机使用过程中没有振动

场景2_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 图像考虑到了这一点。

像素 4 后置摄像头使用 ITS 测试台捕捉场景 2_a 的质量因子为 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 显示了 Pixel 4 后置摄像头与 JPEG 质量的平均矩阵值。随着 JPEG 质量的提高,压缩级别(亮度/色度 DQT 矩阵平均值)会降低。

像素 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 所示。

场景2_d

5.scene2_d

场景2_e

6.scene2_e

断言

  • num_faces == 3

scene2_e/test_continuous_picture

方法

test_continuous_picture测试使用了 scene2_e,但它可以在任何面部场景中启用。在此测试中,使用捕获请求优先设置android.control.afMode = 4 (CONTINUOUS_PICTURE)捕获 50 帧 VGA 分辨率。

预计 3A 系统将在 50 帧捕获结束时稳定下来。

断言

  • 图3A在捕获结束时处于收敛状态。

场景变化/测试场景变化

方法

启用了一个新测试来测试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尝试内通过,根据之前的结果改变时间。

场景6/test_zoom

方法

需要一个新场景来测试android.control.zoomRatioRange ,因为已建立的场景要么没有小到可以放大的特征(场景 [1、2、4]),要么场景中有许多不容易识别的对象,使特征提取复杂化(场景 3)。

图 8 显示了带有规则圆阵列的新场景。圆形阵列放宽了对 DUT/图表中心的要求,并允许圆形始终靠近捕获图像的中心。在这个场景中,一个带有黑色边框的 9x5 圆圈阵列覆盖了整个平板电脑。右上角的一个圆圈被替换为一个正方形以显示方向。对于以大约 80 度的视场 (FoV) 捕获的 4000x3000 传感器,圆形大小具有面积约为 7500 像素( radius=50pixels像素)的特征。

test_zoom 场景

图 8. test_zoom 场景

像素 4 找到的圆圈

图 9. Pixel 4 cam[0] zoom = [1, 3.33, 5.67, 8] 找到圆的图像

图 9 显示了 Pixel 4 后置摄像头拍摄的图像,变焦从 1 倍增加到 8 倍,分四步。这组图像是在没有特别注意对中的情况下拍摄的,只是使用带有两个开口的手机测试光圈来测试前后摄像头。预计会从中心偏移,并且在图表平板稍微偏离中心时可以观察到。此外,该图表似乎足以使用高于 8 倍的缩放比率进行测试。

寻找圈子

该测试包括使用findContoursfind_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]

如果找到的圆圈触及图像的边界,则停止缩放。检查以确保在测试中达到足够的缩放级别 (10x)。

断言

  • 在每个缩放设置中至少找到一个圆圈。
  • 测试android.control.zoomRatioRange的 10 倍或最大值。
  • 圆半径随缩放比例缩放(RTOL 为预期的 10%)。
  • 圆心与缩放中心比例的偏移(RTOL 为预期的 10%)。
  • 达到足够的缩放级别 (2x)。

增加了有限的相机测试

在 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 SENSORREAD_3ACOMPUTE_TARGET_EXPOSURESPER_FRAME_CONTROL控制大多数测试。此外,为LIMITED设备启用的测试以浅绿色突出显示。

秘密解码环

图 10. Android 11 秘密解码环