java指纹识别+谷歌图片识别技术=======源码实现===分享出来===



------
java指纹识别+谷歌图片识别技术

前阵子在阮一峰的博客上看到了这篇《相似图片搜索原理》博客,就有一种冲动要将这些原理实现出来了。


写了图片识别的一个demo

提供源码下载,源码下载链接:http://download.csdn.net/detail/yjflinchong/4232770

去试试效果吧

 

Google "相似图片搜索":你可以用一张图片,搜索互联网上所有与它相似的图片。

打开Google图片搜索页面:


点击使用上传一张angelababy原图:


点击搜索后,Google将会找出与之相似的图片,图片相似度越高就越排在前面。如:


这种技术的原理是什么?计算机怎么知道两张图片相似呢?

根据Neal Krawetz博士的解释,实现相似图片搜素的关键技术叫做"感知哈希算法"(Perceptualhash algorithm),它的作用是对每张图片生成一个"指纹"(fingerprint)字符串,然后比较不同图片的指纹。结果越接近,就说明图片越相似。

 

以下是一个最简单的Java实现:

 

预处理:读取图片


第一步,缩小尺寸。

将图片缩小到8x8的尺寸,总共64个像素。这一步的作用是去除图片的细节,只保留结构、明暗等基本信息,摒弃不同尺寸、比例带来的图片差异。


第二步,简化色彩。

将缩小后的图片,转为64级灰度。也就是说,所有像素点总共只有64种颜色。


第三步,计算平均值。

计算所有64个像素的灰度平均值。


第四步,比较像素的灰度。

将每个像素的灰度,与平均值进行比较。大于或等于平均值,记为1;小于平均值,记为0。


第五步,计算哈希值。

将上一步的比较结果,组合在一起,就构成了一个64位的整数,这就是这张图片的指纹。组合的次序并不重要,只要保证所有图片都采用同样次序就行了。


得到指纹以后,就可以对比不同的图片,看看64位中有多少位是不一样的。在理论上,这等同于计算"汉明距离"(Hammingdistance)。如果不相同的数据位不超过5,就说明两张图片很相似;如果大于10,就说明这是两张不同的图片。


你可以将几张图片放在一起,也计算出他们的汉明距离对比,就可以看看两张图片是否相似。

 

这种算法的优点是简单快速,不受图片大小缩放的影响,缺点是图片的内容不能变更。如果在图片上加几个文字,它就认不出来了。所以,它的最佳用途是根据缩略图,找出原图。

 

实际应用中,往往采用更强大的pHash算法和SIFT算法,它们能够识别图片的变形。只要变形程度不超过25%,它们就能匹配原图。这些算法虽然更复杂,但是原理与上面的简便算法是一样的,就是先将图片转化成Hash字符串,然后再进行比较。


以上内容大部分直接从阮一峰的网站上复制过来,想看原著的童鞋可以去在最上面的链接点击进去看。


提供源码下载,源码下载链接:http://download.csdn.net/detail/yjflinchong/4232770
------
去看看
------
我试过了。 运行效果出来了。 供大家参考

Resources: 
[f4c4c0c0f0888c07, ffff008cfcfcfcff, 7f7f47037f7f7f74, 7f7f004f7f7f7c7f, 7f7f004f7f7f7c7f, 7f7f004f7f7f007f]

Source: 
7f7f004f7f7f7c7f

汉明距离:14 source.jpg图片跟example1.jpg完全不一样
汉明距离:10 source.jpg图片跟example2.jpg有点相似
汉明距离:6 source.jpg图片跟example3.jpg有点相似
汉明距离:0 source.jpg图片跟example4.jpg一样
汉明距离:0 source.jpg图片跟example5.jpg一样
汉明距离:2 source.jpg图片跟example6.jpg非常相似

------
效果还可以呢。
------


回复邮箱的朋友

我尽量把源码打包发到各位邮箱


------
sf_yf@sina.com
你懂滴...
------
byg760@hotmail.com
------
312983516@qq.com LZ懂的 顺便拿分~~
------
549177803@qq.com
谢谢LZ
------
371508932@qq.com求源代码啊
------
楼主,你还会这个啊!呵呵,发个给我看看 279417447@qq.cpm
------
showsen.com@163.com
谢谢
------
我要有码的!duanpan916@yahoo.cn
------
wiley.wang@163.com
------
引用 13 楼 的回复:

我要有码的!duanpan916@yahoo.cn

------
引用 15 楼 的回复:
引用 13 楼 的回复:

我要有码的!duanpan916@yahoo.cn


你要有码的? 听大家说都喜欢无码的呢

