Cos'è la trasformata delle caratteristiche invariante alla scala (SIFT)?
Scopri come l'algoritmo SIFT rileva e descrive punti chiave invarianti a scala e rotazione, come funzionano le sue quattro fasi e dove viene utilizzato nella visione artificiale.
Abirami Vina16 min di lettura
Per una panoramica visiva dei concetti trattati in questo articolo, guarda il video qui sotto.
Oggi molti dei dispositivi intelligenti che utilizziamo, dai telefoni e dalle videocamere ai sistemi per la domotica, includono soluzioni di IA in grado di riconoscere volti, oggetti e persino intere scene visive. Questa capacità deriva dalla visione artificiale, un campo dell'intelligenza artificiale che consente alle macchine di comprendere e interpretare immagini e video.
Ad esempio, se scatti una foto della Torre Eiffel da qualsiasi angolazione o distanza, in genere il tuo dispositivo riesce comunque a riconoscerla grazie alla visione artificiale e a organizzarla nella cartella corretta della galleria. Anche se sembra semplice, riconoscere gli oggetti non lo è sempre. Le immagini possono apparire molto diverse a seconda delle dimensioni, dell'angolazione, della scala o dell'illuminazione, rendendo difficile per le macchine identificarle in modo coerente.
Per risolvere questo problema, i ricercatori hanno sviluppato un algoritmo di visione artificiale chiamato trasformata delle caratteristiche invariante alla scala, o SIFT. Questo algoritmo permette di rilevare gli oggetti in diverse condizioni di osservazione. Creato da David Lowe nel 1999, SIFT è stato progettato per trovare e descrivere punti chiave distintivi in un'immagine, come angoli, bordi o motivi che restano riconoscibili anche quando l'immagine viene ridimensionata, ruotata o illuminata in modo diverso.
Prima che i modelli di computer vision basati sul deep learning, come Ultralytics YOLO11, diventassero popolari, SIFT era una tecnica molto usata nella computer vision. Era un approccio standard per attività come il riconoscimento degli oggetti, che mira a identificare un elemento specifico in una foto, e l'allineamento di immagini, in cui le foto vengono allineate individuando caratteristiche visive sovrapposte.
In questo articolo daremo una rapida panoramica di SIFT: vedremo cos’è, come funziona a grandi linee e perché è importante nell’evoluzione della computer vision.
Perché l'algoritmo SIFT è fondamentale per la visione artificiale#
In un'immagine, un oggetto può apparire in molti modi diversi. Ad esempio, una tazza da caffè potrebbe essere fotografata dall'alto, di lato, alla luce intensa del sole o sotto una lampada dalla luce calda. La stessa tazza può anche apparire più grande quando è vicina alla videocamera e più piccola quando è più distante.
Tutte queste differenze rendono complesso insegnare a un computer a riconoscere un oggetto. Questa attività di visione artificiale, nota come rilevamento degli oggetti, richiede che i modelli di IA per la visione identifichino e localizzino gli oggetti con precisione, anche quando cambiano le dimensioni, l'angolazione o le condizioni di illuminazione.
Per renderlo possibile, la visione artificiale si affida a un processo chiamato estrazione o rilevamento delle caratteristiche. Invece di cercare di comprendere tutta l'immagine in una volta, un modello cerca caratteristiche visive distintive, come angoli netti, motivi unici o trame che restano riconoscibili a diverse angolazioni, scale e condizioni di illuminazione.
La trasformata delle caratteristiche invariante alla scala, o SIFT, è stata progettata proprio per questo. SIFT è un algoritmo di rilevamento e descrizione delle caratteristiche che può identificare in modo affidabile gli oggetti nelle immagini, indipendentemente da come vengono acquisiti.
Ottenere l'invarianza alla scala#
L'algoritmo SIFT ha alcune proprietà importanti che lo rendono utile per il riconoscimento degli oggetti. Una delle principali è l'invarianza alla scala. Ciò significa che SIFT può riconoscere diverse parti di un oggetto, sia che appaia grande e vicino alla videocamera, sia che appaia piccolo e lontano. Anche se l'oggetto non è completamente visibile, l'algoritmo può comunque individuare gli stessi punti chiave.
Per farlo, usa un concetto chiamato teoria dello spazio di scala. In parole semplici, l'immagine viene sfocata a livelli diversi per creare più versioni. SIFT esamina quindi queste versioni alla ricerca di motivi e dettagli che rimangono invariati, indipendentemente da come cambiano le dimensioni o la nitidezza dell'immagine.
Ad esempio, un segnale stradale fotografato da pochi metri apparirà molto più grande dello stesso segnale ripreso da lontano, ma SIFT riesce comunque a rilevare le stesse caratteristiche distintive. Questo consente di abbinare correttamente le due immagini, anche se il segnale appare a scale molto diverse.
Garantire l'invarianza alla rotazione#
Gli oggetti nelle immagini possono anche apparire ruotati, a volte persino capovolti. SIFT gestisce questa situazione grazie a una proprietà chiamata invarianza alla rotazione. Per ogni punto chiave rilevato, l'algoritmo assegna un orientamento coerente in base ai gradienti locali dell'immagine. In questo modo, lo stesso oggetto può essere riconosciuto indipendentemente dalla sua rotazione.
Puoi immaginare che ogni punto chiave sia contrassegnato da una piccola freccia che ne indica la direzione. Allineando le caratteristiche a questi orientamenti, SIFT fa sì che i punti chiave corrispondano correttamente anche quando l'oggetto è ruotato. Ad esempio, un monumento ripreso in una foto orizzontale può essere identificato correttamente anche se un'altra foto dello stesso monumento viene scattata con la videocamera inclinata.
Resistenza ad altre variazioni delle immagini#
Oltre alle dimensioni e alla rotazione, le immagini possono variare anche in altri modi, ad esempio per i cambiamenti di illuminazione. La luce su un oggetto può passare da intensa a fioca, l'angolazione della videocamera può cambiare leggermente oppure l'immagine può risultare sfocata o disturbata.
SIFT è progettato per gestire questo tipo di variazioni. Si concentra sui punti chiave distintivi e ad alto contrasto, poiché queste caratteristiche risentono meno dei cambiamenti di illuminazione o delle piccole variazioni del punto di vista. Di conseguenza, SIFT tende a essere più affidabile dei semplici metodi di rilevamento dei bordi o degli angoli, che spesso non funzionano quando le condizioni cambiano.

