图片相似度识别

上传者: xueshijun666 | 上传时间: 2013-03-06 00:00:00 | 文件大小: 229KB | 文件类型: rar
预处理:读取图片 第一步,缩小尺寸。 将图片缩小到8x8的尺寸,总共64个像素。这一步的作用是去除图片的细节,只保留结构、明暗等基本信息,摒弃不同尺寸、比例带来的图片差异。 第二步,简化色彩。 将缩小后的图片,转为64级灰度。也就是说,所有像素点总共只有64种颜色。 第三步,计算平均值。 计算所有64个像素的灰度平均值。 第四步,比较像素的灰度。 将每个像素的灰度,与平均值进行比较。大于或等于平均值,记为1;小于平均值,记为0。 第五步,计算哈希值。 将上一步的比较结果,组合在一起,就构成了一个64位的整数,这就是这张图片的指纹。组合的次序并不重要,只要保证所有图片都采用同样次序就行了。 得到指纹以后,就可以对比不同的图片,看看64位中有多少位是不一样的。在理论上,这等同于计算"汉明距离"(Hammingdistance)。如果不相同的数据位不超过5,就说明两张图片很相似;如果大于10,就说明这是两张不同的图片。 你可以将几张图片放在一起,也计算出他们的汉明距离对比,就可以看看两张图片是否相似。 这种算法的优点是简单快速,不受图片大小缩放的影响,缺点是图片的内容不能变更。如果在图片上加几个文字,它就认不出来了。所以,它的最佳用途是根据缩略图,找出原图。 实际应用中,往往采用更强大的pHash算法和SIFT算法,它们能够识别图片的变形。只要变形程度不超过25%,它们就能匹配原图。这些算法虽然更复杂,但是原理与上面的简便算法是一样的,就是先将图片转化成Hash字符串,然后再进行比较。 以上内容大部分直接从阮一峰的网站上复制过来,想看原著的童鞋可以去在最上面的链接点击进去看。

文件下载

资源详情

( 16 个子文件 229KB ) 图片相似度识别
图片相似度识别
SimilarImageSearch
bin
com
yjf
image
SimilarImageSearch.class 3.99KB
ImageHelper.class 6.09KB
readme.txt 279B
images
example6.jpg 11.56KB
example4.jpg 24.18KB
example2.jpg 8.24KB
example5.jpg 39.86KB
example3.jpg 27.41KB
source.jpg 62.36KB
example1.jpg 46.54KB
.settings
org.eclipse.jdt.core.prefs 629B
src
com
yjf
image
SimilarImageSearch.java 4.48KB
ImageHelper.java 6.28KB
readme.txt 332B
.project 394B
.classpath 548B
[{"title":"( 16 个子文件 229KB ) 图片相似度识别","children":[{"title":"图片相似度识别","children":[{"title":"SimilarImageSearch","children":[{"title":"bin","children":[{"title":"com","children":[{"title":"yjf","children":[{"title":"image","children":[{"title":"SimilarImageSearch.class <span style='color:#111;'> 3.99KB </span>","children":null,"spread":false},{"title":"ImageHelper.class <span style='color:#111;'> 6.09KB </span>","children":null,"spread":false}],"spread":true}],"spread":true}],"spread":true},{"title":"readme.txt <span style='color:#111;'> 279B </span>","children":null,"spread":false}],"spread":true},{"title":"images","children":[{"title":"example6.jpg <span style='color:#111;'> 11.56KB </span>","children":null,"spread":false},{"title":"example4.jpg <span style='color:#111;'> 24.18KB </span>","children":null,"spread":false},{"title":"example2.jpg <span style='color:#111;'> 8.24KB </span>","children":null,"spread":false},{"title":"example5.jpg <span style='color:#111;'> 39.86KB </span>","children":null,"spread":false},{"title":"example3.jpg <span style='color:#111;'> 27.41KB </span>","children":null,"spread":false},{"title":"source.jpg <span style='color:#111;'> 62.36KB </span>","children":null,"spread":false},{"title":"example1.jpg <span style='color:#111;'> 46.54KB </span>","children":null,"spread":false}],"spread":true},{"title":".settings","children":[{"title":"org.eclipse.jdt.core.prefs <span style='color:#111;'> 629B </span>","children":null,"spread":false}],"spread":true},{"title":"src","children":[{"title":"com","children":[{"title":"yjf","children":[{"title":"image","children":[{"title":"SimilarImageSearch.java <span style='color:#111;'> 4.48KB </span>","children":null,"spread":false},{"title":"ImageHelper.java <span style='color:#111;'> 6.28KB </span>","children":null,"spread":false}],"spread":true}],"spread":true}],"spread":true},{"title":"readme.txt <span style='color:#111;'> 332B </span>","children":null,"spread":false}],"spread":true},{"title":".project <span style='color:#111;'> 394B </span>","children":null,"spread":false},{"title":".classpath <span style='color:#111;'> 548B </span>","children":null,"spread":false}],"spread":true}],"spread":true}],"spread":true}]

评论信息

  • 绿野耕夫 :
    应该说明是JAVA版本的,不是我需要的。
    2017-10-28
  • richardzhujl :
    思路可以,但是误差有点大,Java版本不太适合我,想要php的
    2017-05-04
  • 趣味编程 :
    项目正好用
    2017-02-15
  • EverestSnowPine1 :
    不错,这个东西现在比较火
    2016-12-08
  • H_Dark :
    效果挺好的,只是分过了。
    2016-07-15

免责申明

【只为小站】的资源来自网友分享,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,【只为小站】 无法对用户传输的作品、信息、内容的权属或合法性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论 【只为小站】 经营者是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。
本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二条之规定,若资源存在侵权或相关问题请联系本站客服人员,zhiweidada#qq.com,请把#换成@,本站将给予最大的支持与配合,做到及时反馈和处理。关于更多版权及免责申明参见 版权及免责申明
服务器状态检查中...