Ho un'immagine che elaborerò con il mio programma per ottenere un elenco di coordinate.Riconoscere una matrice in un gruppo di punti
Rappresentata nell'immagine c'è una matrice. In un test ideale otterrei solo i sedici punti centrali di ogni quadrato della matrice. Ma nei test reali prendo più punti di rumore.
Desidero utilizzare un algoritmo per estrapolare dall'elenco delle coordinate, il gruppo formato da 16 coordinate che rappresentano al meglio una matrice.
La matrice può avere qualsiasi rapporto di aspetto (compreso tra un intervallo) e può risultare leggermente ruotato. Ma è sempre una matrice 4x4. La matrice non è sempre presente nell'immagine, ma non è un problema, ho bisogno solo della migliore corrispondenza. Naturalmente il punto fondato sono sempre più di 16 (o i saltare)
Esempio di punti fondate:
Esempi di risultati desiderata:
Se qualcuno mi può suggerire un modo preferito per farlo sarebbe grandioso.
Sto pensando alla distanza euclidea tra i punti.
For each point in the list:
1. calculate the euclidean distance (D) with the others
2. filter that points that D * 3 > image.widht (or height)
3. see if it have at least 2 point at the same (more or less) distance,
if not skip
4. if yes put the point in a list and for each same-distance founded points: go to 2nd step.
alla fine se ho 16 punti nell'elenco, questa potrebbe essere una matrice.
Qualche suggerimento migliore?
Grazie
Vuoi una forma con un reticolo periodico? Peridocity su X-line o linea Y o entrambi? Che dire della simetricità angolare? Vuoi forme di diamanti anche tu? –
Una forma di diamante non è mai rappresentata. Penso che la rotazione massima (a partire da un quadrato perfetto) possa essere di 45 ° (e -45 °). Sì, la forma ha un reticolo periodico (X e Y) ma quando estrapolo i punti dall'immagine, i punti estrapolati differiscono leggermente. – Univers3
Un quadrato ruotato di 45 ° non sarebbe un diamante? – mbeckish