本文将介绍几种不同的,对设备上可能影响追踪性能的对比度(contrasts)和其他设置进行评估和调整的技术,来改进基于图像的目标(image-based targets)。
我们提供一系列调整和不同的技术,来帮助您改善低性能基于图像的目标。图像目标(Image Targets)借由其自然特征(natural features)进行追踪,这些自然特征可以通过设置对比度进行增强。
此外,如果您的体验过程中,环境或设备也会影响追踪稳健性的话,则可能还需要定义相机的聚焦模式和其他设备设置。
Vuforia引擎使用目标图像的灰度图(grayscale version)来识别可用于识别和追踪的特征。您可以使用图像的灰度直方图(grayscale histogram)来评估其作为目标图像的适用性。灰度直方图可以使用图像编辑程序(image editing application)生成,如GIMP和Photoshop。
如果图像整体对比度较低,直方图窄而尖(narrow and spiky),则很可能是不好的目标图像。这些因素表明,该图像的有效特征不够多。然而,如果直方图是宽而平的(wide and flat),则表明图像包含了分布良好的有效特征,这是第一个很好的迹象(indication)。不过请注意,并非在所有情况下都奏效,如下带有渐变特征(gradient features)的图像所示(右下角)。
通常难以用肉眼察觉局部对比度的好坏。可以通过改进特征的边缘来提高图像的对比度,如下例所示:
其他的一般特征,如有机形状(organic shapes)、圆弧细节(round details)、模糊(blurred)或高度压缩(highly compressed)的图像,往往无法提供足够的丰富性和细节(richness and detail),也就不能被正确地检测或追踪。详细的有关信息,请参见【翻译】Vuforia最佳实践:设计和开发基于图像的目标识别(【原文】Best Practices for Designing and Developing Image-Based Targets)。
如果对图像目标评估或星级评定的结果是特征不足,我们建议将增强对比度作为改进目标检测的一种方法:通过增强图像局部对比度来提高特征质量。
此调整通过增加边缘和拐角周围(around the corners)的局部对比度来修改图像。要使此调整产生预期结果,印刷的目标必须清晰,并且在运行时必须在应用程序中正确设置相机焦距。否则如果相机模糊则会削弱此调整的效果。有关如何调整此设置,请参阅"相机聚焦模式(【原文】Camera focus modes)"。
注意:如果在目标管理器(Target Manager)中缩小(downscale)长边上的(on the longer side)图像尺寸,则可能会破坏此调整的效果;因此,在此步骤之前按比例缩小图像非常重要。
应用此调整的步骤相当简单。在我们的例子中,我们使用Adobe Photoshop。您可以使用您选择的任何其他图形编辑器;但是,步骤可能不同:
原始图像 | 局部对比度增强之后的图像 |
---|---|
![]() |
![]() |
如果您希望看到更多有关"对比度增强后的图像校正(image correction)"的信息,请参阅您所使用图像编辑器的资源和各种可用的,和本文类似的指南。
如果摄像机视图中聚焦不到目标,则摄像机的图像结果(**the camera image result **)可能会模糊,目标的细节也可能难以被检测到。因此,检测追踪性能可能会受到负面影响。
建议使用适当的相机聚焦模式,以确保有最佳的相机聚焦条件(camera focus conditions)。有关相机聚焦模式的完整说明,请参见:相机聚焦模式(Camera Focus Modes)。
测试环境中的光照条件会显著影响对目标的检测追踪。
CameraDevice.getInstance().setFlashTorchMode( true );
CameraDevice.Instance.SetFlashTorchMode( true );
我们还建议考虑目标图像会印在什么材质上,因为光泽度(glossiness)和平坦度(flatness)会影响其可追踪性。详细有关信息,请参阅【翻译】基于图像目标的物理特性(【原文】The Physical Properties of Image-Based Targets)。
如果您的增强效果物体(augmentations)在距离图像目标某一距离处时消失,则可能需要调整您的远剪裁平面(far distance clipping)(在OpenGL或Unity相机设置中)。处理大型图像目标时尤为适用。
按照OpenGL示例中的建议,增加远剪裁平面的值:
projectionMatrix = Tool.getProjectionGL(camCalibration, near_distance, far_distance);
rojectionMatrix = Vuforia::Tool::getProjectionGL(cameraCalibration, near_dist, far_dist);
在Unity中,远近剪裁平面(the near and far clipping planes)可以直接在ARCamera GameObject的Inspector窗口中设置。
提示:如果几乎看不见目标或者目标在视野外,也可以使用设备追踪(Device Tracking)来授权(empower)对目标的追踪功能。