package com.github.axet.lookup.common; public class FeatureSetAuto extends FeatureSet { private static final long serialVersionUID = -4442575077693435100L; public FeatureSetAuto(ImageBinaryChannelFeature template, double threshold) { Feature f = new Feature(1, 1, new double[] { 1, }); FeatureK k = new FeatureK(f, template.zeroMeanIntegral); FeatureSet s = j(template, k, threshold); addAll(s); } FeatureSet j(ImageBinaryChannelFeature template, FeatureK k, double threshold) { FeatureSet list = new FeatureSet(); for (RectK r : k.list) { list.addAll(j(template, threshold, r)); } return list; } FeatureSet j(ImageBinaryChannelFeature template, double threshold, RectK r) { FeatureSet s = new FeatureSet(); double j = 0; for (int x = r.x1; x <= r.x2; x++) { for (int y = r.y1; y <= r.y2; y++) { j += IntegralImage2.pow2(template.zeroMean.s(x, y) - r.k); } } if (j > threshold) { RectK[] rr = r.devide(); if (rr == null) { s.add(r.getFeature()); } else { for (RectK rrr : rr) { s.addAll(j(template, threshold, rrr)); } } } else { s.add(r.getFeature()); } return s; } }