标志识别之AprilTag3

AprilTag2在速度上是不尽人意的,原因在于梯度计算和聚类的庞大计算和内存开销。在AprilTag3中进行了多项优化,不仅算法更加鲁棒,时间和内存开销大幅减小,更支持了全新格式的二维码。粗看了下,主要做了几点优化:查找矩形前,通过一种新的二值化方法,直接在二值图上查找(这样带来的风险就是二值化失败,矩形形状被破坏,就无法检测到),在查找四边形时,在并查集搜索时提前截断,比起AprilTag2少了许多不必要的搜索。

另外,在构建AprilTag3时和AprilTag2不同,在windows下构建需要自己配置windows下的pthread库,在Linux用gcc构建时,Tag.c文件中有许多大数组,gcc对这类数组编译非常非常慢。AprilTag3也被集成在了VISP中作为一个模块使用,总之AprilTag3使用起来还是非常容易的,AprilTag这种二维码在定位查找方面还是非常有用的,简单记录一下。…

AprilTag标志识别

OpenCV4.0.0正式release了,其中加入了二维码识别功能,有幸博主最近开始折腾二维码识别,发现二维码的核心就是那三个定位点和辅助对齐点。ZXing和OpenCV都是通过二维码定位点的11311来进行定位的,这是利用了二维码最显著的特征。但是博主会处理一些变态的情况,比如过曝光到11311定位点无法找到(即图像中定位点的黑白间隔不是1:1:3:1:1),于是就需要通过其它方法来找定位点了。一个标志识别库摆在眼前:AprilTag。(OpenCV中集成了类似的库,似乎叫做ARTag,没研究过)

AprilTag诞生于2011年的一篇论文,2016年出了AprilTag2,但是16年的论文感觉没讲啥,再加上看的cpp代码是2013年的,于是这篇博客就对着2013版本来讲好了,我们开始吧。…