SIFT / SURF / ORB用于简单图案的检测和定位
我的项目集中在用固定相机定位几个小物体。 我绘制了一些清晰,简单的图形图案图像(如此),将它们打印出来并尝试在图像中检测它们。 我直截了当的方法:
我使用OpenCV编写Python。 我的ORB + BFMatcher的initcode是:
pt_detector = cv2.ORB()
pt_matcher = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True)
对于SIFT + FLANN,我写道:
pt_detector = cv2.SURF(400)
FLANN_INDEX_KDTREE = 0
index_params = dict(algorithm=FLANN_INDEX_KDTREE, trees=5)
search_params = dict(checks=50)
pt_matcher = cv2.FlannBasedMatcher(index_params, search_params)
然后我简单地说:
kp_r, des_r = pt_detector.detectAndCompute(pattern, None)
kp_o, des_o = pt_detector.detectAndCompute(obj_res, None)
matches = pt_matcher.match(des_r, des_o)
问题是:探测器在整个样本和模板中找到匹配,尽管它们通常能够检测到该模式,但方向却是混乱的。
以下是模板图像(左侧)与相机框架中实际找到的图案(右侧)之间的匹配示例。 当然,摄像机图像被遮蔽并设定阈值。 这些来自SIFT + FLANN的10个最佳匹配显然很糟糕。 我已经使用FLANN匹配器和ORB + BFMatcher默认设置尝试了SURF,SIFT,但没有结果。 我想这个问题是在描述符和匹配器的参数中。
任何人都可以告诉我,我应该如何设置描述符和匹配器来实现简单模式的可靠匹配? 或者也许有另一种方法来完成这项任务?
链接地址: http://www.djcxy.com/p/61077.html上一篇: SIFT/SURF/ORB for detection and orientation of simple pattern