2011-02-07 21 views
5

Digamos que tengo una forma como esta:Encontrar coordenadas de puntos en la frontera de una forma

enter image description here

Después de todos los chistes de mí queriendo llamar granos se han agotado, quiero encontrar los puntos en el borde de la forma. Sé que puede haber muchos, así que una buena distancia entre ellos es aceptada.

¿Existe un algoritmo para tal necesidad? ¿O un software? Todas las soluciones que surgieron implican mucho trabajo manual, especialmente si quiero dibujar una forma ligeramente diferente.

sabiduría Stackoverflow, por favor ayuda.

Respuesta

6

Es posible que sólo tiene que escanear los píxeles en horizontal y en vertical para encontrar las fronteras de color, o, si se desea una solución más sofisticada y general, es posible que, por ejemplo, utilizar el gradient method para detectar bordes:

enter image description here

Editar

Respondiendo a su comentario, la imagen es simplemente una matriz bidimensional, que contiene valores de píxeles. Puede probar cada píxel y seleccionar aquellos que tienen un color específico. De esta manera:

enter image description here

Y el resultado son los píxeles del borde:

{{35, 107}, {35, 108}, {35, 109}, {35, 110}, {35, 111}, 
{35, 112}, {35, 113}, {35, 114}, {35, 115}, {35, 116}, 
{35, 117}, {35, 118}, {35, 119}, {35, 120}, {35, 121}, 
{36, 103}, {36, 104}, {36, 105}, {36, 106}, {36, 107}, etc.... 
+0

No estoy seguro de cómo se hizo eso, sino para aclarar: Necesito una lista de coordenadas, no la imagen resultante. – Tudorizer

+1

@Tudorizer La imagen es una matriz. ¡La lista de coordenadas es la lista en (fila, columna) donde los píxeles son blancos! –

+0

¿Cómo generó esa imagen? – Tudorizer

2

Parece que usted está buscando "vectorización", o más precisamente "vectorización de mapas de bits". Si vectoriza su mapa de bits, obtendrá la versión vectorial de su forma, que le dará todas las coordenadas del límite.

Si es así, hay una serie de soluciones disponibles, incluyendo AutoTrace: http://autotrace.sourceforge.net/

+0

Esto parece interesante. Para aclarar, necesito las coordenadas de los puntos. Una lista/matriz de ellos. – Tudorizer

Cuestiones relacionadas