如何确定openCV中图像相似度的百分比[关闭]

Posted

技术标签:

【中文标题】如何确定openCV中图像相似度的百分比[关闭]【英文标题】:How do I decide the percentage of image similarity in openCV [closed] 【发布时间】:2017-11-03 15:37:24 【问题描述】:

我正在从事与重复文档检测相关的项目。我已经花了好几个小时在谷歌上搜索并学习了很多关于 OpenCV 的知识(这真的很艰难,但完全是一次有趣的经历,我肯定会在这一切之后开始写博客!)。我计划使用 BRISK\AKAZE 检测器与 FREAK 描述符和 LSH 匹配来比较每个文档(因为文档主要是黑白的),但我需要根据百分比准确计算两个图像的相似程度,以启用我的软件事后做出简单的决定。

我对我的项目的任何想法或建议持开放态度,如果有人愿意分享一些代码及其答案以节省我在谷歌上搜索的时间,我会很高兴:-)。谢谢。

编辑: 这是解释我的问题的示例。

图片 1 是我需要匹配的文档。它与所有其他文档非常相似,但与图 3 不同,匹配后它与图 3 的相似度可能为 90%。图 2 是图 1 的副本,已重新扫描并在这个过程中稍微旋转了一下,它可以有 95% - 98% 的相似度,因为它的特征与图 1 非常相似。谢谢大家:)。

【问题讨论】:

“我愿意接受有关我的项目的任何想法或建议”这里有一个:选择一种语言。 @DimChtz OpenCV 可以用这些语言中的任何一种来实现,如果它们有效,我可以轻松地将它们移植到 C#。我在互联网上发现很少有 C# 中的 OpenCV 解决方案。 @DimChtz 如果我选择一个问题,你会否决我的问题吗? :-) 我在这里的最后期限内工作...... 首先定义相似度,然后我们可以讨论它......最大相似度是两个文档是否有:相同的词?相同的列数?相同的黑色像素百分比?同一主题?一样什么? 呃,您正在寻找内容的微小差异,而图像可能会有很大差异。我想我的第一种方法是 1)对齐/注册图像,2)减去对齐的图像 3)消除小的差异(噪声)。理想情况下,您最终会得到一个只有真正差异的面具。 【参考方案1】:

您应该查看SSIM。 (结构相似性指数)。它根据图像结构和像素值的相似性返回 0-1 分数。我不相信 OpenCV 有一个预制的解决方案,但是有很多教程可以让你在 OpenCV 中编写自己的解决方案。

【讨论】:

这是一个图像质量指数......这是另一回事...... 没有。它是确定像素邻域是否不同的指标。它在确定某些图像处理算法(如压缩)的质量方面具有应用,但这并不是它的唯一用途。 但是您需要先对齐它们,对吗? 正确。它执行基于像素的内核比较,因此需要首先注册图像。 这是添加到您的答案中的好信息;)

以上是关于如何确定openCV中图像相似度的百分比[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何降低 OpenCV 中图像的分辨率?

如何使用 openCv 获取图像中的相似度百分比?

OpenCV中图像的格式Mat 图像深度

OpenCV中图像算术操作与逻辑操作

Opencv中图像的遍历与像素操作

opencv中图像去噪的头文件