2011-11-19 18 views
10

Estoy buscando una manera de unir segmentos de línea 2D. Un segmento de línea está formado por dos puntos vectoriales, el inicio del segmento de línea y el punto final del segmento de línea.Merge 2d segmentos de línea

Quiero unir segmentos de líneas que parecen formar la misma línea recta, no quiero unirme a los segmentos de línea si son de orientaciones completamente diferentes pero tienen 2 puntos cercanos entre sí. El sistema en el que voy a usar esto es un sistema de visión por computadora, por lo que los segmentos de línea obtenidos no van a ser perfectos, es decir, las orientaciones podrían estar un poco apagadas, los segmentos podrían no ser de longitud completa e.t.c.

creo que los 3 ejemplos siguientes cubren el tipo de segmentos de línea que quiera agrupar:

Example

Gracias

Respuesta

8

Este es un problema de geometría computacional puede haber algunas soluciones en los libros de texto relacionados, pero ten en cuenta que estos problemas suelen ser muy difíciles de resolver y la precisión finita es un problema real. Con respecto a este problema (en 2D) el término que probablemente busque es que las líneas están cerca de collinear. Normalmente, lo que se debe hacer para determinar si las líneas son colineales es colocarlas primero en vector representation, luego tomar el producto escalar entre los vectores, que será igual al coseno del ángulo entre las líneas. Entonces, si este valor está cerca de uno, están cerca de colineales y deben unirse.

El siguiente problema es determinar si las líneas están lo suficientemente cerca como para necesitar unirse. Para ello, busque las líneas intersect o busque líneas que tengan puntos de inicio y fin muy cercanos ... En general, no es tan fácil, pero probablemente pueda obtener el 95% de esta manera.

Cuestiones relacionadas