我们正在朝着纸上完全不需要标记的方向前进,届时用户画的每一笔都会被视为一个标记。与此同时,我们已经实现了更好的检测和贴合效果,比如说,如果四个标记里遮住了三个,我们的算法也能推测出它们应该在的位置,把虚拟图像稳稳地固定住。即使有些标记超出了画面边框,图像依然能保持在原位!我们把这个方法称为“标记预测”。
它是怎么运作的?
我们会检测标记在画面中的位置,一旦某个标记丢失,我们的算法就会通过与上一帧的位置进行匹配来推测它的位置。比如说,如果上一帧中左下角的标记位于坐标 100 x 100,那么这一帧里离它最近的标记就会被判定为左下角标记。
我们成功测试了三种情况:丢失一个、两个或三个标记的情况。如果四个标记全部丢失,目前我们还无法进行预测。所以现阶段,算法至少需要检测到一个标记。

检测到的标记越多,预测就越准确:
- 当检测到三个标记时,相机可以在相当大的范围内移动,也可以相对纸张进行平移和缩放。
首先,我们检测到一个标记,然后把它与上一帧中的标记对应起来(比如说,我们判断出这就是左下角的标记)。我们观察这个标记从上一帧到当前帧的移动情况,然后直接整体移动草图。我们假设运动是线性的,这样做出的预测精度并不高,但如果相机只是稍微移动一下,这个精度就已经够用了。
- 当检测到两个标记时,相机的任何移动都会带来明显的位移。
- 如果只检测到一个标记,相机哪怕只移动几厘米,也会导致明显的问题。
这个方法是我们在技术上取得的一次小小胜利,它将大大改善用户体验。
更新 iOS 版 SketchAR,亲自体验一下这个变化吧!

