当前位置: 首页 > news >正文

aruco::detectMarkers中什么情况下marker会被判定为rejectedMarkers

在 OpenCV 的 aruco::detectMarkers 函数中,rejectedMarkers 是一个输出参数,用于存储那些被检测到但未被识别为有效 ArUco 标记的候选区域。这些区域通常满足某些与 ArUco 标记相似的特征(如四边形结构、边界清晰等),但由于以下原因未能通过最终的验证步骤:


📌 生成 rejectedMarkers 的常见原因包括:

1. 标记轮廓不符合规范
  • 检测到的区域是四边形,但不是严格的正方形或比例不对。
  • 四个角点之间的几何关系不符合 ArUco 标记的要求。
2. 校验失败
  • 虽然检测到类似标记的区域,但无法正确解码其内部二进制信息(例如比特位数不匹配)。
  • 校验和(checksum)不通过,说明图像噪声大或图像模糊导致解码失败。
3. 未找到对应的 ID
  • 区域看起来像 ArUco 标记,但无法从其编码中找到对应的预定义字典中的 ID。
4. 像素点质量不佳
  • 区域边缘不够清晰,或者标记内部与外部对比度不足。
  • 图像模糊、光照不均、遮挡等情况可能导致识别失败。
5. 尺寸过小或过大
  • 如果设置的 params->minMarkerPerimeterRate 和 params->maxMarkerPerimeterRate 参数限制了标记大小范围,则超出范围的标记会被拒绝。
6. 与已识别标记重叠
  • 某些候选区域可能与已识别的 ArUco 标记部分重叠,因此被视为无效。
7. 透视变换失败
  • 在透视矫正过程中,如果无法成功进行透视变换(perspective transform),则该区域也会被加入 rejectedMarkers

✅ 如何利用 rejectedMarkers 进行调试或优化?

你可以将 rejectedMarkers 绘制出来,观察哪些区域被误认为可能是 ArUco 标记,从而帮助你优化图像处理流程(如增强对比度、去噪、调整曝光等):

for (size_t i = 0; i < rejectedMarkers.size(); ++i)
{// 绘制 rejected marker 的轮廓cv::drawContours(img_show, rejectedMarkers, static_cast<int>(i), cv::Scalar(0, 0, 255), 2); // 红色线条// 可选:绘制每个角点for (const auto& pt : rejectedMarkers[i]){cv::circle(img_show, pt, 3, cv::Scalar(255, 0, 0), -1); // 蓝色圆点}
}
cv::imshow("Rejected Markers", img_show);
cv::waitKey(0);

🧠 应用场景建议:

场景建议
图像质量较差使用 cv::GaussianBlurcv::equalizeHistcv::adaptiveThreshold 预处理
标记太小/太大调整 params->minMarkerPerimeterRate / params->maxMarkerPerimeterRate
多个标记互相干扰使用 params->cornerRefinementMethod 提高角点精度
光照不均使用 CLAHE 或双边滤波器提升图像质量
http://www.xdnf.cn/news/973927.html

相关文章:

  • 论文解析:一文弄懂Vision Transformer!
  • 标准 IO 流- Rust 标准输入 stdin 与 C/C++ 标准输入(Standard I/O Input)对比分析
  • Appium 安装指南
  • C++中的跳转语句
  • tailwind安装和使用
  • Cloudreve 私有云盘系统部署
  • Java并发编程实战 Day 16:并发编程中的锁进阶
  • 降低显存,优化性能方案 MHA MQA GQA MLA MFA
  • 白盒测试用例设计方法
  • 曼昆《经济学原理》第九版 第十五章垄断
  • FreeRTOS信号量
  • 从DVD租赁小店到流媒体巨擘:Netflix传奇之路
  • EtherCAT 转 CANopen 网关与伺服器在配置软件上的配置步骤
  • 《最小生成树(prim)》题集
  • 湖北理元理律师事务所服务方法论:债务规划中的倾听者价值
  • ArkUI-X平台差异化
  • k8s使用自建nfs做持久化无法控制磁盘使用大小问题处理
  • gbase8s之message log rotate
  • 计算机网络面试汇总(完整版)
  • 【网络】每天掌握一个Linux命令 - iftop
  • 中和农信创新引领“三农“金融服务新模式
  • docker详细操作--未完待续
  • XSS攻击和CSRF攻击
  • TF-IDF算法详解与实践总结
  • 逆向--进阶
  • C++ 标准模板库(STL)详解文档
  • 关于前端常用的部分公共方法(三)
  • 【数字图像处理】基于Python语言的玉米小斑病图像分析
  • 鹰盾加密器“一机一码”技术全维度剖析:从底层实现到生态防护体系
  • 微信小程序抓包(burp + proxifier)