예제 #1
0
 /**
  * @param P indeks analizowanego pixela
  * @param eps promień sąsiedztwa
  * @return lista sąsiadów danego pixela w zadanym promieniu eps
  */
 private List<Integer> regionQuery(int P, double eps) {
   List<Integer> neighbours = new ArrayList<>();
   double tmp;
   for (int i = 0; i < colors.length; i++) {
     if (P != i) {
       tmp = dist.compute(colors[P], colors[i]);
       if (tmp <= eps) neighbours.add(i);
     }
   }
   return neighbours;
 }
예제 #2
0
 /**
  * Wyznacza reprezentanta danej grupy
  *
  * @param colors Lista kolorów należących do danej grupy
  * @return Kolor reprezentuący daną grupę
  */
 public Color findRep(List<Color> colors) {
   double r = 0.0, g = 0.0, b = 0.0, dst = Double.POSITIVE_INFINITY, tmp;
   double s = (double) colors.size();
   Color ret = new Color(0, 0, 0);
   for (Color c : colors) {
     r += c.vec[0];
     g += c.vec[1];
     b += c.vec[2];
   }
   r /= s;
   g /= s;
   b /= s;
   Color crep = new Color((int) r, (int) g, (int) b);
   for (Color c : colors) {
     tmp = dist.compute(c, crep);
     if (tmp < dst) {
       dst = tmp;
       ret = c;
     }
   }
   return ret;
 }