2009-02-26 18 views
11

En el article de Peter Alfred sobre la interpolación de datos dispersos multivariantes mencionó, que de una variedad de esquemas, solo unos pocos son realmente populares entre los profesionales. Nombró, por ejemplo, el método de Shepard y Hardy Multiquadrics. Pero ese artículo tiene casi 20 años, y lo que es realmente interesante es qué métodos son ampliamente utilizados hoy en día.¿Qué método de interpolación multivariante es el mejor para el uso práctico?

Si tiene experiencia en el uso de algunos esquemas de interpolación espacial, cuéntenos al respecto.

UPD: Para hacer esta pregunta más competitiva, la he reformulado. Era "¿Qué métodos de interpolación multivariante has usado alguna vez?"

+0

¿Podemos tener un enlace al artículo, si está en línea? –

+0

Claro. He actualizado el cuerpo de la pregunta con un enlace citeseer. – akalenuk

Respuesta

6

He usado Kriging en el pasado, con datos dispersos que habían venido con estimaciones de exactitud en cada muestra. Parecía una poderosa técnica que merecía ser utilizada más ampliamente fuera del mundo de la geoestadística.

2

la única aplicación que he visto es el de littleCMS código (un motor de gestión de color de fuente abierta).

la primera vez que comprobado, que acaba de hacer una interpolación lineal en un eje, y luego interpolado entre ese resultado y el punto en el otro eje. Acabo de volver a descargarlo, y parece ser mucho más sofisticado. no se puede comparar con el artículo que menciona, pero podría querer verificarlo, está en el archivo cmslut.c.

+0

