【问题标题】:How to do two images comparison by their corners feature using opencv?如何使用opencv通过它们的角特征比较两个图像?
【发布时间】:2025-11-22 11:25:01
【问题描述】:

我是 Opencv 的新手,我想通过他们的角特征而不是其他图像来比较两个图像,我尝试了 SURF、SIFT、ORB ...,但它们不适合我,有人能给我一些建议吗这个?例如下图image1和image2是相似的,因为它们有很多相同的角(虽然不准确),但是image3和1和2不相似,谢谢。

【问题讨论】:

  • 或者如何认为image1和image2相似(没有红点)

标签: c++ opencv computer-vision


【解决方案1】:

这里有很多东西可以尝试,其他人可以向您推荐其他解决方案,但这是我的:

使用 Minutiae 算法(用于指纹识别的算法)。在细节算法中,提取了一组共同​​的特征,例如:

这些被称为细节。如您所见,这些功能与图像的角落非常相似。我建议您执行以下程序:

1) 找到角落(你已经这样做了)

2) 将每个角分配给一类细节(例如图像的一类)。您可以使用本地二进制模式算法来执行此操作,也可以按照指纹算法中的常用方法进行操作(请参阅末尾的链接或在 Google 上搜索)。

3) 要计算相似度,只需进行一些投票。例如,假设一个图像(我将其称为 A)有 4 个 a) 类型的细节和两个 E) 类型的细节。为了计算新图像中的相似度,我必须计算新图像中的这些细节。然后,查看两个图像共享的每个类有多少项目。您可以添加任意数量的特征或细节,以使您的算法更健壮(也更复杂)。

无论如何,您都可以在 Google 中查看 Minutiae 指纹识别算法(是最著名的数字图像处理算法之一)。这是您可以找到解释算法的多张幻灯片中的一张

https://is.muni.cz/el/1433/jaro2008/PV204/um/finger/MinutiaeBasedFpMatching.pdf

只需注意修改主要算法以满足您的需要

希望对你有帮助

【讨论】:

    最近更新 更多