Matrix Pattern Recognition Algorithm per uno spazio 2D

1

Ho una foto che elaboro con il mio programma per ottenere un elenco di coordinate.

C'è una matrice rappresentata nell'immagine. In un test ideale avrei solo i sedici punti centrali di ciascun quadrato della matrice. Ma nei test reali ho alcuni punti di rumore.

Voglio utilizzare un algoritmo per estrapolare dall'elenco delle coordinate il gruppo formato da 16 coordinate che rappresentano al meglio una matrice.

  • Esempio di punti trovati:

  • Esempiodirisultatodesiderato:

Come si fa?

Nota: la matrice dell'immagine può essere ruotata un po 'troppo, quindi un algoritmo indipendente dalla rotazione sarebbe fantastico.

    
posta Univers3 23.05.2013 - 23:57
fonte

1 risposta

2

Ora sto usando un algoritmo che ha funzionato molto bene per me.

Questo è lo pseudo codice:

for each pair of points (p1, p2):
    let d be the distance vector (x and y) between them
    if d.x > (image.width-p1.x)/3 or d.y > (image.height-p1.y)/3:
        continue
    let d_t be d turned 90 degrees (d.y, -d.x)
    for i from 0 to 3:
        for j from 0 to 3:
            if there is no point at p1 + i*d + j*d_t:
                continue outer loop
    if you get here, you have a 4*4 grid
    
risposta data 16.08.2013 - 20:38
fonte

Leggi altre domande sui tag