Descrittori di funzioni invarianti di scala e rotazione


16

È possibile elencare alcuni descrittori di funzioni invarianti in scala e rotazionali da utilizzare nel rilevamento delle funzioni.

L'applicazione è per il rilevamento di auto e persone nei video catturati da un UAV, utilizzando un classificatore multi-classe.

Finora ho esaminato SIFT e MSER (che è invariante affine). Ho anche guardato LESH, LESH si basa sul modello energetico locale, ma è calcolato in un modo che non è invariante a livello di rotazione, ho cercato di pensare a un modo per utilizzare l'energia locale, per costruire un invariante a livello di rotazione descrittore di funzionalità, leggo qui Quali sono alcune alternative gratuite a SIFT / SURF che possono essere utilizzate in applicazioni commerciali? , che "se assegni l'orientamento al punto di interesse e ruoti di conseguenza la patch di immagine, ottieni l'invarianza rotazionale gratuitamente", ma non sai se questo è anche un sollievo o come potrei applicarlo al mio problema, qualsiasi aiuto sarebbe apprezzato, grazie


Utilizzare ORB (Oriented FAST e Rotated BRIEF) dalla libreria OpenCV.
Harsh Wardhan,

Risposte:


9

Per quanto riguarda le alternative a SIFT / SURF, la domanda che hai collegato fornisce risposte molto buone.

C'erano altre due domande che potevo leggere:

  • "come potrei creare un utile descrittore di funzioni (ad es. invariante di rotazione)"?
  • "per quanto riguarda l'affermazione della domanda collegata, come realizza l'invarianza rotazionale libera?"

Descrittori di funzionalità di costruzione

Questo è un argomento di ricerca valido. I descrittori di buone caratteristiche non sono qualcosa che chiunque può costruire in un pomeriggio. Le persone pubblicano articoli quando modellano con successo descrittori di caratteristiche con proprietà desiderabili. Questo è un motivo per cui attualmente vengono utilizzati solo una manciata di descrittori all'avanguardia, ed è anche quello che ti consiglio di fare: trovare un descrittore di funzionalità adatto alle tue esigenze .

Raggiungere l'invarianza rotazionale "gratuitamente"

0|black->gray->white||white->gray->black|-9090

In questo modo calcolerai sempre il descrittore su una patch di immagine con lo stesso orientamento dominante (la patch ruotata) e quindi otterrai l'invarianza rotazionale.


4

Un altro modo per ottenere l'invarianza di rotazione gratuitamente è quello di scegliere oggetti che sono invarianti di rotazione. Ad esempio, un cerchio o un anello è invariante alle rotazioni.

Estrattore di funzioni : esegue il rilevamento dei bordi. Per ogni vicinato di NxNpixel, calcolare l'istogramma 2D della direzione del bordo e della magnitudine. Trova tutti i punti che hanno un'elevata magnitudine totale e un'elevata diffusione angolare . Rimuovi tutti i punti che non hanno simmetria radiale.

Descrittore di caratteristiche : trova il centro di ciascun oggetto circolare. Poiché l'oggetto è circolare, non ha un angolo di gradiente dominante. Tutti gli angoli sono uguali. Pertanto, un profilo radiale (somma del valore di pixel in coordinate polari) è un descrittore invariante dell'angolo.


A proposito, questo è uno dei motivi per cui i fiduciali sono fabbricati come cerchi su circuiti elettrici:

inserisci qui la descrizione dell'immagine


stiamo parlando di descrittori di punti chiave (funzione) . Se stessimo parlando di funzionalità (punti di interesse) , potrebbe essere utile rilevare patch circolari: sono invarianti a rotazione in combinazione con ogni descrittore. Ma un descrittore calcolato su una patch circolare non lo è - un cerchio bianco con diametro orizzontale in nero e con uno verticale produrrebbe descrittori molto diversi se non si utilizzasse un metodo invariante a rotazione
penelope,

@penelope, perché no? Considera il seguente descrittore: un'anteprima della patch e la confronti con altri descrittori con correlazione incrociata normalizzata. Non puoi confonderlo con altri oggetti in questo modo.
Andrey Rubshtein,

Scusa, non capisco cosa intendi per "una miniatura della patch", puoi spiegarmi? E il descrittore: la correlazione corsica normalizzata della tua patch è ciò che la rende invariante a livello di rotazione, non il fatto che la tua patch fosse un anello o un cerchio.
penelope,

@penelope, ora credo di non essere stato abbastanza chiaro. Proverò ad espanderlo domani. Grazie per i tuoi commenti.
Andrey Rubshtein,

Non vedo l'ora :)
penelope,

1

Preferirei esaminare KAZE / AKAZE, che funziona altrettanto bene con una notevole accelerazione. Anche i casi di deformazione sono tollerati. OpenCV ha recentemente ottenuto un'implementazione tramite GSoC 2014. Puoi trovarla qui .


1

Se si rimappa una patch locale attorno a un punto caratteristica per coordinate log-polari (con l'origine nel punto di interesse), i cambiamenti di scala corrispondono a una traduzione lungo l'asse log-radiale, mentre le rotazioni corrispondono a traduzioni (con avvolgimento) lungo l'asse angolare. Se poi si calcola la trasformata bidirezionale di Fourier, le traslazioni nelle direzioni radiale e angolare diventano sfasamenti nel dominio della frequenza. Se poi si calcola il valore assoluto della trasformata di Fourier, la fase svanisce completamente e le variazioni di scala e le rotazioni della patch dell'immagine originale diventano impercettibili. Quindi il valore assoluto della trasformata 2D di Fourier dell'immagine in coordinate log-poolar sarebbe il descrittore di caratteristiche.

Beh, almeno in teoria. In pratica, è necessario limitare l'estensione radiale della patch. Ciò significa che è necessario tagliare gran parte dei dati prima di calcolare la trasformata di Fourier (che in realtà è una serie di Fourier), quindi una traduzione lungo la direzione log-radiale in coordinate log-polari non corrisponde esattamente a un solo sfasamento nel dominio della frequenza, quindi il metodo non è perfettamente invariante alla scala. Ho il sospetto che se si utilizza una funzione della finestra - senza discontinuità - sulla coordinata del raggio di registro e la si moltiplica per l'intensità del colore, questo problema verrebbe in qualche modo mitigato.

Tuttavia, il descrittore di funzionalità dovrebbe essere perfettamente invariante alla rotazione.

Riferimento: Invarianza di scala senza selezione di scala


0

Puoi anche controllare FAST e BRISK .


Per quanto ho cercato, FAST è solo un rilevatore utilizzato con molte diverse combinazioni di descrittori. E FAST e BRISK sono già menzionati nella domanda che l'OP stesso ha collegato, quindi suppongo che abbia già informazioni sull'esistenza di questi metodi.
penelope,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.