5

Mi piacerebbe sapere se esiste un'implementazione per il descrittore HOG per oggetti come "cars" e NOT for Human in MATLAB?Descrittore HOG per rilevamento oggetti

Ma nel caso, non v'è solo per umana, mi può guidare l'utente a quel codice, e mi darà modo CONSIGLI al fine di migliorare il codice da utilizzare per "oggetti come auto o moto"

+0

Salve, vorrei suggerire di provare prima a google .. Comunque qui è un link per codice MATLAB si dà un'immagine in input (non solo gli esseri umani qualsiasi immagine lo farà produrre un vettore di funzionalità di maiale di lunghezza 81) [HOG] (http://www.mathworks.com/matlabcentral/fileexchange/28689-hog-descriptor-for-matlab) – G453

+0

@Sistu questo codice senza alcuna descrizione più è usato per rilevamento umano :( – Mario

+1

Dai un'occhiata al documento a cui si riferisce la descrizione o almeno un estratto dagli atti IEEE La mia (molto generale) comprensione è che questa funzione è progettata per restituire i descrittori HOG per l'immagine fornita. quindi usa quei descrittori per r la tua applicazione. Quindi se gli dai una "macchina" otterrai dei descrittori che puoi usare per "macchine". –

risposta

0

Qui è un eccellente codice Matlab che implementa completamente l'algoritmo di Dalal. Ho testato e utilizzato questo codice per molti importanti progetti accademici.

http://hi.baidu.com/fpmaldfoamdfmze/item/4f3b3ac881affcb00c0a7b11 Tutto il credito va alla persona che ha pubblicato questo!

HOG non è specifico per il rilevamento dei pedoni. Puoi usarlo con qualsiasi oggetto rigido (o approssimativamente rigido).

Per utilizzare questo codice, è necessario capire come HOG è calcolato su una regione. La regione è divisa in "blocchi" sovrapposti. I blocchi consistono in un numero di "celle". Un istogramma di orientamento spaziale è calcolato in ciascun blocco. Il vettore finale è formato concatenando questi istogrammi spaziali. I parametri che è possibile modificare sono

cellpw, cellph: larghezza e altezza del pixel della cella rispettivamente.

nblockw, nblockh: dimensione del blocco contata dal numero di celle rispettivamente in direzione xe y.

nthet: numero di scomparti angolari.

issigned: firmata o gradiente senza segno viene acquistata

sovrapposizione: quantità di sovrapposizione tra blocchi indicati come frazione

isglobalinterpolate: se interpolazione globale o locale di 3d istogramma

normmethod: tipo di norma utilizzato

È possibile provare con i parametri predefiniti -

cellpw = 8; cellph = 8; nblockw = 2; nblockh = 2; nthet = 9; sovrapposizione = 0,5; isglobalinterpolate = 'localinterpolate'; assegnato = 'non firmato'; normmethod = 'l2hys';

in MATLAB ottenendo la caratteristica è qualcosa di simile

I = imread('car.png'); 
Ig = rgb2gray(I); 
F = hogcalculator(Ig, 8, 8, 2, 2, 9, 0.5,'localinterpolate', 'unsigned', 'l2hys'); 

La dimensione/lunghezza F dipende dalle paramenters si sceglie.

Risposta al tuo commento, Sì, devi costruire queste funzioni per le tue immagini positive (auto) e negative (non auto) per costruire un sistema di rilevamento. SVM viene in genere utilizzato come classificatore.Io suggerisco di usare biblioteca libsvm -

http://www.csie.ntu.edu.tw/~cjlin/libsvm/

Una volta che si genera il training set, in treno con il training set. Modificare i parametri SVM per ottenere la massima precisione. I parametri forniti nell'esempio potrebbero non essere i migliori, puoi sempre provare un set diverso. Proverei a cambiare nthet, cellpw e cellph prima. Buona fortuna!

2

C'è ora una funzione extractHOGFeatures nella casella degli strumenti del sistema di visione artificiale.

1

HOG è un tipo di descrittore di funzione e può essere applicato a qualsiasi oggetto desiderato. L'implementazione non cambierebbe se non per i parametri di dimensione del blocco, dimensione della cella, passo del blocco, ecc. Per ottenere un descrittore per le auto, è necessario fornire campioni positivi e negativi. Opencv fornisce la funzione per gli utenti di addestrare il classificatore. Dovrebbe essere lo stesso per MATLAB se fornisce il codice per addestrare il classificatore.

1

Bene, è possibile utilizzare VLFeat Toolbox, la sua è una molto efficiente realizzazione di HOG, è possibile trovare la funzione HOG di qualsiasi oggetto, anche tu puoi visualizzare. Se "im.jpg" se l'immagine di input, è possibile ottenere la caratteristica HOG utilizzando hog = vl_hog("im.jpg",8,'verbose') Qui 8 è la dimensione della finestra, è possibile regolare di conseguenza.

Per visualizzare la funzione imhog = vl_hog('render',hog,'verbose')

Problemi correlati