3D-interpolation Methoden in C (oder Fortran), und der Vergleich zu Shepard ' s Methode
Ich würde gerne Interpolation von 3D-Skalar-Funktion f(x, y, z)
. Ich habe codierten 3D linear-interpolation-Algorithmus (http://en.wikipedia.org/wiki/Trilinear_interpolation). Das war nicht so schlecht.
Jedoch, ich möchte etwas anspruchsvollere, z.B. 3D-kubischen splines. Gibt es irgendwelche open source, einfach zu nutzen, öffentlich verfügbar code für die Interpolation eines 3D-Skalare? Ich würde lieber mit C, aber Fortran wäre OK als gut. Ich möchte zu bleiben Weg von Matlab.
Ich habe ähnliche Fragen hier:
Interpolation eines skalaren Feldes in einem 3D-Raum
und
Was sind einige gute Bibliotheken für 3D-interpolation?
Die zweite war OK mit Matlab, die ich nicht bin.
Als für die erste, die wichtigste Anregung war Shepard ' s Methode. Ich bin gespannt, wie genau Shepard ' s Methode ist. Zum Beispiel, im Falle eines einheitlichen Rasters, kann man Shepard ' s Methode nur in der Nähe der grid-Punkte, und in diesem Fall tut es tendenziell genauer als die lineare interpolation oder kubische splines? Ich mir vorstellen nicht, war sich aber nicht 100% sicher, und wenn in der Tat ist es nicht besser, dann würde ich lieber ein code, mit so etwas wie splines, wenn Sie solche codes sind verfügbar.
Ich brauche ein Interpolations-Algorithmus für ein großes Projekt, ich glaube auch langsam, wenn alles codiert ist in Matlab.
Beschreiben Sie Ihre Eingabe-und Ausgabe-raster bitte: gleichmäßige / ungleichmäßige, wie groß ?
InformationsquelleAutor db1234 | 2013-05-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Werfen Sie einen Blick auf Geometrische Werkzeuge für die Interpolation:
vorgefertigte C++ für tricubic, uniform B-splines und vieles mehr.
(einspline, eine C-Bibliothek für die B-splines im 1d-2d-3d,
zu sein scheint, ruht in 2013; der Autor nicht beantworten E-Mails.
Es ist auch C -, C++ - templates reduzieren würde-code aufblasen für die Interpolation
schwimmt, Farben, vecs ...)
Ich habe nicht verwendet.
Auf Inverse Distanz Gewichtung
ein.k.ein. Shepard ' s Methode, die Sie ergreifen können alle Anzahl der Nachbarn: in 3d, 2^3 oder 3^3 oder 4^3 ...
Ein Allgemeines problem ist "schlaffe" — siehe die Zeichnung im link.
"Genauigkeit" der interpolation ist wirklich schwer zu Messen: was ist "golden",
für welche Klasse von Daten /was für ein Lärm ?
Und Sie haben zwei Maßnahmen, der Fehler bei den Daten und Glätte, an den Handel aus
— für
Foto-Erweiterung
drei:
aliasing, Verzerrung und edge halos.
Es gibt eine Theorie, die auf spline-interpolation von band-begrenzten Funktionen, aber afaik keins IDW.
Hinzugefügt:
Was ist mit dem
bullseye-Effekt ?
Gut, IDW können, haben die Spitzen oben in der Nähe der Datenpunkte, wenn gibt es hohe Gipfel weit entfernt.
Zum Beispiel in 1d,
IDW( [0 0] [1 0] [2 y] ) = y/7 bei x = 1/2.
Aber IDW GEWICHTE ~ 1 /Abstand kann auch sein, spiky, fallen zu schnell, für einige Aufgaben.
Interpolationsmethoden und Kernel müssen angepasst werden, die spezifische Daten und Lärm — eine Kunst.
guter link -- vgl. matplotlib/delaunay/testfuncs.py. Würden Sie wissen, der eine Zusammenfassung der Interpolations-Methoden, Metriken, test-Funktionen, da dann (1982) ?
Vielen Dank für die einspline Vorschlag, ich werde sicherlich in diesem Blick. Und, Dank für die Worte der Weisheit über die interpolation im Allgemeinen und die Probleme mit IDW.
InformationsquelleAutor denis
Den bspline-fortran Bibliothek keine 2d-6d b-spline-interpolation für die Daten auf einem regelmäßigen Gitter. Es ist geschrieben in modernes Fortran (es ist ein basic-Unterprogramm-Schnittstelle und auch eine Objekt-orientierte Schnittstelle).
InformationsquelleAutor Time Laird