java - round - ¿Cómo aproximar un contorno vectorial desde un ráster de elevación?
redondear en java (3)
Tengo un mapa de elevación almacenado como un ráster. Me gustaría ajustar una curva suave de "vector" a los contornos de elevación constante. En mi aplicación, los datos son en realidad elevaciones geográficas, pero el problema podría generalizarse a cualquier función de dos variables.
Puedo producir otro ráster con líneas de contorno antialias y usar eso como entrada para el proceso de ajuste de vectores, si eso ayuda.
Esta pregunta es similar, pero estoy buscando una biblioteca gratuita que pueda usar en mi aplicación Java, o una explicación del algoritmo que yo (un no matemático) pueda implementar yo mismo. Además, en mi caso, ya encontré todos los "bordes" que me interesan, solo necesito vectorizarlos.
Otra pregunta toca la mía, pero el cartel nunca volvió a explicar cómo implementó el paso final, que es la parte que me falta.
Es probable que desee ajustar a curvas de bezier cerradas (curvas).
Hay una página con un applet de Java que hace tal ajuste. Eche un vistazo a su PSegment.java (sin comentar, bleh)
Si eso no hace el trabajo lo suficientemente bien, ajustar las curvas B-Spline a nubes de puntos por minimización de distancia cuadrada debe ser excesiva para la tarea.
Para obtener más información, Google (Scholar) busca cosas como "ajuste b-spline" y "spline cerrado bezier" deberían ayudar.
MATLAB hace esto con un diagrama de contorno: ver la función de contour
- produce datos de línea de contorno de una cuadrícula de datos f (x, y). No sé mucho sobre el algoritmo que utilizan (tienen una página que lo discute ), pero tal vez vale la pena mirar el equivalente de octava .
hay una tesis sobre el trazado de curvas de nivel y una página de CodeProject basada en la tesis.
Yo uso GDAL . Y en mi opinión, probablemente no quieras crear splines Bézier, lo que agrega complejidad. Los segmentos de línea cortos son lo suficientemente buenos.
El único problema es que debe crear los contornos en el momento de la preparación de los datos, no en su aplicación Java.
Aquí hay un mapa con algunos contornos creados a partir de datos de altura de USGS usando GDAL: