@Override public float[] getInstanceFeature(int idx) { final float[] feature = new float[features.length]; final SummedSqTiltAreaTable sat = sats[idx]; final float wvNorm = computeWindowVarianceNorm(sat); for (int i = 0; i < features.length; i++) { feature[i] = features[i].computeResponse(sat, 0, 0) / wvNorm; } return feature; }
@Override public float[] getFeatureResponse(int dimension) { final float[] response = new float[sats.length]; for (int i = 0; i < sats.length; i++) { final float wvNorm = computeWindowVarianceNorm(sats[i]); response[i] = features[dimension].computeResponse(sats[i], 0, 0) / wvNorm; } return response; }
@Override public float[] getFeatureResponse(int dimension) { final float[] response = new float[sats.length]; for (int i = 0; i < sats.length; i++) { final float wvNorm = computeWindowVarianceNorm(sats[i]); response[i] = features[dimension].computeResponse(sats[i], 0, 0) / wvNorm; } return response; }
@Override public float[] getInstanceFeature(int idx) { final float[] feature = new float[features.length]; final SummedSqTiltAreaTable sat = sats[idx]; final float wvNorm = computeWindowVarianceNorm(sat); for (int i = 0; i < features.length; i++) { feature[i] = features[i].computeResponse(sat, 0, 0) / wvNorm; } return feature; }
@Override public void perform(Integer f) { final HaarFeature feature = features.get(f); int count = 0; for (final SummedSqTiltAreaTable t : positive) { final float wvNorm = computeWindowVarianceNorm(t); responses[f][count] = feature.computeResponse(t, 0, 0) / wvNorm; classes[count] = true; ++count; } for (final SummedSqTiltAreaTable t : negative) { final float wvNorm = computeWindowVarianceNorm(t); responses[f][count] = feature.computeResponse(t, 0, 0) / wvNorm; classes[count] = false; ++count; } sortedIndices[f] = ArrayUtils.indexSort(responses[f]); } });
@Override public float classify(final SummedSqTiltAreaTable sat, final float wvNorm, final int x, final int y) { final float response = feature.computeResponse(sat, x, y); return (response < threshold * wvNorm) ? left.classify(sat, wvNorm, x, y) : right.classify(sat, wvNorm, x, y); }
@Override public void perform(Integer f) { final HaarFeature feature = features.get(f); int count = 0; for (final SummedSqTiltAreaTable t : positive) { final float wvNorm = computeWindowVarianceNorm(t); responses[f][count] = feature.computeResponse(t, 0, 0) / wvNorm; classes[count] = true; ++count; } for (final SummedSqTiltAreaTable t : negative) { final float wvNorm = computeWindowVarianceNorm(t); responses[f][count] = feature.computeResponse(t, 0, 0) / wvNorm; classes[count] = false; ++count; } sortedIndices[f] = ArrayUtils.indexSort(responses[f]); } });
@Override public float classify(final SummedSqTiltAreaTable sat, final float wvNorm, final int x, final int y) { final float response = feature.computeResponse(sat, x, y); return (response < threshold * wvNorm) ? left.classify(sat, wvNorm, x, y) : right.classify(sat, wvNorm, x, y); }