@Override public int[] assign(byte[][] data) { int [] argmins = new int [data.length]; float [] mins = new float [data.length]; nn.searchNN(data, argmins, mins); return argmins; }
@Override public void assignDistance(byte[][] data, int[] indices, float[] distances) { nn.searchNN(data, indices, distances); }
@Override public IntFloatPair assignDistance(byte[] data) { int [] index = new int [1]; float [] distance = new float [1]; nn.searchNN(new byte[][] { data }, index, distance); return new IntFloatPair(index[0], distance[0]); }
@Override public boolean findMatches(List<T> keys1) { Queue<WPair> mq = new PriorityQueue<WPair>(); byte [][] data = new byte[keys1.size()][]; for (int i=0; i<keys1.size(); i++) data[i] = keys1.get(i).ivec; int [] argmins = new int[keys1.size()]; float [] mins = new float[keys1.size()]; modelKeypointsKNN.searchNN(data, argmins, mins); for (int i=0; i<keys1.size(); i++) { float distsq = mins[i]; mq.add(new WPair(keys1.get(i), modelKeypoints.get(argmins[i]), distsq)); } matches = new ArrayList<Pair<T>>(limit); for (int i=0; i<limit; i++) matches.add(mq.poll()); return true; }
@Override public boolean findMatches(List<T> keys1) { matches = new ArrayList<Pair<T>>(); final byte[][] data = new byte[keys1.size()][]; for (int i = 0; i < keys1.size(); i++) data[i] = keys1.get(i).ivec; final int[] argmins = new int[keys1.size()]; final float[] mins = new float[keys1.size()]; modelKeypointsKNN.searchNN(data, argmins, mins); for (int i = 0; i < keys1.size(); i++) { final float distsq = mins[i]; if (distsq < threshold) { matches.add(new Pair<T>(keys1.get(i), modelKeypoints.get(argmins[i]))); } } return true; }
@Override public boolean findMatches(List<T> keys1) { matches = new ArrayList<Pair<T>>(); final byte[][] data = new byte[keys1.size()][]; for (int i = 0; i < keys1.size(); i++) data[i] = keys1.get(i).ivec; final int[] argmins = new int[keys1.size()]; final float[] mins = new float[keys1.size()]; modelKeypointsKNN.searchNN(data, argmins, mins); for (int i = 0; i < keys1.size(); i++) { final float distsq = mins[i]; if (distsq < threshold) { matches.add(new Pair<T>(keys1.get(i), modelKeypoints.get(argmins[i]))); } } return true; }
@Override public boolean findMatches(List<T> keys1) { Queue<WPair> mq = new PriorityQueue<WPair>(); byte [][] data = new byte[keys1.size()][]; for (int i=0; i<keys1.size(); i++) data[i] = keys1.get(i).ivec; int [] argmins = new int[keys1.size()]; float [] mins = new float[keys1.size()]; modelKeypointsKNN.searchNN(data, argmins, mins); for (int i=0; i<keys1.size(); i++) { float distsq = mins[i]; mq.add(new WPair(keys1.get(i), modelKeypoints.get(argmins[i]), distsq)); } matches = new ArrayList<Pair<T>>(limit); for (int i=0; i<limit; i++) matches.add(mq.poll()); return true; }