public static final LocalFeaturesMatches getMatchesFloatsLF(
      ALocalFeaturesGroup<FloatsLF> g1, ALocalFeaturesGroup<FloatsLF> g2, double sqMaxDist) {
    LocalFeaturesMatches matches = new LocalFeaturesMatches();
    if (g2.size() == 0) return null;
    int nMatches = 0;
    for (FloatsLF curr : g1.lfArr) {
      FloatsLF match = get(curr, g2, sqMaxDist);
      if (match != null) matches.add(new LocalFeatureMatch(curr, match));
    }

    return matches;
  }
  public static final LocalFeaturesMatches getMatchesRootSIFT(
      ALocalFeaturesGroup<RootSIFT> g1, ALocalFeaturesGroup<RootSIFT> g2, int sqMaxDist) {
    LocalFeaturesMatches matches = new LocalFeaturesMatches();
    if (g2.size() == 0) return null;
    int nMatches = 0;
    for (RootSIFT curr : g1.lfArr) {
      RootSIFT match = get(curr, g2, sqMaxDist);
      if (match != null) matches.add(new LocalFeatureMatch(curr, match));
    }

    return matches;
  }