本页总结了 Android 11 中的相机图像测试套件 (ITS) 的变更。变更分为以下几类:
硬件变更
Android 11 中引入了多项硬件变更,旨在降低费用并提高可用性。这些变更可分为以下几类:
增加了制造商
除了现有的供应商 MYWAY Design 之外,Rahi Systems 也满足生产 ITS 测试箱的资格条件。合格供应商的公司信息如下:
Rahi Systems Inc.
48303 Fremont Blvd, Fremont CA 94538, USA
rahisystems.com/products/android-device-testing-equipment/
androidpartner@rahisystems.com
+1-510-319-3802MYWAY Design
台湾新北市新庄区福营路 163 号 4 楼
twmyway.com
sales@myway.tw
+886-2-29089060
统一了制造方法
对 rev1 常规视野范围 (RFoV) 盒装 ITS 测试箱进行了重新设计,以使用宽视野范围 (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 所示为测试箱的机械图。新控制器由一个直接为电机供电的 5 V 电源供电。电子元件完全通过 USB 连接器进行控制。独立的电源可以将控制电子元件与伺服电机完全隔开。此外,一个控制器最多可以控制 6 个伺服电机。
图 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 测试被指定为 MANDATED
和 NOT_YET_MANDATED
。如需作为 Android 10 设备启动,设备必须通过所有 MANDATED
测试。NOT_YET_MANDATED
测试可以失败,但在 CTS 验证程序报告中会列为 PASS
。MANDATED
测试要求也适用于升级后的设备。升级后的设备必须通过所有 MANDATED
测试的要求导致测试推迟成为 MANDATED
测试,因为旧版设备也必须通过这些测试。
在 Android 11 中,MANDATED
测试受手机属性中的初始 API 级别标志限制。对于要升级到 Android 11 的设备,测试作为 NOT_YET_MANDATED
测试运行,这意味着测试可以失败,但会在 CtsVerifier.apk
中列为 PASS
。
例如:
- 在 Android 11 中,对于初始 API 级别大于 29 的设备,
test_channel_saturation
测试为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 级别标志。除 test_tonemap_curve
测试外(该测试使用的初始 API 级别为 30),所有这些测试均使用初始 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 | 改为在 LIMITED 设备上运行。 |
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. |
change | test_scene_change |
31 | 在场景转换时断言了 android.control.afSceneChange 。 |
6 | test_zoom |
30 | 测试 android.control.zoomRatioRange 。 |
scene0/test_vibration_restriction
此测试不需要特定场景,但被测设备 (DUT) 必须放置或安装在硬质表面上。这包括安装在盒装 ITS 测试箱上。
断言
- 在摄像头使用期间不振动
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 测试装置中用 Pixel 4 后置摄像头拍摄 scene2_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 矩阵平均值)会相应降低。
图 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 所示。
图 5. scene2_d
图 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 在拍摄结束时处于收敛状态。
scene_change/test_scene_change
方法
启用了一项新测试来测试场景转换时是否断言 android.control.afSceneChange
标志。场景转换利用平板电脑来显示人脸场景,然后通过开启和关闭平板电脑来实现场景转换。该场景重复使用了 scene2_e,但由于需要通过平板电脑来控制,因此是不同的场景。
此外,对于手动测试,您可以通过在摄像头前挥手来实现场景转换。
图 7 显示了该测试的时序图。屏幕关闭与拍摄之间的时间间隔会根据上一次拍摄的事件结果进行调整。
图 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
,则必须在场景中调节亮度。 - 在 6 次尝试中时间随着之前的结果而更改的话,则
PASS
。
scene6/test_zoom
方法
需要有一个新场景来测试 android.control.zoomRatioRange
,因为已建立的场景要么没有小到可以放大的特征(场景 [1、2、4]),要么场景有许多不容易识别的对象,从而使特征提取变得复杂(场景 3)。
图 8 显示了包含常规圆形阵列的新场景。圆形阵列放宽了对 DUT/图表居中的要求,允许某个圆形始终位于所拍摄图像的中心附近。在此场景中,一个带有黑色边框的 9x5 圆形阵列覆盖了整个平板电脑。将右上角的一个圆形替换为方形,以显示方向。以 80 度左右的视野范围 (FoV) 拍摄的圆形,对于一个 4000x3000 的传感器,其面积大小约为 7500 像素 (radius=50pixels
)。
图 8. test_zoom 场景
图 9. 对于找到的圆形:Pixel 4 cam[0] 缩放 = [1, 3.33, 5.67, 8] 图像
图 9 显示了使用 Pixel 4 后置摄像头分 4 步拍摄的图像,缩放比例从 1 倍增加到 8 倍。这组图像在拍摄时没有特别注意中心的设置,只是使用了带有两个开孔的手机测试光圈,以便能够同时测试前置和后置摄像头。从中心的偏离在预料之内并且可以观察到,因为图表平板电脑略微往左偏离中心。此外,该图表似乎足以使用高于 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]
如果找到的圆形触及图像边界,则停止缩放。系统会进行检查,以确保在测试中达到了足够的缩放级别(10 倍)。
断言
- 在每种缩放设置下至少可以找到一个圆形。
- 测试 10 倍或
android.control.zoomRatioRange
的最大值。 - 圆形半径随变焦而缩放(比预期缩放 RTOL 10%)。
- 圆心自中心的偏移量随变焦而缩放(比预期偏移 RTOL 10%)。
- 达到足够的缩放级别(2 倍)。
增加了 LIMITED 相机测试
在 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 密码解码器环