Zones ou le gradient varie dans plusieurs directions
Detecteur de Harris:
Changement d'echelle
Comment reconnaitre un point apres un changement d'echelle ?
Avec des descripteurs !
Descripteur
Moyen de decrire une zone locale de l'image
Les "features" sont associees a des points localement distincts dans l'image
Les descripteurs sont la signature de ces points
Differences de Gaussiennes
Detection de blobs par differences de Gaussiennes:
On soustrait l'image floutee a l'image normale
Invariance par changement d'echelle pour les differences de Gaussiennes:
Descripteur SIFT
Scale Invariant Feature Transform
Detection de blobs par la methode des differences de gaussienne
Rotation
Comment reconnaitre un point apres une rotation ?
Descripteur SIFT
Histogramme d'orientations du gradient
Decoupage en fenetres
Histogramme sur 8 directions
Resume:
Identification/Matching des keypoints
Autres descripteurs
MSER (Maximally Stabel Extremal Regions)
SURF (Speeded Up Robust Features)
ORB (Oriented FAST and Rotated BRIEF)
SIFT et SURF sont brevetes
OpenCV a invente ORB comme alternative open-source et gratuite
BRIEF
FAST
KAZE
etc
Extraction de caracteristiques locales
Comment valoriser l'information ?
Reconaissance/detection d'objets
Estimation de la pose/localisation
De la projection d'objets 3D sur le plan Image
D'objets 3D dans le monde
De la camera dans le monde
Estimation du mouvement
Reconaissance d'objets
Objectifs:
Detection d'instances d'objets par points d'interet
Transformee de Hough
RANSAC
Detection de categories d'objets
Sac de mots visuels
Transformee de Hough
A l'origine, detection de lignes droites:
Chaque point votre pour "toutes" les lignes qui passent par lui
Les votes sont accumules
Un maximum local corresponds a des lignes candidates
Possible probleme: trouver le maximum vrai
Mean shift
Gaussian convolution
…
Transformee de Hough generalisee
Contour/forme arbitraire
Choix d'un point de reference our le contour (e.g. le centre)
Pour chaque point du contour, se rappeler de sa position par rapport au point de reference
Calcul de l'angle
RANSAC
Cas de lignes
Choix aleatoire de droites
Vote base sur le nombre de points proches de la ligne
todo
Amelioration
Elimination de outliers par RANSAC
Amelioration de l'estimation de RANSAC TODO
Comparaison
Reconnaissance d'objets 3D
Base sur la detection de features
3 features minimum sont necessaires pour la reconnaissance
Reconnaissance d'objet 3D base sur la detection d'un modele 3D connu
Mots visuels
Principe: extraction de features locales a partir d'un certain nombre d'images
Cartographie des descripteurs vers de mots visuels qui quantifient l'espace des features
Le centre des clusters definissent les prototypes de mots
Determination de quel mot doit etre assigne a chaque nouvelle region de l'image en trouvant le centre du cluster le plus proche
Exemple
Chaque groupe de patch correspond a un meme mot visuel
Resumer une image entiere a partir de sa distribution de presence de mots
Analogue a un sac de mots souvent utilise pour les documents de texte
Creation d'un vocabulaire visuel:
Repertorier un ensemble de mots visuels (~ dictionnaire)
Differentes strategies
Apprentissage supervise
Deep learning
etc
Strategies d'echantillonnage:
Arbre de vocabulaire:
Remplissage:
Probleme:
certains mots visuels sont discriminants
D'autres apparaissent dans de nombreuses images
Calcul d'un poids pour chaque mot visuel
Le poid correspond a la quantite d'info esperee
Normalisation des histogrammes en fonction de ce poids
Estimation du mouvement
Objectifs
Detection/ Estimation du mouvement dans la scene
Du au mouvement de la cmaera
Mouvement des objets
Perception du mouvement apparent
Champs des vecteurs de deplacement
Flux optique
Flux optique
Difficultes de l'estimation du flux optique
Ambiguites
Premiere image: deplacement de drone, champ de vecteurs = deplacement des pixels
Si on aune voiture qui se rapproche de nous, on peut segementer la voiture du reste de l'image a partir de champs de vecteurs
Interpretation du flux:
Vitesse:
La camera se deplace a une vitesse par rapport a la scene
Si on derive les equations de perspective on a donc:
Interpretation du flux
Translation pure selon (ou )
Translation pure selon :
Cas general:
Donne la direction du deplacement
Mouvement
Soit un point de la scene, apres un temps , il est projete sur l'image au point avec:
Temps avant collision:
Mesure de la taille d''un element
Bundle adjustment
Nous avons pour l'instant uniquement utilise des paires d'image pour obtenir une information de profondeur
Dans le cas general, il est possible d'utiliser images/cameras
Le Bundle (block) adjustment ou ajustement de faisceaux en bloc, est une methode de resolution au sens des moindres carres les coordonnees 3D des points et aligner les images
Plusieurs images sont corrigees "en bloc"
Principe:
Demarrer avec une approximation initiale
Projeter les points 3D sur les plans images des cameras
Comparaison avec la mesure
Ajustement pour minimiser l'erreur
Le BA est une approche non-lineaire de resolution par moindres carres:
Avec l'erreur de mesure du point
$i l'indice du point, l'indice de la camera
Elimination du facteur d'echelle:
Resolution par SVD
Odometrie Visuelle
Estimation du mouvement de la camera par rapport au monde
Necessaire a de nombreuses applications
Pas de GPS
Genre sur Mars
IMU et/ou odometrie des roues insuffisants
On va mettre des encodeurs sur les roues et lire de combien s'est deplace la roue
Odometrie:
Estimation du mouvement base sur le modele cinematique
Extansion a la vision
Triangulation
Permet de connaitre la position 3D d'un point
Principe:
Trouver des correspondances de points entre 2 images successives: utilisation de descripteurs
Si le monde est statique et les points bien apparies alors on peut estimer la transformation a partir des parametres extrinseque
Probleme de minimisation de l'erreur de reprojection
Necessite d'une bonne calibration
Peu robuste aux rotations pures
On compense ave l'IMU et l'odometrie des roues
Pseudo code:
Capturer l'image I_k
Calculer les correspondannce entre I_k-1 et I_k
Calcul de la matrice essentielle E et que p^TEp' = 0
Decomposition de E en R_k et t_k par SVD
Calcul du modele 3D (coordonnees des points de correspondance)
Redimensionnement de t_k pour prendre en compte l'echelle
Attention ! p^TEp' = 0 <=> lambda p^TEp'=0
k = k + 1
SLAM
Simultaneous Localization and Mapping
Si une carte est fournie, possibilite de se localiser dans cette carte uniquement
Si une position est fournie, possibilite de creer une carte de l'environnement
Le SLAM est l'estimation conjointe d'une carte de l'environnement et de la position de la camera dans cette carte
Necessaire des qu'un robot doit explorer un environnement totalement ou partiellement inconnu
Amelioration de l'odometrie visuelle
On sauvegarde les coordonnees des points 3D extraits et de leurs caracteristiques locales
Creation d'une carte de features 3D
3 categories principales de methodes pour l'estimation de l'etat:
Extended Kalman Filter
Particle Filter
Least Squares => Graph-based SLAM
Graph-based SLAM
Utilisation d'un graphe pour representer les variables et les relations entre ces variables
Pose Graph: contient uniquement les positions
Factor Graph: contient des facteurs reliant les differentes variables
Pose Graph:
Chaque noeud represente une pose
Les liaisons entre ces noeuds contiennent leur relation spatiale
L'optimisation essaye de trouver la position optimale d'un noeud qui minimise l'erreur introduite dans les liaisons
Quels sont les avantages ?
Meilleure estimation des coordonnees 3D des points/features