Traitement d'image avant la détection des fonctionnalités

9

J'ai implémenté un détecteur de fonctionnalités basé sur les coins Harris . Cela fonctionne très bien la plupart du temps, mais il y a des cas où il fonctionne mal. Je dois le faire fonctionner sur de nombreuses images différentes sans le configurer individuellement.

Le problème vient de la valeur seuil du détecteur. S'il est réglé trop bas, le détecteur se déclenche trop de fois, ce qui entraîne un grand nombre de fonctionnalités. S'il est réglé trop haut, il y a trop de fonctionnalités.

J'ai partiellement résolu ce problème par ANMS (Adaptive Non-Maximal Suppression) pour réduire le nombre de fonctionnalités avant de leur affecter un vecteur de descripteur.

Cependant, des images comme celle-ci sont le problème:

entrez la description de l'image ici

Ils ont un faible contraste et je ne peux pas "me permettre" de définir un seuil trop bas pour toutes les images. Cela ferait fonctionner le détecteur sur ces images, mais d'autres images contiendraient des centaines de milliers de fonctionnalités, qui seront lentes à filtrer avec ANMS et cela nuirait aux performances globales.

Je pensais à ajuster l'image avant la détection des fonctionnalités. Peut-être que l'égalisation d'histogramme ferait l'affaire. Cela peut être une opération valide car le changement global de contraste n'a aucun effet sur les descripteurs de caractéristiques (ils sont invariants pour changer de luminosité et de contraste).

Peut-être que travailler avec un seuil adaptatif ou une heuristique fonctionnerait mieux.

D'autres suggestions?

Libor
la source
@Seyhmus Güngören: Oh. J'ai accepté les réponses que j'ai obtenues jusqu'à présent car j'ai trouvé des solutions satisfaisantes, mais j'attends toujours des réponses meilleures ou plus élaborées.
Libor
@Libor C'est bon pour vos nouvelles questions, car il pourrait être plus attrayant de résoudre vos questions dans le cas actuel.
Seyhmus Güngören
@Libor avez-vous envisagé de faire correspondre l'histogramme en choisissant un histogramme de type gaussien dont la moyenne est d'environ 128?
Seyhmus Güngören
@ SeyhmusGüngören Oui, j'y pensais. J'essaierai probablement cela avec quelques autres idées.
Libor
@Libro Pouvez-vous s'il vous plaît dire comment vous prévoyez d'utiliser les fonctionnalités détectées? Mes seules idées sont la récupération ou la correspondance d' images basées sur le contenu (par exemple pour l'estimation d'homographie), mais comme c'est la seule chose que j'ai jamais faite avec elles, je peux me tromper :) Si, d'autre part, c'est ce que vous prévoyez d'utiliser pour eux, je pourrais être en mesure de contribuer.
penelope

Réponses:

1

Une possibilité serait de faire une simple détection de bord (comme Laplace), et d'utiliser l'intensité moyenne du résultat comme base pour le seuil des coins Harris. Lorsque vous avez un faible contraste, vous obtiendrez moins de bords et avec une intensité plus faible, avec un contraste élevé, vous obtiendrez plus de bords et avec des intensités plus élevées.

Vous n'êtes pas le seul à lutter contre ce problème. Si vous avez accès à des bases de données papier, cela peut être intéressant:

Il pourrait être utile de rechercher davantage la détection de coin harris (auto) adaptative.

Geerten
la source
Ce n'est pas une contradiction. Le détecteur comporte deux étapes: 1) détecter les caractéristiques, 2) décrire les caractéristiques. L'égalisation de l'histogramme devrait avoir un effet sur l'étape 1 (plus de caractéristiques détectées), pas sur l'étape 2. J'ai besoin d'une quantité modérée de caractéristiques pour être détectées, donc elles n'ont pas besoin d'être beaucoup filtrées.
Libor
D'accord, j'y ai pensé, mais ce n'était pas tout à fait clair à partir de votre question. Je ne veux pas utiliser l'image de bord comme entrée pour le détecteur de caractéristiques, mais comme votre propre mesure de la valeur du seuil.
Geerten
Merci, c'est une pensée intéressante. Le détecteur de coin Harris utilise des images dérivées (dx, dy, dxy) pour construire une mesure de coin à chaque point. Comme cela est déjà basé sur des mesures de bord, je pense maintenant à prendre l'histogramme de la fonction de réponse en coin et à calculer le seuil de cet histogramme. Tu m'as inspiré, merci :)
Libor
Je suis content d'avoir pu vous inspirer;) Ajout d'un article qui pourrait être utile.
Geerten
2

Devez-vous vraiment utiliser les coins Harris? Il existe de nombreuses fonctionnalités développées après les coins Harris, avec de meilleures propriétés. Un bon aperçu peut être trouvé dans cet article:

Sur la base de cet article ainsi que de mon expérience personnelle, je suggérerais de passer soit à MSER (Maximally Stable Extermal Regions) , soit même à les combiner avec DoG (Difference of Gaussians) - les fonctionnalités présentées pour la première fois dans le cadre du pipeline SIFT.

Si le problème est vraiment à faible contraste , alors les fonctionnalités MSER devraient vraiment vous faire plaisir: elles sont (assez) invariantes aux changements d'éclairage. En bref, ce sont des régions connectées de l'image stables grâce à une série de binarisations à seuils différents.

