Gerchberg–Saxton算法
生活随笔
收集整理的這篇文章主要介紹了
Gerchberg–Saxton算法
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
偽代碼:
Let:FT – forward Fourier transformIFT – inverse Fourier transformi – the imaginary unit, √?1 (square root of ?1)exp – exponential function (exp(x)=ex)Target and Source be the Target and Source Amplitude planes respectivelyA, B, C & D be complex planes with the same dimension as Target and SourceAmplitude – Amplitude-extracting function:e.g. for complex z = x + iy, amplitude(z) = sqrt(x·x + y·y)for real x, amplitude(x) = |x|Phase – Phase extracting function:e.g. Phase(z) = arctan(y/x) end LetGerchberg–Saxton Algorithm(Source, Target, Retrieved_Phase)A = IFT(Target)while error criterion is not satisfiedB = Amplitude(Source) * exp(i*Phase(A))C = FT(B)D = Amplitude(Target) * exp(i*Phase(C))A = IFT(D)end whileRetrieved_Phase = Phase(A) end Gerchberg–Saxton Algorithmpython代碼
import math import numpy as npdef Ger_Sax_algo(img, max_iter):h, w = img.shapepm_s = np.random.rand(h, w)pm_f = np.ones((h, w))am_s = np.sqrt(img)am_f = np.ones((h, w))signal_s = am_s*np.exp(pm_s * 1j)for iter in range(max_iter):signal_f = np.fft.fft2(signal_s)pm_f = np.angle(signal_f)signal_f = am_f*np.exp(pm_f * 1j)signal_s = np.fft.ifft2(signal_f)pm_s = np.angle(signal_s)signal_s = am_s*np.exp(pm_s * 1j)pm =pm_freturn pm?
總結(jié)
以上是生活随笔為你收集整理的Gerchberg–Saxton算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。