56 votes

Bibliothèque Java pour comparer la similarité des images

J'ai passé très peu de temps à chercher pour une bibliothèque qui me permet de comparer les images l'une de l'autre en Java.

Je n'ai pas vraiment trouver quelque chose d'utile, peut-être mon GoogleSearch de compétences n'est pas suffisant alors j'ai pensé que je voudrais vous demander à vous les gars, si vous pouviez me pointer dans la direction d'où je pourrais trouver quelque chose comme cela.

Fondamentalement, ce que je veux faire est de comparer les deux images les unes avec les autres et d'obtenir une valeur de combien les deux sont similaires. Comme un pourcentage ou plus.

J'espère que vous les gars ont quelque chose que je peux utiliser, je ne sais pas comment écrire quelque chose comme ça moi-même...

PS: Cela ne doit pas nécessairement être en Java, c'est juste l'environnement de mon application est en cours d'exécution.

31voto

G. Bach Points 2438

Vous pouvez prendre un coup d'oeil à deux des réponses sur tant de lui-même: c'est sur la comparaison d'image lui-même, offrant des liens vers des trucs en C++ (si j'ai lu correctement) alors que celui-ci offre des liens vers des approches plus larges, dont l'un est C.

Je suggère de commencer avec le second lien, puisqu'il y a des liens sur cette discussion qui va conduire à la mise en œuvre du code de quelques techniques que vous peut-être capable de "traduire" en Java vous-même.

C'est le meilleur de mon google compétences pourrait le faire, pas de Java, mais - désolé. J'espère que c'est un bon point de départ!

EDIT: Voilà quelqu'un avec votre problème qui a écrit son propre comparaison de classe en Java. Je n'ai pas lu le code source si. Il déclare expressément qu'il ne pouvait pas trouver de bibliothèques Java pour cet effet, de sorte que c'est pourquoi il l'a écrit lui-même.

Oh, et cette question a DONC probablement les meilleurs liens sur ce, tous ce qui concerne les bibliothèques Java de traitement de l'image. Heureusement, l'un d'entre eux qui permet de comparer les images de la similitude.

Ok, dernière édition: La Java de Traitement de l'Image Cookbook montre une implémentation Java de base d'un algorithme pour déterminer la différence entre deux images. Il dispose également d'un e-mail à contacter le gars qui l'a écrit ainsi qu'une multitude de références. Pas de bibliothèque si la.

EDIT après lecture de votre commentaire à votre question: Sauf si vous avez déjà vérifié tous les liens ci-dessus, puisque ce que vous voulez semble être de vérifier si deux images sont égaux, je suggère de commencer avec le Java de Traitement de l'Image livre de cuisine (parce que cela a une mise en œuvre d'un algorithme en Java pour contrôler l'égalité des images) et le dernier maillon d'une SORTE de question. Aussi, vérifiez PerceptualImageDiff et le code source de ce projet (C++); il a l'air vraiment chouette - c'est apparemment censé vérifier si deux images de l'égalité pour le système visuel humain.

8voto

dario_ramos Points 2919

Juste à côté de ma tête, OpenCV est une grande librairie de traitement d'image, mais c'est peut-être exagéré si vous voulez juste pour comparer les images. Si c'est le cas, j'irais avec ImageJ.

Quelqu'un s'est déjà demandé comment faire en utilisant OpenCV ici.

Je voudrais utiliser C++ pour cela, mais si vous devez utiliser Java, il y a un projet qui fait un wrapper Java pour OpenCV, ici.

7voto

Ismet Alkan Points 2703

J'ai utilisé la classe dans ce lien pour comparer deux images de produits et les résultats ont été cool. Ce n'est pas très difficile à mettre en œuvre qu'il vient d'être utilisé pour comparer deux images, il vous suffit de supprimer les lignes de JAI et de Swing et de ces. Il redimensionne les images à 300x300 et renvoie une valeur de différence comme "1234". La différence maximale entre la valeur est proche de "11041", il est indiqué dans le lien. Faire une division, vous pouvez simplement obtenir le pourcentage. Si vous êtes intéressé, je peux poster le code modifié ici plus tard.

Les résultats ont été cool, mais j'ai encore "appareil photo numérique photos", détecté pour être semblable à la "TV" photos". Donc, j'ai utilisé ImageJ pour détecter les bords de l'image. À l'aide de la détecter les contours de l'opération, ImageJ convertit l'image en un bord détecté greyform image. Que j'ai mis les deux bord-images détectées dans le même comparateur et multiplient les deux valeurs. Les résultats se sont encore plus précis.

Arriver au bord détecté forme d'images

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X