El código que está viendo implementa la interpolación tetraédrica. Mathworks tiene un artículo [http://blogs.mathworks.com/steve/2006/11/24/tetrahedral-interpolation-for-colorspace-conversion/] sobre por qué esa es una buena técnica para la conversión del espacio de color. Para otras aplicaciones, su millaje puede variar. –

1

trabajé con suavizado de los datos dispersos en 3D para la manipulación superficie LINK. Esto involucró muchos puntos y quería una superficie muy lisa, por lo que el proceso primero encontró una superficie de segundo orden más adecuada para los datos y luego una fase de relajación donde los puntos se ajustaron a la superficie. Esta no es una superficie de interpolación a los datos originales, sino que era una forma de reducir el orden del interpolador de forma optimizada.

El método implicaba operar en regiones por partes que se adaptaban bien a una aproximación de segundo orden.

La otra característica interesante del método es que los puntos eran vértices de los triángulos y la conectividad se conserva durante suavizado.

15

(Esto conseguirá mucho tiempo, a menos que acabo de perder fuelle.)

En primer lugar, algunos comentarios sobre los datos no dispersa. (Véase la respuesta que hace referencia a LittleCMS)

Hay dos tipos de interpolación de color que es común. Hace algunos años, la interpolación trilineal (interpolación lineal del producto tensor) era un enfoque común para la interpolación de la tabla de colores. interpolación trilineal de hecho puede ser implementado como un conjunto secuencial de uno interpolaciones dimensionales, por primera vez en un eje, a continuación, a continuación, a lo largo de un segundo eje, etc. Hace

muchos años todos nos dimos cuenta de que la interpolación trilineal introduce artefactos en imágenes en color, cuando se aplica a ciertos tipos de transformaciones. Los problemas se ven en neutrales. Una solución es pasar a un interpolador simplicial, en 3-d, mediante la disección de un cubo en 6 tetraedros. En n dimensiones, el cubo de la unidad se diseccionará en símiles factoriales (n). Hay otras disecciones de un cubo, pero este estilo particular asegura que la diagonal principal siempre es un borde compartido para todos los símplex. Esto, a su vez, restaura el buen comportamiento de los neutrales cuando se aplica a determinadas tablas de búsqueda de colores.

Ahora déjame entrar en la cuestión de la verdadera interpolación de datos dispersos.

Otros han mencionado una variedad de esquemas. Kriging, multiquadrics, métodos basados ​​en la distancia son algunos. (Cuando hice algunos trabajos en el pasado con estos esquemas, prefería los métodos multiacúdicos inversos). Todos estos son realmente solo variaciones de los métodos de función de base radial, un esquema común. Los métodos RBF tienen sus puntos buenos y malos. Por lo general, generarán un interpolador uniforme, esto por supuesto depende de la función de base específica elegida, así como de si usted elige limitar el soporte. Los métodos RBF también le permiten extrapolar, al menos tan lejos como se extienda el soporte de los elementos de la base radial. Si se permite que los elementos base sean de extensión infinita, no se aplicará ninguna restricción explícita a la extrapolación. (La extrapolación en general es algo malo de hacer). Un problema con los métodos RBF es que requieren la solución de sistemas grandes de ecuaciones lineales, y esos sistemas de ecuaciones a menudo son matrices densas. Esto significa que el tamaño del problema, en términos de la cantidad de puntos de datos que puede manejar, tiende a estar limitado por el álgebra lineal. Si, en cambio, limita el soporte al truncar los elementos base, entonces las matrices pueden volverse escasas. Esto mejorará el álgebra lineal si usa un paquete de matriz disperso para la solución. Al mismo tiempo, la distancia de soporte se convierte en un parámetro no lineal que debe controlar. Además, métodos como multiquadrics y métodos multiquádromos inversos pueden tener un parámetro secundario no lineal que controla la forma de los elementos básicos. Kriging tiene problemas similares, y agruparía todos estos métodos juntos.

En estos casos, todos estos métodos que clasifiqué como variantes de RBF a menudo están limitados en la cantidad de puntos que manejarán cómodamente. Dependiendo de cómo maneje las cosas y la cantidad de memoria disponible, ese límite a menudo puede estar en el orden de algunos miles de puntos.

Otro problema con la clase general de métodos RBF es lo que llamaré intrapolación. Este es un neologismo que creé hace muchos años para describir la interpolación a través de un agujero relativamente grande en los datos. De hecho, a menudo puede haber problemas incluso al interpolar a través de agujeros más pequeños en los datos. Estos métodos, debido a que son suaves hasta cierto punto, pueden introducir extremos no deseados (grandes picos o valles) en la superficie interpolada. Este es un problema común con incluso los interpolantes 1-d, a menudo vistos como artefactos de timbre con spline cúbico o interpolantes polinomiales, y ciertamente visto con los interpoladores de la serie Fourier. El problema en dimensiones más altas es incluso reconocer que realmente ha sucedido, ya que trazar superficies en más de tres dimensiones tiende a ser difícil.

Si tiene más puntos que ese límite, o si estos artefactos de llamada son inaceptables, a continuación, otros métodos son a menudo una mejor opción. Si está dispuesto a usar un interpolador lineal, entonces la solución más simple en dimensiones más altas es comenzar con un teselado de los datos. Por lo tanto, en 3 dimensiones, tesela los datos (típicamente una teselación delaunay) en tetraedros. Esto es bastante eficiente de hacer, y hay muchas herramientas que se pueden encontrar para este propósito. Entonces es un problema simple interpolar cualquier punto individual. Simplemente identifique en qué simplex reside el punto, calcule las coordenadas baricéntricas como pesos de interpolación dentro del símplex y forme la combinación lineal correspondiente de los valores de la función en cada vértice del síntx encontrado. Esto es extremadamente rápido y eficiente.

Una desventaja de estos métodos basados ​​en teselaciones es que normalmente lo restringen al casco convexo de los puntos de datos, y como malo, si sus datos se encuentran en un dominio no convexo, entonces el interpolador puede hacer cosas extrañas en algunas regiones de tu dominio Otro problema con el esquema que mencioné anteriormente, es que el interpolador será solo por tramos lineales, pero una vez que te mueves a dimensiones más altas, las cosas se vuelven desagradables rápidamente. Se pueden encontrar otros métodos para una interpolación uniforme basada en una teselación, pero requerirán más esfuerzo y, por lo tanto, son mucho menos comunes.

Las compensaciones básicas deberían ser obvias aquí. Si necesita un interpolador uniforme y solo tiene algunos puntos, a menudo se eligen los métodos RBF. Son simples, fáciles de usar, etc.El método real elegido a menudo es solo una cuestión de conveniencia, o incluso hábito. Si he usado una herramienta anteriormente y estoy contento, probablemente me sienta feliz de nuevo. Dado que la pregunta era qué método es el "mejor para el uso práctico", señalaré que lo mejor es una palabra muy subjetiva cuando se aplica fuera de contexto. ¿Cuáles son sus objetivos en un problema de interpolación? ¿Qué conjunto de habilidades tienes? ¿Qué conjunto de herramientas sabes cómo usar? ¿En qué entorno trabajarás? Todos estos factores influirán en su elección del mejor método.

Si tiene muchos puntos de datos, y la velocidad es esencial, pero la suavidad máxima no es tan importante, entonces generalmente buscará un interpolador simplicial. Por supuesto, si tiene puntos suficientes, entonces la naturaleza lineal por partes de la bestia es de menor importancia. El interpolador lineal por partes aquí tiene la gran virtud en algunos casos de que nunca puede generar extremos en su superficie que no existían en los datos. Para algunos problemas, caracterización del color, por ejemplo, esto es de suma importancia.

Otro problema es el ruido. Si bien la presencia de ruido a menudo es una señal de que es necesario un alisamiento de algún tipo, no todas esas superficies tienen suavizado aplicado. Cualquier operador de suavizado a veces suavizará características importantes de los datos también. Esto sucede porque podemos pensar en un operador de suavizado como un filtro de paso bajo. El comportamiento de alta frecuencia a menudo es ruido, pero también puede ser solo un dedo u hombro filoso en mi superficie que no puedo permitirme perder. Si esto es un problema, entonces puede estar dispuesto a usar un interpolante incluso en presencia de ruido a veces significativo. En ese caso, sugeriré que el interpolador más simple y de orden más bajo sea el mejor. Un interpolador suave y más global también tenderá a amplificar cualquier ruido en los datos, por lo que si busca el interpolador de varianza más bajo en presencia de ruido, generalmente será un interpolador lineal.

Por supuesto, hay muchas variedades de splines de placas finas, interpolatorias o no. Una vez que va más allá de una dimensión, sus opciones también se expanden, al menos si está dispuesto a hacer el trabajo.

Terminaré aquí antes de que se convierta en un libro.

+1

¡Muchas gracias por su respuesta! El asunto es que actualmente estoy trabajando en un esquema simplicial con una suavidad ajustable como parte de mi investigación doctoral, y solo quería saber si es un problema de vida real o no. Gracias otra vez. – akalenuk

Cuestiones relacionadas