【问题标题】:Find center of a fiducial marker查找基准标记的中心
【发布时间】:2015-09-10 13:07:50
【问题描述】:

我需要在移动物体的一系列照片上跟踪四个点。 起初,我尝试了看起来像棋盘的四个方格(2 个白色和 2 个黑色)和 ORB 检测器的标记:

import numpy as np
import cv2
from matplotlib import pyplot as plt

img = cv2.imread('D:/workspace_Rita/Tag5.jpg',0)

orb = cv2.ORB_create()

# find the keypoints with ORB
kp = orb.detect(img,None)
kp, des = orb.compute(img, kp)

img2 = cv2.drawKeypoints(img,kp,None,color=(0,255,0), flags=0)
plt.imshow(img2),plt.show()

图片:http://postimg.org/image/52phl54rz/

- 加上所需的点(标记的中心),我得到了很多噪音,所以我决定将棋盘标记更改为基准标记,以 ARTag 样式绘制。此外,如果对象旋转,这些标记将有助于识别点。现在,使用相同的 Python 代码,我得到:

图片:http://postimg.org/image/f58zzrkl5/

我仍然检测到噪声点,但我看不到从关键点质量中提取标记中心坐标的简单方法。 我想,我需要要么调整检测器的灵敏度(也许,对图像进行一些预过滤),要么找到另一种算法。

我会很感激想法和示例,我可以使用哪些检测器或算法以最简单的方式跟踪基准标记中心,更喜欢 Python 语言和 Open CV。

【问题讨论】:

  • 一种选择是使用更强大的检测器,另一种选择是对检测进行后处理(过滤)。您可以对检测到的点应用后处理,因为您知道您的点应该以方形形式出现在 4 个相邻中心的组中。您可以将其表述为一个优化问题并尝试获得最佳点集,或者您可以使用 lke RANSAC 随机尝试 4 个点组并计算它们的距离并保留最佳点。 RANSAC demo
  • 感谢您的评论,我会尝试使用RANSAC。你知道更强大的检测器吗?
  • 似乎我错误地认为必须有非常完善的库,其中包含各种过滤器和稳定器,用于基准标记等有用的项目(
  • 取决于您要检测的内容。您可以训练检测器或尝试使用template matching。校准例程通常使用棋盘格模式,看看here。
  • 看看这里:infi.nl/nieuws/…

标签: python opencv computer-vision augmented-reality orb


【解决方案1】:

我认为您检测标记的速度太快了。操作方法如下:

  1. 使用中值滤波器去噪(可选)
  2. 检测明亮/白色表面的简单阈值
  3. 将最大的保留在图像中心(白色面板)。这可以通过添加霍夫滤波器进行微调,以找到平行线(面板/矩形边框)。
  4. 新的阈值以检测先前结果中的暗区。
  5. 连接组件标签以分隔暗区。如果他们互相接触。
  6. 每个区域的质心,如果区域相互接触,则最终被侵蚀。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-14
    • 1970-01-01
    相关资源
    最近更新 更多