Come stimare l'ottava e le dimensioni per le caratteristiche visive posizionate agli angoli di Harris


9

Attualmente sto lavorando e confrontando le prestazioni di diversi rilevatori di funzionalità fornite da OpenCV come base per la corrispondenza delle caratteristiche visive.

Sto usando i descrittori SIFT . Ho raggiunto una corrispondenza soddisfacente (dopo aver rifiutato le corrispondenze errate) quando ho rilevato le funzionalità MSER e DoG (SIFT) .

Attualmente, sto testando il mio codice con GFTT (Good Features to Track - Harris angoli) per ottenere un confronto, e anche perché nell'applicazione finale, un set di funzionalità GFTT sarà disponibile dal processo di tracciamento delle funzionalità visive.

Sto usando cv::FeatureDetector::detect(...)che mi fornisce un std::vector<cv::KeyPoint>pieno di caratteristiche / punti chiave / regioni di interesse rilevati . La struttura cv::KeyPointcontiene informazioni di base sulla posizione della funzione, nonché informazioni su sizee octavein cui il punto chiave è stato rilevato.

I miei primi risultati con GFTT sono stati terribili fino a quando non ho confrontato il tipico sizee i octaveparametri in diversi tipi di funzionalità:

  • MSER imposta la dimensione (tra 10 e 40px) e lascia l' ottava su 0
  • DoG (SIFT) imposta sia la dimensione che l' ottava ( rapporto dimensioni / ottava tra 20 e 40)
  • GFTT i parametri sono sempre : dimensione = 3 , ottava = 0

Presumo che ciò sia dovuto al fatto che lo scopo principale delle funzionalità GFTT non era quello di utilizzare la corrispondenza, ma solo il monitoraggio. Ciò spiega la bassa qualità dei risultati della corrispondenza, poiché i descrittori estratti da tali minuscole funzionalità smettono di essere discriminatori e invarianti rispetto a molte cose , inclusi piccoli spostamenti di 1 pixel.

Se ho impostato manualmente il sizedi GFTT per 10 - 12 , ottengo buoni risultati, molto simili a quando si utilizza MSER o cane (SIFT) .

La mia domanda è: esiste un modo migliore per determinare quanto aumentare size(e / ooctave ) che andare-con-10-vedere-se-funziona ? Voglio evitare l'hardcoding sizedell'aumento, se possibile, e determinarlo a livello di codice , ma l' hardcoding va bene fintanto che ho degli argomenti solidi a sostegno delle mie scelte del nuovo algoritmosize / sizeaumento / sizestima .


1
Ehi @ penelope: dai un'occhiata a questo link che ha già fatto un buon lavoro. [ Computer-vision-talks.com/2011/08/…

@Sistu ehi che sembra un ottimo confronto generale dei descrittori in un caso generale e con un oggetto planare, ma sto lavorando su tipi specifici di immagini e devo fare il mio test. Inoltre, la domanda era molto più specifica di "Ho bisogno di materiali di riferimento per confrontare le prestazioni di vari tipi di decriptatori". È un bel link però, lo verificherò.
penelope,

Risposte:


4

Non sono sicuro che ci sia in realtà una buona risposta alla tua domanda precisa: la cosa spazio-scala di SIFT e SURF è stata effettivamente sviluppata per stimare automaticamente la "buona" dimensione del quartiere pertinente intorno a un punto chiave ad angolo (che è quali buone caratteristiche per tracciare sono).

Ora, le risposte più positive sarebbero:

  • costruire un database di punti chiave e buoni abbinamenti (ad es. utilizzando schemi di calibrazione quadrati) e creare una valutazione automatica delle prestazioni su questo database per trovare la dimensione corretta. Questo compito può davvero essere automatizzato (vedi il lavoro di Mikolajczyk e Schmid sulla valutazione della corrispondenza dei punti)

  • incorpora le tue buone funzionalità in una piramide di immagini per avere anche qualche tipo di scala associata ad esse. Puoi cercare riferimenti su punti di interesse multi-scala FAST e Harris, che fanno qualcosa di molto simile a questa procedura.

Per trovare euristicamente la dimensione massima del blocco, puoi calcolare le stime delle tue immagini con una sfocatura a riquadri (che è più o meno ciò che fa l'operatore blockSize) e vedere quando l'angolo scompare. Si noti tuttavia che una maggiore sfocatura allontana l'angolo dalla sua posizione reale.

Se stai davvero cercando una soluzione rapida e sporca, prova le dimensioni tra 5x5 e 11x11 (dimensioni tipiche utilizzate nella corrispondenza del blocco stereo). Se stai cercando un criterio intellettualmente soddisfacente, prova a massimizzare la probabilità di una buona corrispondenza di due punti caratteristica al di sotto del tuo livello di rumore.


Stavo cercando una soluzione che fosse un po 'più veloce e sporca di quella che proponi. Inoltre, posso solo determinare se una partita è buona o cattiva solo dopo che i miei punti chiave sono stati estratti e abbinati a qualcosa. Anche se li abbino in modo totalmente casuale, ottengo alcuni buoni abbinamenti, quindi il tuo primo suggerimento non è così utile. Per quanto riguarda la seconda parte, più veloce e sobrio: so che non esiste un parametro perfetto, ma come ho detto, aumentare le dimensioni a 12 ha aiutato: la qualità era paragonabile a SIFT e MSER. Non ho alcun argomento per scegliere 12 su un 100 o più di 34 ...
Penelope

0

Per aiutarti a determinare i migliori parametri per i rivelatori, OpenCV ha AjusterAdapter a tale scopo. Non l'ho mai usato da solo, ma è probabilmente il modo standard per determinare programmaticamente i parametri. Inoltre, tieni presente che sebbene i punti chiave abbiano diverse proprietà, non tutti hanno senso per tutti gli algoritmi. Poiché la struttura Keypoint viene utilizzata per algoritmi diversi, ha tutti quei campi ma a volte non vengono utilizzati, ecco perché ottieni quelle ottave = 0; IMO.


So che alcuni tipi di funzionalità non sono il tipo migliore per qualche scopo a volte, ma lavori recenti hanno tentato approcci in cui utilizzano più di 1 tipo di funzionalità / regioni di interesse e ottengono risultati migliori con la combinazione rispetto a qualsiasi singolo tipo da solo (posso aggiungere collegamenti alle opere se sei interessato). Inoltre, quello che sto facendo è almeno in parte la ricerca, quindi provare e valutare i risultati ottenuti con diversi tipi di punti chiave è quello che dovrei fare, anche se alcuni di questi risultati non sono buoni come lo stato dell'arte arte. Esaminerò AdjusterAdapter, grazie.
penelope,

Ho appena guardato attraverso la funzione fornita dall'interfaccia. Può solo aumentare o diminuire il numero di funzioni rilevate dal rilevatore. Inoltre, non ho alcun problema con le funzionalità rilevate. Vorrei solo un modo per adattare le loro dimensioni in modo che potessero essere utilizzate meglio nella corrispondenza (aumentando le dimensioni a 10 lo fa, ma non ho argomentazioni concrete (sufficienti) per quella scelta)
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.