Yolo Vision Shenzhen
Shenzhen
Iscriviti ora

Cos'è la trasformata Scale-Invariant Feature Transform (SIFT)?

Abirami Vina

6 minuti di lettura

9 settembre 2025

Esplora l'algoritmo SIFT. Scopri cos'è SIFT e le sue potenti funzionalità per la computer vision indipendente dalla scala. Migliora l'elaborazione delle immagini.

Oggigiorno, molti dei dispositivi intelligenti che utilizziamo, dai telefoni e dalle fotocamere ai sistemi domotici intelligenti, sono dotati di soluzioni di IA in grado di riconoscere volti, oggetti e persino intere scene visive. Questa capacità deriva dalla computer vision, un campo dell'intelligenza artificiale che consente alle macchine di comprendere e interpretare immagini e video.

Ad esempio, se si scatta una foto della Torre Eiffel da qualsiasi angolazione o distanza, il dispositivo in genere è in grado di riconoscerla utilizzando la computer vision e di organizzarla nella cartella corretta nella galleria. Anche se sembra semplice, riconoscere gli oggetti non è sempre facile. Le immagini possono apparire molto diverse a seconda delle dimensioni, dell'angolazione, della scala o dell'illuminazione, il che rende difficile per le macchine identificarle in modo coerente. 

Per aiutare a risolvere questo problema, i ricercatori hanno sviluppato un algoritmo di computer vision chiamato Scale Invariant Feature Transform, o SIFT. Questo algoritmo consente di rilevare oggetti in diverse condizioni di visualizzazione. Creato da David Lowe nel 1999, SIFT è stato progettato per trovare e descrivere punti chiave unici in un'immagine, come angoli, bordi o modelli che rimangono 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 ampiamente utilizzata nella computer vision. Era un approccio standard per attività come il riconoscimento degli oggetti, dove l'obiettivo è identificare un elemento specifico in una foto, e il matching delle immagini, dove le foto vengono allineate trovando caratteristiche sovrapposte dell'immagine.

In questo articolo esploreremo SIFT con una rapida panoramica di cosa è, come funziona ad alto livello e perché è importante nell'evoluzione della computer vision. Iniziamo!

Perché l'algoritmo SIFT è essenziale per la computer vision?

In un'immagine, un oggetto può apparire in molti modi diversi. Ad esempio, una tazza di caffè potrebbe essere fotografata dall'alto, di lato, alla luce del sole o sotto una lampada calda. La stessa tazza può anche apparire più grande quando è vicina alla fotocamera e più piccola quando è più lontana.

Tutte queste differenze rendono complicato insegnare a un computer a riconoscere un oggetto. Questo compito di computer vision, noto come object detection, richiede che i modelli di Vision AI identifichino e localizzino gli oggetti in modo accurato, anche quando le loro dimensioni, l'angolazione o le condizioni di illuminazione cambiano.

Per rendere ciò possibile, la computer vision si basa su un processo chiamato estrazione di caratteristiche o rilevamento. Invece di cercare di comprendere l'intera immagine contemporaneamente, un modello cerca caratteristiche distintive dell'immagine come angoli acuti, modelli unici o texture che rimangono riconoscibili attraverso angolazioni, scale e condizioni di illuminazione.

Nello specifico, questo è ciò per cui è stato progettato il Scale Invariant Feature Transform, o SIFT. SIFT è un algoritmo di rilevamento e descrizione delle caratteristiche che può identificare in modo affidabile gli oggetti nelle immagini, indipendentemente da come vengono acquisite.

Ottenere l'invarianza di scala

L'algoritmo SIFT ha alcune proprietà importanti che lo rendono utile per il riconoscimento degli oggetti. Una delle proprietà chiave è chiamata invarianza di scala. Ciò significa che SIFT può riconoscere varie parti di un oggetto, sia che appaia grande e vicino alla fotocamera, sia che appaia piccolo e lontano. Anche se l'oggetto non è completamente visibile, l'algoritmo può comunque individuare gli stessi punti chiave.

