107 views
--- title: INFO911 (6) Détection de caractéristiques type: slide slideOptions: transition: slide progress: true slideNumber: true --- # Détection de caractéristiques - feature detection ## (Traitement et Analyse d'Image 6) > > [name=Jacques-Olivier Lachaud][time=Decembre 2020][color=#907bf7] Laboratoire de Mathématiques, Université Savoie Mont Blanc > (Les images peuvent être soumises à des droits d'auteur. Elles sont utilisées ici exclusivement dans un but pédagogique) ###### tags: `info911` Retour à [INFO911 (Main) Traitement et analyse d'image](https://codimd.math.cnrs.fr/s/UE_B59gMy) --- # Détection de caractéristiques / features ==edge detection== lieux de forts contrastes, e.g. méthode de Canny ==corner detection== lieux d'intersection de deux edges, e.g. Harris ==blob detection== lieux homogènes d'une certaine taille, e.g. LoG, DoG ==ridge detection== crêtes ou vallées, e.g. méthodes différentielles ==geometry detection== courbure locale et contraste, e.g. structure tensor ==stable feature detection== points d'intérêt stable par transformations simples, SIFT, SURF **Détection**: trouver les lieux **Description**: vecteurs de caractéristiques pour les quantifier/comparer --- ## Edge detection **detection**: voir méthode de Canny **description**: Pour chaque pixel $[i,j]$ reconnu par Canny, le vecteur $(S_x[i,j],S_y[i,j])$ donne la direction et la force du contraste --- ## Corner detection **detection**: méthode de Harris, ou Shi-Tomasi Calcul du tenseur des structures: $I_x = I \ast S_x$, $I_y = I \ast S_y$, opérateur moyenneur $M_\sigma$ $$ A := \left\lbrack\begin{array}{cc} I_x^2 & I_x I_y \\ I_x I_y & I_y^2 \end{array}\right\rbrack \ast M_\sigma $$ Les valeurs propres sont grandes sur les coins ! On calcule $R = \det(A) - \kappa \mathrm{trace}(A)$, avec $0.04 \le \kappa \le 0.15$ Si $R[i,j] >$ seuil alors c'est un coin. **description** le tenseur $A[i,j]$ est caractéristique du coin (intensité+courbure) --- ## Corner detection (Harris) ![](https://codimd.math.cnrs.fr/uploads/upload_83097f79c4f51f6178e957a542945b30.png) --- ## Blob detection (LoG) **détection** on peut utiliser le filtrage par Laplacien de Gaussienne (LoG) Soit $t$ un paramètre d'échelle, fonction gaussienne $g(x,y,t):=\frac{1}{2\pi t}e^{-\frac{x^2+y^2}{2t}}$ Laplacien d'échelle $t$, $L_t = g_{xx} + g_{yy}$ Alors $I \ast L_t$ donne une réponse positive forte sur les zones sombres de taille $\sqrt{2t}$ **détection de tous les blobs** par normalisation $I \ast tL_t$ donne une réponse positive forte sur les zones sombres **description** On garde position $[i,j]$, intensité $I[i,j]$ et échelle $t$. --- ## Geometry detection **detection**: analyse du tenseur des structures [2006] tenseur des structures: $I_x = I \ast S_x$, $I_y = I \ast S_y$, opérateur moyenneur $M_\sigma$ $$ A := \left\lbrack\begin{array}{cc} I_x^2 & I_x I_y \\ I_x I_y & I_y^2 \end{array}\right\rbrack \ast M_\sigma $$ On montre que la courbure du contour $\kappa$ se déduit des valeurs propres $\lambda_1,\lambda_2$: Si $G=\sqrt{I_x^2 + I_y^2}$, alors $\lambda_1 = G^2$, $\lambda_2=\sigma^2 G^2 \kappa^2$, => ==courbure== $\kappa = \sqrt{\frac{\lambda_2}{\lambda_1 \sigma^2}}$ **description**: intensité $\sqrt{\lambda_1}$, direction $v_1$ premier vecteur propre, $\kappa$ courbure. --- ## Détection de features stables et comparables ==Stabilité== Le *feature* reste détecté pour des variations (limitées) de $I$ et sa *description* conserve des valeurs proches SIFT, SURF, GLOH, HOG :::warning Quelques justifications théoriques, mais beaucoup de choix d'implémentation et de simplification pour les rendre calculables en temps raisonnable. ::: --- ## SIFT (Scale Invariant Feature Transform) **detection** Repère les blobs clair/foncé à différentes échelles 1. Utilise les différences de Gaussiennes $\ast (g_{(k+1)\sigma} - g_{k\sigma})$ pour plusieurs octaves $k$ 2. Repère les maxima/minima à une échelle, mais aussi avec échelles voisines 3. Trouve le point exact avec une approximation de Taylor local 4. Elimine les points sur les contours forts mais mal positionnés par calcul des courbures sur la hessienne **description** Position; orientation et force calculé à l'échelle trouvée Histogramme polaire en 36 bins, avec accumulation dépendant de la distance Calcul de 128 caractéristiques à partir de masques. --- ## SIFT (Scale Invariant Feature Transform) ![sift-result](https://codimd.math.cnrs.fr/uploads/upload_af55aa6981a05c826dac51198764e1e9.jpg =x250) --- ## Conclusion - *edge/corner/blob/geometry* features - des fondements mathématiques mais - pas toujours stable - peu comparables (par exemple en stéréovision) - *SIFT descriptors* et variantes - un peu de fondements mathématiques (scale space) - bcp de paramètres et de "cuisine" - plus stable - mais features peu compréhensibles/interprétables - virage vers l'apprentissage automatique