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.