Qu'est-ce qu'un point clé dans le traitement d'image?

Lorsqu'on utilise OpenCV, par exemple, des algorithmes comme SURF sont souvent utilisés pour détecter les points de frappe. Ma question Est de savoir ce que sont ces points clés.

je comprends qu'ils sont en quelque sorte des "points d'intérêt" dans une image. Je sais aussi qu'elles sont invariantes et circulaires.

aussi, j'ai découvert qu'ils ont une orientation mais je ne pouvais pas comprendre ce que c'est réellement. C'est un angle entre le rayon et quelque chose? Pouvez-vous donner quelques explications? Je pense que j'ai besoin de ce dont j'ai besoin d'abord est quelque chose de plus simple et après cela, il sera plus facile de comprendre les documents.

51
demandé sur rayryeng 2015-03-19 00:30:08

2 réponses

ce sont de très bonnes questions. Abordons chaque point un par un:

ma question Est de savoir ce que sont ces points clés?

les points de touches sont la même chose que les points d'intérêt. Ils sont localisations spatiales, ou des points dans l'image pour définir ce qui est intéressant ou ce se démarquer dans l'image. La raison pour laquelle les points de touches sont spéciaux est parce que peu importe comment les modifications de l'image... si l'image tourne, se rétrécit/se dilate, est traduit (tout cela serait un transformation affine soit dit en passant...) ou est sujet à distorsion (c.-à-d. une transformation projective ou homographie ), vous devriez être en mesure de trouver le même points de touches dans cette image modifiée lors de la comparaison avec l'image originale. Voici un exemple tiré d'un billet que j'ai écrit il y a un certain temps:

Source: module' object has no attribut 'drawMatches' opencv python

L'image de droite est une version tournée de l'image de gauche. Je n'ai également affiché que les 10 premiers matchs entre les deux images. Si vous regardez les 10 premiers matchs, ce sont des points sur lesquels nous aimerions probablement nous concentrer qui nous permettraient de nous souvenir de ce qu'était l'image. Nous aimerions nous concentrer sur le visage du caméraman ainsi que sur la caméra, le trépied et certaines des textures intéressantes sur les bâtiments à l'arrière-plan. Vous voyez que ces mêmes points ont été trouvés entre les deux images et ceux-ci ont été appariés avec succès.

par conséquent, ce que vous devez enlever de ceci est que ce sont des points dans l'image qui sont intéressants et qu'ils devraient être trouvés peu importe comment l'image est déformée.

je comprends qu'ils sont en quelque sorte des "points d'intérêt" d'une image. Je sais aussi qu'ils sont invariants d'échelle et je sais qu'ils sont circulaires.

vous avez raison. Invariant Scale signifie que peu importe comment vous dimensionnez l'image, vous devriez toujours être en mesure de trouver ces points.


nous allons maintenant nous aventurer dans la partie descripteur . Ce qui rend les points de clé différents entre les cadres est la façon dont vous décrivent ces points de clé. Ce sont ce qu'on appelle les descripteurs . Chaque point de saisie que vous détectez a un descripteur associé qui l'accompagne. Certains frameworks ne font qu'une détection de point de clé, tandis que d'autres frameworks sont simplement un framework de description et ils ne détectent pas les points. Il ya aussi certains qui font à la fois - ils détecter et décrire les points de clé. SIFT et SURF sont des exemples de cadres qui détectent et décrivent les points clés.

Les descripteurs

concernent principalement à la fois l'échelle et l'orientation du point de frappe. Les points de touches que nous avons cloué ce concept vers le bas, mais nous avons besoin de la descripteur partie si c'est notre but d'essayer de faire correspondre les points de touches dans différents image. Maintenant, ce que vous entendez par "circulaire"... cela correspond à l'échelle à laquelle le point a été détecté. Prenez par exemple cette image qui est prise du tutoriel de la boîte à outils VLFeat :

VLFeat example

vous voyez que tous les points qui sont jaunes sont des points d'intérêt, mais certains de ces points ont un rayon de cercle différent. Il s'agit de scale . Comment points d'intérêt travailler dans un sens général est que nous décomposons l'image en plusieurs échelles. Nous vérifions les points d'intérêt à chaque échelle, et nous combinons tous ces points d'intérêt ensemble pour créer le résultat final. Plus le "cercle" était grand, plus le était grand. De plus, il y a une ligne qui rayonne du centre du cercle jusqu'au bord. C'est le orientation du point de clé, que nous allons couvrir prochain.

aussi j'ai découvert qu'ils ont une orientation mais je ne pouvais pas comprendre ce que c'est réellement. C'est un angle entre le rayon et quelque chose?

en gros, si vous voulez détecter les points de saisie indépendamment de l'échelle et de l'orientation, quand ils parlent de orientation de points de saisie, ce qu'ils veulent vraiment dire c'est qu'ils recherchent un voisinage de pixels qui entoure le point de saisie et comprendre comment ce voisinage de Pixels est orienté ou dans quelle direction ce patch est orienté. Cela dépend du cadre de descripteur que vous regardez, mais le jist général est de détecter la plus dominante orientation des angles de gradient dans le patch. C'est important pour matching de sorte que vous pouvez faire correspondre les points clés ensemble. Jetez un oeil à la première figure que j'ai avec les deux cameramen - une rotation tandis que l'autre ne l'est pas. Si vous jetez un oeil à certains de ces points, Comment savoir comment un point correspond à un autre? Nous pouvons facilement identifier que le sommet du caméraman comme un point d'intérêt correspond avec la version tournée parce que nous prenons un coup d'oeil aux points que entourent le point de clé et de voir quelle orientation tous ces points sont... et de là, c'est comme ça que l'orientation est calculée.

habituellement, quand nous voulons détecter les points de touches, nous jetons juste un coup d'oeil aux emplacements. Toutefois, si vous voulez match points de touches entre les images, alors vous avez certainement besoin de l'échelle et l'orientation pour faciliter cela.


Espérons que cette aide!

74
répondu rayryeng 2017-05-23 11:54:46

Je ne suis pas aussi familier avec le SURF, mais je peux vous parler de SIFT, sur lequel le SURF est basé. J'ai fourni quelques notes sur le SURF à la fin, mais je ne connais pas tous les détails.


SIFT vise à trouver des emplacements très distinctifs (ou points clés ) dans une image. Les emplacements ne sont pas simplement des emplacements 2D sur l'image, mais des emplacements dans le de l'image "échelle espace , ce qui signifie qu'ils ont trois coordonnées: x , y , et échelle . Le processus pour trouver des points de clé SIFT est:

  1. brouiller et rééchantillonner l'image avec différentes largeurs de brouillage et taux d'échantillonnage pour créer un espace d'échelle
  2. utilisez la différence de gaussiens méthode pour détecter les blobs à différentes échelles; les centres de blobs deviennent nos points clés à un donné x , y , et échelle
  3. assignez à chaque point de saisie une orientation en calculant un histogramme des orientations de gradient pour chaque pixel de son voisinage et en sélectionnant le bin d'orientation avec le plus grand nombre de comptes
  4. assignez à chaque point de saisie un vecteur caractéristique basé sur les orientations de gradient de pixels dans 16 quartiers

L'Étape 2 nous donne l'invariance d'échelle, l'étape 3 nous donne l'invariance de rotation, et l'étape 4 nous donne une "empreinte" de sortes qui peuvent être utilisées pour identifier le point de clé. Ensemble, ils peuvent être utilisés pour faire correspondre des occurrences de la même caractéristique à n'importe quelle orientation et échelle dans des images multiples.


SURF vise à accomplir les mêmes objectifs que SIFT, mais utilise certains astuces pour augmenter la vitesse.

pour la détection de blob il utilise le déterminant de Hessian méthode. L'orientation dominante est trouvée en examinant les réponses horizontales et verticales à Harr wavelets . Le descripteur de fonction est similaire à SIFT, en regardant les orientations des pixels dans 16 quartiers locaux, mais résulte en un vecteur 64-dimensionnel.

SURF fonctionnalités peuvent être calculés jusqu'à 3 des temps plus rapides que les fonctionnalités SIFT, mais sont tout aussi robustes dans la plupart des situations.


pour référence:

Un bon TAMISER tutoriel

une introduction au SURF

14
répondu eigenchris 2015-03-19 05:29:18