【发布时间】: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