简 介: 通过图片扩增的方法,对于给定的测试Apriltag定位图片进行扩增,然后通过apriltag Python软件包对不同缩放比例下的图片进行检测,统计了在不同压缩比例下识别Apriltag的数量。实验结果显示,在主要包含有Apriltag图片,宽、长像素需要在100以上,才能够比较可靠的被识别。

关键词Apriltag分辨率

#mermaid-svg-rTQ0WnUFUuIfithO {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-rTQ0WnUFUuIfithO .error-icon{fill:#552222;}#mermaid-svg-rTQ0WnUFUuIfithO .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-rTQ0WnUFUuIfithO .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-rTQ0WnUFUuIfithO .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-rTQ0WnUFUuIfithO .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-rTQ0WnUFUuIfithO .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-rTQ0WnUFUuIfithO .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-rTQ0WnUFUuIfithO .marker{fill:#333333;stroke:#333333;}#mermaid-svg-rTQ0WnUFUuIfithO .marker.cross{stroke:#333333;}#mermaid-svg-rTQ0WnUFUuIfithO svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-rTQ0WnUFUuIfithO .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-rTQ0WnUFUuIfithO .cluster-label text{fill:#333;}#mermaid-svg-rTQ0WnUFUuIfithO .cluster-label span{color:#333;}#mermaid-svg-rTQ0WnUFUuIfithO .label text,#mermaid-svg-rTQ0WnUFUuIfithO span{fill:#333;color:#333;}#mermaid-svg-rTQ0WnUFUuIfithO .node rect,#mermaid-svg-rTQ0WnUFUuIfithO .node circle,#mermaid-svg-rTQ0WnUFUuIfithO .node ellipse,#mermaid-svg-rTQ0WnUFUuIfithO .node polygon,#mermaid-svg-rTQ0WnUFUuIfithO .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-rTQ0WnUFUuIfithO .node .label{text-align:center;}#mermaid-svg-rTQ0WnUFUuIfithO .node.clickable{cursor:pointer;}#mermaid-svg-rTQ0WnUFUuIfithO .arrowheadPath{fill:#333333;}#mermaid-svg-rTQ0WnUFUuIfithO .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-rTQ0WnUFUuIfithO .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-rTQ0WnUFUuIfithO .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-rTQ0WnUFUuIfithO .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-rTQ0WnUFUuIfithO .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-rTQ0WnUFUuIfithO .cluster text{fill:#333;}#mermaid-svg-rTQ0WnUFUuIfithO .cluster span{color:#333;}#mermaid-svg-rTQ0WnUFUuIfithO div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-rTQ0WnUFUuIfithO :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

背景介绍
目 录
Contents
智能车竞赛智能
视觉组辅助定位
测试方案
Apriltag检测
实验环境准备
检测算法
Apriltag图片扩增
不同尺寸识别
测试结果

§00 背景介绍


0.1 智能车竞赛智能视觉组辅助定位

  在全国大学生智能车竞赛智能视觉组 中,利用 Apriltag进行车模辅助定位 。由于竞赛车模作品上的摄像头的分辨率相对较低(320×240),所以在实际应用中需要使用镜头角度范围相对较窄的摄像头,拍摄场地内的定位Apriltag定位码,才能够获取到足够多的像素用于定位码的识别。

▲ 图1 在半个比赛场地内的Apriltag定位立方体

  在比赛场地内的Apriltag 使用的为tag25H9 系列的Apriltag码,如果分辨率比较大,可以 在获取Apriltag的空间位置的同时获取它的法线走向 。为了进一步验证Apriltag在竞赛环境中的定位特性,下面通过不同的分辨率来测试检测算法定位精度。检测使用 Python中的apriltag检测算法

0.2 测试方案

  • 首先通过 深度学习中图片数据增强方法 对于采集到的标准Apriltag图库进行增强;
  • 然后通过图片resize,获得不同分辨率下的图片;
  • 利用Apriltag中的检测方法,分别统计检测后的指标;

§01 Apriltag检测


