我遇到了在同一校准工件的多个视图中找到相应点的问题。 您可以在下面看到校准目标的示例图像。
我需要对所有圆形标记的2D坐标进行排序,并确保所有视图中相应的(相同)标记在标记的矢量中具有相同的索引。 任何人都可以告诉我如何处理这样的事情? 非常感谢。
答案 0 :(得分:2)
我不确定我完全明白你想要什么,但我可以帮忙。
你的神器很好,因为它是一个平面,所以你可以用单应素从一张图像转到另一张图像。获得homography后,您的问题或多或少就会完成。
我曾经编写了一个程序来做到这一点:
cv::imread()
)cv::surf()
)findHomography()
与CV_RANSAC
基本上,你最终会得到类似的东西:http://blogs.oregonstate.edu/hess/files/2010/10/sift_demo_screenshot1.jpg
我认为这就是你想要的:你有一个与你的两个图像之间的标记匹配的转换。 (这个变换,一个单应性,比我给出的链接中的一串线要小得多。它是一个小矩阵,“吞下”image1中标记的坐标,并“返回”相应标记的坐标在image2)(使用SIFT而不是SURF,但它们几乎完全相同)
答案 1 :(得分:1)
您仍然可以使用类似的方法。
与Fezvez结合特征检测(图像中的点很有趣)和特征描述(该点的独特之处)的方法不同,您自己的代码已经提供了检测部分(圆心的位置)。
现在你需要生成一组假定的匹配(猜测集合对应于哪个集合)。您可以使用每个圆圈位置的特征描述符(可能有一个大窗口)来完成此操作。有关在特定位置提取描述符的示例,请参阅此vl_sift section on custom frames。请注意,您可能需要重新规范化图像以解决本地仿射变形问题。使用SIFT的距离比测试或其他系统可能的其他距离度量。
一旦你有匹配,你可以将它输入一个强大的单应性解算器,如OpenCV的findHomography来拒绝异常值(由于噪音/其他问题而不可避免地出现的无效匹配)。
或者,您可以手动建立矩形等角点的对应关系,并将其输入到单应性求解器中。
所有平面(如校准目标)的透视投影可通过单应性相关联。您可以从转换中退出您在标记标识方面要做的任何事情。