- 存在的疑惑:使用ASM实现ITFA,是否在物理实现是还需要加上傅里叶透镜?不需要使用基于FFT2实现的ITFA,在使用FFT2时,重建效果好,但是不适用于近场,使用最基本的ASM时,重建效果也很好,但是不适用于远场,使用线性卷积时,效果不好,有振荡,使用带限ASM时,效果不好。why?
前言
- PR问题在CGH中是最重要的问题之一,在AR/VR产业中,目前的解决方案有:立体显示、多焦、变焦、全息等,其中计算全息是最有潜力的实现方案之一,为什么呢?我们考虑AR/VR显示的需求:large FOV, large eyebox, compact form factor, no VAC等,计算全息能够提供自然的accommodation cue,能够解决VAC的问题、并且具有大FOV,理论上不需要太多的光学器件来校正像差或者实现其他功能,主要器件为SLM,能够实现紧凑的形状结构,但是同时计算全息在近眼显示方面存在很多的问题,目前在技术上的问题:成像质量有待提高、eyebox很小。本博客中的内容旨在介绍各个PR问题的算法来提高成像质量。
- 为了后续讲解方便,在这里提出一个而简单的计算全息的光路图(来自论文2020_Learned Hardware-in-the-loop Phase Retrieval for Holographic Near-Eye Displays_ACM TRANSACTIONS ON GRAPHICS):
Gerchberg-Saxton Algorithm
-
Gerchberg-Saxton Algorithm简称GS算法,于1972年提出。见名而知其意,文章名为《A Practical Algorithm for the Determination of Phase from Image and Diffraction Plane Pictures》,当时提出的应用场景是通过样品的成像相位图来推敲样品的空间结构,属于显微成像领域。现在是PR问题中最为经典、常用的算法,并且由此引申而出了很多其他的算法,如Fienup算法、WGS算法等。
-
论文的基本思路是这样:用傅里叶变换将样品平面(样品稍向下的地方)和成像平面联系起来,即像平面的波场是样品平面的波场的傅里叶变换(夫琅禾费衍射),在此基础上对两个平面强制施加强度限制(论文中是区域限制和成像强度为观测值),从过反复的傅里叶变换和逆傅里叶变换之后,在达到循环结束条件时(循环次数、强度场达到某些条件),跳出循环。
-
跳出GS算法的具体实现过程来看,这样的一些基于FT的算法称为迭代傅里叶算法,或者叫做Error reduction算法。
-
可能会有疑问:为什么叫ER算法?Fienup(1982)给出了说明:This generalization of the Gerchberg-Saxton algorithm willbe referred to as the error-reduction algorithm since, as will be shown below, the error decreases at each iteration. 在GS算法的论文中给出了关于平方误差不会增大的证明:
-
GS算法的流程框图(来自Fienup的论文):
文章来源:https://www.toymoban.com/news/detail-408174.html -
代码:仓库文章来源地址https://www.toymoban.com/news/detail-408174.html
Fienup Algorithm
- Fienup是光学领域的大牛,于1978年,在GS算法的启发之下发表了《Reconstruction of an object from the modulus of its Fourier transform》,将GS算法从显微成像领域推广到一般的PR问题中来,并且将GS算法进行推广和改进,GS算法称为Fienup算法的一种特例。
- 论文将GS算法的框图的右半部分框出来,作为一个非线性系统看待,每次迭代的过程我们根据限制、输出、输入来做特定的修改:
- Fienup Algorithm中包含三种具体的方法(其中
γ
\gamma
γ是不满足slm平面的点组成的集合):
- Input-Output(在Input的基础上修改):
- Output-Output(在output的基础上修改):
- Hybrid Input-Output(HIO混合input、output基础上修改):
- Input-Output(在Input的基础上修改):
- 关于三种方法的intuition:
- Input-Input方法基于这样的思想,对于非线性系统的输入做一定的改变,输出亦会发生一定的改变,将不满足约束条件的输入部分做一定的修改来修正输出。
- Output-Output方法基于这样的思想,对于满足约束条件的点集直接作为输入同样也满足傅里叶平面的约束条件(已经修正过了),不满足约束条件的点集在输出的基础上做一定的修正。
- HIO方法可以认为是上述两种方法的综合考虑。
- HIO是前述的算法中收敛最快的算法,我认为:Fienup算法旨在提高GS算法的收敛速度,虽然每次迭代的计算量没有减少,但是迭代的次数减少了,但是目前缺少HIO算法的收敛性的数学证明。
- 记得某篇论文上/视频上提到过这种迭代傅里叶变换实际上是一种投影运算,投影运算有点类似于正交变换的感觉。通过不断的投影得到某个同时满足两个约束条件的解。(待后续解释)
Wirtinger Flow Algorithm
Double Phase Coding Algorithm
Double Phase Amplitude Algorithm
到了这里,关于相位提取算法简介(Phase Retrieval/PR)(待更新)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!