Lo fa usando un concetto chiamato teoria dello spazio di scala. In parole semplici, l'immagine viene sfocata a diversi livelli per creare più versioni. SIFT esamina quindi queste versioni per trovare modelli e dettagli che rimangono gli stessi, indipendentemente da come l'immagine cambia in dimensioni o nitidezza. 

Ad esempio, un segnale stradale fotografato da pochi metri di distanza apparirà molto più grande dello stesso segnale catturato a distanza, ma SIFT può comunque rilevare le stesse caratteristiche distintive. Ciò rende possibile 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 anche capovolti. SIFT gestisce questo aspetto attraverso una proprietà chiamata invarianza alla rotazione. Per ogni punto chiave che rileva, l'algoritmo assegna un orientamento coerente basato sui gradienti dell'immagine locale. In questo modo, lo stesso oggetto può essere riconosciuto indipendentemente da come è ruotato.

Puoi immaginarlo come contrassegnare ogni keypoint con una piccola freccia che mostra la direzione verso cui è rivolto. Allineando le caratteristiche a questi orientamenti, SIFT assicura che i keypoint corrispondano correttamente anche quando l'oggetto viene ruotato. Ad esempio, un punto di riferimento catturato in una foto di un paesaggio può comunque essere identificato correttamente anche se un'altra foto viene scattata con la fotocamera inclinata.

Resilienza ad altre variazioni dell'immagine

Oltre alle dimensioni e alla rotazione, le immagini possono anche cambiare in altri modi, come le variazioni di illuminazione. L'illuminazione di un oggetto potrebbe passare da luminosa a fioca, l'angolazione della telecamera potrebbe spostarsi leggermente oppure l'immagine potrebbe essere sfocata o rumorosa.

SIFT è progettato per gestire questi tipi di variazioni. Lo fa concentrandosi su punti chiave distintivi e ad alto contrasto, poiché queste caratteristiche sono meno influenzate dai cambiamenti di illuminazione o da piccoli spostamenti del punto di vista. Di conseguenza, SIFT tende ad essere più affidabile dei semplici metodi di rilevamento di bordi o angoli, che spesso falliscono quando le condizioni cambiano.

Fig. 1. Punti chiave SIFT estratti da (a) un'immagine piovosa e (b) la sua corrispondente immagine di input pulita. (Fonte)

Considera un dipinto in una galleria. Può essere riconosciuto sia se fotografato alla luce del giorno soffusa, sotto luci artificiali intense o anche con una leggera sfocatura dovuta al movimento di una fotocamera a mano. I keypoint rimangono sufficientemente stabili per un matching accurato nonostante queste differenze.

Come funziona l'algoritmo Scale-Invariant Feature Transform (SIFT)

Successivamente, diamo un'occhiata a come funziona l'algoritmo SIFT. Questo processo può essere suddiviso in quattro fasi principali: rilevamento dei punti chiave, localizzazione dei punti chiave, assegnazione dell'orientamento e descrizione dei punti chiave.

Passaggio 1: Rilevamento degli estremi nello spazio di scala

Il primo passo è trovare e rilevare i keypoint, che sono punti distintivi nell'immagine, come angoli o bruschi cambiamenti nella texture, che aiutano a tracciare o riconoscere un oggetto.

Per garantire che questi potenziali punti chiave siano riconoscibili a qualsiasi dimensione, SIFT crea quello che viene chiamato uno spazio di scala. Si tratta di una raccolta di immagini create sfocando gradualmente l'immagine originale con un filtro gaussiano, una tecnica di smoothing, e raggruppando i risultati in livelli chiamati ottave. Ogni ottava contiene la stessa immagine a livelli crescenti di sfocatura, mentre l'ottava successiva è 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 scelte come potenziali punti chiave perché rimangono coerenti quando l'immagine viene ingrandita o rimpicciolita.

Fig. 2. DoG evidenzia le strutture chiave sottraendo immagini sfocate a diversi livelli. (Fonte)

Passaggio 2: Localizzazione dei keypoint

Non tutti i keypoint candidati sono utili perché alcuni possono essere deboli o instabili. Per perfezionarli, SIFT utilizza un metodo matematico chiamato Taylor Series Expansion, che aiuta a stimare la posizione esatta di un keypoint con maggiore accuratezza.