Fig. 1. Punti chiave SIFT estratti da (a) un'immagine piovosa e (b) dalla corrispondente immagine di input nitida. (Fonte)
Prendi il caso di un dipinto in una galleria. Lo si può riconoscere anche se viene fotografato alla luce soffusa del giorno, sotto faretti artificiali intensi o persino con una leggera sfocatura dovuta al movimento di una videocamera tenuta in mano. Nonostante queste differenze, i punti chiave restano abbastanza stabili da consentire un abbinamento accurato.
Come funziona l'algoritmo della trasformata delle caratteristiche invariante alla scala (SIFT)#
Vediamo ora come funziona l'algoritmo SIFT. Il processo si articola in quattro fasi principali: rilevamento dei punti chiave, localizzazione dei punti chiave, assegnazione dell'orientamento e descrizione dei punti chiave.
Fase 1: rilevamento degli estremi nello spazio di scala#
Il primo passaggio consiste nel trovare e rilevare i punti chiave, ovvero punti distintivi dell’immagine, come angoli o brusche variazioni della texture, che aiutano a tracciare o riconoscere un oggetto.
Per assicurarsi che questi potenziali punti chiave possano essere riconosciuti a qualsiasi dimensione, SIFT crea quello che viene chiamato spazio di scala. Si tratta di una raccolta di immagini ottenute sfocando gradualmente l'immagine originale con un filtro gaussiano, una tecnica di attenuazione, e raggruppando i risultati in livelli chiamati ottave. Ogni ottava contiene la stessa immagine con livelli di sfocatura crescenti, mentre l'ottava successiva contiene una versione più piccola dell'immagine.
Sottraendo un'immagine sfocata da un'altra, SIFT calcola la differenza di gaussiane (DoG), che evidenzia le aree in cui la luminosità cambia bruscamente. Queste aree vengono selezionate come punti chiave candidati, perché restano coerenti quando si ingrandisce o si riduce l'immagine.

