寻找相似图像的算法

91

我需要一种算法,可以确定两个图像是否“相似”,并识别颜色、亮度、形状等方面的相似模式。 我可能需要一些指针,了解人脑用于“分类”图像的参数。

我已经看过基于哈斯多夫匹配的方法,但似乎主要用于匹配变换后的对象和形状的模式。


这个相关的问题中有一些不错的答案:https://dev59.com/EnVD5IYBdhLWcg3wTJvF - blak
2
很多“可能”和“也许”的说法。有人尝试过所有这些建议,并知道哪个是最好的吗? - john k
已经过去了13年,但我想在这里更新一下,基于机器学习的图像特征向量可以具有鲁棒性,并且可以通过余弦相似度进行轻松比较。您可以搜索img2vec项目或类似latentvector.space的内容以获得更简单的API集成(免责声明:我运营该服务)。 - Christian Safka
16个回答

2

根据您需要的精确结果程度,您可以将图像简单地分解为n x n像素块并进行分析。如果在第一个块中得到了不同的结果,则不能停止处理,从而实现一些性能改进。

要分析这些方块,您可以例如获取颜色值的总和。


2
这听起来像是一个视觉问题。您可能需要研究自适应提升和Burns线提取算法。这两个概念应该有助于解决这个问题。如果您刚接触视觉算法,边缘检测是更简单的起点,因为它解释了基础知识。
至于分类参数:
- 颜色调色板和位置(渐变计算、颜色直方图) - 包含的形状(Ada. Boosting/训练以检测形状)

1

1
你可以在两个图像之间执行某种块匹配运动估计,并测量残差总和和运动矢量成本(就像视频编码器中所做的那样)。这将补偿运动;为了加分,进行仿射变换运动估计(补偿缩放和拉伸等)。你也可以使用重叠块或光流方法。

1
作为第一步,您可以尝试使用颜色直方图。但是,您真的需要缩小问题域。通用图像匹配是一个非常困难的问题。

0

在其他帖子中有一些不错的答案,但我想知道是否可以使用光谱分析来解决问题?即将图像分解为其相位和幅度信息并进行比较。这可能避免了一些裁剪、变换和强度差异的问题。无论如何,这只是我的猜测,因为这似乎是一个有趣的问题。如果你搜索http://scholar.google.com,我相信你可以找到几篇相关的论文。


频谱分析是通过傅里叶变换实现的,因为你可以从虚部和实部两个部分重建图像,所以不存在颜色直方图(不确定是否可行,只是让您知道它不属于那个类别)。 - nlucaroni
是的,我指的是傅里叶变换。 - neuroguy123

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接