ArUco Marker检测原理

2023-05-16

标记检测过程包括两个主要步骤:

  1. 检测候选marker
    在该步骤中,分析图像以找到作为标记的候选的正方形形状。 它首先进行自适应阈值处理以对标记进行分割,然后从阈值图像中提取轮廓,并丢弃那些非凸起或不接近正方形的轮廓。 还应用了一些额外的过滤(去除太小或太大的轮廓,去除彼此太近的轮廓等)。
  2. 在候选检测之后,有必要通过分析它们的内部编码来确定它们是否实际上是标记
    此步骤首先提取每个标记的标记位。 为此,首先,应用透视变换以获得其规范形式的标记。 然后,使用Otsu对规范图像进行阈值处理以分离白色和黑色位。 根据标记大小和边界大小将图像分成不同的单元格,并计算每个单元格上的黑色或白色像素的数量,以确定它是白色还是黑色位。 最后,分析比特以确定标记是否属于特定字典,并且在必要时采用纠错技术。
    参考链接:https://blog.csdn.net/kyjl888/article/details/72843940

自适应阈值处理

  adaptiveThreshold(_in, _out, 255, ADAPTIVE_THRESH_MEAN_C, THRESH_BINARY_INV, winSize, constant);
  adaptiveThreshWinSizeMin(3),
  adaptiveThreshWinSizeMax(23),
  adaptiveThreshWinSizeStep(10),

数字越大,二值化以后的边缘越粗
参考:https://blog.csdn.net/u010566411/article/details/54317416
提取轮廓

static void _findMarkerContours(InputArray _in, vector< vector< Point2f > > &candidates,
                                vector< vector< Point > > &contoursOut, double minPerimeterRate,
                                double maxPerimeterRate, double accuracyRate,
                                double minCornerDistanceRate, int minDistanceToBorder)

透视变换

Otsu

