一、前言
此示例演示如何使用基于标记的增强现实将虚拟内容呈现到场景中。
增强现实 (AR) 通过自然混合真实和虚拟内容来增强现实世界的场景,从而创建新颖的应用程序。例如,增强现实应用程序可以添加虚拟标尺,使用户能够直接从图像数据进行测量。实现增强现实系统需要使用计算机视觉技术来理解场景几何形状,以便可以将虚拟内容以适当的视角和比例添加到场景中。
确定场景几何体的常用方法是使用经过校准的摄像机来检测已知的基准标记,例如 AprilTag。使用基准标记的好处是,它们设计为在各种成像条件和视点下进行检测,并可用于生成准确的相机姿态估计。准确的姿势估计对于产生无缝的AR体验至关重要,这种体验不会随着摄像机在场景中移动而抖动。
在此示例中,校准相机用于检测和跟踪放置在桌子顶部的 AprilTag 标记。AprilTag姿势是在摄像机在场景中移动时估计的,此信息用于在AprilTag顶部投影虚拟长方体。此示例中显示的工作流程突出显示了许多 AR 应用程序中使用的基本计算机视觉技术。
二、加载视频
将视频文件下载到临时目录中。加载要添加AR内容的视频并阅读第一帧。显示第一帧。
三、加载相机内联函数
AR和VR应用需要经过校准的相机来定义相机在世界上的位置。
四、估计四月标签姿势
函数可用于检测和估计多个AprilTags的姿势。为了估计姿势,该函数需要相机内在和AprilTag的大小。以毫米为单位指定AprilTag的大小,以匹配相机校准期间使用的单位。因为AprilTag是方形的,所以测量一侧的长度就足够了。准确测量尺寸以产生准确的姿势估计非常重要。
若要使 AprilTag 检测速度更快并减少错误检测,请指定 AprilTag 系列。支持广泛的April标签。估计标签姿势。AprilTag 的姿势定义了此示例中使用的世界坐标系。AprilTag的中心是原点。X-Y 平面由 AprilTag 所在的平面定义,Z 轴指向标记。
按照惯例,该函数返回 AprilTag 姿势,以便 z 轴指向 AprilTag。对于此示例,将 z 轴指向标记之外更为直观,以便可以将位于 AprilTag 顶部的虚拟对象定义为具有正高度值。对估计的标记姿势应用旋转,将 y 轴旋转 180 度以翻转 z 轴。
显示更新的世界坐标轴。
五、定义虚拟内容
定义一个三维长方体以投影到 AprilTag 的顶部。多维数据集以 AprilTag 为中心,并定义为与标记具有相同的大小。
六、向图像添加虚拟内容
使用函数将虚拟长方体顶点投影到影像坐标系中。用虚拟内容扩充图像。
七、以 3D 形式可视化相机姿势
使用估计的 AprilTag 姿势和相机内在来创建与上面所示图像对应的场景的 3D 虚拟表示。这种虚拟表示对于可视化相机轨迹和调试AR应用程序非常有用。
接下来,使用函数将标签姿势转换为相机外联函数,后者在世界坐标中表示相机方向和位置。最后,使用函数以 3D 形式可视化相机。
此示例的下一部分演示如何更新相机位置,以便在相机在场景中移动时可视化轨迹。
八、为视频添加虚拟内容并可视化摄像机轨迹
对其余视频帧重复上述步骤。
九、总结
此示例展示了使用基于标记的 AR 通过虚拟内容增强场景所需的基本计算机视觉技术。可以扩展此示例中显示的技术,以向场景添加不同类型的内容,例如图像或其他三维形状。
十、程序
使用Matlab R2022b版本,点击打开。(版本过低,运行该程序可能会报错)
程序有偿获取:评论区下留言,博主看到会私信你。