------
578646730@qq.com
------
有码才是王道.chenw323@163.com
谢谢楼主
------
fwsong1@163.com
谢楼主分享~~~~~
------
380316176@qq.com
谢谢楼主
------
58617581@qq.com 楼主威武~~~~~
------
qhdkunpeng@163.com
------
592253905@qq.com
这里先谢谢楼主了!
------
18616091337@163.com
多谢分享。
------
835369950@qq.com楼主好人
------
威武。
------
LZ辛苦了
lltthh@yeah.net
------
472852263@qq.com
我要有码的,也要有注释的。。!
不准骂贪得无厌啊。。。
------
精神可嘉
------
下载下来看看,不知道识别的准确率会有多高
------
去看看
------
jaysnsky@gmail.com
------
32楼的小妞 ,长的不错,楼主一定要送打码的出来!
------
long410381@126.com
------
引用 28 楼 的回复:

472852263@qq.com
我要有码的,也要有注释的。。!
不准骂贪得无厌啊。。。

------
zqfddqr@163.com
------
444534644@qq.com
感谢楼主
------
111198273@163.com
楼主帮帮忙发一份也给我看看哈
------
测试打印效果:

Resources: 
[f4c4c0c0f0888c07, ffff008cfcfcfcff, 7f7f47037f7f7f74, 7f7f004f7f7f7c7f, 7f7f004f7f7f7c7f, 7f7f004f7f7f007f]

Source: 
7f7f004f7f7f7c7f

汉明距离:14 source.jpg图片跟example1.jpg完全不一样
汉明距离:10 source.jpg图片跟example2.jpg有点相似
汉明距离:6 source.jpg图片跟example3.jpg有点相似
汉明距离:0 source.jpg图片跟example4.jpg一样
汉明距离:0 source.jpg图片跟example5.jpg一样
汉明距离:2 source.jpg图片跟example6.jpg非常相似
------
iwxobbs@163.com感谢楼主,关注
------
楼主强大!573237639@qq.com 谢谢了
------
1481017918@qq.com
------
求源码 楼主 he1shan4hai3@yeah.net
------
碉堡了
------
楼主辛苦1987v5@sina.com
------
多谢施主——
shineboyw@yahoo.com.cn
------
61917380@qq.com

谢谢分享。
------
liuzheng4626846@vip.qq.com

谢谢楼主分享! 感激不尽
------
zfl110@163.com
lz给我发下,谢谢了
------
lxyanfei@126.com 
谢谢楼主
------
yq510457@163.com

LZ,辛苦!!
------
LZ 有没有相似的指纹图片集呢。测试测试指纹看看效果如何呢。
------
不能搜藏吗???
------
想看看效果,发一个给我吧,谢谢!
a123456789bingxiao@126.com
------
感知哈希算法
------
601820665@qq.com
多谢分享
------
想看效果图
------
598091295@qq.com
感谢楼主
------
candysobraveness@msn.cn
------
jiyong012@163.com
------
引用 60 楼 的回复:

jiyong012@163.com

------
252500370@qq.com
------
15005233577@126.com
------
学习一下,谢谢楼主
252500370@qq.com
------
bgacyj@163.com 谢谢
------
wakaoyun@gmail.com,你懂的
------
lz 真 v5 顶一个...
------
谢谢分享 能不能发我一份 89770176@qq.com 不知道能不能做 图像识别呢
------
没有积分了,感谢楼主,moon_1008@sina.com
------
LZ, 你是个好人,469236041@qq.com
------
bs要分的
------
楼主,jadyer@yeah.net,谢谢!!!!!!!!!!!!!!
------
引用 71 楼 的回复:

bs要分的

------
看着不错么,学习一下~ allango110000@gmail.com,楼主好人一生平安!!
------
求学习
------
lqh3672@yahoo.com.cn
------
1411152770@qq.com
------
因为最近事情比较多。 要各种代码的朋友也实在多。 如果没空等,如果有漏发的,可以花费积分自行下载:
http://download.csdn.net/detail/yjflinchong/4232770

谢谢。
------
qf.jhz.186@126.com

------
yaoqj@ufida.com

多谢分享!
------
lxl467344991@163.com
你懂的
------
qiaoliwei@cking.com
------
lzp_lrp@sohu.com

谢谢
------
t_kong2010@163.com
好东西应该分享啊....多谢lz
------
mn960mn@163.com
谢谢楼主 

------
谢谢楼主 457319664@qq.com 有点像进了CR论坛的感觉、那么和谐、都在感谢!
------
250830758@qq.com LZ懂的 顺便拿分~~
------
zgwlb2000@163.com
谢谢楼主!
------
liuyangboo@163.com 谢谢楼主奉献!
------
fds2003@163.com 谢谢
------
kangxinalex@126.com
谢谢楼主!
------
5847713@qq.com

好人一生平安!
------
zhuyujian916@163.com 谢谢楼主!!!
------
楼主,能发我份源码吗,我的CSDN积分不够了,谢谢!
mingxunzh601@gmail.com
------
学习一下,谢谢楼主


lzfstruggle@163.com
------
楼主威武!!
chenmaojun1180@126.com
------
fujunlele@163.com 求个源码 看看
------
学习一下,谢谢楼主

xueliang814@21cn.com
桂ICP备07017180号