public static void run() {

        final String dir = "E:\\DropBox\\DEV\\AdCleaner\\adcleaner\\~\\.adcelaner\\screens\\";

        ArrayList<File> files = new ArrayList<File>() {{
            add(new File(dir + "video1_out_10.png"));
            add(new File(dir + "video1_out_115.png"));
            add(new File(dir + "video1_out_135.png"));
            add(new File(dir + "video1_out_180.png"));
            add(new File(dir + "video1_out_170.png"));
            add(new File("img/cac1.jpg"));
            //add(new File("img/cac2.jpg"));
            //add(new File("img/dexter.jpg"));
        }};

        int length = 0;
        HashMap<String, ArrayList<FeatureDescriptor>> descriptors = new HashMap<>();
        for(File from : files){
            ArrayList<FeatureDescriptor> d = getAllDescriptors();
            length = d.size();

            descriptors.put(from.getName(), d);
        }


        for(int i = 0; i < length; ++i)
        {
            for(File from : files){
                for (File to : files){
                    if (from == to)
                        continue;

                    List<double[]> fromFeatures = runDescriptor(from, descriptors.get(from.getName()).get(i));
                    List<double[]> toFeatures = runDescriptor(to, descriptors.get(to.getName()).get(i));

                    double hamming = hammingSimilarity(fromFeatures, toFeatures);

                    if(hamming >= 0) {
                        System.out.print(String.format(
                            "%s:\n%s vs %s:",
                            descriptors.get(to.getName()).get(i).getClass().getName(),
                            from.getName(),
                            to.getName()
                            )
                        );

                        System.out.println(
                            String.format("%s\n", hamming)
                        );
                    }
                }
            }
        }
    }