夏天/isummer

Sun of my life !Talk is cheap, Show me the code! 追风赶月莫停留,平芜尽处是春山~

博客园 首页 新随笔 联系 管理

 AprilTags:AprilTag是一个视觉基准库,在AR,机器人,相机校准领域广泛使用。通过特定的标志(与二维码相似,但是降低了复杂度以满足实时性要求),可以快速地检测标志,并计算相对位置。

  是机器视觉不可或缺的一部分,包括但不限于以下应用:

  • 摄像机标定
    对象大小估计
    测量相机和物体之间的距离
    3D定位
    对象定向
    机器人技术(即自主导航到特定标记)
  • Camera calibration
    Object size estimation
    Measuring the distance between the camera and an object
    3D positioning
    Object orientation
    Robotics (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

 

posted on 2025-04-29 15:10  夏天/isummer  阅读(127)  评论(0)    收藏  举报