package com.sinosoft.lis.utils;
import java.awt.Graphics2D;
import java.awt.color.ColorSpace;
import java.awt.image.BufferedImage;
import java.awt.image.ColorConvertOp;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
/**
* 图片相似性
*/
public class ImageSimilarity {
public static int size = 32;
public static int smallerSize = 8;
// DCT function stolen from
// http://stackoverflow.com/questions/4240490/problems-with-dct-and-idct-algorithm-in-java
private static double[] c;
static {
c = new double[size];
for (int i = 1; i < size; i++) {
c[i] = 1;
}
c[0] = 1 / Math.sqrt(2.0);
}
/**
* 通过汉明距离计算相似度
*
* @param hash1
* @param hash2
* @return
*/
public static double calSimilarity(String hash1, String hash2) {
return calSimilarity(getHammingDistance(hash1, hash2));
}
/**
* 通过汉明距离计算相似度
*
* @param hammingDistance
* @return
*/
public static double calSimilarity(int hammingDistance) {
int length = size * size;
double similarity = (length - hammingDistance) / (double) length;
// 使用指数曲线调整相似度结果
similarit