9

Ho una lista di punti. Ogni punto è una coordinata x e (entrambi sono numeri interi). Ora sto cercando di trovare modelli noti, come linee, archi o cerchi, sapendo che i punti non sono perfettamente sullo schema.Come trovare modelli (linee, cerchi, ...) da un elenco di punti?

Qual è il modo migliore per farlo? Non ho molti indizi per iniziare.

Modifica: i punti sono ordinati. L'utente sta disegnando qualcosa e il programma dovrebbe rilevare i migliori schemi. Ad esempio, se viene disegnato un triangolo, dovrebbe rilevare tre linee.

+0

Tutti i punti costituiscono un singolo motivo? O stai cercando più modelli nello stesso elenco di punti? – Nosredna

+0

Sto cercando più modelli nella stessa lista – Burkhard

+0

Basta leggere la modifica. L'utente sta disegnando. Questo disegno è pixel e hai un elenco di pixel? O è questo disegno di segmento di linea e hai una lista di endpoint? – Nosredna

risposta

9

dare un'occhiata a Hough Transformation. quello che fai è: trasformi la tua immagine in spazio "circolare" e poi devi solo trovare dei pixel chiari.

trovare i pixel chiari in un'immagine è abbastanza semplice, basta applicare un limite.

il numero di regioni di pixel chiare è il numero di cerchi. puoi ricostruire la loro posizione originale sull'immagine applicando la funzione inversa.

+0

+1. La trasformazione di Hough è la solita soluzione per questo problema. – erickson

+0

+1. Usato in passato per il rilevamento della palla con un laser SICK, ha funzionato alla grande. – rofrankel

+0

Inoltre, è possibile utilizzare una variante di Hough Transform per rilevare linee, triangoli, ecc. Può essere un po 'complicato elaborare i dettagli, ma può essere fatto. – rofrankel

3

Il classico riconoscimento è una rete neurale. Le reti neurali funzionano "bene" e richiedono un allenamento in qualche modo.

Le tecniche matematiche ei principi alla base delle reti neurali possono essere trasferiti (con le opportune modifiche) alla maggior parte degli altri riconoscitori di cui ho letto; ad es. catene di Markov, modelli bayesiani.

1

Fintanto che lo si limita alle forme di base, è possibile calcolare una "direzione" media del tratto corrente e creare una sequenza di "tratti" al di fuori di questi.

E 'probabilmente più facile riconoscere una forma in base a queste informazioni:

  • un cerchio ha un bel costante derivata seconda
  • un 'sette' ha un colpo a destra, seguito da un colpo alla in basso a sinistra
  • ...
1

io vi guardo la distanza da un punto P a ciascuno degli altri punti, che se P è il centro di un CI rz, otterrai effetti statistici molto distinti.

Potrebbe essere possibile invertire questo e trovare i punti che hanno queste proprietà. Come prima cosa, qualcosa come la deviazione standard delle distanze potrebbe funzionare e trovare la posizione in cui si potrebbe prendere la derivata rispetto alla posizione e cercare di ridurla al minimo. Una volta trovato il minimo, prova a trovare un insieme di> 3 punti equidistanti da esso.

Mi aspetto che abbiate bisogno di qualcosa di diverso dalla deviazione standard, qualcosa che è meno interessato ai valori anomali e più interessato all'aggregazione.

Inoltre, questo non ti farà molto bene per le linee.

1

Dato che stai ricevendo i pixel, e stanno arrivando in ordine, puoi iniziare controllando la pendenza tra, ad esempio, ogni 10 pixel tracciato e guarda come cambia la pendenza. Le discontinuità ti danno qualche informazione.

Problemi correlati