private static Collection<Circle> filterFinalScoreCheck(ShortImageBuffer edgeImage, Collection<Circle> input)
    {
        Collection<Circle> output = new ArrayList<>(input.size());
        for (Circle original : input)
        {
            List<Circle> permutations = new ArrayList<>(input.size());
            for(int i=0;i<3*3*3;i++)
            {
                int dr = (i%3)-1;
                int dx = ((i/9)%3)-1;
                int dy = ((i/3)%3)-1;
                permutations.add(original.shift(dx, dy).grow(dr).score(edgeImage));
            }

            Circle best = Collections.max(permutations);

            if (best.score >= FINAL_SCORE_THRESHOLD)
            {
                output.add(best);
            }
        }
        return output;
    }