基于标记的增强现实算法(如ARToolkit的算法)如何工作?

Bad*_*tor 9 algorithm augmented-reality

对于我的工作,我一直在使用Java版本的ARToolkit(NyARTookit).到目前为止,它已证明足以满足我们的需求,但我的老板开始希望将框架移植到其他平台,如Web(Flash等)和移动设备.虽然我想我可以使用其他端口,但是由于不知道套件是如何工作的而且由于某些限制,我越来越恼火.后来我还需要扩展套件的功能,以添加交互(卡上的虚拟按钮等),这是我在NyARToolkit中看到的不支持.

基本上,我需要用自定义标记检测器替换ARToolkit(在NyARToolkit的情况下,尝试摆脱JMF并通过JNI使用更好的解决方案).但是我不知道这些探测器是如何工作的.我知道3D图形,我已经构建了一个很好的框架,但我需要知道如何构建底层技术:-).

有谁知道如何从头开始实现基于标记的增强现实应用程序?在谷歌搜索我只找到AR的"应用程序",而不是基础算法: - /.

for*_*ger 10

"从零开始"是一个相对术语.真正从头开始,不使用任何预先存在的视觉代码,将是非常痛苦的,你不会比整个计算机视觉社区做得更好.

但是,如果您想使用现有的视觉代码进行AR,这更合理.基本的子任务是:

  1. 在图片或视频中查找标记.
  2. 确保他们是你想要的.
  3. 弄清楚它们相对于相机的方向.

第一项任务是关键点本地化.这方面的技术包括SIFT关键点检测,Harris角点检测器等.其中一些有开源实现 - 我认为OpenCV在函数GoodFeaturesToTrack中有Harris角点检测器.

第二项任务是制作区域描述符.这方面的技术包括SIFT描述符,HOG描述符和许多其他描述符.应该有一个开源实现其中一个.

第三项任务也由关键点定位器完成.理想情况下,您需要仿射变换,因为这将告诉您标记如何位于3空间中.哈里斯仿射探测器应该为此工作.有关详细信息,请访问:http://en.wikipedia.org/wiki/Harris_affine_region_detector