Java-Reconnaissance d'images


J'ai environ 5000 images avec des marques d'eau et 5000 images identiques sans filigranes. Les noms de fichiers de chaque ensemble d'images ne sont en aucun cas corrélés les uns aux autres. Je cherche une API en Java de préférence que je peux utiliser pour coupler chaque image marquée par l'eau avec sa paire non marquée par l'eau.

Author: user2808109, 2014-04-25

2 answers

Vous pouvez utiliser la bibliothèque OpenCV. Il peut être utilisé en Java. Veuillez suivre http://docs.opencv.org/doc/tutorials/introduction/desktop_java/java_dev_intro.html

En ce qui concerne la comparaison d'images, vous pouvez voir une autre réponse utile ici: Vérifier la similitude des images avec OpenCV

 5
Author: jgrocha, 2017-05-23 11:53:46

Je pense que c'est plus une question de performance que de comparaison d'image elle-même et la réponse est écrite de cette manière, donc si vous avez besoin d'aide pour la comparaison elle-même, commentez-moi ...

  1. Créer un histogramme simplifié pour chaque image

    Soit 8 valeurs par canal limitant à 4 bits par niveau d'intensité. Cela conduira à 3*8*4=3*32 bits par image

  2. Trier les images

    Prenez l'histogramme ci-dessus et considérez-le comme un numéro unique et trier les images de A groupe par il n'a pas d'importance si ascendant ou descendant

  3. Correspondant A et B groupées des images

    Maintenant, les images correspondantes doivent avoir des histogrammes similaires, alors prenez l'image du groupe non trié B (filigrané), bin-search toute la correspondance la plus proche dans A group (original), puis comparez plus avec des méthodes plus robustes juste contre les images sélectionnées au lieu de 5000.

  4. Ajouter drapeau si l'image du groupe A correspond déjà à

    Vous pouvez donc ignorer les images déjà appariées dans bullet #3 pour gagner plus de vitesse

[Note]

Il y a d'autres façons d'améliorer comme l'utilisation Algorithmes de hachage perceptuel

 2
Author: Spektre, 2016-12-17 21:51:39