public static double cosineDistance(double[] hist1, double[] hist2) { return 1d-cosineCoefficient(hist1, hist2); }
@Override public double getDistance(LireFeature vd) { // Check if instance of the right class ... if (!(vd instanceof SimpleColorHistogram)) throw new UnsupportedOperationException("Wrong descriptor."); // casting ... SimpleColorHistogram ch = (SimpleColorHistogram) vd; // check if parameters are fitting ... if ((ch.histogram.length != histogram.length) || (ch.histogramType != histogramType)) throw new UnsupportedOperationException("Histogram lengths or color spaces do not match"); // do the comparison ... double sum = 0; if (distFunc == DistanceFunction.JSD) return MetricsUtils.jsd(histogram, ch.histogram); else if (distFunc == DistanceFunction.TANIMOTO) return MetricsUtils.tanimoto(histogram, ch.histogram); else if (distFunc == DistanceFunction.L1) return MetricsUtils.distL1(histogram, ch.histogram); else return MetricsUtils.distL2(histogram, ch.histogram); }
private double[] quantizeFeature(double[] desc) { desc = MetricsUtils.normalizeMax(desc); for (int i = 0; i < desc.length; i++) { desc[i] = Math.floor(desc[i] * (double) Short.MAX_VALUE); } return desc; }
@Override public double getDistance(LireFeature feature) { // chi^2 distance ... as mentioned in the paper. // double distance = 0; // double lower; // for (int i = 0; i < histogram.length; i++) { // lower = histogram[i] + ((PHOG) feature).histogram[i]; // if (lower > 0) // distance += (histogram[i] - ((PHOG) feature).histogram[i]) * (histogram[i] - ((PHOG) feature).histogram[i]) / lower; // } // return (float) distance; return MetricsUtils.distL1(histogram, ((PHOG) feature).histogram); }
@Override public double getDistance(LireFeature f) { if (!(f instanceof SurfFeature)) return -1; return MetricsUtils.distL2(feature, ((SurfFeature) f).feature); }
@Override public double getDistance(LireFeature feature) { if (!(feature instanceof SPCEDD)) return -1; return MetricsUtils.tanimoto(histogram, feature.getFeatureVector()); }
@Override public double getDistance(LireFeature feature) { if (!(feature instanceof RankAndOpponent)) throw new UnsupportedOperationException("Wrong descriptor."); return MetricsUtils.jsd(((RankAndOpponent) feature).descriptor, descriptor); }
@Override public double getDistance(LireFeature feature) { return MetricsUtils.cosineDistance(getFeatureVector(), feature.getFeatureVector()); }
@Override public double getDistance(LireFeature feature) { // chi^2 distance ... as mentioned in the paper. // double distance = 0; // double lower; // for (int i = 0; i < histogram.length; i++) { // lower = histogram[i] + ((BinaryPatternsPyramid) feature).histogram[i]; // if (lower > 0) // distance += (histogram[i] - ((BinaryPatternsPyramid) feature).histogram[i]) * (histogram[i] - ((BinaryPatternsPyramid) feature).histogram[i]) / lower; // } // return (float) distance; return MetricsUtils.distL1(histogram, ((BinaryPatternsPyramid) feature).histogram); }
@Override public double getDistance(LireFeature f) { if (!(f instanceof SurfFeature)) return -1; return MetricsUtils.distL2(feature, ((SurfFeature) f).feature); }
@Override public double getDistance(LireFeature feature) { if (!(feature instanceof SPACC)) return -1; return MetricsUtils.tanimoto(histogram, feature.getFeatureVector()); }
@Override public double getDistance(LireFeature feature) { if (!(feature instanceof OpponentHistogram)) throw new UnsupportedOperationException("Wrong descriptor."); return MetricsUtils.jsd(((OpponentHistogram) feature).histogram, histogram); }
@Override public double getDistance(LireFeature feature) { return MetricsUtils.cosineDistance(getFeatureVector(), feature.getFeatureVector()); }
@Override public double getDistance(LireFeature vd) { // Check if instance of the right class ... if (!(vd instanceof SimpleColorHistogram)) throw new UnsupportedOperationException("Wrong descriptor."); // casting ... SimpleColorHistogram ch = (SimpleColorHistogram) vd; // check if parameters are fitting ... if ((ch.histogram.length != histogram.length) || (ch.histogramType != histogramType)) throw new UnsupportedOperationException("Histogram lengths or color spaces do not match"); // do the comparison ... double sum = 0; if (distFunc == DistanceFunction.JSD) return MetricsUtils.jsd(histogram, ch.histogram); else if (distFunc == DistanceFunction.TANIMOTO) return MetricsUtils.tanimoto(histogram, ch.histogram); else if (distFunc == DistanceFunction.L1) return MetricsUtils.distL1(histogram, ch.histogram); else return MetricsUtils.distL2(histogram, ch.histogram); }
@Override public double getDistance(LireFeature feature) { return MetricsUtils.distL1(histogram, ((LuminanceLayout) feature).histogram); }
public double getDistance(LireFeature f) { if (!(f instanceof SelfSimilaritiesFeature)) return -1; return MetricsUtils.distL2(feature, ((SelfSimilaritiesFeature) f).feature); }
@Override public double getDistance(LireFeature feature) { if (!(feature instanceof SPFCTH)) return -1; return MetricsUtils.tanimoto(histogram, feature.getFeatureVector()); }
@Override public double getDistance(LireFeature feature) { if (!(feature instanceof RankAndOpponent)) throw new UnsupportedOperationException("Wrong descriptor."); return MetricsUtils.jsd(((RankAndOpponent) feature).descriptor, descriptor); }
public static double cosineDistance(double[] hist1, double[] hist2) { return 1d-cosineCoefficient(hist1, hist2); }
private double[] quantizeFeature(double[] desc) { desc = MetricsUtils.normalizeMax(desc); for (int i = 0; i < desc.length; i++) { desc[i] = Math.floor(desc[i] * (double) Short.MAX_VALUE); } return desc; }