📄 matching.java
字号:
package cn.dxm.client;
import java.lang.Math;
import java.util.*;
import java.util.HashMap;
public class Matching
{
public double Match(HashMap feature1,HashMap feature2){
double[] datac1=colorToArray(feature1);
double[] datac2=colorToArray(feature2);
double[] datat1=textureToArray(feature1);
double[] datat2=textureToArray(feature2);
return kact(datac1,datac2,datat1,datat2);
}
public double[] textureToArray(HashMap feature){//得到纹理字符串
double[] texture=new double[4];
texture[0]=Double.parseDouble((String)feature.get("energy"));
texture[1]=Double.parseDouble((String)feature.get("entropy"));
texture[2]=Double.parseDouble((String)feature.get("inertia"));
texture[3]=Double.parseDouble((String)feature.get("placidity"));
return texture;
}
public double[] colorToArray(HashMap feature){//得到颜色字符串
String s=(String)feature.get("colorhistogram");
String[] temp=splitString(s," ");
double[] datac=new double[256];
for(int i=0;i<temp.length;i++)
{
datac[i] = Double.parseDouble(temp[i]);
}
return datac;
}
public String[] splitString(String str,String s){
String[] array=str.split(s);
return array;
}
public double kact(double [] datac1,double [] datac2,double [] datat1,double [] datat2)
{
double sumc=0;
for(int i=0;i<datac1.length;i++)
{
sumc+=Math.abs(datac1[i]-datac2[i])*Math.abs(datac1[i]-datac2[i]);
}
sumc=Math.sqrt(sumc);
while(sumc>1)
{
sumc=sumc /10;
}
double sumt=0;
for(int i=0;i<datat1.length;i++)
{
sumt+=Math.abs(datat1[i]-datat2[i])*Math.abs(datat1[i]-datat2[i]);
}
sumt=Math.sqrt(sumt);
while(sumt>1)
{
sumt=sumt-0.1;
}
return 0.9*sumt+0.1*sumc;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -