背景: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).

全息图算法:加权Gerchberg-Saxton算法(GSW)相关推荐

  1. Gerchberg–Saxton算法

    伪代码: Let:FT – forward Fourier transformIFT – inverse Fourier transformi – the imaginary unit, √−1 (s ...

  2. 图算法在转转推荐算法召回及粗排的实践

    文章目录 一.转转推荐算法介绍 1.1 什么是推荐系统? 1.2 转转推荐主要场景及流程 二.图算法原理介绍及转转实践 2.1 经典Graph Embedding方法:DeepWalk 2.2 结构性 ...

  3. 负载均衡之加权轮询算法

    在介绍加权轮询算法(WeightedRound-Robin)之前,首先介绍一下轮询算法(Round-Robin). 一:轮询算法(Round-Robin) 轮询算法是最简单的一种负载均衡算法.它的原理 ...

  4. WEKA算法开发——记一次不太成功的遗传属性加权贝叶斯算法实验

    WEKA算法开发--记一次不太成功的遗传属性加权贝叶斯算法实验 1. WEKA介绍 2. 使用WEKA开发自己的算法 3. ~~总结~~ 吐槽 1. WEKA介绍 Weka平台是一种数据分析+模式识别 ...

  5. Matlab 基于IRLS的加权Cauchy稳健估计算法之二

    文章目录 一.简介 二.实现代码 三.测试效果 参考资料 一.简介 这里使用ISS与FPFH两种描述子来测试一下之前的加权Cauchy估计算法. 二.实现代码 test.m %% ********** ...

  6. 加权最小均方误差算法(WMMSE)论文复现,附Matlab代码

    引言 加权最小均方误差算法(Weighted Minimum Mean-Square Error, WMMSE)是多用户无线通信网络优化中最常用到的算法,但该算法实现较为复杂.网上看到的完整复现的代码 ...

  7. 【图算法】社区发现算法——Fast unfolding

    [图算法]社区发现算法--Fast unfolding 1. 社区划分问题的定义: 2. 社区划分的评价标准: 3. Fast unfolding算法: 3.1 Fast Unfolding算法的基本 ...

  8. 负载均衡--加权轮询算法(Weight Round)

    加权轮询算法:不同的后端服务器,在机器的配置和当前系统的负载方面,可能并不相同.因此,它们的抗压能力也不相同.给配置高.负载低的机器配置更高的权重,让其处理更多的请求:给配置低.负载高的机器分配较低的 ...

  9. 【Stacking改进】基于随机采样与精度加权的Stacking算法

    [Stacking改进]基于随机采样与精度加权的Stacking算法 摘要 近年来,人工智能的强势崛起让我们领略到人工智能技术的巨大潜力,机器学习也被广泛应用于各个领域,并取得不错的成果.本文以Kag ...

最新文章

  1. ExtJS4.1.1 设置表格背景颜色 修改文本颜色 在表格中插入图片
  2. 英雄多少钱steam_¥50元到手蓝宝石显卡?玩转GTAV轻松CSGO英雄联盟帧数144fps
  3. 混沌分形之逻辑斯蒂(Logistic)映射系统
  4. 5脚12v继电器接线图解_【电器元件002】你真的懂汽车继电器么
  5. httphost设置socks_socks5代理使用和安装配置
  6. linux服务器做页面,linux服务器搭建在线预览环境
  7. ionic云开发系列一
  8. Ayoa:让思维导图更简单,在线使用 无需安装客户端
  9. matlab矩阵的函数,MATLAB矩阵运算函数
  10. Python数据挖掘-文本挖掘
  11. 毫米和像素怎么换算_像素和厘米怎么换算?
  12. 植被覆盖指数计算教程(ENVI)
  13. Android 导出PDF PdfDocument
  14. Codeforces Round #247 (Div. 2) - k-Tree
  15. 北京东莞企业邮箱注册,外贸邮箱用哪个比较好?
  16. selenium简介,原理,优点,工作过程,定位方式
  17. RabbitMQ的持久化
  18. 电容在电路中各种作用汇总(内容很干)
  19. 用vb编制一个计算机程序,VB程序题:编一模拟袖珍计算器的完整程序,界面如下图所示。要求:输入两个操作数和一个操作符,根据操作符决定所做的运算。 VB源码 龚沛曾...
  20. GRE_verbal

热门文章

  1. 在linux中启动mysql,在linux中启动mysql服务的命令
  2. 511遇见易语言数组操作清除数组和数组清零
  3. 数据中心如何提高运维效率?数据中心综合能效管理解决方案——安科瑞 严新亚
  4. 公务员公共基础计算机题,国家公务员-公共基础知识分类模拟题计算机(一)
  5. 几种句子相似度实现算法(简单了解一下)
  6. Java编写的金额转中文大写
  7. ubuntu安装 QT5.14.2
  8. 【语言的灵魂】C语言的灵魂 “ 指针 ”
  9. Java中常用的加密与解密
  10. 计算机无显示错误代码,电脑出现错误代码0xc0000001怎么办 电脑出现错误代码0xc0000001如何解决...