Durante questa fase, i punti inaffidabili vengono rimossi. I keypoint con basso contrasto, che si fondono con l'ambiente circostante, vengono scartati, così come quelli che si trovano direttamente sui bordi, poiché possono spostarsi troppo facilmente. Questa fase di filtraggio lascia dietro di sé solo i keypoint più stabili e distintivi.

Passaggio 3: Assegnazione dell'orientamento

Una volta identificati i keypoint stabili, SIFT li rende invarianti alla rotazione, il che significa che possono ancora essere abbinati anche se l'immagine viene ruotata lateralmente o capovolta. Per fare ciò, SIFT analizza come cambia la luminosità attorno a ciascun keypoint, che è noto come gradiente. I gradienti mostrano sia la direzione che la forza del cambiamento nell'intensità dei pixel e insieme catturano la struttura locale attorno al punto.

Per ogni keypoint, SIFT considera i gradienti all'interno di una regione circostante e li raggruppa in un istogramma di orientamenti. Il picco più alto in questo istogramma indica la direzione dominante del cambiamento di intensità, che viene quindi assegnata come orientamento del keypoint. Sia le direzioni del gradiente, che mostrano dove l'intensità sta cambiando, sia le magnitudini del gradiente, che indicano quanto è forte quel cambiamento, vengono utilizzate per costruire questo istogramma.

Se ci sono altri picchi quasi altrettanto forti, SIFT assegna più orientamenti allo stesso punto chiave. Ciò impedisce la perdita di caratteristiche importanti quando gli oggetti appaiono ad angolazioni insolite. Allineando ogni punto chiave con il suo orientamento, SIFT garantisce che i descrittori generati nella fase successiva rimangano coerenti. 

In altre parole, anche se due immagini dello stesso oggetto vengono ruotate in modo diverso, i keypoint allineati all'orientamento corrisponderanno comunque correttamente. Questo passaggio è ciò che conferisce a SIFT la sua forte capacità di gestire la rotazione e lo rende molto più robusto rispetto ai precedenti metodi di rilevamento delle caratteristiche.

Fig. 3. Uno sguardo più da vicino alla fase 3 dell'algoritmo SIFT (Fonte)

Passaggio 4: Descrittore dei keypoint

L'ultimo passaggio in SIFT consiste nel creare una descrizione di ogni keypoint in modo che possa essere riconosciuto in altre immagini. 

SIFT raggiunge questo risultato esaminando una piccola porzione quadrata attorno a ciascun punto chiave, di circa 16 x 16 pixel. Questa porzione viene prima allineata all'orientamento del punto chiave in modo che la rotazione non lo influenzi. La porzione viene quindi divisa in una griglia di 4 x 4 quadrati più piccoli.

In ogni piccolo quadrato, SIFT misura come cambia la luminosità in diverse direzioni. Questi cambiamenti vengono memorizzati in qualcosa chiamato istogramma, che è come un grafico che mostra quali direzioni sono più comuni. Ogni quadrato ha il suo istogramma e, insieme, i 16 quadrati producono 16 istogrammi.

Infine, questi istogrammi vengono combinati in un unico elenco di numeri, 128 in totale. Questo elenco è chiamato vettore di caratteristiche e funge da impronta digitale per il punto chiave. Poiché cattura la texture e la struttura uniche attorno al punto, questa impronta digitale consente di abbinare lo stesso punto chiave in immagini diverse, anche se ridimensionate, ruotate o illuminate in modo diverso.

Fig. 4. Una panoramica di come funziona SIFT (Source)

Applicazioni chiave di SIFT nella computer vision

Ora che abbiamo una migliore comprensione di cosa sia SIFT e di come funziona, esploriamo alcune delle sue applicazioni reali nella computer vision.

Riconoscimento e rilevamento oggetti

Uno degli usi principali di SIFT è nel riconoscimento e nel rilevamento di oggetti. Ciò comporta l'insegnamento a un computer a riconoscere e localizzare oggetti nelle immagini, anche quando gli oggetti non hanno sempre lo stesso aspetto. Ad esempio, SIFT può rilevare un libro indipendentemente dal fatto che sia vicino alla telecamera, più lontano o ruotato di un angolo.

