目录
- 一、引言
- 二、以灰度(Grayscale)评估目标图像
- 三、局部对比度(Local Contrast)
-
- 增强局部对比度
- 四、调整设备和摄像机
-
- 相机聚焦模式(Camera focus modes)
- 光照条件
- 印刷材质
- 剪裁平面(Clipping Plane)
-
- JAVA (Android)
- C++, Android/iOS
- 五、了解更多
一、引言
本文将介绍几种不同的,对设备上可能影响追踪性能的对比度(contrasts)和其他设置进行评估和调整的技术,来改进基于图像的目标(image-based targets)。
我们提供一系列调整和不同的技术,来帮助您改善低性能基于图像的目标。图像目标(Image Targets)借由其自然特征(natural features)进行追踪,这些自然特征可以通过设置对比度进行增强。
此外,如果您的体验过程中,环境或设备也会影响追踪稳健性的话,则可能还需要定义相机的聚焦模式和其他设备设置。
二、以灰度(Grayscale)评估目标图像
Vuforia引擎使用目标图像的灰度图(grayscale version)来识别可用于识别和追踪的特征。您可以使用图像的灰度直方图(grayscale histogram)来评估其作为目标图像的适用性。灰度直方图可以使用图像编辑程序(image editing application)生成,如GIMP和Photoshop。
如果图像整体对比度较低,直方图窄而尖(narrow and spiky),则很可能是不好的目标图像。这些因素表明,该图像的有效特征不够多。然而,如果直方图是宽而平的(wide and flat),则表明图像包含了分布良好的有效特征,这是第一个很好的迹象(indication)。不过请注意,并非在所有情况下都奏效,如下带有渐变特征(gradient features)的图像所示(右下角)。
三、局部对比度(Local Contrast)
通常难以用肉眼察觉局部对比度的好坏。可以通过改进特征的边缘来提高图像的对比度,如下例所示:
其他的一般特征,如有机形状(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。您可以使用您选择的任何其他图形编辑器;但是,步骤可能不同:
- 用Adobe Photoshop打开图片;
- 将图层(layer)改为Smart Object;
- 选择过滤器(Select Filter)->锐化(Sharpen)->反锐化遮罩(Unsharp Mask),调整三项设置 (数量(Amount), 半径(Radius), 和阈值(Threshold))来增强对比度;
a. “数量”控制边缘对比度。对于高分辨率图像,“数量”不应超过200%;
b. “半径”控制边缘厚度。增加1个像素将影响特征边缘旁的一个亮像素(light pixel)和一个暗像素(dark pixel)。对于印刷的图像,建议保持在1-3像素范围内以避免光晕效果(halo effects);
注意:“数量”和“半径”设置是相互依赖的(interdependent),也就是说,如果你增加了“半径”,就需要降低“数量”,反之亦然;
c. “阈值”控制哪些像素受其他两个设置的影响。其范围0-255是亮度级别(brightness levels),并表明周围像素将被锐化到何种级别。这在很大程度上取决于图像细节在背景中的突出程度,建议将“阈值”保持在10或以下。 - 最后输出的便是对比度增强过后的图像:
原始图像 | 局部对比度增强之后的图像 |
---|---|
如果您希望看到更多有关"对比度增强后的图像校正(image correction)"的信息,请参阅您所使用图像编辑器的资源和各种可用的,和本文类似的指南。
四、调整设备和摄像机
相机聚焦模式(Camera focus modes)
如果摄像机视图中聚焦不到目标,则摄像机的图像结果(**the camera image result **)可能会模糊,目标的细节也可能难以被检测到。因此,检测追踪性能可能会受到负面影响。
建议使用适当的相机聚焦模式,以确保有最佳的相机聚焦条件(camera focus conditions)。有关相机聚焦模式的完整说明,请参见:相机聚焦模式(Camera Focus Modes)。
光照条件
测试环境中的光照条件会显著影响对目标的检测追踪。
- 请确保您的房间或操作环境中有充足的光线,以便在相机视图中可以清晰看见场景细节和目标特征;
- 我们认为Vuforia引擎在室内环境中工作得最好,那里的光照条件通常更稳定,也更容易控制;
- 如果您的应用程序用例(application use case)和场景(scenarios)需要在黑暗环境中操作,请考虑使用**setFlashTorchMode()**方法来启用设备手电筒(device Flash torch)(如果您的设备有的话)。
CameraDevice.getInstance().setFlashTorchMode( true );
或者在Unity中:CameraDevice.Instance.SetFlashTorchMode( true );
印刷材质
我们还建议考虑目标图像会印在什么材质上,因为光泽度(glossiness)和平坦度(flatness)会影响其可追踪性。详细有关信息,请参阅【翻译】基于图像目标的物理特性(【原文】The Physical Properties of Image-Based Targets)。
剪裁平面(Clipping Plane)
如果您的增强效果物体(augmentations)在距离图像目标某一距离处时消失,则可能需要调整您的远剪裁平面(far distance clipping)(在OpenGL或Unity相机设置中)。处理大型图像目标时尤为适用。
按照OpenGL示例中的建议,增加远剪裁平面的值:
JAVA (Android)
projectionMatrix = Tool.getProjectionGL(camCalibration, near_distance, far_distance);
C++, Android/iOS
rojectionMatrix = Vuforia::Tool::getProjectionGL(cameraCalibration, near_dist, far_dist);
在Unity中,远近剪裁平面(the near and far clipping planes)可以直接在ARCamera GameObject的Inspector窗口中设置。
提示:如果几乎看不见目标或者目标在视野外,也可以使用设备追踪(Device Tracking)来授权(empower)对目标的追踪功能。
五、了解更多
- 【Vuforia】基于图像目标的物理特性
(【原文】Physical Properties of Image-Based Targets) - 【Vuforia】最佳实践:设计和开发基于图像的目标识别
(【原文】Best Practices for Designing and Developing Image Targets) - 图像目标
(Image Targets)