Comprensione delle caratteristiche elementari indipendenti binarie ("BREVE")


14

In che modo i descrittori dell'algoritmo BRIEF sono abbinati tra loro?

Come si trova l'immagine del modello nell'altra immagine? Come confrontiamo i descrittori? Ho letto quell'articolo ma non ho capito come l'hanno fatto.

Hanno scritto che hanno confrontato i descrittori usando la distanza di Hamming, ma come si ottiene l'invarianza ai cambiamenti nell'illuminazione, nelle dimensioni, ecc.?

Risposte:


15

Prima di tutto, in questo documento non esiste qualcosa come "modello": la parola "modello / i" ha un significato diverso in Computer Vision.

Il metodo utilizzato in questo documento è relativamente semplice. Lascia che lo scomponga per te. Ci sono tre cose importanti che devi fare quando esegui attività come il riconoscimento degli oggetti, la corrispondenza delle immagini, la cucitura delle immagini e altre simili, usando le funzioni locali

La prima cosa importante è il rilevamento; in questo passaggio vuoi rilevare punti di interesse o punti chiave, e ciò significa che vuoi scegliere punti locali (sostanzialmente piccole patch) che ritieni interessanti nell'immagine, ci sono molti modi per farlo; questo documento non contribuisce in questo settore. Tuttavia, sembra che utilizzino il rilevatore di funzionalità SURF e i punti chiave CenSurE (puoi cercarli se vuoi saperne di più su di loro, non parlerò di questo passaggio tranne che usano funzionalità come gradienti e così, il che significa che se hai una foto, è improbabile che un punto in mezzo al cielo venga scelto come punto di interesse, perché i pixel intorno a quel punto hanno tutte le stesse intensità, le cose che sono "occupate" tendono ad essere scelte come punti di interesse (es. tavolo / bordi / angoli dell'edificio)).

Al termine del rilevamento, Descrizione funzionesegue. Conosci i punti interessanti nell'immagine e ora vuoi descriverli (sostanzialmente vuoi descrivere i punti / patch attorno ai punti interessanti). SIFT è un descrittore di funzionalità popolare. In questo documento, ne escono uno nuovo, chiamato BREVE. BREVE si basa su confronti, quindi diciamo che abbiamo una patch (50 pixel per 50 pixel), scegliamo due punti e confrontiamo le intensità dei due punti, se il primo punto è più grande del secondo punto, assegniamo il valore ' 1 ', altrimenti' 0 ', lo facciamo per un numero di coppie e finiamo con una stringa di valori booleani. Ora la grande domanda è "come scegli la coppia di punti?", Nel documento hanno spiegato 5 modi, relativamente simili, descriverò il primo. Quello che fai è scegliere uniformemente (pari probabilità) un punto da -S / 2 a S / 2, nel nostro esempio abbiamo detto che la dimensione della patch è 50, quindi scegliamo un punto tra -25 a 25. Supponendo che la coordinata 0,0 si trovi al centro della patch. Quindi ecco un esempio;

Vogliamo selezionare la prima coppia, ogni punto è costituito da coordinate (X, Y), quindi selezioniamo uniformemente la coordinata X del primo punto, quindi la coordinata Y del primo punto, supponiamo che sia (10, -1) , ora il secondo punto; selezioniamo uniformemente la coordinata X per il secondo punto e la coordinata Y per il secondo punto, supponiamo che sia (-2,20), ora otteniamo i valori di intensità per ciascun punto e vediamo quale ha i valori di intensità maggiori - se il primo è maggiore assegniamo il primo valore booleano a '1', in caso contrario assegniamo '0'. Lo facciamo per molte coppie e finiamo con un vettore di valori booleani.

* Punto molto importante: suppongo che funzioni, dovrai specificare un valore seed prima del generatore casuale. Ciò significa che si desidera scegliere gli stessi valori per ogni patch: questo è estremamente importante perché quando si confrontano / corrispondono le patch, l'intero sistema si guasterà se non vengono scelti esattamente allo stesso modo. - si spera che questo abbia senso quando leggi il passaggio corrispondente.

Quindi, lo facciamo per ogni punto di interesse che è stato rilevato dal rilevatore. Per ogni punto di interesse, otterremo un vettore di valori booleani.


Ora per abbinare due immagini ( terzo passaggio; corrispondenza ), facciamo esattamente la stessa cosa per l'altra immagine, rileviamo, quindi descriviamo usando il BREVE. Ad esempio, supponiamo di avere 10 punti di interesse in ogni immagine (questo può sempre funzionare se otteniamo i 10 punti più interessanti in ciascuna immagine), usiamo BRIEF per descrivere ogni patch usando ad esempio 50 coppie, quindi ogni immagine sarà descritta da 10 vettori di 50 valori booleani.

Per confrontare le due immagini, troviamo il vicino più vicino di ciascun vettore dalla prima immagine all'altro vettore della seconda immagine. Usiamo la distanza di Hamming che è piuttosto veloce, esempio di distanza di martellamento

hammingDistance ((0, 1, 1), (0, 0, 0)) = 2

hammingDistance ((0, 1, 1), (0, 1, 1)) = 0

hammingDistance ((0, 1, 1), (1, 0, 0)) = 3

hammingDistance ((0, 1, 1), (1, 1, 1)) = 1

Fondamentalmente quante corrispondenze sbagliate

Spero possa aiutare


Grazie mille, ho capito l'algoritmo. Ma ho ancora qualche domanda, che ne dici di affine, cambiamenti di prospettiva e cambiamenti di illuminazione? La stringa di bit sarà simile nel caso in cui si verifichi un cambiamento nell'illuminazione o nella prospettiva?
massimo

Se la quantità di cambiamento di illuminazione è uguale per tutti i pixel, sì funzionerà comunque, se è diverso da pixel a pixel (alcuni pixel aumentano, altri diminuiscono), allora questo è un problema. L'affinità sembra funzionare bene (in base ai loro risultati), ma sicuramente raggiungerà un punto in cui smette di funzionare (in realtà nei loro risultati (Fig.3) dimostrano che è possibile scaricare le immagini e vedere cosa Wall 1 | 2, Wall 1 | 3 corrisponde a). Il loro metodo non è invariante alla rotazione (non è così difficile da vedere) e lo menzionano esplicitamente.
Roronoa Zoro,

Grazie per la tua spiegazione. Comprendo davvero molto bene il descrittore BREVE.
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.