Il motivo per cui questo funziona è che SIFT estrae keypoint altamente distintivi e stabili. Quando questi keypoint sono abbinati ai descrittori SIFT, formano le feature SIFT, che forniscono un modo affidabile per abbinare lo stesso oggetto in immagini diverse. Queste feature catturano dettagli unici dell'oggetto che rimangono coerenti, consentendo un abbinamento affidabile delle feature tra le immagini anche quando le dimensioni, la posizione o l'orientamento dell'oggetto cambiano.

Fig. 5. Utilizzo di SIFT per riconoscere la copertina di un libro in una nuova immagine scattata con un'angolazione diversa rispetto all'originale. Immagine dell'autore.

Prima che il deep learning diventasse popolare, SIFT era uno dei metodi più affidabili per la creazione di sistemi di riconoscimento degli oggetti. Era ampiamente utilizzato nella ricerca e nelle applicazioni che richiedevano la corrispondenza di oggetti in grandi set di dati di immagini, anche se spesso richiedeva notevoli risorse computazionali.

Unione di immagini e creazione di panorami

SIFT può essere utilizzato anche per creare immagini panoramiche, ovvero foto ampie realizzate unendo diverse immagini. Utilizzando SIFT, i punti chiave distintivi vengono individuati nelle parti sovrapposte di immagini diverse e quindi abbinati tra loro. Queste corrispondenze fungono da ancore, guidando il processo di unione su come le foto devono essere allineate.

Una volta completato l'abbinamento, è possibile utilizzare algoritmi di stitching per calcolare l'allineamento corretto, spesso utilizzando trasformazioni geometriche che mappano un'immagine sull'altra. Le immagini vengono quindi sfumate in modo che le cuciture scompaiano. Il risultato finale è un panorama senza soluzione di continuità che sembra un'unica foto ampia, anche se è stato creato da più scatti.

Ricostruzione 3D e robotica

Un'altra interessante applicazione di SIFT è nella ricostruzione 3D, dove più foto 2D scattate da diverse angolazioni vengono combinate per costruire un modello tridimensionale. SIFT funziona trovando e abbinando gli stessi punti in queste immagini. 

Una volta effettuati gli abbinamenti, le posizioni 3D di tali punti possono essere stimate utilizzando la triangolazione, un metodo che calcola la profondità da diversi punti di vista. Questo processo fa parte della struttura dal movimento (SfM), una tecnica che utilizza più immagini sovrapposte per stimare la forma 3D di una scena insieme alle posizioni delle telecamere che hanno scattato le foto.

Il risultato è solitamente una nuvola di punti 3D, una raccolta di punti nello spazio che delinea l'oggetto o l'ambiente. SIFT è stato uno dei primi strumenti che ha reso pratico lo structure-from-motion. Sebbene le tecniche più recenti siano più veloci e più comuni oggi, SIFT continua ad essere applicato quando la precisione è più importante della velocità.

SIFT è stato utilizzato anche nella robotica, in particolare nel visual SLAM (Simultaneous Localization and Mapping). Lo SLAM consente a un robot di capire dove si trova mentre costruisce contemporaneamente una mappa dell'ambiente circostante. 

I punti chiave SIFT fungono da punti di riferimento affidabili che un robot può riconoscere attraverso i fotogrammi, anche quando l'illuminazione o gli angoli cambiano. Tracciando questi punti di riferimento, il robot può stimare la sua posizione e aggiornare la sua mappa al volo. Sebbene oggi vengano utilizzati più spesso rilevatori di caratteristiche più veloci nella robotica, SIFT ha svolto un ruolo importante nei primi sistemi SLAM ed è ancora fondamentale nei casi in cui la robustezza è più critica della velocità.

Vantaggi e considerazioni di SIFT

Sebbene l'algoritmo SIFT sia stato ampiamente utilizzato nella computer vision ed è noto per essere un metodo affidabile, presenta anche alcuni compromessi. Ecco perché è importante soppesare i suoi pro e i suoi contro prima di decidere se è la soluzione giusta per un progetto. Successivamente, esaminiamo i suoi principali punti di forza e limiti.