1.1 实验环境准备

  Ai Studio 是百度提供的人工智能云上开发环境,云端登录后是Linux工作环境,提供 BML CodeLab Notebook的交互式开发界面。之所以选择Ai Studio,是因为自己工作所使用的Windows 7 环境太旧,在安装apriltag Python软件包过程中总是出现错误。

1.1.1 安装Apriltag软件包

  在 Ai Studio Notebook环境下,安装Apriltag 软件包:

!pip install apriltag

Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting apriltagDownloading https://pypi.tuna.tsinghua.edu.cn/packages/f2/e5/957bb26d575141bc25af7214c14e315c9ebb9a12ccf7c8d09ed40b59bb29/apriltag-0.0.16.tar.gz (201kB)|████████████████████████████████| 204kB 4.9MB/s eta 0:00:01
Building wheels for collected packages: apriltagBuilding wheel for apriltag (setup.py) ... doneCreated wheel for apriltag: filename=apriltag-0.0.16-cp37-cp37m-linux_x86_64.whl size=452177 sha256=0d36144f98ae62844ced9792df0dcd2a4476d12e95ed4aace765241708b35825Stored in directory: /home/aistudio/.cache/pip/wheels/7c/93/d0/f5128991a88d5609b5a87ab639a488d63f664cf5f862f26232
Successfully built apriltag
Installing collected packages: apriltag
Successfully installed apriltag-0.0.16

1.1.2 处理图片

  用于测试的Apriltag图片来自于 两个对于Apriltag图片处理问题讨论 中制作的Apriltag定位立方体。

▲ 图1.1.1 用于测试Apriltag图片

图片的尺寸:
:720
:543

1.2 检测算法

1.2.1 检测代码

atd = apriltag.Detector(apriltag.DetectorOptions(families='tag36h11 tag25h9'))
tags = atd.detect(gray)print("tags:\n{}".format(tags))for tag in tags:for c in tag.corners:cv2.circle(img, tuple(c.astype(int)), 4, (255,0,0), 2)cv2.circle(img, tuple(tag.center.astype(int)), 8, (255,0,0), 4)plt.clf()
plt.figure(figsize=(10,10))
plt.axis("off")
plt.imshow(img)

1.2.2 检测结果

  下面显示了检测到的两个Apriltag的位置以及相关的参数。

▲ 图1.2.1 检测输出的Apriltag中心与四个角落

tags: [Detection(tag_family=b'tag25h9', tag_id=1, hamming=0, goodness=0.0, decision_margin=87.13029479980469, homography=array([[ 5.25277050e-01,  3.99535001e-02,  1.37315504e+00],[ 2.48140105e-01,  8.12493111e-01,  1.86261033e+00],[-1.40731593e-04,  1.15162457e-04,  6.18912300e-03]]), center=array([221.86585028, 300.94899259]), corners=array([[130.00233459, 129.04534912],[313.23223877, 218.81126404],[314.49154663, 474.27890015],[137.75471497, 376.56430054]])), Detection(tag_family=b'tag25h9', tag_id=1, hamming=0, goodness=0.0, decision_margin=55.70514678955078, homography=array([[-6.66538170e-01, -3.00824606e-02, -2.71129491e+00],[ 2.11909359e-01, -7.69185216e-01, -1.82710635e+00],[-9.33389035e-05, -8.40349506e-05, -5.91966396e-03]]), center=array([458.01500415, 308.65034919]), corners=array([[350.84857178, 221.13659668],[564.64306641, 142.6912384 ],[558.94610596, 391.07223511],[351.05123901, 475.13195801]]))]

  应用上面的代码对于【图1】进行检测,无法检测到任何Apriltag。

1.3 Apriltag图片扩增

  对上面测试的Apriltag图片通过旋转、上下左右翻转、亮度、对比度的变化等方法进行扩增,总数达到27张图片。

▲ 图 Apriltag增强后的图片

1.3.1 处理扩增图片

def procdir(dirstr):filedim = os.listdir(dirstr)tagdim = []for f in filedim:fn = os.path.join(dirstr, f)if fn.find('.jpg') < 0: continueimg = cv2.imread(fn)gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)tags = atd.detect(gray)tagdim.append(len(tags))return tagdimimgdir = '/home/aistudio/work/apriltag'
dim = procdir(imgdir)
print("len(dim): {}".format(len(dim)))

  所有图片识别的结果为: 27个。这说明图片本扩增对于Apriltag检测没有影响。