Le processus d'extraction des fonctionnalités est indépendant du calcul des descripteurs, il ne devrait donc pas être trop difficile d'intégrer de nouvelles méthodes d'extraction des fonctionnalités dans votre processus.

De plus, j'ai entendu parler (mais jamais vraiment travaillé avec) des coins Harris à plusieurs échelles comme une extension des coins Harris. Je ne sais pas grand-chose à leur sujet et personnellement, je ne peux recommander aucun matériel de lecture sur ce sujet, je vous laisse donc rechercher des articles et choisir les documents les plus intéressants.


De plus, puis-je suggérer que l'image que vous avez publiée pourrait avoir d'autres problèmes qu'un faible contraste . D'après mon expérience personnelle, la végétation comme les buissons ou peut-être le champ que vous avez, ainsi que les jolis nuages ​​pétillants ont tendance à produire des "caractéristiques génériques" - des caractéristiques qui ont tendance à avoir des descripteurs tout aussi similaires (ou différents) que beaucoup d'autres caractéristiques.

En pratique, cela signifie que lors de la mise en correspondance de fonctionnalités sur deux images sous un angle différent, les fonctionnalités extraites de ces types de surfaces avaient tendance à être faussement mises en correspondance. J'ai fait une thèse de Master qui traite en grande partie de l'extraction des fonctionnalités à utiliser dans la correspondance des fonctionnalités, utilisée pour calculer une transformation d'homographie entre deux images lorsque je suis tombé sur ce problème. Je n'ai pas trouvé d'autres articles décrivant ce problème à l'époque, mais ma thèse pourrait être utile pour votre approche globale.

Enfin, comme vous l'avez défini, les seuils et les techniques qui fonctionnent très bien sur la plupart des images se transforment en petites fonctionnalités dans ce type d'images, en raison de ses zones principalement homogènes. Ce type d'images présente des problèmes de correspondance des fonctionnalités (qui peuvent être étendues à l'assemblage d'images), de récupération d'image basée sur le contenu, et je suppose que le suivi ainsi que des applications similaires. Aucune méthode ne fonctionne actuellement assez bien sur eux.

Des méthodes qui fonctionnent bien sur ce type d'images ainsi que les cas typiques sont actuellement explorées et recherchées, comme une approche sur laquelle j'ai commencé à travailler brièvement décrite dans cette réponse .

Pénélope
la source
Merci pour la réponse détaillée, je passerai en revue les papiers lorsque j'aurai du temps libre. J'implémentais un détecteur de fonctionnalités confronté à deux problèmes: la complexité de l'implémentation et les problèmes de brevets. Mon application est une bibliothèque d'alignement et d'assemblage d'images commerciales et j'ai donc des ressources et un temps de mise en œuvre limités et je ne peux pas me permettre de payer pour SIFT ou SURF. Je vais probablement passer à MSER ou à un autre détecteur / descripteur avancé, mais jusqu'à présent, les coins Harris fonctionnent bien, à l'exception des images avec un mauvais éclairage.
Libor
@Libor C'est la beauté de celui-ci: vous n'avez pas à changer. Vous pouvez simplement ajouter les nouvelles fonctionnalités à votre pipeline de détection-> description existant. Quelle que soit la façon dont les fonctionnalités sont extraites, vous pouvez toujours calculer leurs descripteurs avec la même tactique. De toutes les choses que j'ai écrites, le premier article mentionné comparant diverses options de détection / description pourrait peut-être s'avérer le plus utile.
penelope
J'ai utilisé le regroupement de grands descripteurs, puis le PCA pour améliorer la vitesse et le pouvoir discriminant des descripteurs. Cependant, l'ACP est assez coûteuse pour les grands ensembles de données. Ce travail m'a attiré en raison de l'amélioration générique des descripteurs. Jusqu'à présent, tout ce que j'utilise est le "rejet d'espace aberrant", qui consiste simplement à établir un seuil sur les correspondances d'entités basées sur une distance de 1 nn / 2 nn. Ceci est décrit par D. Lowe dans ses articles et a un très bon pouvoir discriminant car il exploite la propriété de la coquille des distances dans les espaces très sombres.
Libor
En ce qui concerne les détecteurs, les grands changements de point de vue et l'invariance d'échelle ne sont pas un problème, car avec le mosaïquage d'images (panoramas, microscopes), le zoom reste généralement inchangé et les déformations affines ou projectives sont assez petites entre les images correspondantes. Le problème principal est vraiment trop peu ou trop de fonctionnalités détectées et de mauvais descripteurs.
Libor
Personnellement, je ne sais pas grand-chose sur le choix des descripteurs, je n'ai travaillé qu'avec SIFT. Mais le lien que vous avez fourni mentionne qu'ils sont similaires aux descripteurs DAISY, dont je me souviens également d'avoir été évalués comme très bons. Il est à espérer que la combinaison de plusieurs extracteurs de fonctionnalités devrait vous fournir plus de fonctionnalités, et l'invariance d'échelle ne peut être qu'un avantage, même si vous n'en avez pas besoin. J'ai lu quelques travaux mentionnant que travailler avec plusieurs extracteurs de fonctionnalités augmente les pouvoirs discriminatoires (je peux rechercher les liens si vous le souhaitez).
penelope