Opencv 二维坐标排序
在同一校准工件的多个视图中查找对应点时,我遇到了一个问题。 下面可以看到校准目标的示例图像 我需要对所有圆形标记的二维坐标进行排序,并确保所有视图中的对应(相同)标记在标记向量中具有相同的索引。 有谁能给我一个处理这种事情的线索吗?Opencv 二维坐标排序,opencv,computer-vision,Opencv,Computer Vision,在同一校准工件的多个视图中查找对应点时,我遇到了一个问题。 下面可以看到校准目标的示例图像 我需要对所有圆形标记的二维坐标进行排序,并确保所有视图中的对应(相同)标记在标记向量中具有相同的索引。 有谁能给我一个处理这种事情的线索吗? 非常感谢。我不确定我是否完全理解你想要什么,但我可以帮你 你的人工制品很好,因为它是一个平面,所以你可以用单应性从一个图像转到另一个图像。一旦你有了答案,你的问题就差不多完成了 我曾经写过这样一个程序: 加载图像(cv::imread()) 计算冲浪功能(cv
非常感谢。我不确定我是否完全理解你想要什么,但我可以帮你 你的人工制品很好,因为它是一个平面,所以你可以用单应性从一个图像转到另一个图像。一旦你有了答案,你的问题就差不多完成了 我曾经写过这样一个程序:
- 加载图像(
)cv::imread()
- 计算冲浪功能(
)cv::SURF()
- 将特征匹配在一起(在特征之间使用最小二乘法)
- 将openCV的
与findHomography()
CV\u RANSAC
我想这就是你想要的:你已经得到了一个变换,在你的两个图像之间匹配你的标记。(这是一种单应变换,比我给出的链接中的一堆线要简单得多。这是一个小矩阵,它“吞咽”了图1中标记的坐标,并“返回”了图2中相应标记的坐标)(使用SIFT而不是SURF,但它们几乎相同)您仍然可以使用类似的方法 Fezvez的方法结合了特征检测(图像中的哪些点很有趣)和特征描述(该点的独特之处),与此不同,您自己的代码已经提供了检测部分(圆心所在) 现在您需要生成一组假定的匹配(猜测哪个集合对应哪个集合)。您可以在每个圆位置(可能有一个大窗口)使用特征描述符来实现这一点。有关在特定位置提取描述符的示例,请参见此。注意,您可能需要重新规范化图像以考虑局部仿射扭曲。对SIFT使用距离比测试,或可能对其他系统使用其他距离度量 一旦有了匹配项,就可以将其输入到一个健壮的单应解算器(如OpenCV的findHomography)中,以拒绝异常值(由于噪声/其他问题而不可避免地出现的无效匹配) 或者,您可以手动为矩形的角点等建立点对应关系,并将其输入到单应解算器中
所有平面(如校准目标)的透视投影可以通过单应关系进行关联。您想在标记标识方面做的任何事情都可以从转换中退出。我认为我的问题有点不同。我已经得到了计算圆形标记的2D像素坐标并返回point2D向量(标记位置)的程序。我需要的是对标记进行排序,并确保(例如)第一张图像索引I=5中的标记与所有其他图像中的标记I=5相同。太棒了!如果我理解正确,对于每个图像,您可以得到一个
向量
,每个向量表示图像I中标记的二维坐标。现在,对于每个图像,你都有一个向量
,你想知道在索引i处,它是否总是相同的标记?我将为两幅图像提供一种方法:直接对两个向量应用cv::findHomography()
。现在您得到了一个H
矩阵。对于第一个图像的每个点2d(我们称之为vec1[i]
),必须具有常量*vec2[i]~=H.vec1[i]
。(请记住在每个vec[i]
的末尾添加1)这些是管道的开口?不。此目标仅用于图像处理目的。