1.4 不同尺寸识别

1.4.1 处理代码

from paddle.vision.transforms import Resize
from tqdm import tqdmdef resizeImage(indir, outdir, ratio):fdim = os.listdir(outdir)for f in fdim:fn = os.path.join(outdir, f)if os.path.isfile(fn):os.remove(fn)fdim = os.listdir(indir)for f in fdim:fn = os.path.join(indir, f)if not os.path.isfile(fn): continueimg = cv2.imread(fn)imgsize = img.shapewidth = int(imgsize[1] * ratio)height = int(imgsize[0] * ratio)img1 = Resize((height, width))(img)outfn = os.path.join(outdir, f)cv2.imwrite(outfn, img1)return procdir(outdir)outdir = '/home/aistudio/GIF'
indir = '/home/aistudio/work/apriltag'ratiodim = linspace(-2, 0, 100)
tagsdim = []for r in tqdm(ratiodim):rr = exp(r*log(10))ret = resizeImage(indir, outdir, rr)tagsdim.append(sum(ret))print(tagsdim)

1.4.2 识别精度

  下面显示了将原图进行缩小之后对应的Apriltag识别个数的变化。横坐标为缩小倍数对应的log⁡10(r)\log _{10} \left( r \right)log10​(r),纵坐标对应的识别出的Apriltag的个数总和。

  当压缩比例为0.226时,识别错误率开始出现,当压缩比例小于0.077时,便基本无法识别所有的图片中的Apriltag了。

▲ 图1.4.1 不同尺寸下的识别数量

  下面显示了原始图像以及压缩比率分别为0.226、0.077对应的图片相关尺寸。

▲ 图1.4.2 原图与压缩后的图片

※ 测试结果 ※


  通过图片扩增的方法,对于给定的测试Apriltag定位图片进行扩增,然后通过apriltag Python软件包对不同缩放比例下的图片进行检测,统计了在不同压缩比例下识别Apriltag的数量。实验结果显示,在主要包含有Apriltag图片,宽、长像素需要在100以上,才能够比较可靠的被识别。


■ 相关文献链接:

  • 智能车竞赛相关的教高司公函:公函[2005]201号文、教高司[2005]13号
  • 第十七届智能车竞赛智能视觉组比赛细则
  • 第十七届全国大学生智能车竞赛智能视觉组规则补充说明(1)
  • APRILTAG 标准图片:TAG25H9
  • 根据Apriltag进行角度和距离检测
  • 基于Python下的Apriltag检测
  • 深度学习中图片数据增强方法
  • 搭建AI Studio 中Python开发环境
  • 两个对于Apriltag图片处理问题讨论

● 相关图表链接:

  • 图1 在半个比赛场地内的Apriltag定位立方体
  • 图1.1.1 用于测试Apriltag图片
  • 图1.2.1 检测输出的Apriltag中心与四个角落
  • 图 Apriltag增强后的图片
  • 图1.4.1 不同尺寸下的识别数量
  • 图1.4.2 原图与压缩后的图片

