java图片相似度算法,图片比较算法

  java图片相似度算法,图片比较算法

  采用直方图原理算法比对图片的细微差别效果比较好,以下两张区别很小的图片识别效果如下:

  识别结果:

  主要代码如下:

  导入javax。imageio。*;导入Java。awt。形象。*;导入Java。awt。*;导入Java。io。*;公众的类照片摘要{ public static void main(String[]args)抛出异常{ float percent=compare(get data(/Users/sun/Downloads/1。jpg )、获取数据(/Users/sun/Downloads/3)。jpg’);if(percent==0){ system。出去。println(无法比较);} else { System.out.println(两张图片的相似度为:"百分比"%");} } public static int[]get data(String name){ try { buffered image img=imageio。read(新文件(名称));BufferedImage slt=新的BufferedImage(100,100,BufferedImage .TYPE _ INT _ RGB);slt.getGraphics().drawImage(img,0,0,100,100,null);//ImageIO.write(slt, jpeg ,新建文件( slt。jpg’);int[]data=new int[256];for(int x=0;x SLT。getwidth();x){ for(int y=0;SLT。获取height();y ) { int rgb=slt.getRGB(x,y);颜色myColor=新颜色(RGB);int r=我的颜色。getred();int g=我的颜色。get green();int b=我的颜色。get blue();数据[(r g b)/3];} } //数据就是所谓图形学当中的直方图的概念返回数据;} catch(异常异常){ System.out.println(有文件没有找到,请检查文件是否存在或路径是否正确);返回null} }公共静态float compare(int[] s,int[]t){ try { float result=0F;for(int I=0;i 256I){ int ABS=math。ABS(s[I]-t[I]);int max=Math.max(s[i],t[I]);result=(1 - ((float) abs/(max==0?1 : max)));} return(结果/256)* 100;} catch(异常异常){ return 0;} }}以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持盛行它.

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: