Compréhension des caractéristiques élémentaires indépendantes robustes binaires («BRIEF»)

14

Comment les descripteurs de l' algorithme BRIEF sont-ils adaptés les uns aux autres?

Comment l'image du modèle se trouve-t-elle dans une autre image? Comment comparer les descripteurs? J'ai lu cet article mais je n'ai pas compris comment ils l'ont fait.

Ils ont écrit qu'ils comparaient les descripteurs en utilisant la distance de Hamming, mais comment l'invariance aux changements d'éclairage, de taille, etc. est-elle obtenue?

maximus
la source

Réponses:

15

Tout d'abord, il n'y a pas de «modèle» dans cet article - le mot «modèle (s)» a une signification différente dans la vision par ordinateur.

La méthode utilisée dans cet article est relativement simple. Laisse-moi t'expliquer. Il y a trois choses importantes que vous devez faire lorsque vous effectuez des tâches telles que la reconnaissance d'objets, la correspondance d'images, l'assemblage d'images et d'autres similaires, à l'aide des fonctionnalités locales

La première chose importante est la détection; dans cette étape, vous voulez détecter des points d'intérêt ou des points clés, et cela signifie que vous voulez choisir des points locaux (essentiellement de petits correctifs) qui vous semblent intéressants dans l'image, il y a plusieurs façons de le faire; ce document ne contribue pas dans ce domaine. Cependant, il semble qu'ils utilisent le détecteur de fonctionnalité SURF et les points clés CenSurE (vous pouvez les rechercher si vous voulez en savoir plus à leur sujet, je ne parlerai pas de cette étape, sauf qu'ils utilisent des fonctionnalités telles que les gradients, etc., ce qui signifie que si vous avez une photo, il est peu probable qu'un point au milieu du ciel soit choisi comme point d'intérêt, c'est parce que les pixels autour de ce point sont tous de même intensité, les choses qui sont `` occupées '' ont tendance à être choisies comme points d'intérêt (par exemple table / bords de construction / coins)).

Une fois la détection terminée, Description de la fonctionsuit. Vous connaissez les points intéressants de l'image et maintenant vous voulez les décrire (en gros, vous voulez décrire les points / patch autour des points intéressants). SIFT est un descripteur de fonctionnalité populaire. Dans cet article, ils en proposent un nouveau, appelé BRIEF. BRIEF est basé sur des comparaisons, alors disons que nous avons un patch (50 pixels par 50 pixels), nous choisissons deux points et comparons les intensités des deux points, si le premier point est plus grand que le deuxième, nous attribuons la valeur ' 1 ', sinon' 0 ', nous le faisons pour un certain nombre de paires et nous nous retrouvons avec une chaîne de valeurs booléennes. Maintenant, la grande question est «comment choisissez-vous la paire de points?», Dans le document, ils ont expliqué 5 façons, relativement similaires, je vais décrire la première. Ce que vous faites, c'est que vous choisissez uniformément (probabilité égale) un point de -S / 2 à S / 2, dans notre exemple, nous avons dit que la taille du patch est de 50, nous choisissons donc un point entre -25 et 25. En supposant que la coordonnée 0,0 est située au centre du patch. Voici donc un exemple;

Nous voulons sélectionner la première paire, chaque point se compose de coordonnées (X, Y) donc nous sélectionnons uniformément la coordonnée X du premier point, puis la coordonnée Y du premier point, supposons que c'est (10, -1) , maintenant le deuxième point; nous sélectionnons uniformément la coordonnée X pour le deuxième point, et la coordonnée Y pour le deuxième point, supposons que c'est (-2,20), maintenant nous obtenons les valeurs d'intensité pour chaque point et voyons lequel a les valeurs d'intensité les plus élevées - si le premier est plus grand, nous attribuons la première valeur booléenne à «1», sinon, nous attribuons «0». Nous faisons cela pour de nombreuses paires et nous nous retrouvons avec un vecteur de valeurs booléennes.

* Point très important: je suppose que pour que cela fonctionne, vous devrez spécifier une valeur de départ avant le générateur aléatoire. Cela signifie que vous voulez choisir les mêmes valeurs pour chaque patch - c'est très important car lorsque vous comparez / faites correspondre des patchs, tout le système tombe en panne s'ils ne sont pas choisis exactement de la même manière. - j'espère que cela aura un sens lorsque vous lirez l'étape correspondante.

Donc, nous faisons cela pour chaque point d'intérêt qui a été détecté par le détecteur. Pour chaque point d'intérêt, nous obtiendrons un vecteur de valeurs booléennes.


Maintenant pour faire correspondre deux images ( troisième étape; appariement ), nous faisons exactement la même chose pour l'autre image, nous détectons, puis décrivons en utilisant le BRIEF. Par exemple, disons que nous avons 10 points d'intérêt dans chaque image (cela peut toujours fonctionner si nous obtenons les 10 points les plus intéressants de chaque image), nous utilisons BRIEF pour décrire chaque patch en utilisant par exemple 50 paires, de sorte que chaque image sera décrite par 10 vecteurs de 50 valeurs booléennes.

Pour comparer les deux images, nous trouvons le plus proche voisin de chaque vecteur de la première image à l'autre vecteur de la deuxième image. Nous utilisons la distance de Hamming qui est assez rapide, exemple de distance de Hamming

hammingDistance ((0, 1, 1), (0, 0, 0)) = 2

hammingDistance ((0, 1, 1), (0, 1, 1)) = 0

hammingDistance ((0, 1, 1), (1, 0, 0)) = 3

hammingDistance ((0, 1, 1), (1, 1, 1)) = 1

Fondamentalement, combien de correspondances erronées

J'espère que cela pourra aider

Roronoa Zoro
la source
Merci beaucoup, j'ai pu comprendre l'algorithme. Mais j'ai encore quelques questions, qu'en est-il des affines, des changements de perspective et des changements d'éclairage? La chaîne de bits sera-t-elle similaire en cas de changement d'éclairage ou de perspective?
maximus
Si la quantité de changement d'éclairage est égale pour tous les pixels, oui, cela fonctionnera toujours, si elle est différente d'un pixel à l'autre (l'éclairage de certains pixels a augmenté, d'autres diminué), alors c'est un problème. L'affinité semble fonctionner très bien (sur la base de leurs résultats), mais elle atteindra certainement un point où elle cessera de fonctionner (en fait dans leurs résultats (Fig.3), ils montrent que - vous pouvez télécharger les images et voir ce que Wall 1 | 2, mur 1 | 3 correspondent à). Leur méthode n'est pas invariante par rotation (ce n'est pas si difficile à voir) et ils le mentionnent explicitement.
Roronoa Zoro
Merci pour votre explication. Je comprends très bien le BREF descripteur.