Domanda

Ho guardato e guardato. Qualcuno sa come tenere traccia blob da Aforge? So che non ce l'hanno implementata ma avrei davvero bisogno di usare Aforge a causa del resto del codice che sto utilizzando. Ho visto qualche riferimento al filtraggio Kalman, ma ho bisogno di alcune teorie di implementazione e non.

TNX, v.

È stato utile?

Soluzione

L'AForge.NET BlobCounter fornirà il ritrovamento blob, anche se è abbastanza semplice e non supporterà blob 'rotto'. Se si desidera implementare una semplice monitoraggio blob, un paio di cose che si potrebbero prendere in considerazione:

  1. Se le macchie sono di tanto in tanto frammentati, potrebbe essere necessario eseguire alcune di clustering (trovare gruppi di centro di luoghi di massa di combinare piccoli frammenti) per ottenere una buona stima della posizione. Quando si analizzano più fotogrammi, questo aumenta la probabilità di incontrare condizioni al contorno, come macchie rotto, quindi è importante prendere in considerazione. In alternativa, se si dispone di un buon controllo sulle condizioni (come ad esempio l'illuminazione), che può essere sufficiente. Minor (solo pochi pixel) pause possono essere risolti con ripetuti dilatazione / erosione prima del ritrovamento blob, ma anche questo può amplificare il rumore e ridurre la precisione di posizionamento.

  2. Per il monitoraggio vero e proprio, si dispone di un paio di approcci. filtraggio Kalman può dare molto buona precisione (sub-pixel), in quanto integra informazioni provenienti da più fotogrammi. Se non è necessario che il livello di precisione, si potrebbe considerare un algoritmo molto semplice come prendere sempre l'sufficientemente grande blob che era più vicino alla posizione più recente. Questo funziona se l'oggetto non si muove molto velocemente e non si hanno altri blob spuntando vicino l'oggetto viene monitorata. Se avete bisogno di migliorare le prestazioni di analisi, si potrebbe anche essere in grado di stimare la velocità degli ultimi due telai e l'uso che per limitare la regione è necessario considerare quando si cerca il blob.

  3. Se avete bisogno di tenere traccia di un oggetto ad alta velocità, che diventa un po 'più impegnativo. Ecco un caso in cui si potrebbe provare a combinare blob di accertamento con il modello-matching. È possibile creare un modello basato sul blob-scoperta e abbinare il modello contro macchie successive di segnare loro in base alla loro modello e non soltanto le loro dimensioni / posizione. Ciò richiede che il blob appaiono tempo durante ragionevolmente coerenti, il che significa che la forma fisica del modello e le condizioni di illuminazione deve rimanere fisso.


UPDATE in risposta alla tua domanda:

avere solo pochi minuti di questa mattina, il codice in modo che nessun vero e proprio, ma l'idea di base è questa:

  1. prendere in considerazione solo le chiazze più grande di una dimensione configurabile (probabilmente dovrete per determinare questo empiricamente.)

  2. conservare le informazioni sulle ultime due posizioni blob trovato e gli orari in cui sono state campionate. Chiamiamo questi vettori in R2, p1 e p0, a volte T1 e T0.

  3. Se si assume che la velocità sta cambiando lentamente, poi una stima preliminare al tempo t2 della nuova posizione p2 = p1 + (t2-t1) * (p1-p0) / (T1-T0). Questo può o non può essere un buon presupposto, quindi ti consigliamo di verificare questo catturando l'oggetto sotto la gamma richiesta di movimenti.

  4. Opzionalmente si può usare questa stima per restringere la zona di ricerca blob ad un sub-immagine centrata sulla posizione stimata. Dopo aver eseguito il ritrovamento blob, prendere il blob che è più vicino alla posizione stimata come la vostra nuova misurazione posizione.

Un effetto collaterale di quanto sopra è che si può lavorare con la stima, se, per qualche motivo, il ritrovamento blob non riesce durante un fotogramma. E 'pericoloso per consentire a questa estrapolazione per troppo tempo, ma può dare una certa tolleranza per picchi di rumore minore.

Probabilmente si può vedere come questo potrebbe progredire ulteriormente per includere una stima di accelerazione da recenti frame o integrare la velocità / accelerazione da più fotogrammi al meglio estrapolare una posizione probabile per il campione successivo. Si potrebbe anche iniziare ad avere fiducia che la stima (con i dati accumulati dai telai attuali e precedenti) è più preciso (e forse preciso) che la misura reale. Alla fine si finisce con qualcosa come il filtro di Kalman.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top