全息图算法:加权Gerchberg-Saxton算法(GSW)

背景:GS(Gerchberg-Saxton)在计算全息图、产生光阱方面,对比于直接算法,包括随机相位掩膜法(RM)、棱镜透镜叠加(S)算法,随机叠加(SR)算法,具有光能利用率高的优点,但是和GAA算法一样,都具有一个缺点,即光能的分布上,均匀性不够好。从该缺陷出发,便产生了加权的GS算法(GSW)算法。

本文只讨论纯相位型空间光调制器。设入射在空间光调制器(SLM)的光波为均匀平面波,设振幅为,则从SLM出射后的光波振幅为,其中,为SLM上第j个像素产生的相移。使用标量衍射理论,得到从SLM上第i行第j列像素的光传播到焦面(focal plane)上第m个光阱处的光振幅为

其中,k为波矢,有,λ为波长,实际上就表示的是位于处的光阱经过菲涅耳变换后得到的相位信息,右端包含了其空间频率信息,左端包含了轴向的信息,是一个透镜项。f为傅里叶变换透镜的焦距,d为像素边长,N为像素个数。引入无量纲量

其物理意义通过来表示,表示第m个光阱能量与总能量之比。计算全息的算法的意义在于对于给定的m个位于的光阱,或者给定的(两者是等效的),给出最优的,使得各个光阱的强度最接近于设计值。对于GS算法、GAA算法这两种迭代算法,其以达到最大值为目的,这也是导致其计算产生的光阱强度不均匀的间接原因之一。

首先将GS算法的思路作为切入,为了使以为自变量的函数达到最大,

求偏微分得到

最终得到(原文中用了Hessian矩阵,博主这不太明白QAQ,直接略过了)

而GSW算法,是在该表达式中引入了一个隐式的权重,表达式变为

在初次迭代时为1,在第k次迭代中,,其中表示求平均。

在对算法基本原理讲解后,大家可能还是一头雾水的(反正博主是一头雾水的QAQ),github上找到一个python编写的GSW算法源码后,给了我很大启发。如下是我绘制的算法框图,简单明了的讲解了这篇文章想要表达的一个思路。

GSW算法的流程图如图

输入图像灰度值作为振幅输入,并对图像每一像素赋予随机相位,作为输入图像。

其与GS算法不同的是,使用了随迭代次数改变的权重系数,即,输入图像中光阱的能量与每次迭代得到的复原图像中光阱能量之比值乘上一次迭代中的权重系数,作为本次迭代的权重。权重的引入,使得全息图还原得到的复原图的光阱能量会朝设计值靠近。

实验:如图所示为设计的图像

如下图为计算得到的计算全息图

下图为使用全息图还原得到的还原图

下图为还原图与原图的相关系数随迭代次数的图像

本篇文章中可能还有很多问题,欢迎大家在评论区讨论

参考文献:

1\]Di Leonardo Roberto,Ianni Francesca,Ruocco Giancarlo. Computer generation of optimal holograms for optical trap arrays.\[J\]. Optics express,2007,15(4).

相关推荐
SweetCode3 分钟前
裴蜀定理:整数解的奥秘
数据结构·python·线性代数·算法·机器学习
ゞ 正在缓冲99%…16 分钟前
leetcode76.最小覆盖子串
java·算法·leetcode·字符串·双指针·滑动窗口
xuanjiong17 分钟前
纯个人整理,蓝桥杯使用的算法模板day2(0-1背包问题),手打个人理解注释,超全面,且均已验证成功(附带详细手写“模拟流程图”,全网首个
算法·蓝桥杯·动态规划
惊鸿.Jh36 分钟前
【滑动窗口】3254. 长度为 K 的子数组的能量值 I
数据结构·算法·leetcode
明灯L37 分钟前
《函数基础与内存机制深度剖析:从 return 语句到各类经典编程题详解》
经验分享·python·算法·链表·经典例题
碳基学AI43 分钟前
哈尔滨工业大学DeepSeek公开课:探索大模型原理、技术与应用从GPT到DeepSeek|附视频与讲义免费下载方法
大数据·人工智能·python·gpt·算法·语言模型·集成学习
补三补四1 小时前
机器学习-聚类分析算法
人工智能·深度学习·算法·机器学习
独好紫罗兰1 小时前
洛谷题单3-P5718 【深基4.例2】找最小值-python-流程图重构
开发语言·python·算法
正脉科工 CAE仿真1 小时前
基于ANSYS 概率设计和APDL编程的结构可靠性设计分析
人工智能·python·算法
Dovis(誓平步青云)2 小时前
【数据结构】排序算法(中篇)·处理大数据的精妙
c语言·数据结构·算法·排序算法·学习方法