Opencv 更多关于冲浪

Opencv 更多关于冲浪,opencv,computer-vision,surf,Opencv,Computer Vision,Surf,我使用了匹配两个图像。所以我不知道什么时候判断一幅画和另一幅画相似。你能帮我个忙吗?这取决于你的分类问题中一个类别需要多少相似性 在最基本的情况下,您将拥有图像/对象的n维描述向量。然后,可以将其拟合到训练集中对象的向量。不同的算法适用于不同的情况。OpenCV在这里提供了不同的可能性。参数还取决于您愿意接受的误报百分比等 你有一个训练集(学习你的分类者从中“学习”)和一个测试集,你可以用它来控制你的系统的结果。 要获得更详细的帮助,您需要更多地了解您的应用程序,即需求、示例图像等 编辑:示例f

我使用了匹配两个图像。所以我不知道什么时候判断一幅画和另一幅画相似。你能帮我个忙吗?

这取决于你的分类问题中一个类别需要多少相似性

在最基本的情况下,您将拥有图像/对象的n维描述向量。然后,可以将其拟合到训练集中对象的向量。不同的算法适用于不同的情况。OpenCV在这里提供了不同的可能性。参数还取决于您愿意接受的误报百分比等

你有一个训练集(学习你的分类者从中“学习”)和一个测试集,你可以用它来控制你的系统的结果。 要获得更详细的帮助,您需要更多地了解您的应用程序,即需求、示例图像等


编辑:示例find_obj.cpp不能决定是否在场景中找到了对象(box.png)(box_in_scene.png)。它只会在场景中找到与长方体上找到的冲浪点最对应的冲浪点。这就是为什么也有错误匹配的点对。如果您想做出决定,如果匹配计数为“已找到”,您可以通过设置已找到匹配的最大平均距离(DMatch结构的成员),或通过检查是否可以计算出良好的变换矩阵(例如,使用findHomography)来进行此操作。这将在以下教程中演示:如果可能的话,我还建议使用OpenCV的新cpp API,而不是非常复杂的C API。它可能会降低程序的复杂性,使您更容易专注于应用程序的基本(算法)部分。另外,正如Csabi已经说过的,我还建议您看看ORB。

这取决于在您的分类问题中需要多少相似性才能适合一个类别

在最基本的情况下,您将拥有图像/对象的n维描述向量。然后,可以将其拟合到训练集中对象的向量。不同的算法适用于不同的情况。OpenCV在这里提供了不同的可能性。参数还取决于您愿意接受的误报百分比等

你有一个训练集(学习你的分类者从中“学习”)和一个测试集,你可以用它来控制你的系统的结果。 要获得更详细的帮助,您需要更多地了解您的应用程序,即需求、示例图像等


编辑:示例find_obj.cpp不能决定是否在场景中找到了对象(box.png)(box_in_scene.png)。它只会在场景中找到与长方体上找到的冲浪点最对应的冲浪点。这就是为什么也有错误匹配的点对。如果您想做出决定,如果匹配计数为“已找到”,您可以通过设置已找到匹配的最大平均距离(DMatch结构的成员),或通过检查是否可以计算出良好的变换矩阵(例如,使用findHomography)来进行此操作。这将在以下教程中演示:如果可能的话,我还建议使用OpenCV的新cpp API,而不是非常复杂的C API。它可能会降低程序的复杂性,使您更容易专注于应用程序的基本(算法)部分。另外,正如Csabi已经说过的,我还建议你看看ORB。

SURF是计算机视觉算法,它有检测器和描述符,它不会告诉你两张图片是否相同。检测器检测兴趣点(IP),描述符将其描述为64位长向量。您应该在两个图像上同时运行SURF的检测器算法和描述符,并且使用一些匹配算法(bruteforce,flann),您可以说这两个图像在X%的情况下是相似的。我建议您尝试使用ORB或BRIENT,但它们会生成二进制向量。一些有用的文章:您可以在第225-228页找到我的文章“识别手机上的视觉标记”

编辑:


matcher的输出是描述符之间距离的向量。距离越小,描述符就越相似。

SURF是计算机视觉算法,它有检测器和描述符,它不会告诉你两幅图片是否相同。检测器检测兴趣点(IP),描述符将其描述为64位长向量。您应该在两个图像上同时运行SURF的检测器算法和描述符,并且使用一些匹配算法(bruteforce,flann),您可以说这两个图像在X%的情况下是相似的。我建议您尝试使用ORB或BRIENT,但它们会生成二进制向量。一些有用的文章:您可以在第225-228页找到我的文章“识别手机上的视觉标记”

编辑:


matcher的输出是描述符之间距离的向量。距离越小,描述符就越相似。

您应该检查OpenCV的示例文件。通过将
filteredMatches.distance
值相加作为比较指标,可以自定义代码。它是描述符之间的距离(请参阅)


此外,如果要匹配两幅图像,请使用HSV直方图比较。检查

您应该检查OpenCV的示例文件。通过将
filteredMatches.distance
值相加作为比较指标,可以自定义代码。它是描述符之间的距离(请参阅)


此外,如果要匹配两幅图像,请使用HSV直方图比较。检查

谢谢你的回答,但我仍然不理解surf算法的surf,在Opencv中,有一个名为“find_obj.cpp”的示例程序,你知道当两张图片相似时,程序中有一个标志我可以判断吗?嗨,我已经根据你的评论编辑了我的答案。谢谢你的回答,但我不知道