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
Réponses:
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:
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"
|black->gray->white|
|white->gray->black|
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.
la source
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
NxN
pixels, 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:
la source
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 .
la source
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
la source
Vous pouvez également vérifier FAST et BRISK .
la source