【发布时间】:2014-10-18 02:26:54
【问题描述】:
在我的 java 代码中,我有两个哈希图,我想将交集作为一个值。键是颜色的 ARGB 值(整数),其值是频率(整数)。基本上每个 hashmap 都是从图像生成的。
我想确定一个值,该值表示地图之间的距离。值越高,两张地图越接近。当然不可能完全严格,因为在现实生活中两种颜色可能看起来相同但 ARGB 值略有不同,这就是公差部分的用武之地。
到目前为止,我得到了这个:
private int colorCompare(Result otherResult) {
HashMap<Integer, Integer> colorMap1 = getColorMap();
HashMap<Integer, Integer> colorMap2 = otherResult.getColorMap();
int sum = 0;
for (Map.Entry<Integer, Integer> entry : colorMap1.entrySet()) {
Integer key = entry.getKey();
Integer value = entry.getValue();
if (colorMap2.containsKey(key)) {
sum += value + colorMap2.get(key);
}
}
return sum;
}
public double CloseTo(Pixel otherpixel) {
Color mycolor = getColor();
Color othercolor = otherpixel.getColor();
double rmean = ( mycolor.getRed() + othercolor.getRed() )/2;
int r = mycolor.getRed() - othercolor.getRed();
int g = mycolor.getGreen() - othercolor.getGreen();
int b = mycolor.getBlue() - othercolor.getBlue();
double weightR = 2 + rmean/256;
double weightG = 4.0;
double weightB = 2 + (255-rmean)/256;
return Math.sqrt(weightR*r*r + weightG*g*g + weightB*b*b);
}
有谁知道如何将公差部分纳入其中,因为我不知道...
谢谢
【问题讨论】:
标签: java algorithm colors hashmap