threshold(resultImg, resultImg, 125, 255, THRESH_BINARY | THRESH_OTSU);
  • 最大类间方差法原理
    利用阈值将原图像分成前景,背景两个图象。
  • 关于最大类间方差法(otsu)的性能:
    类间方差法对噪音和目标大小十分敏感,它仅对类间方差为单峰的图像产生较好的分割效果。
    当目标与背景的大小比例悬殊时,类间方差准则函数可能呈现双峰或多峰,此时效果不好,但是类间方差法是用时最少的。
  • 最大类间方差法(otsu)的公式推导:
    记t为前景与背景的分割阈值,前景点数占图像比例为w0,平均灰度为u0;背景点数占图像比例为w1,平均灰度为u1。
    则图像的总平均灰度为:u=w0u0+w1u1。
    前景和背景图象的方差:g=w0*(u0-u)(u0-u)+w1(u1-u)(u1-u)=w0w1*(u0-u1)*(u0-u1),此公式为方差公式。
    参考链接:https://baike.baidu.com/item/otsu/16252828?fr=aladdin
    具体流程
  • Thresholding
    自适应阈值化
  • Contour filtering
    轮廓尺寸过滤
  • Bits extraction
    透视变换去除扭曲
    Otsu提取黑白位
    网格划分
  • Marker identification
  • Corner refinement(边框位置精确化)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ArUco Marker检测原理 的相关文章

  • ARUCO marker的解释

    markers for ARUCO 一种汉明 海明 码的格子图 如图 百度百科解释汉明码规则概要 使用奇偶校验 具有一位纠错能力 校验位在2的次幂位置1 2 4 8 16 32 具体参看 https baike baidu com item
  • opencv_contrib aruco源码

    https github com opencv opencv contrib tree master modules 最近使用了aruco模块 想看看aruco的源码是怎样实现的 在opencv源码中一直没找到aruco 原来 他隐藏在op
  • 使用evo测试aruco_detect精度

    使用evo测试aruco detect精度 一 实验目的二 实验设备三 实验步骤四 实验结果五 实验结论六 结论分析 一 实验目的 测试aruco detect的精确度 xff1b 分析影响aruco slam精准度的主要因素 二 实验设备
  • aruco安装 配合realsense 使用

    使用github安装 网址 xff1a http www uco es investiga grupos ava node 26 git clone到本地之后 xff0c catkin make即可开始使用 使用apt安装 span cla
  • opencv中ArUco识别

    姿态估计 xff08 Pose estimation xff09 在 计算机视觉领域扮演着十分重要的角色 xff1a 机器人导航 增强现实以及其它 这一过程的基础是找到现实世界和图像投影之间的对应点 这通常是很困难的一步 xff0c 因此我
  • opencv中ArUco模块实践(1)

    论文阅读模块将分享点云处理 xff0c SLAM xff0c 三维视觉 xff0c 高精地图相关的文章 公众号致力于理解三维视觉领域相关内容的干货分享 xff0c 欢迎各位加入我 xff0c 我们一起每天一篇文章阅读 xff0c 开启分享之
  • 自制aruco识别码

    要自制Aruco识别码 xff0c 你可以使用Aruco库中提供的工具生成自定义识别码 这些工具可以在多种编程语言 如C 43 43 xff0c Python 中使用 xff0c 生成满足你的特定要求的识别码 一旦生成了识别码 xff0c
  • 视觉标记定位aruco使用

    本文的目的是实现生成一张marker broad图片 xff0c 告诉标记检测程序tag在真实世界中的实际大小 检测成功后得到marker的id 四个角点坐标 marker到相机的平移和旋转 xff11 xff0e 下载安装参考 openc
  • Opencv Aruco识别(python)

    效果图 先上效果 代码 直接上代码 xff1a span class token operator span span class token operator span usr span class token operator span
  • 如何使传单中的标记闪烁

    有没有一种简单的方法可以使传单地图中的标记闪烁 我的意思是动画闪烁 类似于 1 秒内从不透明度 1 0 过渡到不透明度 0 5 的循环 然后反转 循环结束 当您添加一个Marker你可以指定一个Icon 选项包括className 你可以用
  • Google Android 地图上不同命名的标记

    我想在 Android 地图上添加许多不同的标记 到目前为止 我的代码运行良好 一遍又一遍地使用相同的覆盖层 mapOverlays mapView getOverlays drawable this getResources getDra
  • 如何在 JFreeChart 散点图中创建空心形状

    使用的 JFreeChart 版本 1 5 0 我尝试了以下方法来获得散点图中的空心形状 PlotFrame java文件内容 package javaapplication1 import javax swing JFrame impor
  • 自定义Android地图pin

    您好 我想添加一个动态显示 其中包含我的观点中的数字 如图所示 我已经在地图上有了图标 将点中的数字相加 您可以使用android maps utils http googlemaps github io android maps util
  • 如何永久显示标记标签?

    在jVectorMap中 我试图找到一种解决方案来永久显示标记标签 但我无法做到 我在文档中也没有找到任何有关它的信息 我只想最初显示的标记标签 有什么建议么 没有一种快速或简单的方法 jVectorMap 显示标签的方式是使用 div 和
  • NgMap 集群在缩放后更改标记颜色

    我想改变标记的颜色 我在用着ng map显示地图 我还在这个库中使用集群选项 我的问题 我可以更改标记颜色并且可以看到这一点 但是一旦开始缩放 标记颜色就会更改为默认颜色 红色 这是我的代码
  • 如何更新谷歌地图中多个标记的位置

    我正在使用谷歌地图 API 在地图上放置标记 标记的 GPS 坐标存储在 mySQL 数据库中 我已经能够创建标记 但是位置会不断变化 所以我想知道如何更新标记的位置 以便标记能够在地图上移动 到目前为止 这是我的代码
  • Android 版 Googlemaps v2 中 getInfoWindow() 和 getInfoContents() 之间的区别

    两个问题 有什么区别public abstract View getInfoWindow Marker marker and public abstract View getInfoContents Marker marker getInf
  • Android 地图 v2 自定义标记的缩放位置不正确

    我知道这个问题以前已经讨论过 但我实际上找不到解决方案 我正在为我的标记添加自定义图标 markerUserLocation mMap addMarker new MarkerOptions position new LatLng poin
  • Aruco 标记与 openCv,获取 3d 角坐标?

    我正在使用 opencv 3 2 检测打印的 Aruco 标记 aruco estimatePoseSingleMarkers corners markerLength camMatrix distCoeffs rvecs tvecs 这将
  • Android - Google 地图触摸和拖动标记

    如何在地图活动上移动标记 而无需长按并按住该标记直到它获得焦点 我只想触摸和拖动 但它需要大约 1 2 秒才能接收焦点并触发拖动事件 这是我的代码 mMap googleMap mMap setMapType GoogleMap MAP T

