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检测原理 的相关文章

  • ros使用usb摄像头追踪ArUco markers

    ros使用usb摄像头追踪ArUco markers 注意 xff1a 在通过ros使用usb摄像头追踪ArUco markers之前 xff0c 先进行相机的内参标定 xff0c 否则会出现以下问题 Error TF NAN INPUT
  • 【OpenCV】ArUco Marker

    1 创建 span class token keyword import span cv2 span class token keyword as span cv span class token keyword import span n
  • [OpenCV] aruco Markers识别

    reference http docs opencv org 3 1 0 d5 dae tutorial aruco detection html 姿态估计 xff08 Pose estimation xff09 在计算机视觉领域扮演着十分
  • 关于Aruco标记的理解并对其进行姿态估计的可视化显示

    目录 1 什么是ArUco标记1 1 Marker和字典 2 通过使用OpenCV生成ArUco标记图3 检测Aruco标记4 一些API的介绍getPredefinedDictionary drawMarker estimatePoseS
  • 自制aruco识别码

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

    前些时间写了篇文章把我在做这个项目中遇到的问题以及思路说了一下 传送门 http jcs130 iteye com blog 2185533 在上篇文章的思路下作了实现 已经达到了教授的要求 nbsp 首先第一步检测四个角的坐标 经试验 在
  • SLAM学习——使用ARUCO_marker进行AR投影

    一 简介 1 1 目标 增强现实技术 xff08 Augmented Reality xff0c 简称 AR xff09 xff0c 是一种实时地计算摄影机影像的位置及角度并加上相应图像 视频 3D模型的技术 xff0c 这种技术的目标是在
  • aruco二维码

    1 二维码的生成 简单方式 xff1a 直接在下面的网站上选择 xff0c 操作简单https chev me arucogen 网站界面如下 xff1a
  • Ros下Aruco模块的使用

    生成ARUCO ROS MARKER 链接 http chev me arucogen 首先启动ros roscore 打开相机节点 xff0c 在此提供usb相机与Realsense D435i的启动方法 xff1a roslaunch
  • .NetCore——OpenCvSharp识别Aruco图

    NetCore OpenCvSharp识别Aruco图 一 开始 在之前一章中在C 中引用了OpenCvSharp生成Aruco图 xff08 NetCore OpenCvSharp创建Aruco图 xff09 xff0c 那么这次就来看看
  • Google Android 地图上不同命名的标记

    我想在 Android 地图上添加许多不同的标记 到目前为止 我的代码运行良好 一遍又一遍地使用相同的覆盖层 mapOverlays mapView getOverlays drawable this getResources getDra
  • Google Maps API v3 多个标记信息窗口

    我使用下面的代码来显示带有多个标记和信息窗口的地图 现在我遇到了所有标记上显示最后一个信息窗口的非常常见的问题 我尝试过各种解决方案 包括 http you arenot me 2010 06 29 google maps api v3 0
  • 引脚内带有用户图像的自定义标记

    I am trying to display users on a map I have already implemented the map in the app but now I am trying to make custom m
  • 如何获得相机旋转? (阿鲁科图书馆)

    我一直在尝试了解下载 Aruco 库时包含的 aruco test cpp 程序的输出 输出具有以下格式 22 236 87 86 4296 422 581 78 3856 418 21 228 032 261 347 228 529 Tx
  • iOS:动态标记信息窗口

    我正在尝试将图像动态加载到信息窗口中 问题是 SDWebImage 永远不会完成 但是 一旦我再次单击标记 图像就会显示并被调用 但从未在第一次调用 我的 运行 日志第一次显示 所以我知道代码正在被调用 但第一次运行时永远不会显示完整 除非
  • 当我们旋转手机时如何旋转 googlemap v2 中的箭头

    有人可以帮助我如何旋转谷歌地图 v2 中的箭头吗 您已经看到 在导航中 箭头旋转到我们面对的方向 我想将其实现到我的应用程序中 我红了关于markerOption rotation rotation 这似乎是静态的 我想在旋转手机时动态旋转
  • 如何更改matplotlib中误差线限制的标记符号?

    只是一个简单的问题 我在其中找不到任何有用的信息plt errorbar文档 https matplotlib org 3 1 1 api as gen matplotlib pyplot errorbar html 我想用误差线绘制值 i
  • 如何更新谷歌地图中多个标记的位置

    我正在使用谷歌地图 API 在地图上放置标记 标记的 GPS 坐标存储在 mySQL 数据库中 我已经能够创建标记 但是位置会不断变化 所以我想知道如何更新标记的位置 以便标记能够在地图上移动 到目前为止 这是我的代码
  • 如何在Android地图上更改位置时删除标记并重新绘制它

    编辑前 我正在使用下面的代码在android地图上重绘一个标记 实际上它重绘了一个标记 但它并没有删除旧的标记 我尝试过 mapView invlaidate 但它并没有删除旧的 这是 onLocationChanged 函数 Overri
  • 将 matplotlib 绘图中的小数点更改为逗号

    我在 Debian 上使用 python 2 7 13 和 matplotlib 2 0 0 我想将 matplotlib 绘图中轴和注释上的小数点标记更改为逗号 然而解决方案发布here https stackoverflow com q

随机推荐

  • 视频交互天花板: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 并丢弃那些非凸起或