2009-06-05 27 views
0

Je développe une application pour la plate-forme Android qui contient plus de 1000 filtres d'image qui ont été «évolués». Lorsqu'un utilisateur sélectionne une photo, je souhaite d'abord présenter les filtres les plus pertinents.Fast Lightweight Image Comparisson Algorithme métrique

Cette 'pertinence' devrait dépendre des cas d'utilisation précédents.

J'ai déjà développé des outils qui s'enregistrent lorsqu'une image filtrée est enregistrée; cette combinaison de filtre et d'image peut être vue comme les données d'entraînement pour mon système.

Le problème est que la comparaison doit avoir lieu entre la sélection d'une image et l'écran suivant. Du point de vue de l'interface utilisateur, j'ai besoin de tout le processus pour prendre moins de 4 secondes; sélectionner une image-> obtenir une métrique à utiliser pour la similarité -> vérifier les cas d'utilisation -> renvoyer 6 correspondances les plus proches. Je compte avec 4 secondes que je peux utiliser des animations et des dialogues de progression pour garder l'utilisateur heureux.

En raison de contraintes de plate-forme, je suis assez limité dans la dépense de calcul de l'algorithme. J'ai mis en œuvre une technique adaptée à partir de divers didacticiels en ligne pour exécuter le code C sur le G1 et par conséquent ce langage est disponible

Contraintes spécifiques;

  • Qualcomm® MSM7201A ™, 528 MHz Processeur
  • 320 x 480 bitmap en mode point en 32 bit ARGB
  • ~ 2 secondes de temps de calcul pour la méthode native pour obtenir la métrique
  • ~ 2 secondes pour comparer la métrique de l'image actuelle avec les données d'entraînement

Ceci est un projet académique donc toutes les idées sont les bienvenues, tout ce que vous pouvez penser ou dont vous avez entendu parler pourrait m'intéresser.

Mes idées;

  • Je veux garder la complexité vers le bas (O (n * m)?) En utilisant des données de pixels uniquement plutôt que d'une fonction de voisinage
  • que je cherchais à utiliser la couleur historgram/Niveaux de gris histogramme/Texture/Entropy de l'image, en les combinant pour faire la mesure.
  • Il y aura une perte évidente de l'information, mais je dois la métrique résultante soit sensiblement plus petite que l'empreinte mémoire de l'image (~ 0.512 MB)

Comme je l'ai dit, des idées pour diriger mes recherches sois fantastique.

Cordialement,

Gavin

Répondre

1

Il y a une discussion similaire SO here - histogrammes semblent être la voie à suivre. Vous pouvez également essayer de comparer des fichiers JPEG hautement compressés - éventuellement en utilisant un fast thumbnailing library.