随机推荐

  • 视频交互天花板:Track Anything-搭建流程及问题解决

    Track Anything解决了SAM对于连续图像中目标的一致性分割表现不佳的问题 xff0c 而Track Anything将SAM推广至视频目标分割和追踪领域 xff0c 并开发了交互界面 xff0c 实现了少量交互解决目标问题 本文
  • 控制算法整理

    文章目录 控制系统结构控制算法逻辑介绍传统控制算法与现代控制算法的思路对比现代控制理论思路状态方程稳定性分析特征值平衡点相平面 传统控制算法PID算法原理概述模糊神经网络控制算法 现代控制算法LQR自适应控制滑模控制 系统稳定性 控制系统结
  • realsense D435i gazebo slam(px4)仿真

    文章目录 realsense D435i gazebo slam仿真下载realsense 仿真模型运行D435仿真环境测试D435D435i slam仿真示例UAV模型启动slam启动其他mavros px4 坐标转换 realsense
  • C++ Primer Plus学习(一)—— 基础知识

    基础知识 预备知识头文件名命名约定名称空间 命名空间C 43 43 源代码风格 xff1a 处理数据变量名位与字节数据类型为何float有效位数为7位climits初始化整型浮点数相对整型的优缺点转义运算符算术运算符类型转换 最近开始对C
  • C++ Primer Plus学习(十八)——Linux和C++知识点梳理(黑马程序员)

    知识点梳理 Linux常用指令数据度量单位压缩硬链接和软链接 Linux常用指令 ctrl 43 shift 43 43 xff1a 放大终端窗口和字体 ctrl 43 xff1a 缩小终端窗口和字体ls xff1a list xff0c
  • ipv4到ipv6过渡的三种方案

    ipv4到IPV6过渡有哪几种方案 xff1f IPv4 是互联网协议的第四版 xff0c 属第一个被广泛应用 xff0c 构成现阶段互联网技术的基础的协议 IPv6是下一代互联网协议 xff0c 为了解决 IP地址稀少而生 xff0c 正
  • 8个免费查找文献的学术网站

    今天为大家推荐8个免费查找文献的学术网站 xff0c 希望能帮到大家 文章来源公众号智慧科研 1 Library Genesis Library Genesis号称是帮助全人类知识无版权传播的计划 网站上论文很多 xff0c 下载方便 xf
  • Linux服务器snmp协议v2/v3配置方法

    Snmp V2 配置方法 1 确保本机已经安装了snmp服务 root 64 idc rpm qa grep snmp net snmp libs 5 1 2 11 EL4 7 net snmp 5 1 2 11 EL4 7 如果没有 xf
  • 论文中AP与AR含义详细解释

    AP的含义和AR的本身含义就是查准率和查全率 这里的AP通过和IOU结合定义出两种分别 xff1a 1 当IOU大于0 5认定为真 2 当IOU大于0 75认定为真 3 从IOU大于0 5开始 xff0c 每次增加0 05 xff0c 分别
  • 学习笔记之ubuntu sudo apt-get update失败已经解决

    ubuntu sudo apt get update失败已经解决 运行sudo apt get update出现的错误如下 xff1a etc apt sudo apt get update Err http security ubuntu
  • oracle之index

    索引与表一样 xff0c 也属于段 xff08 segment xff09 的一种 里面存放了用户的数据 xff0c 跟表一样需要占用磁盘空间 索引是一种允许直接访问数据表中某一数据行的树型结构 xff0c 为了提高查询效率而引入 xff0
  • 通过jad/mc/redefine命令,在docker容器中实现动态更新代码的功能:

    通过jad mc redefine命令 xff0c 在docker容器中实现动态更新代码的功能 xff1a demos dockerfile from openjdk 8u232 jdk maintainer czm lt chengzhi
  • 对抗攻击与防御(2022年顶会顶刊AAAI、ACM、 ECCV、NIPS、ICLR、CVPR)adversarial attack and defense汇总

    文章目录 AAAI 39 2022 论文汇总CVPR 2022论文汇总ACM 39 2022论文汇总ECCV 39 2022论文汇总ICLR 39 2022论文汇总NIPS 39 2022论文汇总后续 AAAI 2022 论文汇总 AAAI
  • 时间序列(time serie)分析系列之时间序列特征(feature)7

    文章目录 1 问题描述 2 特征构建 2 1时间特征 2 2平移特征 2 3窗口特征 3 总结 1 问题描述 时间序列数据作为一种典型的数据 常存在于各行各业 比如客流 车流 销量 KPI指标等等 如何对时序数据加以利用 比如做未来预测 交
  • 数论

    质数的定义 对于大于1的自然数 如果它的因子中只有1和它本身 则是一个质数也称素数 从定义可以看出质数的取值范围是从2开始的 小于2的数肯定不是质数 质数的判定 试除法 假设 d是n的一个因子 那么n d 也是n的一个因子 因此我们只需要枚
  • Linux yolov4配置运行

    1 下载yolov4 git clone https github com AlexeyAB darknet git 如果没有git sudo apt get install git 2 编译 进入darknet的目录下 执行下面的语句进行
  • 吐血分类整理 Windows 11的170个快捷键

    1 Windows 11 中新增的键盘快捷键 xff1a 作用快捷键打开小部件窗格 xff0c 提供天气预报 当地交通 新闻 xff0c 日历Win 43 W切换快速设置 控制音量 Wi Fi 蓝牙 亮度滑块 对焦辅助和其他设置Win 43
  • SLAM算法解析

    ref xff1a https www jianshu com p eb25bd481475 嵌牛导读 xff1a SLAM Simultaneous Localization and Mapping 是业界公认视觉领域空间定位技术的前沿方
  • mininet基本使用与操作方法

    启动Wireshark 要使用OpenFlow Wireshark解剖器查看控制流量 xff0c 请先在后台打开wireshark xff1a sudo wireshark amp do wireshark amp rk amp 每个主机进
  • ArUco Marker检测原理

    标记检测过程包括两个主要步骤 xff1a 检测候选marker 在该步骤中 xff0c 分析图像以找到作为标记的候选的正方形形状 它首先进行自适应阈值处理以对标记进行分割 xff0c 然后从阈值图像中提取轮廓 xff0c 并丢弃那些非凸起或