Fig. 2. DoG evidenzia le strutture chiave sottraendo immagini sfocate a livelli diversi. (Fonte)
Fase 2: localizzazione dei punti chiave#
Non tutti i punti chiave candidati sono utili, perché alcuni possono essere deboli o instabili. Per perfezionarli, SIFT utilizza un metodo matematico chiamato sviluppo in serie di Taylor, che aiuta a stimare con maggiore precisione la posizione esatta di un punto chiave.
Durante questa fase, vengono eliminati i punti inaffidabili. Si scartano i punti chiave a basso contrasto, che si confondono con ciò che li circonda, e quelli che si trovano direttamente sui bordi, perché possono spostarsi troppo facilmente. Questo filtraggio lascia soltanto i punti chiave più stabili e distintivi.
Fase 3: assegnazione dell'orientamento#
Una volta individuati i punti chiave stabili, SIFT li rende invarianti alla rotazione, così possono essere abbinati anche se l'immagine è girata di lato o capovolta. Per farlo, SIFT analizza le variazioni di luminosità attorno a ogni punto chiave, dette gradienti. I gradienti mostrano sia la direzione sia l'intensità delle variazioni dell'intensità dei pixel e, nel loro insieme, descrivono la struttura locale attorno al punto.
Per ogni punto chiave, SIFT prende in considerazione i gradienti in una regione circostante e li raggruppa in un istogramma degli orientamenti. Il picco più alto dell'istogramma indica la direzione dominante delle variazioni di intensità, che viene assegnata come orientamento del punto chiave. Per costruire questo istogramma vengono utilizzati sia gli orientamenti dei gradienti, che mostrano dove cambia l'intensità, sia i moduli dei gradienti, che indicano l'entità di tale variazione.
Se ci sono altri picchi di intensità quasi equivalente, SIFT assegna più orientamenti allo stesso punto chiave. In questo modo si evita di perdere caratteristiche importanti quando gli oggetti appaiono da angolazioni insolite. Allineando ogni punto chiave al suo orientamento, SIFT fa sì che i descrittori generati nella fase successiva restino coerenti.
In altre parole, anche se due immagini dello stesso oggetto sono ruotate in modo diverso, i punti chiave allineati secondo l'orientamento corrisponderanno comunque correttamente. È questa fase a conferire a SIFT la sua notevole capacità di gestire le rotazioni, rendendolo molto più robusto dei metodi precedenti di rilevamento delle caratteristiche.

Fig. 3. Approfondimento sulla fase 3 dell'algoritmo SIFT (Fonte)
Fase 4: descrittore dei punti chiave#
L'ultima fase di SIFT consiste nel creare una descrizione di ogni punto chiave, così da poterlo riconoscere in altre immagini.
SIFT lo fa esaminando una piccola porzione quadrata attorno a ogni punto chiave, di circa 16 × 16 pixel. Per prima cosa, questa porzione viene allineata all'orientamento del punto chiave, in modo che la rotazione non influisca su di essa. Viene poi suddivisa in una griglia di 4 × 4 quadrati più piccoli.
In ogni quadrato più piccolo, SIFT misura le variazioni di luminosità nelle diverse direzioni. Queste variazioni vengono memorizzate in un istogramma, simile a un grafico che mostra quali direzioni sono più frequenti. Ogni quadrato ha il proprio istogramma e i 16 quadrati ne producono 16 in tutto.
Infine, questi istogrammi vengono combinati in un unico elenco di numeri, 128 in totale. Questo elenco è chiamato vettore delle caratteristiche e funziona come un'impronta digitale del punto chiave. Poiché acquisisce la trama e la struttura peculiari attorno al punto, questa impronta consente di abbinare lo stesso punto chiave in immagini diverse, anche se sono state ridimensionate, ruotate o illuminate in modo differente.

Fig. 4. Panoramica del funzionamento di SIFT (Fonte)
Principali applicazioni di SIFT nella visione artificiale#
Ora che abbiamo capito meglio che cos'è SIFT e come funziona, vediamo alcune sue applicazioni concrete nella visione artificiale.
Riconoscimento e rilevamento degli oggetti#
Uno dei principali impieghi di SIFT è il riconoscimento e il rilevamento degli oggetti. Consiste nell'insegnare a un computer a riconoscere e localizzare oggetti nelle immagini, anche quando non appaiono sempre allo stesso modo. Ad esempio, SIFT può rilevare un libro sia che si trovi vicino alla videocamera, più lontano o ruotato.
Questo è possibile perché SIFT estrae punti chiave altamente distintivi e stabili. Quando questi punti chiave vengono associati ai descrittori SIFT, formano caratteristiche SIFT, che consentono di abbinare in modo affidabile lo stesso oggetto in immagini diverse. Queste caratteristiche acquisiscono dettagli unici dell'oggetto che restano coerenti, permettendo di abbinare le caratteristiche tra immagini in modo affidabile anche se cambiano le dimensioni, la posizione o l'orientamento dell'oggetto.

