2011-11-19 20 views
10

Sto cercando un modo per unire segmenti di linea 2D. Un segmento di linea è costituito da due punti vettoriali, l'inizio del segmento di linea e il punto finale del segmento di linea.Unisci segmenti di linea 2d

Desidero unire segmenti di linea che sembrano formare una stessa linea retta, non desidero unire i segmenti di linea se sono orientati completamente diversi ma si trovano due punti vicini l'uno all'altro. Il sistema che userò in questo è un sistema di visione artificiale in modo che i segmenti di linea ottenuti non saranno perfetti, ovvero gli orientamenti potrebbero essere leggermente fuori, i segmenti potrebbero non essere a lunghezza intera e.t.c.

penso che i seguenti 3 esempi riguardano il tipo di segmenti di linea che voglio unire insieme:

Example

Grazie

risposta

8

Questo è computazionale problema di geometria ci potrebbe essere alcune soluzioni nei libri di testo relativi, ma attenzione, questi problemi di solito sono molto difficili da risolvere e la precisione finita è un problema reale. Per quanto riguarda questo problema (in 2D) il termine che si sta cercando è che le linee sono vicine a collinear. In genere ciò che si fa per determinare se le linee sono collineari è innanzitutto metterle in un vector representation, quindi prendere il prodotto punto tra i vettori, che sarà uguale al coseno dell'angolo tra le linee. Quindi, se questo valore è vicino a uno sono vicini al collineare e dovrebbero essere uniti.

Il prossimo problema è determinare se le linee sono abbastanza vicine da dover essere unite. Puoi farlo trovando le linee che sono intersect o trovando le linee che hanno punti di inizio e di fine molto vicini ... In generale non è tutto così facile, ma probabilmente puoi ottenerne il 95% in questo modo.

Problemi correlati