Пример #1
0
  public void testLocalExtract(ArrayList<String> images)
      throws IOException, IllegalAccessException, InstantiationException {
    LocalFeatureExtractor localFeatureExtractor = localFeatureClass.newInstance();
    LocalDocumentBuilder localDocumentBuilder = new LocalDocumentBuilder();
    AbstractAggregator aggregator = aggregatorClass.newInstance();

    Cluster[] codebook32 = Cluster.readClusters(codebookPath + "CvSURF32");
    Cluster[] codebook128 = Cluster.readClusters(codebookPath + "CvSURF128");

    BufferedImage image;
    double[] featureVector;
    long ms, totalTime = 0;
    for (String path : images) {
      image = ImageIO.read(new FileInputStream(path));
      ms = System.currentTimeMillis();
      localDocumentBuilder.extractLocalFeatures(image, localFeatureExtractor);
      aggregator.createVectorRepresentation(localFeatureExtractor.getFeatures(), codebook32);
      ms = System.currentTimeMillis() - ms;
      totalTime += ms;
      featureVector = aggregator.getVectorRepresentation();

      System.out.println(
          String.format("%.2f", (double) ms)
              + " ms. ~ "
              + path.substring(path.lastIndexOf('\\') + 1)
              + " ~ "
              + Arrays.toString(featureVector));
    }
    System.out.println(
        localFeatureExtractor.getClassOfFeatures().newInstance().getFeatureName()
            + " "
            + String.format("%.2f", totalTime / (double) images.size())
            + " ms each.");
    System.out.println();
  }