AprilTags:AprilTag是一个视觉基准库,在AR,机器人,相机校准领域广泛使用。通过特定的标志(与二维码相似,但是降低了复杂度以满足实时性要求),可以快速地检测标志,并计算相对位置。
是机器视觉不可或缺的一部分,包括但不限于以下应用:
-
摄像机标定
对象大小估计
测量相机和物体之间的距离
3D定位
对象定向
机器人技术(即自主导航到特定标记) -
Camera calibrationObject size estimationMeasuring the distance between the camera and an object3D positioningObject orientationRobotics (i.e., autonomously navigating to a specific marker)
AprilTags的主要优点之一是可以使用基本软件和打印机创建。只需在系统上生成AprilTag,将其打印出来,并将其包含在图像处理管道中——Python库可以为您自动检测AprilTag!
下载:AprilTags:https://berndpfrommer.github.io/tagslam_web/making_tags/
AprilTag内容主要包含三个步骤。
第一步是如何根据梯度检测出图像中的各种边缘。 第二步即如何在边缘图像中找出需要的四边形图案并进行筛选,AprilTag尽可能的对检测出的边缘检测,首先剔除非直线边缘,在直线边缘进行邻接边缘查找,最终若形成闭环则为检测到一个四边形。 最后一个步便是如何进行二维码编码和二维码解码,编码方式分为三种,其黑边色块长度分别为8,7,6三个色块长度,对于解码内容,要在检测到的四边形内生成点阵列用于计算每色块的值,再根据局部二值模式(Local Binary Patterns)构造简单分类器对四边形内的色块进行分类,将正例色块编码为1将负例色块编码为0,就可以得到该二维码的编码。得到编码以后再与已知库内的编码进行匹配,确定解码出的二维码是否为正确。
实施步骤1:AprilTag边缘检测
对于第一步来说,最主要的功能就是寻找图像中的边缘,原文章使用的是局部二值模式,但是实际使用中,我建议可以使用Canny算子方法,虽然检测出的边缘会减少,但是相应的也降低了图像中的噪点。
下图是Candy算子
实施步骤2:四边形检测
对于得到的二值化边缘图像,需要对其进行多边形分析,首先运用
边缘结构分析(Topological structural analysis of digitized binary images)查找多边形,该方法用于确定二值图像边缘的围绕关系,即确定外边缘,内边缘以及它们之间嵌套关系,确定的边缘都与原图都有相对应的关系,因此完全可以用边缘来表示原图。该算法采用编码的思想,首先赋予不同的边缘以不同的编码值,这样方便确认多边形的层次关系。算法从起点开始,编辑边缘的像素,寻找该起始点同类的边缘点,当扫描至起始点时,该多边形闭环形成,切换至下一个起始点重复该操作,直到所有的二值点都被遍历,排除边数小于4的,将满足条件的进行进一步处理。
参考:
https://pyimagesearch.com/2020/11/02/apriltag-with-python/
https://blog.csdn.net/han784851198/article/details/90261197