Seite 1 von 1
Gradienten aus xyz-Feld darstellen
Verfasst: Dienstag 18. Januar 2022, 11:18
von G-Rizzle
Hallo,
ich habe ein Feld von xyz-Koordinaten. Insbesondere interessieren mich nun neben den absoluten Z-Werten die Gradienten.
Gibt es eine elegante Lösung, um diese in Python zu berechnen / darzustellen?
Re: Gradienten aus xyz-Feld darstellen
Verfasst: Dienstag 18. Januar 2022, 13:30
von Sirius3
Was hast Du genau? Ein Feld, oder xyz-Koordinaten, oder auf einem Feld jeweils x,y und z Koordinaten?
Und wie soll der Gradient gebildet werden?
Re: Gradienten aus xyz-Feld darstellen
Verfasst: Dienstag 18. Januar 2022, 15:15
von G-Rizzle
ich habe 20 mio xyz-Koordinaten auf 1x1 mm^2 messfläche.
wie der Gradient gebildet werden soll ---> ???
Re: Gradienten aus xyz-Feld darstellen
Verfasst: Dienstag 18. Januar 2022, 15:29
von Sirius3
Hilft jetzt nicht wirklich, wie die Daten aussehen.
Da kann ich auch nur ??? schreiben.
Re: Gradienten aus xyz-Feld darstellen
Verfasst: Dienstag 18. Januar 2022, 17:25
von G-Rizzle
Mir liegt eine .txt Datei nach folgendem Beispiel vor:
--------/------0,001 - 0,002 - 0,003 - 0,004
0,001---------1-------3--------5---------3
0,002---------2-------2--------2---------1
0,003---------7------8--------6---------2
0,004---------2-------1--------9---------7
die erste Spalte sind y-Werte, die erste Zeile x-Werte einer 1mm^2 großen Fläche.
Die Matrix sind gemessene Höhenwerte in z-Richtung. Die Werte im Bsp oben sind alle fiktiv. Wie gesagt liegen mir 20 mio Punkte auf der genannten Fläche vor.
Alle Werte schreibe ich in eine Liste von Listen um mit jeweils 3 Einträgen [[x1,y1,z1], [x2,y2,z2], .....].
Damit habe ich mithilfe von matplotlib eine Heatmap erstellt, also jedem z-Wert einen "Intensitätsfaktor" als Farbe (bzw Schwarzton) zugewiesen. Je tiefer der z-Wert, desto dunkler der zugewiesene Grau- bzw. Schwarzton. Damit erzeuge ich folgendes Bild:
Kontext: Das ist eine Mikroskopaufnahme einer 3d-gedruckten Metalloberfläche.
Dementsprechend sehe ich hier nur Absolutwerte des Höhenprofils. Wichtig wäre es mir aber auch Gradienten zu sehen, und genau das ist meine Frage:
1. Gibt es eine elegante, bereits implementierte Methode für sowas?
2. Wenn nicht --> Wie berechne ich sowas? Natürlich habe ich bereits gegoogelt, da finde ich allerdings nur Infos zum Gradientenberechnen von Funktionen
Re: Gradienten aus xyz-Feld darstellen
Verfasst: Dienstag 18. Januar 2022, 18:06
von __deets__
Der Gradient in einer Matrix um einen Punkt herum wird ueblicherweise mit einem horizontalen und einem vertikalen Sobel-Operator berechnet. Die beiden Werte sind dann der Gradient an der Stelle in x/y Richtung.
https://en.wikipedia.org/wiki/Sobel_operator
Re: Gradienten aus xyz-Feld darstellen
Verfasst: Mittwoch 19. Januar 2022, 09:22
von Sirius3
Du machst Dir also das Leben unnötig schwer, indem Du behauptest, Du hast x,y,z-Koordinaten.
In Wirklichkeit hast Du z-Werte auf einem regulären Rastern, bei dem es simpel ist, den Differenzenquotienten zu bilden.
Auch Dein Scatterplot aus dem anderen Thread ist viel zu kompliziert, weil Du eigentlich nur ein imshow benötigst, bzw. eigentlich die Matrix eins zu eins per PIL als Bild speichern könntest.
Re: Gradienten aus xyz-Feld darstellen
Verfasst: Mittwoch 19. Januar 2022, 10:25
von G-Rizzle
Sirius3 hat geschrieben: Mittwoch 19. Januar 2022, 09:22
In Wirklichkeit hast Du z-Werte auf einem regulären Rastern, bei dem es simpel ist, den Differenzenquotienten zu bilden.
Genau das ist meine Hoffnung / Vermutung; Sobel sieht super aus, finde ich auf den ersten Blick allerdings etwas kompliziert. Habe mal für die erste Spalte und die erste Zeile der Bsp-Matrix oben die Gradienten über die Differenzenquotienten gebildet, soweit ich ihn so verstanden habe. Stimmt das so?

Re: Gradienten aus xyz-Feld darstellen
Verfasst: Samstag 22. Januar 2022, 09:43
von G-Rizzle
Push
Re: Gradienten aus xyz-Feld darstellen
Verfasst: Samstag 22. Januar 2022, 10:55
von Sirius3
Wenn es die richtige Lösung liefert, wird es wohl richtig sein, sonst nicht. Differenzenquotienten sind eine Art Gradienten anzunähern, ob das das gewünschte Ergebnis liefert, kommt auf Deine Bedürfnisse an.