本指南为您提供了增强现实(AR)开发人员候选人必须掌握的概念概述. 虽然这似乎是一项简单的任务, 这一最新知识领域的不断创新可能会使招聘增强现实应用程序开发专家成为一个真正的挑战.
考虑到AR开发可以通过在现实环境中添加几种形式的虚拟元素的任意组合来工作, 您需要首先定义适合项目需求的类别(或多个类别).
基于标记的增强现实
顾名思义, 基于标记的AR技术使用标记作为场景中的关键点来增强现实世界的图像. 这些标记通常是用QR/2D码表示的黑白图像. 它们作为输入输入给应用程序,使其在获取相机帧时更容易检测到它们.
AR开发人员在这个特定领域的任务可能包括:
- 校准摄像机
- 选择一个位置,使查找标记上的模式的任务变得容易
- 确保在移动相机时,虚拟物体发生的震动最少
无标记增强现实
无标记AR图像来自大卫·马兰,盖蒂图片社
在无标记方法中,策略是完全不同的. 如果没有标记, 应用程序中使用的数据来自其他来源,如GPS, 数字罗盘, 或者一个加速度计. 大家可能注意到了, 因为大多数智能手机都带有这些资源, 无标记AR技术非常适合移动AR应用程序.
基于投影的增强现实
基于投影的增强现实包括将图像投影到物理3D模型上, 为了让它更真实. 它可以用来检测人类与投射光的互动. 举个实际的例子, 这甚至可以用来促进装配线上复杂的手工任务.
基于叠加的增强现实
宜家的产品可视化应用程序使用基于叠加的增强现实.
我们还可以检测场景中的物体,并部分或全部地改变/增强它们. 这是基于叠加的AR的前提. 对于专注于通过对象的虚拟定制来增强用户体验的应用程序来说,它是一个很好的选择. 例如,用户可以尝试放置在房间中的不同虚拟家具.
选择了项目适合的类别, 现在是时候根据您的需求确定理想的AR开发人员技能了. 增强现实开发人员不仅要对代码负责, 但是,它还可以设计资产,定义或改进应用程序与用户之间的接口.
增强现实世界的环境
在招聘增强现实开发人员时, 应聘者应该自信地描述增强真实世界环境背后的步骤. 您可以选择两种场景, 一个用记号笔,另一个不用, 让他们描述挑战和解决方案:
解释一下,在给定的场景中,你将如何增强现实世界.
对于标记场景,一个挑战是将标记从场景的其余部分分割开来. 你的AR开发人员候选人应该知道这些步骤:我们需要准备图像, 获得感兴趣的点和区域, 然后检查检测到的区域(如果有的话)是否有我们正在寻找的模式.
准备初始图像, 我们应用一个阈值,使其成为二值图像(每个像素值为0或1). 之后,我们需要检测标记中的一个特征作为参考对象. 一种常见的方法是在标记中使用正方形的角(带有QR/2D图案)作为参考点.
有许多算法可以在现场进行这种匹配. 一个例子是哈里斯角检测器算法. 遵循数学方法, 该算法可以判断一个区域是否平坦, an edge, or a corner. 我们将寻找角落和边缘,因为它们将在下一步中使用. Specifically, 我们想要勾勒轮廓,可以由四条线段形成正方形/四边形.
有了这些信息,就可以为提取的区域制作局部描述符了. 它们将与我们提供给应用程序的模式的数据库中的描述符进行比较. 如果我们有一个正匹配, 发现了一个标记, 这个三维坐标可以用来用虚拟物体来增强场景.
对于无标记的场景, 除了提取所需特征的挑战, 也没有事先的信息(没有模式比较). 获得这些特征的一种可能方法是提取保持不变的屏幕补丁, 无论改变视点和/或照明条件.
我们可以根据不同的特征提取这些区域, for instance, 强度和几何. 对于几何区域,patch将利用角和边缘(可以使用相同的Harris算法)。. 对于强度,我们将选择图像中具有局部极值的区域. 想象一个强度极值的中心点, 从那时起, 我们向四面八方投射光线. 用不变函数来定义区域边界.
提取的区域将用于在屏幕上放置信息. 这次没有与数据库进行比较. 这似乎是一个更容易的任务, 但要在没有明显标记的情况下定义好区域是一个真正的挑战. 所述步骤的任何部分都可以与候选人讨论,以掌握他们对这一重要主题的知识.
图像处理
无论您选择哪种类别,都可能需要某种程度的图像处理. 您可以将此处理视为尝试修改图像,以便更容易提取我们需要的信息. 在上图中可以看到一个处理技术的例子. 以获得原始图像的更精细的细节, 我们对它应用一个滤波器——在本例中是一个高通滤波器.
在处理用作输入的图像时有几个挑战. 你可能会遇到颜色、处理类型、过滤、光照变化、阴影等问题. 这取决于相机和应用程序.
AR开发人员必须能够熟练地对数字图像进行分析或应用算法. 因为这是一个非常广泛的主题, 重要的是要尝试并掌握开发人员的知识广度.
简要描述增强现实应用开发中与图像处理相关的挑战. 你可以使用任何相关领域的知识作为例子.
由于图像处理是一个广泛的研究领域,这是一个更普遍的问题. 答案至少应该涵盖一个值得关注的主要话题. 这包括但不限于:
- 有效的编码图像和视频序列
- 图像采集,增强,恢复和分割
- 图像中的颜色处理、分类和识别
在这种情况下,更重要的是了解增强现实开发专家的知识广度,而不是衡量他们的具体知识.
Tracking
跟踪用于获取用户的视点或摄像机的位置和方向. 这是一个真正的挑战,它仍然是一个开放的研究问题.
描述在增强现实应用程序中进行对象跟踪的方法.
我们可以将跟踪的不同方法分为三个领域, 即基于传感器, vision-based, 混合跟踪.
基于传感器跟踪
顾名思义, 这种类型的跟踪使用传感器,如加速度计, 机械陀螺仪(这两者通常统称为惯性跟踪), GPS, 磁罗经, etc. 它们的优势在于,当快速变化发生时,它们能很好地预测运动.
建立跟踪
该方法利用图像处理方法计算相机姿态. 通常,它们可以进一步细分为基于模型或基于特征的视觉跟踪.
对于基于模型的跟踪, 场景对象的模型将作为跟踪系统的参考. 3D模型需要事先提供给应用程序. 它可以是先前已知的3D模型,也可以是根据提取的场景特征重建的模型. 在基于特征的跟踪中, 参考将是放置在场景中的标记或图像中的自然特征.
Hybrid Tracking
当其他跟踪方法不能以理想的方式处理任务时,将使用最后一类跟踪方法. In this case, AR开发人员可能需要结合不同的方法来使跟踪更健壮.
想象一个场景的条件不是最佳的情况. 用户在拍摄带有标签增强信息的城市场景时,可以通过旋转智能手机突然改变场景条件. 只使用基于视觉的跟踪, 在现场显示信息时,要保持应用程序的健壮性和准确性是非常困难的.
当使用更多信息时,情况会发生变化, for instance, 来自三维陀螺仪的惯性跟踪. 通过陀螺仪测量的全球方向可以用来在新场景中精确地定位标签, 不必仅仅依赖于帧与帧之间的视觉场景差异——在我们刚刚描述的场景中,这些差异将是巨大的.
具体跟踪知识
除了询问AR应用程序开发人员在这方面的一般知识, 询问与追踪相关的具体挑战也很重要. 这些可能包括照明问题, occlusion, clutter, 动态背景, camera motion, 阴影的存在, etc.
请告诉我,当你在一个场景中跟踪一个物体时,你会如何处理动态背景.
区分前景物体和场景其余部分的最常用方法称为背景减法. 基本技术包括从当前帧中减去前一帧并对每个像素的结果设置阈值.
这种方法可以立即解决静态背景的问题, 但是对于一个动态的, 我们可能需要更坚固的东西. Consider, for instance, 摄影机在一天的不同时段拍摄, 或者不同的天气条件, 甚至在从相机获取图像时产生噪声. 这些因素需要考虑,基本方法需要改进.
一种可能的解决方案是在减去当前帧和之前的帧之前添加一个额外的步骤. 这一步将负责将每个像素分类为背景或前景. “模糊c均值聚类”(FCM)算法就是一个例子.
一般的过程是获取一个视频, 把它分成几帧, 将帧转换为灰度, 检测所需的特征(边缘检测), 对每个像素进行分类(额外步骤), 然后从当前帧中减去前一帧. 这将输出没有背景的图像.
特定于应用程序的知识
了解候选人是否有任何与特定申请要求相关的背景也很重要.
这方面的一个例子是, for instance, 一种依靠面部识别在屏幕上显示额外信息的应用程序. 通过与检测面部识别相关的算法的知识广度来评估候选人将是一件有趣的事情.
另一个常见的例子是智能手机应用程序,它可以在正在拍摄的街道上添加虚拟物体. 在这个场景中, 了解AR开发人员是否有使用形态学算法增强图像和/或识别街道的背景将是很有趣的.
您可以询问开发人员他们将如何构建某个应用程序想法. 对于每个初始需求,试着询问替代方案及其原因. 这个相机够好吗? 设备有问题吗? 我们需要特定的资产吗? 有没有最适合这种情况的框架?
增强现实框架
在处理AR应用程序时, 我们不会要求增强现实开发人员从头开始构建所有东西. 有几个框架可以解决大多数基本问题, 让你在上面建造东西.
At this point, 我们已经问过开发者该怎么做了, 现在是时候问他们是否真的这么做了,以及他们是用什么来完成任务的.
比较您所知道的增强现实框架,包括优点和缺点.
如果你在网上搜索,会发现有几十个AR框架. You can browse 特征的彻底比较,但我们不打算从一开始就确定一个框架是“最好的”.
这里有趣的是要知道哪个框架最适合您的需求. 找到这个框架, 我们将假设一个示例应用程序所需的功能列表,并从列表中选择一个具有最佳依从性的框架. 在这里,开发人员的经验也会在做出选择时产生影响.
我们的示例应用程序将以 Unity (3D)我们需要它成为一个免费或开源的框架. 在第一个查询中,从列表中弹出了四个已知的候选者, 即:ARToolkit, Vuforia, Wikitude, and EasyAR.
描述一下你过去开发过的应用程序. 你用了什么框架?
这些问题是相关的, 这里的目标是掌握AR开发人员的知识广度. 简单地说,越多越好. 我们将能够了解开发人员是否具有实现增强现实应用程序的丰富经验,以及他们是否与该领域的最新变化保持一致.
注意其他相关经验
除了具体的增强现实知识, 其他类型的经验也可能非常有用,在雇用AR开发人员时应该考虑这些经验.
For instance, 留意那些在3D环境中有丰富经验的开发者, 即使是完全虚拟的.
Likewise, 在你的项目中拥有优秀的视频/声音制作技能的人可以真正改善你的用户体验.
游戏开发专家也应该考虑到这一点. 从某种意义上说,它们为我们创造了一个新的AR/VR世界. 开发一款完整的游戏,甚至是一个游戏引擎,都需要我们了解一些感兴趣的主题. 这包括相机,纹理,照明,UI/UX等.
底线是, 能够抽象其他开发人员技能并将其应用到您的项目场景中是很重要的.
回到现实世界
本指南旨在为您提供聘请一流增强现实应用程序开发人员的工具和一般知识, 无论您是在美国还是在国外寻找兼职或全职专家. 但指南就是指南:找到“正确”候选人的过程仍然是一个挑战,需要你最好的判断力. 重视许多是很重要的 除技术知识外的其他方面.
如果您正在寻找与AR技术相关的新想法和高质量, 搜索它们的一个好方法是参加(或阅读发表的论文)与该主题相关的会议和专题讨论会, like ISMAR and IEEE虚拟现实.
这里提出的问题和答案的制作方式很容易将它们抽象为不同的问题或针对特定情况进行专门处理. Ultimately, 作为面试官, 只有你才能找到适合你想要应聘的职位的面试要素组合. 你了解你的AR项目——相信你的知识和直觉, 当你找到理想的候选人时,你就会知道他们是谁.