public boolean areImagesSimilar(File image1, File image2) {
        if ( image1 == null || image2 == null ||
             !image1.exists() || !image2.exists() ||
             image1.getAbsolutePath().equals(image2.getAbsolutePath()))
            return false;

        // Descriptors have to be loaded before every use (can't be reused for another image)
        List<ImageDescriptor> image1Descriptors = getAllDescriptors();
        List<ImageDescriptor> image2Descriptors = getAllDescriptors();

        int similarityHits = 0;
        for(int i = 0; i < image1Descriptors.size(); ++i){
            List<double[]> image1Features = image1Descriptors.get(i).run(image1);
            List<double[]> image2Features = image2Descriptors.get(i).run(image2);

            double euklid = euklidSimilarity(image1Features, image2Features);

            if (euklid < image1Descriptors.get(i).getTreshold())
            {
                System.out.println(image1Descriptors.get(i).getDescriptorName());
                similarityHits++;
            }
        }

        System.out.print(String.format(
            "%s and %s has similarity score: %s: ",
            image1.getName(),
            image2.getName(),
            similarityHits
            )
        );
        System.out.println();

        return similarityHits > 4;
    }