Fig. 5. Uso di SIFT per riconoscere la copertina di un libro in una nuova immagine scattata con un orientamento diverso rispetto all'originale. Immagine dell'autore.
Prima che il deep learning diventasse popolare, SIFT era uno dei metodi più affidabili per realizzare sistemi di riconoscimento degli oggetti. Era ampiamente utilizzato nella ricerca e in applicazioni che richiedevano di abbinare oggetti in grandi raccolte di immagini, anche se spesso necessitava di notevoli risorse di calcolo.
Composizione di immagini e creazione di panorami#
SIFT può essere utilizzato anche per creare immagini panoramiche, ovvero foto ampie ottenute unendo più immagini. Con SIFT si individuano i punti chiave distintivi nelle aree sovrapposte delle diverse immagini e poi li si abbina tra loro. Questi abbinamenti fungono da punti di riferimento e guidano il processo di composizione, indicando come allineare le foto.
Una volta completato l'abbinamento, si possono utilizzare algoritmi di composizione per calcolare l'allineamento corretto, spesso tramite trasformazioni geometriche che proiettano un'immagine sull'altra. Le immagini vengono quindi fuse in modo che le giunzioni scompaiano. Il risultato finale è un panorama uniforme che sembra un'unica foto ampia, anche se è stato creato a partire da più scatti.
Ricostruzione 3D e robotica#
Un'altra applicazione interessante di SIFT è la ricostruzione 3D, in cui più foto 2D scattate da angolazioni diverse vengono combinate per creare un modello tridimensionale. SIFT individua e abbina gli stessi punti nelle diverse immagini.
Una volta effettuati gli abbinamenti, è possibile stimare le posizioni 3D di quei punti tramite triangolazione, un metodo che calcola la profondità a partire da diversi punti di vista. Questo processo fa parte della ricostruzione della struttura dal movimento (SfM), una tecnica che utilizza più immagini sovrapposte per stimare la forma 3D di una scena e le posizioni delle videocamere che hanno scattato le foto.
Il risultato è solitamente una nuvola di punti 3D, ovvero un insieme di punti nello spazio che delinea l'oggetto o l'ambiente. SIFT è stato uno dei primi strumenti a rendere pratica la ricostruzione della struttura dal movimento. Sebbene oggi le tecniche più recenti siano più veloci e diffuse, SIFT continua a essere utilizzato quando la precisione è più importante della velocità.
SIFT è stato usato anche nella robotica, in particolare nello SLAM visivo (localizzazione e mappatura simultanee). Lo SLAM consente a un robot di determinare la propria posizione mentre crea contemporaneamente una mappa dell’ambiente circostante.
I punti chiave SIFT fungono da punti di riferimento affidabili che un robot può riconoscere tra i fotogrammi, anche quando cambiano l'illuminazione o gli angoli di ripresa. Seguendo questi punti di riferimento, il robot può stimare la propria posizione e aggiornare la mappa in tempo reale. Oggi in robotica si usano più spesso rilevatori di caratteristiche più veloci, ma SIFT ha svolto un ruolo importante nei primi sistemi SLAM ed è ancora fondamentale nei casi in cui la robustezza è più importante della velocità.
Vantaggi e considerazioni su SIFT#
Sebbene l'algoritmo SIFT sia stato ampiamente utilizzato nella visione artificiale e sia noto come metodo affidabile, comporta anche alcuni compromessi. Per questo è importante valutarne i pro e i contro prima di decidere se sia adatto a un progetto. Vediamo ora i suoi principali punti di forza e limiti.
Principali vantaggi di SIFT#
Ecco alcuni vantaggi dell'uso dell'algoritmo SIFT:
- Invarianza a scala e rotazione: SIFT fornisce punti chiave invarianti alla scala che rimangono relativamente stabili quando gli oggetti appaiono con dimensioni o orientamenti diversi; questo rappresenta un notevole passo avanti rispetto ai precedenti rilevatori di caratteristiche.
- Robustezza moderata alle variazioni di illuminazione e del punto di vista: SIFT è in grado di gestire variazioni di luminosità e contrasto o piccoli cambiamenti del punto di vista, sebbene sia meno affidabile in condizioni più estreme.
- Capacità di operare in scene affollate o parzialmente occluse: poiché SIFT rileva molti punti chiave locali, spesso riesce comunque a identificare un oggetto anche se una parte è coperta o lo sfondo è complesso.
Considerazioni sulle prestazioni e alternative#
Ecco alcuni svantaggi dell'uso dell'algoritmo SIFT:
- Elevato costo computazionale: il processo in più fasi e i descrittori dettagliati di SIFT lo rendono più lento e dispendioso in termini di risorse rispetto ai rilevatori di caratteristiche moderni. Per migliorarlo, i ricercatori hanno sviluppato l'algoritmo SURF (caratteristiche robuste accelerate), che usa calcoli più rapidi per individuare e descrivere le caratteristiche. In alcuni casi SURF è meno preciso di SIFT, ma è molto più veloce, il che lo rende più pratico per le attività in cui il tempo è un fattore critico.
- Non ideale per l'uso in tempo reale: a causa del suo costo computazionale, SIFT fatica nelle applicazioni in cui la velocità è fondamentale, come il tracciamento in tempo reale o la robotica mobile.
- Versatilità limitata: sebbene sia robusto in molti casi, SIFT è meno efficace in presenza di variazioni estreme dell'illuminazione, grandi cambiamenti del punto di vista o scene altamente dinamiche, contesti in cui gli algoritmi più recenti o i metodi di machine learning offrono prestazioni migliori.
Esaminando i pro e i contro di SIFT, potresti notare che molti dei suoi limiti hanno aperto la strada a tecniche più avanzate. In particolare, le reti neurali convoluzionali (CNN) sono emerse come una potente alternativa.
Una CNN è un tipo di modello di deep learning ispirato al funzionamento del sistema visivo umano. Elabora un'immagine a livelli, partendo da schemi semplici come bordi e texture e arrivando gradualmente a forme e oggetti più complessi. A differenza delle regole per le caratteristiche definite manualmente da SIFT, le CNN apprendono le rappresentazioni delle caratteristiche direttamente dai dati.
Grazie a questo apprendimento basato sui dati, le CNN possono superare SIFT nelle attività di abbinamento dei descrittori e di classificazione. Le CNN sono inoltre più espressive e robuste e si adattano meglio alla variabilità e alla complessità dei dati visivi.
Per esempio, i modelli basati su CNN hanno ottenuto risultati rivoluzionari su ImageNet, un enorme dataset di riferimento contenente milioni di immagini etichettate in migliaia di categorie. Progettato per verificare quanto bene gli algoritmi riescano a riconoscere e classificare gli oggetti, ImageNet mette in evidenza il divario tra i metodi più datati basati sulle caratteristiche e il deep learning.
Le CNN hanno rapidamente superato SIFT imparando rappresentazioni molto più ricche e flessibili, che consentono loro di riconoscere gli oggetti con illuminazione variabile, da diversi punti di vista e persino quando sono parzialmente nascosti: scenari in cui SIFT spesso incontra difficoltà.
Punti chiave#
L'algoritmo Scale Invariant Feature Transform occupa un posto importante nella storia della visione artificiale. Ha fornito un metodo affidabile per rilevare le caratteristiche anche in ambienti mutevoli e ha influenzato molti dei metodi utilizzati oggi.
Anche se le tecniche più recenti sono più rapide ed efficienti, SIFT ha gettato le basi per il loro sviluppo. SIFT mostra da dove è iniziato il progresso odierno nella computer vision e quanto si siano evoluti i moderni sistemi di IA.
Unisciti alla nostra community globale e visita il nostro repository GitHub per saperne di più sulla visione artificiale. Esplora le nostre pagine dedicate alle soluzioni per scoprire innovazioni come l'AI in agricoltura e la visione artificiale nel commercio al dettaglio. Scopri le nostre opzioni di licenza e inizia a creare il tuo modello di visione artificiale.
Scritto da
Commenti
Fai una domanda, condividi i tuoi risultati o aiuta qualcun altro.










