Descripteurs d'entités invariantes d'échelle et de rotation


16

Pouvez-vous répertorier des descripteurs d'entités invariants d'échelle et de rotation à utiliser dans la détection d'entités.

L'application est destinée à la détection de voitures et d'êtres humains en vidéo capturée par un drone, à l'aide d'un classificateur multi-classes.

Jusqu'à présent, j'ai regardé SIFT et MSER (qui est invariant affine). J'ai aussi regardé LESH, LESH est basé sur le modèle énergétique local, mais est calculé d'une manière qui n'est pas invariante en rotation, j'ai essayé de penser à un moyen d'utiliser l'énergie locale, de construire un invariant en rotation descripteur de fonctionnalité, je lis ici Quelles sont les alternatives gratuites à SIFT / SURF qui peuvent être utilisées dans des applications commerciales? , que "si vous attribuez une orientation au point d'intérêt et faites pivoter le patch d'image en conséquence, vous obtenez gratuitement l'invariance rotationnelle", mais je ne sais pas si cela est même apaisant ou comment je pourrais l'appliquer à mon problème, toute aide serait apprécié, merci


Utilisez ORB (Oriented FAST et Rotated BRIEF) de la bibliothèque OpenCV.
Harsh Wardhan

Réponses:


9

En ce qui concerne les alternatives à SIFT / SURF, la question que vous avez liée fournit de très bonnes réponses.

Il y avait deux autres questions que je pouvais lire:

  • "comment pourrais-je construire un descripteur de fonctionnalité utile (par exemple invariant en rotation)"?
  • "concernant la déclaration de la question liée, comment peut-il accomplir l'invariance rotationnelle libre?"

Descripteurs d'entités de construction

Il s'agit d'un sujet de recherche valable. Les bons descripteurs de fonctionnalités ne sont pas quelque chose que n'importe qui peut construire en un après-midi. Les gens publient des articles lorsqu'ils modélisent avec succès des descripteurs d'entités avec des propriétés souhaitables. C'est la raison pour laquelle actuellement seule une poignée de descripteurs de pointe est utilisée, et c'est aussi ce que je vous conseille de faire: trouver des descripteurs de fonctionnalités adaptés à vos besoins .

Atteindre l'invariance rotationnelle "gratuitement"

0|black->gray->white||white->gray->black|-9090

De cette façon, vous calculerez toujours le descripteur sur un patch d'image avec la même orientation dominante (le patch pivoté), et vous obtiendrez ainsi une invariance rotationnelle.


4

Une autre façon d'obtenir gratuitement l'invariance rotationnelle est de choisir des objets qui sont invariants en rotation. Par exemple, un cercle ou un anneau est invariant aux rotations.

Extracteur de fonctionnalités : exécuter la détection des bords. Pour chaque voisinage de NxNpixels, calculez la direction des bords et l’histogramme 2D d’amplitude. Trouvez tous les points qui ont une magnitude totale élevée et un écart angulaire élevé . Supprimez tous les points qui n'ont pas de symétrie radiale.

Descripteur d'entité : recherchez le centre de chaque objet circulaire. Puisque l'objet est circulaire, il n'a pas d'angle de gradient dominant. Tous les angles sont égaux. Ainsi, un profil radial (somme de la valeur des pixels en coordonnées polaires) est un descripteur invariant d'angle.


Soit dit en passant, c'est l'une des raisons pour lesquelles les fiduciaires sont fabriqués sous forme de cercles sur des cartes de circuits électriques:

entrez la description de l'image ici


nous parlons de descripteurs de points clés (fonctions) . Si nous parlions de caractéristiques (points d'intérêt) , la détection de correctifs circulaires pourrait être utile - ils sont invariants en rotation en combinaison avec chaque descripteur. Mais un descripteur calculé sur une parcelle circulaire n'est pas - un cercle blanc avec un diamètre horizontal en noir et avec un vertical produirait des descripteurs très différents si la méthode invariante en rotation n'est pas utilisée
penelope

@penelope, pourquoi pas? Considérez le descripteur suivant - une vignette du patch, et vous le comparez avec d'autres descripteurs avec une corrélation croisée normalisée. Vous ne pouvez pas le confondre avec d'autres objets de cette façon.
Andrey Rubshtein

Désolé, je ne comprends pas ce que vous entendez par "une vignette du patch" pouvez-vous expliquer? Et le descripteur: corrélation corss normalisée de votre patch est ce qui le rend invariant en rotation, pas le fait que votre patch était un anneau ou un cercle.
penelope

@penelope, je suppose maintenant que je n'étais pas assez clair. J'essaierai de l'étendre demain. Merci pour vos commentaires.
Andrey Rubshtein

Au plaisir :)
penelope

1

Je préfère regarder KAZE / AKAZE, qui fonctionnent tout aussi bien avec une accélération significative. Les cas de déformation sont également tolérés. OpenCV a récemment obtenu une implémentation via GSoC 2014. Vous pouvez la trouver ici .


1

Si vous remappez un patch local autour d'un point d'entité en coordonnées log-polaires (avec l'origine dans le point d'intérêt), les changements d'échelle correspondent à une translation le long de l'axe log-radial, tandis que les rotations correspondent à des translations (avec bouclage) le long de l'axe angulaire. Si vous calculez ensuite la transformée de Fourier bidimensionnelle, les translations dans les directions radiale et angulaire deviennent des déphasages dans le domaine fréquentiel. Si vous calculez ensuite la valeur absolue de la transformée de Fourier, la phase disparaît complètement et les changements d'échelle et les rotations du patch d'image d'origine deviennent imperceptibles. Ainsi, la valeur absolue de la transformée de Fourier 2D de l'image en coordonnées logarithmiques serait votre descripteur d'entité.

Enfin, du moins en théorie. En pratique, vous devez limiter l'extension radiale de votre patch. Cela signifie que vous devez couper une grande partie de vos données avant de calculer la transformée de Fourier (qui est en réalité une série de Fourier), donc une translation le long de la direction log – radiale en coordonnées log – polaires ne correspond pas exactement à juste un déphasage dans le domaine fréquentiel, donc la méthode n'est pas parfaitement invariable à l'échelle. Je soupçonne que si vous utilisez une fonction de fenêtre - sans discontinuités - sur la coordonnée log-rayon et que vous la multipliez par l'intensité de la couleur, ce problème serait quelque peu atténué.

Cependant, le descripteur de fonctionnalité devrait toujours être parfaitement invariant en rotation.

Référence: Invariance d'échelle sans sélection d'échelle


0

Vous pouvez également vérifier FAST et BRISK .


Pour autant que j'ai cherché, FAST n'est qu'un détecteur utilisé avec de nombreuses combinaisons de descripteurs différentes. Et, FAST et BRISK sont déjà mentionnés dans la question que le PO lui-même a liée, donc je suppose qu'il a déjà des informations sur l'existence de ces méthodes.
penelope
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.