Vantaggi principali di SIFT

Ecco alcuni dei vantaggi dell'utilizzo dell'algoritmo SIFT:

  • Invarianza di scala e rotazione: SIFT fornisce keypoint invarianti alla scala che rimangono relativamente stabili quando gli oggetti appaiono a dimensioni o orientamenti diversi, il che rappresenta un significativo passo avanti rispetto ai precedenti rilevatori di caratteristiche.
  • Robustezza moderata ai cambiamenti di illuminazione e punto di vista: SIFT è in grado di gestire cambiamenti di luminosità, contrasto o piccoli spostamenti del punto di vista, anche se è meno affidabile in condizioni più estreme.
  • Capacità di operare in scene disordinate o parzialmente nascoste: Poiché SIFT rileva molti keypoint locali, spesso è in grado di identificare un oggetto anche se parte di esso è coperta o lo sfondo è complesso.

Considerazioni sulle prestazioni e alternative

Ecco alcuni degli svantaggi derivanti dall'utilizzo dell'algoritmo SIFT:

  • Computazionalmente costoso: Il processo multi-step di SIFT e i descrittori dettagliati lo rendono più lento e più pesante in termini di risorse rispetto ai moderni rilevatori di caratteristiche. Per migliorare questo aspetto, i ricercatori hanno sviluppato l'algoritmo SURF (Speeded-Up Robust Features), che utilizza calcoli più veloci per trovare e descrivere le caratteristiche. SURF è meno preciso di SIFT in alcuni casi, ma funziona molto più velocemente, rendendolo più pratico per le attività che richiedono tempi rapidi.
  • Non ideale per l'uso in tempo reale: A causa del suo costo computazionale, SIFT ha difficoltà quando si tratta di 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 condizioni di cambiamenti estremi di illuminazione, grandi variazioni del punto di vista o scene altamente dinamiche in cui algoritmi più recenti o metodi di machine learning funzionano meglio.

Mentre esplori i pro e i contro di SIFT, potresti notare che molte delle sue limitazioni 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 strati, partendo da schemi semplici come bordi e texture, e costruendo gradualmente forme e oggetti più complessi. A differenza delle regole di feature create manualmente di SIFT, le CNN apprendono le rappresentazioni delle feature direttamente dai dati. 

Questo apprendimento basato sui dati significa che le CNN possono superare SIFT nell'abbinamento di descrittori e nelle attività di classificazione. Le CNN sono anche più espressive e robuste, adattandosi meglio alla variabilità e alla complessità dei dati visivi. 

Ad 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 testare quanto bene gli algoritmi possono riconoscere e classificare gli oggetti, ImageNet è in grado di evidenziare il divario tra i vecchi metodi basati sulle feature e il deep learning. 

Le CNN hanno rapidamente superato SIFT imparando rappresentazioni molto più ricche e flessibili, consentendo loro di riconoscere oggetti in condizioni di illuminazione variabili, da diversi punti di vista e anche quando parzialmente nascosti, scenari in cui SIFT spesso fatica.

Punti chiave

L'algoritmo Scale Invariant Feature Transform occupa un posto importante nella storia della computer vision. Ha fornito un modo affidabile per rilevare le caratteristiche anche in ambienti mutevoli e ha influenzato molti dei metodi utilizzati oggi. 

Sebbene le tecniche più recenti siano più veloci ed efficienti, SIFT ha gettato le basi per esse. SIFT mostra dove è iniziato il progresso odierno nella computer vision ed evidenzia i progressi compiuti dai sistemi di intelligenza artificiale all'avanguardia.

Unisciti alla nostra community globale e consulta il nostro repository GitHub per saperne di più sulla computer vision. Esplora le nostre pagine delle soluzioni per scoprire innovazioni come l'AI in agricoltura e la computer vision nel retail. Scopri le nostre opzioni di licenza e inizia a costruire il tuo modello di computer vision.

Costruiamo insieme il futuro
dell'AI!

Inizia il tuo viaggio con il futuro del machine learning

Inizia gratis
Link copiato negli appunti