图片相似度判断差异值哈希算法JAVA版_第1页
图片相似度判断差异值哈希算法JAVA版_第2页
图片相似度判断差异值哈希算法JAVA版_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、图片相似度判断-差异值哈希算法JAVA版在网上找了好久都没有找到判断图片相似度的差异值哈希算法的JAVA版正确实现,自己手写了一个,提供给大家参考。差异值哈希算法的流程(dHash)图片缩放为9*8大小将图片灰度化差异值计算(每行相邻像素的差值,这样会生成8*8的差值,前一个像素大于后一个像素则为1,否则为0)生成哈希值packagecom.example.demo.hello;importjavax.imageio.ImagelO;importjava.awt.*;importjava.awt.image.Bufferedlmage;importjava.io.File;importjava

2、.io.IOException;/*差异哈希算法*/publicclassDHashUtil/*计算dHash方法*paramfile文件returnhash*/privatestaticStringgetDHash(Filefile)读取文件BufferedlmagesrcImage;trysrcImage=ImagelO.read(file);catch(lOExceptione)e.printStackTrace();returnnull;文件转成9*8像素,为算法比较通用的长宽BufferedlmagebuffImg=newBufferedImage(9,8,BufferedImage

3、.TYPE_INT_RGB);buffImg.getGraphics().drawImage(srcImage.getScaledInstance(9,8,Image.SCALE_SMOOTH),0,0,null);intwidth=buffImg.getWidth();intheight=buffImg.getHeight();intgrayPix=newintwidthheight;StringBufferfigure=newStringBuffer();for(inty=0;yheight;y+)for(intx=0;x16&0 xff;intg=rgb8&Oxff;intb=rgb&O

4、xff;intgray=(r*30+g*59+b*11)/100;grayPixxy=gray;开始计算dHash总共有9*8像素每行相对有8个差异值总共有8*8=64个if(x!=0)longbit=grayPixx-1ygrayPixxy?1:0;figure.append(bit);returnfigure.toString();/*计算海明距离vp*原本用于编码的检错和纠错的一个算法*现在拿来计算相似度,如果差异值小于一定阈值则相似,一般经验值小于5为同一张图片*paramstrlparamstr2return距离*/privatestaticlonggetHammingDistanc

5、e(Stringstrl,Stringstr2)intdistance;if(str1=null|str2=null|str1.length()!=str2.length()distance=-1;elsedistance=0;for(inti=0;istr1.length();i+)if(str1.charAt(i)!=str2.charAt(i)distance+;returndistance;/DHashUtil参数值为待处理文件夹publicstaticvoidmain(Stringargs)Filefile1=newFile(xxx/1.jpg);Filefile2=newFile(xxx/2.jpg);System.out.println(图片1hash值:+getDHash(file1);System.out.println(图片2hash值:+getDHash(file2);System.out.println(海明距离为:+getHammingDistance(getDHash(file1),getDHash(file2);运行结果如下:图片lhash值:1001110011111000101100101001010011001000111000001001100011000000图片2hash值:1001110011111000101

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论