Android 13 版本包括对Camera ITS的多项更改。除了更新 Python 和包版本以及测试硬件更新等增量更改外,Android 13 还支持视频测试。
本页总结了 Android 13 的相机 ITS 更改。这些更改分为六大类:
Python 和包版本
除了 Android 12 中支持的 Python 版本和库之外,Android 13 还支持以下 Python 版本:
- 蟒蛇 3.9.2
- OpenCV 4.2.0
- Numpy 1.20.3
- Matplotlib 3.3.4
- Scipy 1.6.2
- pySerial 3.5
- 枕头 8.3.1
- PyYAML 5.4.1
- 移动 1.11
- FFmpeg 4.4.1
配置文件添加
由于test_auto_flash.py
测试增加了光照控制, config.yml
文件需要控制器和光照通道两个额外参数。以下是基于平板电脑运行的示例config.yml
文件。
TestBeds:
- Name: TEST_BED_TABLET_SCENES
# Test configuration for scenes[0:4, 6, _change]
Controllers:
AndroidDevice:
- serial: 8A9X0NS5Z
label: dut
- serial: 5B16001229
label: tablet
TestParams:
brightness: 192
chart_distance: 22.0
debug_mode: "False" # "True" or "False"; quotes needed
lighting_cntl: <controller-type> # "arduino" or "None"; quotes needed
lighting_ch: <controller-channel>
camera: 0
scene: <scene-name> # if <scene-name> runs all scenes
测试更改
场景1_1/test_black_white.py
test_black_white
测试的通道饱和度检查与之前的Android版本一致,也就是说通道饱和度检查所需的第一个API级别是Android 10。
场景1_2/test_yuv_plus_raw.py
test_yuv_plus_raw
测试处理非 16:9 或 4:3 传感器,以更好地支持 RAW。如果测试在传感器 RAW 格式和 YUV 捕获格式之间找不到共同的格式,即使纵横比不同,测试也会将 RAW 捕获与最大的 YUV 捕获进行比较。
场景2_a/test_faces.py
test_faces
被重构为test_num_faces
。
场景2_a/test_num_faces.py
test_num_faces
测试处理传感器裁剪并将面部矩形正确放置在裁剪的 UW 相机捕获上。
场景3/test_lens_position.py
test_lens_position
测试在 Android 13 中已弃用。
场景6/test_zoom.py
test_zoom
测试经过重构,可以更轻松地测试三个和四个摄像头系统。如果相机在 10 倍缩放比例范围内正确测试,则测试正确退出。这使得缩放测试能够在单个图表距离处执行。
场景变化/test_scene_change.py
test_scene_change
测试在 Android 13 中已弃用。
新的基于平板电脑的测试
Android 13 包括两项基于平板电脑的新测试。对于搭载 Android 13 的设备,这两项测试都是强制性的,但对于升级到 Android 13 的设备则跳过。
场景 | 测试名称 | 第一个 API 级别 | 描述 |
---|---|---|---|
2_a | test_auto_flash | 33 | 确认黑暗场景触发自动闪光。 |
2_b | test_yuv_jpg_capture_sameness | 33 | 确认 YUV 和 JPEG 仍然捕获按位相同。 |
场景2_a/test_auto_flash.py
Android 13 增加了test_auto_flash
测试。
参数
flash
:如果 flash 不可用,则跳过测试。
方法
该测试将捕获请求配置为自动闪光并呈现需要闪光事件的场景。关闭测试台和平板电脑中的照明,为自动曝光算法呈现黑暗场景。测试配置了一系列NUM_FRAMES
捕获并启用了自动闪光。如果AE_STATE
设置返回“FLASH_REQUIRED”,则测试会验证捕获中是否触发了闪光灯。
可以在提示时手动控制照明,也可以使用 Arduino 控制器自动控制照明,并添加照明控制以进行自动化测试。一个新的实用程序文件夹lighting_control_utils
集中了用于控制测试中的照明的代码。
场景2_a/test_yuv_jpeg_capture_sameness.py
Android 13 添加了test_yuv_jpeg_capture_sameness
测试。
参数
streamUseCase
:确定相机是否支持流用例。-
android.jpeg.quality
:将 JPEG 质量设置为 100。
方法
此测试使用最大的常见 YUV 和 JPEG 格式捕获两个图像,其纵横比与最大的 JPEG 格式相同,分辨率不超过 1920x1440。该测试将jpeg.quality
设置为 100 并捕获双面请求。然后它将两个图像转换为 RGB 数组并计算两个图像之间的 3D 均方根 (RMS) 差异。差异容差设置为 1%。
视频测试
Camera ITS 在 Android 13 中增加了对视频测试的支持。
Android 13 增加了以下测试:
场景 | 测试名称 | 第一个 API 级别 | 描述 |
---|---|---|---|
4 | test_preview_stabilization_fov | 33 | 确认启用稳定功能后视频预览不会裁剪太多。 |
4 | test_video_aspect_ratio_and_crop | 33 | 确认视频格式 FoV、纵横比和裁剪。 |
传感器融合 | test_preview_stabilition | 33 | 确认预览稳定工作。 | 传感器融合 | test_video_stabilition | 33 | 确认视频稳定工作。 |
场景4/test_preview_stabilization_fov.py
Android 13 添加了test_preview_stabilization_fov
测试。此测试检查支持的预览尺寸,以确保 FoV 没有被不当裁剪。
方法
该测试捕获了两个视频,一个开启了预览稳定功能,一个关闭了预览稳定功能。从每个视频中选择一个代表帧,并对其进行分析,以确保两个视频中的 FoV 变化在规范范围内。
具体来说,该测试会检查以下参数是否具有预览稳定性:
- 圆度保持不变。
- 圆心保持稳定。
- 圆的大小变化不超过 20%,这意味着 FoV 最多变化 20%。
场景4/test_video_aspect_ratio_and_crop.py
Android 13 添加了test_video_aspect_ratio_and_crop
测试。与静态捕获的test_aspect_ratio_and_crop
测试类似,此测试检查支持的视频格式以确保视频帧不会被不当拉伸或裁剪。所有自我报告的视频质量都经过测试。此外,如果相机支持HLG10
视频,则测试 10 位视频。
Android 13 将get_available_video_qualities
方法添加到its_session_utils
中。为了与现有测试共享通用代码,Android 13 还包括两个新的实用程序函数image_fov_utils
和video_processing_utils
。
方法
如果不支持 RAW,该测试会使用 RAW 格式或最高分辨率的 JPEG 格式捕获参考图像。根据参考图像,确定圆的大小和位置。然后拍摄支持所有视频质量的短视频。从每个视频质量中提取最终参考帧。根据参考帧,为每个视频质量计算视野 (FoV)、居中(裁剪)和纵横比。
对于 FoV 计算,测试将视频帧圆大小与根据参考图像和视频格式大小计算出的圆大小进行比较。对于裁剪检查,测试将视频帧居中与参考图像居中进行比较。对于纵横比检查,使用场景(白色背景上的一个大黑色圆圈),测试确定圆圈的纵横比并验证帧是否失真。
sensor_fusion/test_preview_stabilization.py
Android 13 添加了test_preview_stabilization
测试,该测试可测试所有支持的预览质量,最高可达 1920x1080。该测试使用传感器融合测试台,需要新的第 2 版传感器融合控制器或早期 Arduino 控制器版本的固件升级。有关新控制器的更多详细信息,请参阅硬件更新和添加。
方法
启用预览稳定功能后,手机会缓慢移动大约 15 度角。然后将图像的旋转与陀螺仪的旋转进行比较。
sensor_fusion/test_video_stabilization.py
Android 13 添加了test_video_stabilization
测试,该测试可测试最高 1920x1080 支持的视频质量。 QCIF 低分辨率视频质量不包括在内。该测试使用传感器融合测试台,需要新的第 2 版传感器融合控制器或早期 Arduino 控制器版本的固件升级。有关新控制器的更多详细信息,请参阅硬件更新和添加。
方法
测试台在启用预览稳定功能的情况下将手机缓慢移动大约 15 度角。然后将图像的旋转与陀螺仪的旋转进行比较。
硬件更新和添加
Android 13 包括对基于 Arduino 的第 2 版传感器融合控制器的升级。此升级包括硬件和固件更改。升级允许控制器设置旋转速度和闪电控制。升级还包括一个新的防护罩(如图 1 所示),它提供三个旋转通道和三个照明控制通道。
图 1.带有旋转和照明控制的 Arduino shield rev2.0
此外,对于 13,必须更新现有控制器的固件以启用转速控制。该固件可从以下网址下载:
有关新控制器的更多信息,请参阅Android 13 传感器融合控制器。