Home VPOA: Detection et localisation
Post
Cancel

VPOA: Detection et localisation

Lien de la note Hackmd

Introduction

Qu’est-ce que la vision ?

  • Percevoir le monde
    • Compose d’objets
    • Structure en 3D
    • Efficacement interprete par l’Homme
  • Receuil d’information
    • Ensemble de points
    • Information sur la lumiere
    • Quantite et contenu spectral
  • Representation du monde reel
    • Les objets n’existent pas sur la retine
    • Processus visuel d’interpretation

Vision humaine

  • Extremement complexe
  • Active de nombreuses zones du cerveau
  • Possede des capacites nombreuses et variees

Vision par ordinateur

  • Bio inspiree ou non
  • Production d’un modele algorithmique fonctionnellement similaire aux capacites du cerveau humain
  • Reprosudit seulement un sous-ensemble de capacites

Quelques termes

TODO

Processus d’integration dans un systeme

Objectifs de la seance

  • Trouver/extraire dans l’image des informations pertinentes pour TODO

Detection Deep-learning

On a entraine le modele a detecter des voitures mais ca ne reconnais que l’avant des camions

Detection et tracking

Geometrie projective

Coordonnees homogenes

Passer des coordonnees cartesiennes aux coordonnees homogenes:

\[\begin{bmatrix} x\\ y \end{bmatrix} \Rightarrow \begin{bmatrix} x\\ y\\ 1 \end{bmatrix}\]

Passer des coordonnees homogenes aux coordonnees cartesiennes:

\[\begin{bmatrix} u\\ v\\ w \end{bmatrix}= \begin{bmatrix} u / w\\ v / w\\ 1 \end{bmatrix} \Rightarrow \begin{bmatrix} u / w\\ v /w \end{bmatrix} = \begin{bmatrix} x\\ y \end{bmatrix}\]

Propriete homogene: $\bar x\sim\lambda \bar x, \forall \lambda\in\mathbb R, \lambda \neq =0$

Point a l’infini:

\[\bar x_{inf} = \begin{bmatrix}x \\ y \\0 \end{bmatrix}\]

Modele du plan projectif

Intrepretation geometrique de l’homographie

Homographies

Estimation d’homographie

Estimation par Direct Linear Transform

  • Necessite au moins 4 points pour obtenir une solution exacte (2 equations par point et 8 inconnues)
  • Etant donne $n\ge 4$, correspondances de points 2D, determiner $H$ tel que $\bar x_i’=H\bar x_i$

Algorithme:

  • Pour chaque correspondance $\bar x_i\leftrightarrow \bar x_i’$ pour claculer $A_i$
  • Assembler les matrices $A_i$ en une matrice $9\times 9$: $A$
  • Calculer le SVD de $A$: $U\Sigma V$
  • Solution pour $h$: derniere colonne de $V$
  • Determiner $H$ a partir de $h$

Homographie et plan 3D

Le passage de n’importe quel plan vers n’importe quel autre plan (y compris le plan image) est une homographie

Extraction de caracteristiques locales

Representation d’une image

$I(x, y)$: valeur d’un pixel

  • Dans $\mathbb R$ en monochrome
  • Dans $\mathbb R^3$ en couleurs

Variations

  • De luminosite globale: $I(x,y)\to I(x,y)+\alpha$
  • De contraste: $I(x,y)\to\lambda I(x,y)$
  • Par translation

Comparaison de points

Trouver le point le plus similaire

Stereo-vision: on suppose que les points similaires sont sur la meme ligne

Comment trouver des points facilement identifiables ?

Gradients Contours Etc

Kernel

  • Permet d’appliquer une operation a l’image
  • Convolution:

Gradient

En 1D:

En 2D: Filtre de Sobel

Laplacien

Detection de contours

Detection de coins

Detecteur de Harris:

Changement d’echelle

Comment reconnaitre un point apres un changement d’echelle ?

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

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 $4\times 4$ 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 $(X’, Y’, Z’)$ par rapport a la scene
  • Si on derive les equations de perspective on a donc:

Interpretation du flux

Translation pure selon $X$ (ou $Y$)

Translation pure selon $Z$:

Cas general:

  • Donne la direction du deplacement
  • Mouvement $(X’, Y’, Z’)$
  • Soit $[X_0, Y_0, Z_0]^T$ un point de la scene, apres un temps $t$, il est projete sur l’image au point $[u_t, v_t]^t$ avec:

Temps avant collision:

  • Mesure de la taille d’‘un element $\lambda = f\frac{\Lambda}{z}$

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 $N\gt 2$ images/cameras

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

Elimination du facteur d’echelle:

  • $\bar x_{ij} + \hat e_{x_{ij}} = \frac{P_{1:2{ij}}\bar X_i}{P{3_{ij}}\bar X_i}$
  • Resolution par SVD

Odometrie Visuelle

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

Pseudo code:

1
2
3
4
5
6
7
8
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

  • 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
  • Fermeture de boucles (Loop-closure)
  • Plus robuste face aux rotations pures

This post is licensed under CC BY 4.0 by the author.