我是Opencv的新手,我想通过他们的角落特征而不是其他人来比较两个图像,我尝试了SURF,SIFT,ORB ......,但他们不适合我,有人可以给我一些关于这个的建议?例如,下面的图像image1和image2是相似的,因为它们有很多相同的角(虽然它不准确),但是image3与1和2不相似,谢谢。
答案 0 :(得分:0)
这里有很多东西需要尝试,其他人可以向你推荐其他解决方案,但这里有我的:
使用Minutiae算法(用于指纹识别的算法)。在细节算法中,提取了一组共同特征,例如:
这些被称为Minutiae。正如您所看到的,这些功能非常类似于图像的角落。我建议您使用以下程序:
1)找到角落(你已经这样做了)
2)将每个角分配给一类细节(例如图像的一个类)。您可以使用本地二进制模式算法执行此操作,或者只需遵循指纹算法中的常用配方(请参阅最后的链接或在Google上搜索)。
3)要计算相似度,只需做一些投票。例如,让我们假设一个图像(我称之为A)有4个细节类型a)和两个类型E)。为了计算新图像中的相似度,我将不得不在新图像中计算这些细节。然后,查看每个图像共享多少项目。您可以添加任意数量的功能或细节,以使您的算法更加健壮(并且也很复杂)。
在任何情况下,您都可以在Google中查看Minutiae指纹识别算法(是最着名的数字图像处理算法之一)。您可以在这里找到解释算法的多个幻灯片之一
https://is.muni.cz/el/1433/jaro2008/PV204/um/finger/MinutiaeBasedFpMatching.pdf
请注意修改主算法以满足您的需求
希望有所帮助