图像处理 – 简单快速的方法来比较图像的相似性
我需要一个简单和快速的方法来比较两个图像的相似性。也就是说我想得到一个高价值,如果他们包含完全相同的事情,但可能有一些略有不同的背景,可以移动/调整大小几个像素。
(更具体的,如果这很重要:一张图片是一个图标,另一张图片是屏幕截图的子区域,我想知道该子区域是否是图标。) 我手头有OpenCV,但我还是不习惯它。 我想到了一个可能性:将两张图片分割成10×10个单元格,然后对每100个单元格,比较颜色直方图。然后我可以设置一些补偿阈值,如果我获得的值高于该阈值,我假设他们是相似的。 我没有尝试它,但有多好,但工作,但我想这将是足够好。图像已经非常相似(在我的用例),所以我可以使用一个相当高的阈值。 我想有几十个其他可能的解决方案,这将工作或多或少(因为任务本身很简单,因为我只想检测相似性,如果他们真的非常相似)。你会建议什么? 关于从图像获得签名/指纹/散列,有几个非常相关/类似的问题: > OpenCV / SURF How to generate a image hash / fingerprint / signature out of the descriptors? 此外,我偶然发现了具有这样的功能的这些实现,以获得指纹: > pHash 有点离题:存在许多方法来创建音频指纹。 MusicBrainz,一个网页服务,提供基于指纹的查找歌曲,有一个good overview in their wiki.他们现在使用AcoustID。这是为了找到精确(或大部分精确)匹配。为了找到类似的匹配(或者如果你只有一些片段或高噪声),看看Echoprint.一个相关的SO问题是here.所以看起来像这是解决音频。所有这些解决方案工作相当不错。 关于模糊搜索的一个更通用的问题一般是here。有locality-sensitive hashing和nearest neighbor search。 解决方法
可以对屏幕截图或图标进行转换(缩放,旋转,倾斜…)?有很多方法在我的头上,可能可以帮助你:
>简单的欧氏距离,如@carlosdc(不适用于转换的图像,你需要一个阈值)。 其中大多数已经在OpenCV中实现 – 参见例如cvMatchTemplate方法(使用直方图匹配):http://dasl.mem.drexel.edu/~noahKuntz/openCVTut6.html.也可以使用跳跃点/区域检测器 – 参见OpenCV Feature Detection。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |