什么是G-S迭代算法?

原理及其应用举例。
关注者
62
被浏览
92,128

2 个回答

首先这是维基的介绍:

The Gerchberg–Saxton (GS) algorithm is an iterative algorithm for retrieving the phase of a pair of light distributions (or any other mathematically valid distribution) related via a propagating function, such as the Fourier transform, if their intensities at their respective optical planes are known.

另外我之前做的一个关于计算全息图的小project提到了GS算法,按照维基里面的图,简单说一下我的理解。


按照图片,我们想在光源A(通常是平行光)的基础上叠加相位B,从而经过傅立叶变换C(也就是通过凸透镜)后在平面D上得到如图K所示的又亮(intensity efficient) 又均匀(low variance)的笑脸。

GS算法就是根据想要的图像K求出B上面应该叠加什么样的相位也就是所谓的计算全息图F,具体思路如下:

(1)离散化:设B上面每个像素点的相位是\phi_j,D上面每个像素点的复振幅为V_m. GS算法的目的是通过改变\phi_j使\sum_m |V_m|最大。也就是说所有像素点亮度的和最大,从而达到“明亮”的目的。

(2) 最优化:根据上面的思路我们可以计算出\phi_j({|V_m|}).为了让所有人都可以看懂,我不把公式放上来,刚兴趣的话见文末的参考文献。

(3) 迭代:现在问题来了。要想求出最优化的\phi_j我们需要V_m;但是V_m又是通过\phi_j决定的。这样的话怎么办呢?解决方法是先给\phi_j赋一个初值,得到的V_m肯定满足不了(1)中的要求。我们就把这个V_m带入(2)中最优化公式再求出\phi_j,然后进行迭代计算。经过有限步数之后结果会收敛,也就是说每次计算出的V_m差别都不太大。这时候我们就求出想要的相位图了。

基本思路就是这样。其实还有很多类似的算法用于求\phi_j。不同的只是在第一步离散化的时候我们想要什么最大。GS算法是要\sum_m |V_m|最大,你也可以让\sum_m Re(V_m)最大,等等。

现在理解文首那句解释了么?

参考文献:

Di Leonardo, Roberto, Francesca Ianni, and Giancarlo Ruocco. "Computer generation of optimal holograms for optical trap arrays." Optics Express 15.4 (2007): 1913-1922.

GS原理:在paraxial approximation下得出2f系统中两端平面的光波场近似符合傅立叶变换。在迭代的傅立叶变换以及逆变换过程中,通过对两端平面的光振幅设置constraint(分别是孔径处光振幅分布以及output plane目标振幅分布)、解放output plane的相位自由度来实现重建孔径处光波场相位分布的目的。GS算法是单调收敛(Fienup 1982年有证)的,同时又是非凸的,所以是个坑爹的问题。需要配合其他步骤一起服用方能如愿重建相位。

目前市面上有很多个优化门派,我走的是MRAF-OMRAF这一派,在2012剑桥Gaunt and Hadzibabic的OMRAF算法(OMRAF算法基于MRAF算法,MRAF算法又基于Adaptive-Additive算法, 都是GS算法的一步一步优化)基础上实现无边缘毛躁现象的近似完美重建,命名为SOMRAF算法。下图为例,目标光强分布是四分之一的圆形芝士蛋糕(大误

各种算法重建目标光强分布的直观比较
Merit比较

欢迎大佬指导!


------------------以下2018年头原答案-------------------

接下来要学这个算法,然后用于SLM-based的相位调制。先占个坑,等有产出了再补充。

这个算法几个缺陷,一个是optical vortices, 一个是数学结构上的non-trivial convergence,如果traget intensity结构比较复杂,此算法不可以裸用,必须搭配其他优化步骤一起服用。

此外如果是用SLM来调整Input光的相位,那么还需用到另一个算法Shack-Hartmann algorithm来纠正相位误差,因为SLM普遍存在curvature问题,以及光学系统也有其他相差(phase error)。curvature也属于相差的一种。


更新

简单粗暴模拟一下GS+LG01 beam计算相位畸变:

计算预设相差
计算结果