2016-04-11 14 views
6

Okay, sto cercando di trovare l'omografia di una partita di calcio. Quello che ho fino ad ora èHomography of soccer field

  1. immagini Leggi da una cartella che è fondamentalmente numero di immagini di un campo da calcio modello ritagliata. Fondamentalmente questo ha le immagini per il cerchio centrale e le linee di rigore, ecc.
  2. Leggi il flusso video da un file e ritaglialo in molti segmenti più piccoli.
  3. Ciclo all'interno delle immagini nel flusso video e all'interno di un altro ciclo per le immagini che ho letto dalla cartella.
  4. Ora nelle due immagini che ottengo attraverso l'iterazione, ho applicato un filtro verde perché supponevo che il campo fosse verde
  5. Usa il globo per trovare i punti e quindi trovare le corrispondenze.

Ora il problema è che a causa di giocatori e qualche rumore dalla croud, io sono in grado di trovare corrispondenze adeguate per omografia. Anche rimuoverli è un problema perché anche questo tende a nascondere le linee del campo da calcio di cui ho bisogno per calcolare l'omografia.

Qualsiasi suggerimento su questo è molto apprezzato. Di seguito sono riportati alcuni esempi di codice e immagini che sto utilizzando.

"Code being used"

Immagini di prova

http://i65.tinypic.com/21cs9rl.png

uscita che sto ottenendo

http://i66.tinypic.com/zj6ljo.png

L'immagine a destra di uscita è un fotogramma dal video e che a sinistra è la stessa immagine di esempio che ho caricato dopo la funzione filterGreen come si può vedere dal codice.

Infine, quello che voglio è che l'immagine sia mappata correttamente al cerchio centrale in modo da poter disegnare un cubo al centro, in qualche modo simile a "This example". Grazie in anticipo per avermi aiutato.

+0

L'input è "immagini reali" o generate da computer? –

+0

@LeonardoAlvesMachado generato dal computer, per quelli che ho usato ma non c'è alcuna restrizione in quanto tale – georoot

+0

@LeonardoAlvesMachado dovrebbe menzionare che il flusso video è una vera partita di calcio – georoot

risposta

1

Una tecnica interessante per risolvere questo problema è RASL. Calcola le omografie che allineano pile di immagini correlate. Non richiede di specificare i punti corrispondenti sulle immagini, ma funziona direttamente sui pixel dell'immagine. È robusto contro le occlusioni di immagine (ad esempio, i giocatori si spostano in primo piano).

Ho appena rilasciato un'implementazione Python qui: https://github.com/welch/rasl (ci sono anche collegamenti alla carta RASL originale, all'implementazione di MATLAB e ai dati).

Non sono sicuro se si desidera ritagliare le immagini di input in quel cerchio centrale o se è possibile allineare gli interi fotogrammi. Prova entrambi e vedi