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

Android 13 版本包括对Camera ITS的多项更改。除了更新 Python 和包版本以及测试硬件更新等增量更改外,Android 13 还支持视频测试。

本页总结了 Android 13 的相机 ITS 更改。这些更改分为六大类:

Python 和包版本

除了 Android 12 中支持的 Python 版本和库之外,Android 13 还支持以下 Python 版本:

配置文件添加

由于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_utilsvideo_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 所示),它提供三个旋转通道和三个照明控制通道。

Arduino盾rev2.0

图 1.带有旋转和照明控制的 Arduino shield rev2.0

此外,对于 13,必须更新现有控制器的固件以启用转速控制。该固件可从以下网址下载:

有关新控制器的更多信息,请参阅Android 13 传感器融合控制器