图像相似性匹配 快速算法

需求是库内存有部分版权图片,现在搜索网上是否有侵权图片。因此从网上跑去大量图片和库内的版权图片比较,由于比较数量大,对效率有一定的要求。
方法1: 关键点匹配(Keypoint Matching)
一张图像的某些部位可能蕴含比其它部位更多的信息,如边缘,角点。因此我们可以利用一些算法提取图像的关键点信息进行比较。SIFT,ORB,SURF,GIST都是此类提取关键点信息算法。这些算法的准确率要高,但同时不可避免的在运算复杂度上较为复杂。
图像特征检测描述(一):SIFT、SURF、ORB、HOG、LBP特征的原理概述及OpenCV代码实现
特征匹配,sift,surf,orb,brisk,brief
SIFT,SURF,ORB,FAST 特征提取算法比较
比较各种算法的论文
特征匹配之Brute-Force 匹配和FLANN 匹配器
python实现sift——flann
特征点匹配+特征检测方法汇总
图像拼接之特征点匹配–距离筛选,余弦角筛选,相似度和ransac筛选
python 官方教程

方法2: 直方图统计(Histogram method)

方法3: 关键点+决策树(Keypoints + Decision Trees)

方法4: 哈希算法(Hash)
最简单的方法是直接使用哈希算法(md5、 sha-1)算法对整个图片哈希。但是缺点明显,只要图片内容有些许改变,md5值就不同。因此需要对图片的某种特征特性进行hash,感知哈希算法(Perceptual Hash Algorithm)就是专门针对此问题的算法。感知哈希算法是一类算法的总称,包括aHash、pHash、dHash。感知哈希不是以严格的方式计算Hash值,而是以更加相对的方式计算哈希值,因为“相似”与否,就是一种相对的判定。尽管phash、dhash对ahash做出了改进,但其实这类算法的适用范围还是局限于不同缩放比例的图像的相似性比较,对于旋转,移动,及变化较大,但其实还是同一个物体的相似性比较就比较差。其在大规模搜索引擎中找到极其相似的图像比较容易,对于语义上的相似比较还是很困难的。
aHash:平均值哈希。速度比较快,但是常常不太精确。
pHash:感知哈希。精确度比较高,但是速度方面较差一些。
dHash:差异值哈希。精确度较高,且速度也非常快。
相似性︱python+opencv实现pHash算法+hamming距离(simhash)(三)
基于感知哈希算法的视觉目标跟踪 - C++实现
Google 以图搜图 - 相似图片搜索原理 - Java实现
相似图片搜索的原理
PHash 作者原文
PHash开源库
python︱imagehash中的四种图像哈希方式(phash/ahash/dhash/小波hash)
相似图片检测:感知哈希算法之dHash的Python实现
hash算法demo,可以快速测试你的task是否符合hash算法
工程实践思路:老司机带你检测相似图片
Hash算法缺点所在
其他:

实例检索︱图像的实例搜索(文献、方法描述、商业案例)
图像检索:基于内容的图像检索技术

图像相似性匹配 快速算法_第1张图片

你可能感兴趣的:(image)