SIFT (Scale-Invariant Feature Transform)
SIFT, acronyme de Scale-Invariant Feature Transform, est un algorithme de vision par ordinateur largement reconnu et influent, conçu pour détecter et décrire des caractéristiques locales distinctives dans des images numériques. Sa fonction principale est d’identifier des points d’intérêt (keypoints) dans une image et de générer pour chacun une description (descripteur) qui est robuste aux variations d’échelle, de rotation, d’illumination et, dans une certaine mesure, aux changements de point de vue et au bruit. Ces caractéristiques invariantes permettent une correspondance fiable entre différentes vues d’un objet ou d’une scène, ce qui est fondamental pour de nombreuses applications en vision par ordinateur.
Les concepts fondamentaux de SIFT reposent sur une approche en plusieurs étapes pour atteindre l’invariance souhaitée. La première étape majeure est la détection des extrema dans l’espace des échelles (scale-space). Cela est réalisé en convoluant l’image avec des filtres Gaussiens à différentes échelles (variances), puis en calculant la Différence de Gaussiennes (DoG) entre des images floutées adjacentes. Les points d’intérêt potentiels sont identifiés comme étant les maxima et minima locaux dans cette pyramide DoG, à la fois spatialement et à travers les différentes échelles. Cette approche garantit que les points détectés sont stables sur une plage de tailles d’objets ou de distances de caméra (invariance d’échelle).
Une fois les points candidats détectés, une étape de localisation précise affine leur position, leur échelle et leur contraste. Les points à faible contraste ou ceux situés sur des arêtes (qui sont mal localisés le long de l’arête) sont éliminés. Cela est souvent réalisé en utilisant une interpolation quadratique pour trouver la position sub-pixel de l’extremum et en analysant la matrice de Hessian pour rejeter les réponses sur les arêtes. Seuls les points stables et bien localisés sont conservés.
Pour atteindre l’invariance à la rotation, SIFT attribue une ou plusieurs orientations canoniques à chaque point d’intérêt. Ceci est basé sur les directions locales du gradient de l’image autour du point d’intérêt. Un histogramme des orientations des gradients, pondéré par leur magnitude et une fenêtre Gaussienne centrée sur le point d’intérêt, est calculé. Le pic (ou les pics significatifs) de cet histogramme définit l’orientation (ou les orientations) du point d’intérêt. Toutes les opérations ultérieures sont effectuées par rapport à cette orientation, conférant ainsi l’invariance à la rotation de l’image.
La dernière étape clé est la génération du descripteur SIFT. Autour de chaque point d’intérêt, en utilisant l’échelle et l’orientation déterminées, une région d’image normalisée est considérée. Cette région est divisée en une grille (typiquement 4×4 sous-régions). Dans chaque sous-région, un histogramme des orientations des gradients (généralement 8 directions) est calculé. La concaténation de tous ces histogrammes forme le descripteur SIFT final, un vecteur de caractéristiques de haute dimension (typiquement 4x4x8 = 128 dimensions). Ce vecteur est normalisé pour réduire les effets des changements d’illumination (invariance à l’illumination affine). Ce descripteur capture de manière compacte et distinctive l’apparence locale autour du point d’intérêt.
L’importance de SIFT dans le domaine de la vision par ordinateur ne peut être sous-estimée. Avant son introduction, de nombreux algorithmes de détection de caractéristiques étaient sensibles aux changements d’échelle ou de rotation, limitant leur applicabilité. SIFT a fourni une solution robuste et fiable qui a révolutionné des tâches telles que la reconnaissance d’objets, la mise en correspondance d’images et la reconstruction 3D. Sa capacité à trouver des correspondances fiables entre des images prises sous différentes conditions a ouvert la voie à des avancées significatives et est devenue une référence pour évaluer de nouvelles méthodes de détection et de description de caractéristiques.
Les applications pratiques de SIFT sont nombreuses et variées. Un exemple courant est la création de panoramas (image stitching), où SIFT est utilisé pour trouver des points correspondants dans des images qui se chevauchent, permettant ainsi de les aligner et de les fusionner de manière transparente. Dans la reconnaissance d’objets, SIFT permet d’identifier des objets spécifiques dans une scène encombrée, même s’ils sont partiellement occultés, tournés ou vus sous un angle différent. Il est également utilisé en robotique pour la localisation et la cartographie (SLAM – Simultaneous Localization and Mapping), où le robot utilise des caractéristiques SIFT pour reconnaître des lieux et construire une carte de son environnement. D’autres applications incluent la réalité augmentée, le suivi d’objets dans des vidéos, la recherche d’images par le contenu (Content-Based Image Retrieval – CBIR) et la reconstruction de modèles 3D à partir de multiples photographies.
Bien que SIFT soit un algorithme spécifique, le terme est parfois utilisé de manière plus générale pour désigner des approches similaires basées sur des caractéristiques locales invariantes. Des variations et des alternatives à SIFT ont été développées au fil du temps, cherchant souvent à améliorer la vitesse, à réduire la dimensionnalité du descripteur ou à obtenir une invariance à d’autres types de transformations (comme les transformations affines). Parmi les plus notables figurent SURF (Speeded Up Robust Features), qui utilise des approximations rapides basées sur les images intégrales, ORB (Oriented FAST and Rotated BRIEF), qui combine un détecteur rapide avec un descripteur binaire efficace, et ASIFT (Affine-SIFT), qui améliore la robustesse aux fortes variations de point de vue en simulant différentes distorsions affines.
Pour une compréhension holistique, il est utile de connaître les concepts liés à SIFT. Il appartient à la catégorie plus large des algorithmes de détection et de description de caractéristiques locales (local feature detectors/descriptors). Les « points d’intérêt » ou « keypoints » sont les emplacements détectés. Le « descripteur » est le vecteur qui représente l’apparence locale. SIFT contraste avec les approches de caractéristiques globales (global features) qui décrivent l’image entière. Des termes comme « mise en correspondance de caractéristiques » (feature matching) et « espace des échelles » (scale-space theory) sont fondamentaux pour comprendre son fonctionnement. Le modèle « Bag-of-Visual-Words » (BoVW) est une technique populaire qui utilise souvent des descripteurs SIFT quantifiés pour la classification d’images. Il n’y a pas de synonymes directs parfaits, mais « caractéristiques locales invariantes » capture une partie de l’idée. Les antonymes pourraient être considérés comme des « caractéristiques globales » ou des « caractéristiques non invariantes ».
SIFT a été proposé par David G. Lowe. Les idées fondamentales ont été présentées pour la première fois lors de l’International Conference on Computer Vision (ICCV) en 1999, et l’algorithme complet et détaillé a été publié dans un article très influent de l’International Journal of Computer Vision (IJCV) en 2004. Cette publication est l’une des plus citées dans le domaine de la vision par ordinateur, soulignant son impact historique.
Les avantages de SIFT résident principalement dans sa grande distinctivité et sa robustesse éprouvée aux changements d’échelle, de rotation, d’illumination et aux variations modérées de point de vue. Les descripteurs SIFT sont très informatifs, ce qui conduit à des taux de mise en correspondance précis. Cependant, SIFT présente aussi des inconvénients. Il est relativement coûteux en termes de calcul, en particulier l’étape de détection dans l’espace des échelles, ce qui peut le rendre moins adapté aux applications en temps réel sur des plateformes aux ressources limitées par rapport à des alternatives plus rapides comme ORB. La dimensionnalité élevée du descripteur (128 flottants) peut également entraîner des besoins importants en mémoire et en temps de calcul pour la mise en correspondance, surtout avec de grands ensembles de caractéristiques. De plus, pendant de nombreuses années, l’algorithme SIFT a été breveté (le brevet a depuis expiré), ce qui a limité son utilisation dans certaines applications commerciales et a stimulé la recherche d’alternatives libres de droits. Enfin, bien que robuste, sa performance peut se dégrader sous des transformations affines très fortes ou des déformations non rigides importantes.