Benutzer:KinimodRere/Gerchberg–Saxton Algorithmus
Der Gerchberg-Saxton Algorithmus (GSA) ist ein iterativer Phasensuchalgorithmus und wird zu den interaktiven Fourier-Transformations-Algorithmen (IFTA) gezählt. Der Algorithmus wurde in "A Practical Algorithm for the Determination of Phase from Image and Diffraction Plane Pictures“ von R. W. Gerchberg und W. O. Saxton in Optik (35, 237–246 1972) veröffentlicht und ist wegen seiner Einfachheit heute oft Ausgangspunkt für effizientere Algorithmen.[1]
Algorithmus
[Bearbeiten | Quelltext bearbeiten]Der Algorithmus besteht aus einer Schleife, welche eine Fourier-Transformation () und Fourier-Rück-Transformation () durchführt. Die Schleife wird so lange durchgeführt, bis ein Abbruchkriterium erfüllt wird (z.B. quadratischer Fehler der Pixel). Der Algorithmus wird hier für diskrete Pixel berechnet, dafür verwenden wir die diskrete Fourier-Transformation (auch kontinuierliche Transformation ist möglich).
Eingangsamplitudenverteilung aus
Konvergenz
[Bearbeiten | Quelltext bearbeiten]Es ist zu zeigen, dass der quadratische Fehler konstant bleibt oder abnimmt. Dazu schauen wir uns einen repräsentativen Punkt in Bildebene () und Beugungsebene () an. Wir definieren den quadratischen Fehler mit der gewollten Amplitude und der erreichten Amplitude. Mit Beginn des Algorithmus wird aus einer Ausgangsintensität mit FFT der komplexe Vektor erzeugt. Die Amplitude dieses Vektors ist später die Intensität des Holograms. Die Amplitude stimmt nicht, sie sollte die Amplitude der Bildebene haben (Schritt X). Die Amplitude wird mit dem Korrekturvektor mit korrigiert.
wird in die Beugungsebene zurücktransformiert (IFFT) . Da die Fouriertransformation additiv ist, kann auch aus den Transformierten erzeugt werden.
Wir stellen fest, dass ein Summand unseres Fehlers ist. Das bedeutend, dass mit fallenden der Fehler der Amplitudenquadrate kleiner wird und dadurch der Algorithmus konvergiert. Mit der Parsevalidentität (für diskrete und für kontinuierliche Fouriertransformationen):
sinkt damit auch der Fehler der Ausgangsintensität. Aus der Abbildung wird klar, dass wobei die Amplitudendifferenz zur Zielintensitätsverteilung ist.
- Fall: Ist also parallel zu bewirkt eine erneute Iteration keine Änderung der Phase und damit keine Änderung von der Fouriertransformierten
der Fehler bleibt für diesen Punkt konstant.
- Fall: Ist nicht parallel zu bewirkt die veränderte Phase in der Beugungsebene erneute Iteration eine Änderung in der Bildebene
der Fehler wird geringer.
Anwendung in der Optik
[Bearbeiten | Quelltext bearbeiten]Der Algorithmus nähert iterativ eine Phasenverteilung an, welche durch die Eingabe einer Zieldistribution festgelegt wird.
Mit dieser Eigenschaft ist der Algorithmus für die Berechnung von Brechungsmustern der Fernfeld-Beugung (Fraunhofer Beugung) geeignet: Hierzu wird mit dem Algorithmus aus dem Brechungsmuster als 2-dimensionale Intensitätsmatrix der Phasenverschub für den Laserstrahl berechnet. Der Phasenverschub kann beispielsweise durch Diffraktive Optische Elemente (DOE) erzeugt werden.
Auch wenn meist Zwei-dimensionale diskrete Signale verwendet werden, ist der Gerchberg-Saxton Algorithmus nicht an Dimension oder Kontinuität gebunden. Im Paper wird der Algorithmus in der kontinuierlichen Variante vorgestellt.
Pseudocode
[Bearbeiten | Quelltext bearbeiten]Sei: FT – Fourier-Transformation IFT – inverse Fourier-Transformation i – imaginäre Einheit exp – Exponentialfunktion Ziel und Eingang sind Ziel- und Eingangs-Amplitudenmatrizen A, B, C & D sind die komplexen Matrizen der selben Größe, wie Ziel- und Eingangs-Amplitudenmatrizen Amplitude() bestimmt die Amplitude der einzelnen Einträge der Matrix z.B. für einen komplexen Eintrag z = x + iy, Amplitude(z) = sqrt(x·x + y·y) Phase() bestimmt die Phase der einzelnen Einträge einer komplexen Matrix z.B. Phase(z) = arctan(y / x) Ende Sei Algorithmus Gerchberg–Saxton(Eingang, Ziel, Erneuerte_Phase) ist AA:= IFT(Ziel) Wiederhole solange das Determinierungsargument nicht erfüllt ist BB:= Amplitude(Eingang) × exp(i × Phase(A)) C := FT(B) D := Amplitude(Ziel) × exp(i × Phase(C)) A := IFT(D) Ende Wiederhole Erneuerte_Phase = Phase(A)
Hier wird der grundlegende Algorithmus als Pseudo-Code beschrieben. Heute gibt es eine Vielzahl an Verbesserungen, die den Algorithmus effizienter machen.
See also
[Bearbeiten | Quelltext bearbeiten]References
[Bearbeiten | Quelltext bearbeiten]- R. W. Gerchberg and W. O. Saxton, "A practical algorithm for the determination of the phase from image and diffraction plane pictures,” Optik 35, 237 (1972)
External links
[Bearbeiten | Quelltext bearbeiten]- Dr W. Owen Saxton's Internetseite [1], [2]
- Applications and publications on phase retrieval from the University of Rochester, Institute of Optics
- SLM ToolBox. Ein kostenloses Programm für Windows zur Berechnung und Anzeige von 'Hologrammen' (bzw. Frauenhofer-Beugung)
- Ein Python-Script des Gerchberg-Saxton-Algorithmus
[[Category:Digital signal processing]]
[[Category:Physical optics]]
[[Category:Articles with example pseudocode]]
- ↑ Tom D. Milster: Chapter 3 - The Gerchberg-Saxton Phase Retrieval Algorithm and Related Variations. In: Optical Holography. Elsevier, 2020, ISBN 978-0-12-815467-0, S. 61–72 (sciencedirect.com [abgerufen am 19. Oktober 2020]).