不同分辨率下Apriltag识别精度测试相关推荐

  1. 模式识别新研究:微软OCR两层优化提升自然场景下的文字识别精度

    模式识别新研究:微软OCR两层优化提升自然场景下的文字识别精度 发表于2015-03-30 23:46| 6209次阅读| 来源CSDN| 8 条评论| 作者霍强 模式识别微软亚洲研究院微软OCR文字 ...

  2. 怎么测试本地网页在不同分辨率下电脑显示效果_4K商用超值利器 飞利浦272P7VPTKEB显示器评测...

    随着4K显示器的价格不断走低,越来越多的电脑用户已经拥有了这种超高分辨率显示器.此次评测为大家带了的飞利浦272P7VPTKEB就是一款物美价廉的产品,它专为商用办公而设计,并且兼顾了不错的影音娱乐效 ...

  3. 苹果申请声波屏下指纹识别专利 精度足以取代Touch ID

    本文讲的是 苹果申请声波屏下指纹识别专利 精度足以取代Touch ID, 据 AppleInsider 北京时间 8 月 29 日报道,当地时间周二,美国专利和商标局授予苹果一项声波指纹成像技术专利, ...

  4. Screenfly – 各种设备的屏幕和分辨率下快速测试网站

    Screenfly 让你能够在各种设备的屏幕和分辨率下查看你的网站.输入网址,并点击GO开始浏览网页.Screenfly 可以使用代理服务器来模拟设备,当您查看您的网站,代理服务器模仿您所选择的设备的 ...

  5. 全球人脸识别精度一年提高75.6%,拉动全球安防市场超高增长

    来源:AI 科技评论 摘要:有「工业界黄金标准」之称的美国国家标准与技术研究院(National Institute of Standards and Technology,NIST)最近公布了全球人 ...

  6. 细粒度图像分类_支付宝AI大幅提升细粒度图像分类识别精度:一眼看穿万物细微差异...

    近日,计算机视觉A类顶级会议CVPR 2020开幕在即, 由全球最大机器学习平台Kaggle承办的FGVC(Fine-Grained Visual Categorization,细粒度图像分类)全球挑 ...

  7. 支付宝AI大幅提升细粒度图像分类识别精度,一眼看穿万物细微差异

    近日,计算机视觉A类顶级会议CVPR 2020 开幕在即, 由Kaggle承办的FGVC(Fine-Grained Visual Categorization,细粒度图像分类)全球挑战赛结果揭晓,支付 ...

  8. [病虫害识别|博士论文]非结构环境下病虫害识别方法研究

    概述 提出一种基于级联卷积神经网络的植物病害识别方法 提出一种融合农田多源环境信息的害虫监测方法 提出一种新的目标检测损失函数解决特征冲突问题 本文研究的主要方面在于特征提取.(其他部分沿用目前最全面 ...

  9. (13)[Xamarin.Android] 不同分辨率下的图片使用概论

    原文 [Xamarin.Android] 不同分辨率下的图片使用概论 设计Android App的时候,其尺寸众多也是一个挑战之一.要针对不同尺寸设计Android App时,就要先来了一下dpi(d ...

最新文章

  1. #每天一种设计模式# 模板方法
  2. c莫比乌斯函数_代佳璇缘起一条莫比乌斯环,我爱上了难缠的数学!
  3. 常用的正则表达式(方便自己看)
  4. Failed to initiate service connection to simulator
  5. 处理时间_4_计算时间列所在的周的序号
  6. List中subList方法抛出异常java.util.ConcurrentModificationException原理分析
  7. resources.arsc格式(包-类型-资源项)
  8. mysql 检查_检查MySQL的健康状况
  9. IMail邮件服务-1
  10. 明明不胖,为什么你一直都喊着要减肥?
  11. python入门三剑客_python数据分析三剑客基础之matpoltlib初解
  12. bzoj3262: 陌上花开 树套树
  13. java 中英日期转换器_Java SimpleDateFormat中英文时间格式化转换详解
  14. matlab图像取样和量化,数字图像基础之图像取样和量化
  15. Qt之Base64编解码
  16. Lifeline功能介绍04——个人课程的查看及管理
  17. 【LR/PS插件】胶片颗粒调色光晕视觉效果工具 Optics 2022.0.1 Win
  18. Java对象关系映射(ORM)
  19. python自学到大牛_如何才能自学成为 Python 大牛?
  20. ArcGIS Server Felx API接入E都市地图

热门文章

  1. 用Docker安装Gitlab
  2. 砥砺前行:我的2016总结和2017计划 | 掘金技术征文
  3. 软件工程概论课程总结
  4. wordpress 后台,登录,注册开启https的重写规则
  5. ubuntu root下的无密码登陆
  6. 在代码中获取ApplicationContext实例
  7. SegmentFault 助力 Uber Hackathon
  8. 天津Uber优步司机奖励政策(1月4日~1月10日)
  9. 注入式开发(二):.NET 匿名函数
  10. wpf richtextbox 存储到数据库并显示