# Scale-invariant feature transform

Nell'ambito della visione artificiale, lo scale-invariant feature transform (o SIFT) è un algoritmo che permette di rilevare e descrivere caratteristiche locali in immagini. L'algoritmo è stato pubblicato da David G. Lowe nel 1999.
Applicazioni includono: riconoscimento di oggetti, robotic mapping e navigation, image stitching, modellazione 3D, riconoscimento dei gesti, video tracking, e match moving.
L'algoritmo è brevettato negli Stati Uniti; il proprietario è la University of British Columbia.

## Scale-invariant feature transform

Per ogni oggetto in un'immagine, alcuni punti interessanti possono essere estratti per fornire una descrizione delle caratteristiche dell'oggetto. Questa descrizione, ricavata da un'immagine selezionata per l'apprendimento, può essere poi usata per identificare l'oggetto quando si prova ad individuarlo in una immagine di test che contiene molti altri oggetti. Per un riconoscimento affidabile, è importante che le caratteristiche estratte dall'immagine di apprendimento siano rilevabili anche con cambiamenti di scala, rumore e illuminazione. Questi punti di solito sono posizionati in regioni ad alto contrasto dell'immagine, come contorni di oggetti.
Un'altra importante caratteristica di queste feature è che le loro posizioni relative nella scena originale non cambiano tra due immagini affini. Per esempio, se come caratteristiche vengono presi gli angoli di una porta, esse dovrebbero funzionare indipendentemente dalla posizione della porta; invece se venissero presi in considerazione anche punti del contorno, il riconoscimento fallirebbe o meno a seconda che la porta sia chiusa o aperta. In modo simile, le feature situate in oggetti articolati o flessibili tipicamente non funzionano quando avviene un qualsiasi cambiamento della loro geometria interna tra due immagini nell'insieme elaborato. Comunque, SIFT, per ridurre il contributo degli errori causati da variazioni locali, usa un numero più grande di feature dalle immagini in modo che variazioni locali sulla geometria interna abbiano un peso piccolo sull'errore medio.

### Il metodo di Lowe

Il metodo di Lowe può identificare, in modo robusto, oggetti anche nella confusione o parzialmente nascosti, perché il descrittore di feature SIFT è invariante per scala, orientamento, distorsione affine e parzialmente invariante a cambi di illuminazione. Questa sezione riassume il metodo di object recognition di Lowe e introduce alcune tecniche alternative disponibili per il riconoscimenti di oggetti in condizioni di confusione o parziale occlusione.
I punti chiave SIFT degli oggetti vengono prima estratti da un insieme di immagini di riferimento e immagazzinati in un database. Un oggetto viene riconosciuto in una nuova immagine confrontando individualmente ogni caratteristica della nuova immagine con quelle nel database precedentemente ottenuto basandosi sulla distanza euclidea dei loro vettori di caratteristiche. Dall'insieme completo di corrispondenze, nella nuova immagine vengono identificati sottoinsiemi di punti chiave che concordano con l'oggetto la sua posizione, la sua scala e il suo orientamento per filtrare le corrispondenze migliori. La determinazione di cluster consistenti viene effettuata in modo rapido usando un'implementazione con hash table efficiente della trasformata di Hough generalizzata. Ogni cluster di 3 o più feature concordanti su un oggetto e la sua posizione è soggetto a un'ulteriore verifica dettagliata del modello e, di conseguenza, gli outlier vengono scartati. Infine, viene calcolata la probabilità che un particolare insieme di caratteristiche indichi la presenza di un oggetto, data l'accuratezza di fit e un numero di possibili false corrispondenze. Quelle che passano tutti questi test vengono identificate come corrette con alta confidenza.