Berechnung der Zernike Koeffizienten |
28.07.2016, 09:20 | beecksche | Auf diesen Beitrag antworten » | |||||
Berechnung der Zernike Koeffizienten ich habe eine Punktwolke und möchte diese Fläche mithilfe von Zernike Polynomen beschreiben. Die Punkte sind in Polarkoordinaten in einem array gespeichert. die Zernike Koeffizienten könnten mithilfe brechnet werden. Ich interpretieren das Doppelintegral als zwei Summen: Mein Source Code sieht dabei folgendermaßen aus:
Die Koeffizienten die ich erhalte, sind jedoch nicht brauchbar. Ist meine Interpretation korrekt? |
|||||||
28.07.2016, 09:44 | beecksche | Auf diesen Beitrag antworten » | |||||
Hi da ich meine Beitrag leider nicht mehr editieren kann: Die Koeffizienten scheinen mir jedoch nicht wirklich das zu sein, was ich erwarte. Hier das coeffs-array (OSA Notation):
Bei der Fläche W handelt es sich um eine rotationssymmetrische Freiformfläche mit . Demnach sollte ich bei den Zernike Koeffizienten kein Offset erhalten, also . Dies is leider NICHT der Fall. Das gute ist, dass alle Koeffizienten außer die sphärischen Terme (4, 12, ...) gleich null sind. |
|||||||
28.07.2016, 09:53 | Steffen Bühler | Auf diesen Beitrag antworten » | |||||
RE: Berechnung der Zernike Koeffizienten Die Berechnung erscheint mir vom Prinzip her in Ordnung. Nur ein paar Anmerkungen zum Code:
Hier lässt Du r von 0 bis 1000 laufen, berechnest also nicht 1000, sondern 1001 Elemente. Das ist eigentlich 1 zuviel, außerdem habe ich Bedenken, ob surfacePoint(phi, 1000) überhaupt definiert ist. Auch wundert mich die unorthodoxe Definition mit dem Winkel als ersten Parameter, aber das ist natürlich Geschmackssache der Programmierers. Auch dass der Winkel im Gradmaß verwendet wird, ist zumindest auffällig. Bei surfacePoint(phi, r) mag er ja vielleicht als Index dienen, der dann allerdings in Sechserschritten inkrementiert wird, was auch ungewöhnlich wäre. Aber spätestens bei zernikePolynom(j, rho, phi) würde ich mich noch mal vergewissern, dass dort kein Bogenmaß erwartet wird. Viele Grüße Steffen |
|||||||
28.07.2016, 10:00 | beecksche | Auf diesen Beitrag antworten » | |||||
RE: Berechnung der Zernike Koeffizienten Dank für die schnelle Antwort. Der eigentliche source code sieht etwas anders aus. Ich habe die Konvertierung von Grad in Bogenmaß entfernt, um die Funktion etwas anschaulicher zu machen. Bei den Funktion surfacePoint() und zernikePolynom() kann ich mir eigentlich sicher sein, dass diese korrekt sind, da ich sie in anderen Teilen ebenso verwende. |
|||||||
28.07.2016, 10:16 | HAL 9000 | Auf diesen Beitrag antworten » | |||||
RE: Berechnung der Zernike Koeffizienten
Tja, und wer weiß was du sonst noch entfernt hast, und irgendwo dort in diesen undurchsichtigen Skalierungen wird der Fehler stecken. Z.B. entspricht deine Laufvariable ja nicht dem , allem Anschein nach ist und demzufolge auch , bei dir allem Anschein nach mit festem . Die Multiplikation mit dr macht also die Integralsumme um den Faktor R=1000 zu groß. |
|||||||
28.07.2016, 10:34 | beecksche | Auf diesen Beitrag antworten » | |||||
RE: Berechnung der Zernike Koeffizienten Da hast du recht, war blöd von mir.
Hinter der surfacePoint Funktion verbirgt sich eine NURBS Fläche mit . |
|||||||
Anzeige | |||||||
|
|||||||
28.07.2016, 11:46 | Steffen Bühler | Auf diesen Beitrag antworten » | |||||
RE: Berechnung der Zernike Koeffizienten
Und die hat den Mittelwert Null, wie Du schreibst. Ich würde jetzt mal prüfen, ob das auch herauskommt: also mal den Zernike fest auf Eins setzen und den Null-Koeffizienten berechnen, der dann Null sein muss. |
|||||||
28.07.2016, 13:37 | beecksche | Auf diesen Beitrag antworten » | |||||
Dank für eure ganzen Antworten und Hilfestellungen. Ich habe einen Denkfehler bei meiner Annahme des Offsets gemacht. Der Offset muss und kann in meinem Fall nicht 0 sein. Ich habe die Koeffizienten berechnet und daraus wieder die Fläche generiert. Es passt alles wunderbar! Dankesehr! |
|
Verwandte Themen
Die Beliebtesten » |
Die Größten » |
|
Die Neuesten » |
|