可定位相机概述
HoloLens 的前端安装了一个面向外部环境的摄像头,可以让应用看到用户看到的内容。 开发人员可以访问和控制摄像头,就像他们在 Smartphone、便携式设备或台式机上访问和控制彩色摄像头一样。 适用于移动设备和桌面设备的通用 Windows 媒体捕获和 Windows 媒体基础 API 也适用于 HoloLens。 Unity 已包装这些 Windows API,以抽象化 HoloLens 上的摄像头使用功能。 功能任务包括拍摄常规照片和视频(包含或不包含全息映像),以及确定摄像头在场景中的位置和视角。
设备摄像头信息
HoloLens(第一代)
定焦照片/视频 (PV) 摄像头,包含自动白平衡、自动曝光和完整图像处理管道。
白色隐私 LED 面向外部环境,只要摄像头启用它就会亮起。
摄像头支持以下 30、24、20、15 和 5 fps 模式(所有模式均为 16:9 纵横比):
视频 预览 定格画面 水平视野 (H-FOV) 建议使用 1280x720 1280x720 1280x720 45 度 (视频稳定的默认模式) 空值 空值 2048x1152 67 度 最高分辨率静止图像 1408x792 1408x792 1408x792 48 度 视频稳定前的过扫描(填充)分辨率 1344x756 1344x756 1344x756 67 度 带有过扫描的大型 FOV 视频模式 896x504 896x504 896x504 48 度 图像处理任务的低功耗/低分辨率模式
HoloLens 2
自动对焦照片/视频 (PV) 摄像头,包含自动白平衡、自动曝光和完整图像处理管道。 自动聚焦系统可以将对象距离从 30 cm 调整为无穷大。 HoloLens 2 PV 相机镜头的有效焦点长度为 4.87 mm +/- 5%。 除了制造容错导致 5% 的变化外,焦点长度也会随自动聚焦系统动态变化。 AF 的行程(冲程)为 0.2 mm。
白色隐私 LED 面向外部环境,只要摄像头启用它就会亮起。
HoloLens 2 支持不同的摄像头配置文件。 了解如何发现和选择摄像头功能。
摄像头支持以下配置文件和分辨率(所有视频模式均为 16:9 纵横比):
配置文件 视频 预览 定格画面 帧速率 水平视野 (H-FOV) 建议使用 旧、0 BalancedVideoAndPhoto、100 2272x1278 2272x1278 15.30 64.69 高质量视频录制 旧、0 BalancedVideoAndPhoto、100 896x504 896x504 15.30 64.69 高质量照片捕获预览流 旧、0 BalancedVideoAndPhoto、100 3904x2196 64.69 优质照片捕获 BalancedVideoAndPhoto、120 1952x1100 1952x1100 1952x1100 15.30 64.69 长持续时间场景 BalancedVideoAndPhoto、120 1504x846 1504x846 15.30 64.69 长持续时间场景 VideoConferencing、100 1952x1100 1952x1100 1952x1100 15、30、60 64.69 视频会议、长持续时间场景 Videoconferencing、100 1504x846 1504x846 5、15、30、60 64.69 视频会议、长持续时间场景 Videoconferencing、100 BalancedVideoAndPhoto、120 1920x1080 1920x1080 1920x1080 15, 30 64.69 视频会议、长持续时间场景 Videoconferencing、100 BalancedVideoAndPhoto、120 1280x720 1280x720 1280x720 15, 30 64.69 视频会议、长持续时间场景 Videoconferencing、100 BalancedVideoAndPhoto、120 1128x636 15, 30 64.69 视频会议、长持续时间场景 Videoconferencing、100 BalancedVideoAndPhoto、120 960x540 15,30 64.69 视频会议、长持续时间场景 Videoconferencing、100 BalancedVideoAndPhoto、120 760x428 15, 30 64.69 视频会议、长持续时间场景 Videoconferencing、100 BalancedVideoAndPhoto、120 640x360 15, 30 64.69 视频会议、长持续时间场景 Videoconferencing、100 BalancedVideoAndPhoto、120 500x282 15, 30 64.69 视频会议、长持续时间场景 Videoconferencing、100 BalancedVideoAndPhoto、120 424x240 15, 30 64.69 视频会议、长持续时间场景
注意
客户可以利用混合现实捕获来获取应用的视频或照片,其中包含全息影像和采用视频稳定性。
如果希望用户捕获的内容看起来尽可能的好,则应考虑一些事项。 还可以在应用中直接启用(和自定义)混合现实捕获。 详细了解面向开发人员的混合现实捕获。
在外部环境定位设备摄像头
HoloLens 拍摄照片和视频时,捕获的帧会将摄像头的位置和镜头型号包括在内。 此信息使应用程序可以推断出摄像头在现实世界中的位置,以便增强成像场景。 开发人员可以使用他们最喜爱的图像处理或自定义计算机视觉库,创造性地制作自己的场景。
HoloLens 文档中其他位置的“摄像头”可能指的是“虚拟游戏摄像头”(应用呈现到的锥体)。 除非另外说明,否则此页上的“摄像头”指的是现实世界中的 RGB 彩色摄像头。
失真错误
在 HoloLens 2 上,视频和静态图像流在系统的图像处理管道中未失真,然后才能将帧提供给应用程序。 预览流包含原始失真帧。 由于只有 CameraIntrinsics 可用,因此应用程序必须假定图像帧表示完美的针孔摄像头。
在 HoloLens(第一代)上,在帧元数据中使用 CameraIntrinsics 时,图像处理器中的非失真函数可能仍会留下高达 10 像素的错误。 在许多用例中,此错误并不重要。 不过,例如,如果你正在将全息影像与现实世界海报或标记对齐,且你注意到一个 < 10 px 的偏移量(2 米外的全息影像大约为 11 毫米),此失真错误可能就是原因。
可定位相机使用方案
在捕获照片或视频的外部环境中显示照片或视频
设备摄像头帧附带了“摄像头到外部环境”的转换功能,可用于显示设备在捕获图像时的确切位置。 例如,可将一个小全息图标放在此位置 (CameraToWorld.MultiplyPoint(Vector3.zero)),甚至可朝相机的瞄准方向绘制一个小箭头 (CameraToWorld.MultiplyVector(Vector3.forward))。
标记/模式/海报/对象跟踪
许多混合现实应用程序使用可识别的图像或视觉模式在空间中创建可跟踪点。 应用程序可以呈现相对于该点的对象或创建一个已知位置。 HoloLens 的一个典型用途是寻找一个有基准标记的现实世界对象。 例如,这可能发生在已经设置为通过 Wi-Fi 与 HoloLens 通信的平板电脑上。
你需要一些东西来识别视觉模式,并将对象放置在应用程序的外部环境空间中:
- 图像模式识别工具包,如 QR 码、AR 标记、人脸查找器、圆形跟踪器、OCR 等。
- 在运行时收集图像帧,并将其传递到识别层。
- 将它们的图像位置反投影回外部环境位置或可能的外部环境射线。
- 将虚拟模型放置在这些外部环境位置。
一些重要的图像处理链接:
保持交互式应用程序的帧速率非常重要,尤其是在处理长时间运行的图像识别算法时。 为此,我们通常使用以下模式:
- 主线程:管理摄像头对象。
- 主线程:请求新帧(异步)。
- 主线程:将新帧传递给跟踪线程。
- 跟踪线程:处理图像,收集关键点。
- 主线程:移动虚拟模型以匹配找到的关键点。
- 主线程:重复步骤 2。
某些图像标记系统仅提供单像素位置,该位置相当于一组可能的位置。 (其他系统则提供完整转换,这种情况下不需要此部分。)若要访问单个 3D 位置,可计算多个射线,并按近似交点找到最终结果。 若要获得此结果,你需要:
- 创建一个循环,收集多个摄像头图像。
- 查找关联的功能点及其外部环境光线。
如果有两个或多个跟踪的标记位置,则可以定位一个建模场景来适应用户的当前方案。 如果无法假定重心,则需要三个标记位置。 在许多情况下,我们使用颜色方案,其中白色球体表示实时跟踪标记位置,蓝色球体表示建模标记位置。 这将使用户可以直观方式衡量对齐质量。 我们假定在所有应用程序中都进行了以下设置:
- 两个或更多模型标记位置。
- 一个“校准空间”,在场景中是标记的父项。
- 摄像头功能标识符。
- 行为,它移动校准空间以使建模标记与实时标记对齐(我们要小心地移动父空间,而不是建模标记本身,因为其他连接是相对于它们的位置)。
使用 LED 或其他识别器库跟踪或确定标记为“静态”或“移动”的现实世界对象/人脸
示例:
- 带有 LED(或缓慢移动对象 QR 码)的工业机器人。
- 标识并辨认房间中的对象。
- 标识并辨认房间中的人员 - 例如,在人脸上放置全息联系人卡片。