TIE算法具体求解-为什么是泊松方程和傅里叶变换

二维泊松方程的通俗理解

二维泊松方程 是偏微分方程的一种形式,通常用于描述空间中某个标量场(如位相场、电势场)的分布规律。其一般形式为:

∇ 2 ϕ ( x , y ) = f ( x , y ) \nabla^2 \phi(x, y) = f(x, y) 2ϕ(x,y)=f(x,y)

其中:

  • ϕ ( x , y ) \phi(x, y) ϕ(x,y) 是需要求解的标量场,例如 TIE 方程中的相位分布。
  • f ( x , y ) f(x, y) f(x,y) 是已知的源项,表示某种驱动或者分布,如光强的变化率。
物理直观:

二维泊松方程的物理意义可以通过类比来理解:

  • 热传导 ϕ ( x , y ) \phi(x, y) ϕ(x,y) 表示温度分布, f ( x , y ) f(x, y) f(x,y) 是热源强度分布。
  • 重力势 ϕ ( x , y ) \phi(x, y) ϕ(x,y) 表示引力势, f ( x , y ) f(x, y) f(x,y) 是质量密度分布。
  • 光学相位:在 TIE 中, ϕ ( x , y ) \phi(x, y) ϕ(x,y) 是光场的相位分布, f ( x , y ) f(x, y) f(x,y) 是由光强变化产生的“驱动力”。

换句话说,泊松方程将一种“局部变化”( ∇ 2 ϕ \nabla^2 \phi 2ϕ)与“全局驱动力”( f ( x , y ) f(x, y) f(x,y))联系起来。


TIE 转化为泊松方程的形式

对于 TIE 方程:

∂ I ( x , y , z ) ∂ z = − λ 2 π ∇ ⊥ ⋅ ( I ( x , y , z ) ∇ ⊥ ϕ ( x , y , z ) ) \frac{\partial I(x, y, z)}{\partial z} = -\frac{\lambda}{2\pi} \nabla_\perp \cdot \left( I(x, y, z) \nabla_\perp \phi(x, y, z) \right) zI(x,y,z)=2πλ(I(x,y,z)ϕ(x,y,z))

可以将其重写为泊松方程的形式:

∇ ⊥ ⋅ ( I ( x , y ) ∇ ⊥ ϕ ( x , y ) ) = − 2 π λ ∂ I ∂ z \nabla_\perp \cdot \left( I(x, y) \nabla_\perp \phi(x, y) \right) = -\frac{2\pi}{\lambda} \frac{\partial I}{\partial z} (I(x,y)ϕ(x,y))=λ2πzI

g ( x , y ) = I ( x , y ) ∇ ⊥ ϕ ( x , y ) g(x, y) = I(x, y) \nabla_\perp \phi(x, y) g(x,y)=I(x,y)ϕ(x,y) 引入后,有:
∇ ⊥ ⋅ g ( x , y ) = − 2 π λ ∂ I ∂ z \nabla_\perp \cdot g(x, y) = -\frac{2\pi}{\lambda} \frac{\partial I}{\partial z} g(x,y)=λ2πzI

进一步转化为标准泊松方程形式:
∇ 2 ϕ ( x , y ) = f ( x , y ) I ( x , y ) \nabla^2 \phi(x, y) = \frac{f(x, y)}{I(x, y)} 2ϕ(x,y)=I(x,y)f(x,y)
其中 f ( x , y ) = − 2 π λ ∂ I ∂ z f(x, y) = -\frac{2\pi}{\lambda} \frac{\partial I}{\partial z} f(x,y)=λ2πzI


傅里叶变换求解泊松方程

1. 为什么用傅里叶变换解泊松方程?

泊松方程涉及 空间梯度(如 ∇ 2 \nabla^2 2,即拉普拉斯算子)。傅里叶变换在数学上有一个重要特性:

  • 微分变为乘法:在频域中,拉普拉斯算子 ∇ 2 \nabla^2 2 对应的是空间频率平方的乘积 − k x 2 − k y 2 -k_x^2 - k_y^2 kx2ky2
  • 这使得方程从微分方程变成代数方程,简化了求解过程。
2. 傅里叶变换的过程

泊松方程:
∇ 2 ϕ ( x , y ) = f ( x , y ) \nabla^2 \phi(x, y) = f(x, y) 2ϕ(x,y)=f(x,y)

对两边做傅里叶变换(记为 F \mathcal{F} F),得:
F ( ∇ 2 ϕ ) = F ( f ) \mathcal{F}(\nabla^2 \phi) = \mathcal{F}(f) F(2ϕ)=F(f)

利用傅里叶变换的性质, F ( ∇ 2 ϕ ) = − ( k x 2 + k y 2 ) ⋅ F ( ϕ ) \mathcal{F}(\nabla^2 \phi) = -(k_x^2 + k_y^2) \cdot \mathcal{F}(\phi) F(2ϕ)=(kx2+ky2)F(ϕ),因此:
− ( k x 2 + k y 2 ) Φ ( k x , k y ) = F ( k x , k y ) -(k_x^2 + k_y^2) \Phi(k_x, k_y) = F(k_x, k_y) (kx2+ky2)Φ(kx,ky)=F(kx,ky)

其中:

  • Φ ( k x , k y ) \Phi(k_x, k_y) Φ(kx,ky):相位 ϕ ( x , y ) \phi(x, y) ϕ(x,y) 在频域中的表示。
  • F ( k x , k y ) F(k_x, k_y) F(kx,ky) f ( x , y ) f(x, y) f(x,y) 在频域中的表示。

解得:
Φ ( k x , k y ) = − F ( k x , k y ) k x 2 + k y 2 \Phi(k_x, k_y) = -\frac{F(k_x, k_y)}{k_x^2 + k_y^2} Φ(kx,ky)=kx2+ky2F(kx,ky)

3. 避免分母为零的问题

k x 2 + k y 2 = 0 k_x^2 + k_y^2 = 0 kx2+ky2=0 时(即零频点处),分母为零。这通常对应光场整体的平均相位,这一部分可以忽略或通过设定边界条件解决。例如,直接将零频点处的值置为零:

Φ ( 0 , 0 ) = 0 \Phi(0, 0) = 0 Φ(0,0)=0

4. 逆傅里叶变换回到空间域

通过逆傅里叶变换( F − 1 \mathcal{F}^{-1} F1),将 Φ ( k x , k y ) \Phi(k_x, k_y) Φ(kx,ky) 转换回相位分布:
ϕ ( x , y ) = F − 1 ( Φ ( k x , k y ) ) \phi(x, y) = \mathcal{F}^{-1}(\Phi(k_x, k_y)) ϕ(x,y)=F1(Φ(kx,ky))


总结:为什么可以这么做

  1. 傅里叶变换的优点

    • 将复杂的微分操作转化为频域中的简单乘法,显著简化了解泊松方程的计算难度。
    • 频域方法特别适合求解涉及大范围数据的连续问题,如图像中的相位分布。
  2. 数学上的严谨性

    • 傅里叶变换和逆变换是完全可逆的,保证了从空间域到频域再回到空间域的信息一致性。
  3. 频率分析的物理意义

    • 相位梯度和强度变化在本质上是一种空间频率特征,而傅里叶变换就是对这种频率信息的自然表示。

通过傅里叶变换解泊松方程,不仅是数值上的优化,更是利用了物理和数学上的深层对应关系。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/483498.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Java Springboot宠物咖微信小程序

一、作品包含 源码数据库全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 微信开发者工具 数…

ultralytics-YOLOv11的目标检测解析

1. Python的调用 from ultralytics import YOLO import os def detect_predict():model YOLO(../weights/yolo11n.pt)print(model)results model(../ultralytics/assets/bus.jpg)if not os.path.exists(results[0].save_dir):os.makedirs(results[0].save_dir)for result in…

蓝桥杯准备训练(lesson1,c++方向)

前言 报名参加了蓝桥杯(c)方向的宝子们,今天我将与大家一起努力参赛,后序会与大家分享我的学习情况,我将从最基础的内容开始学习,带大家打好基础,在每节课后都会有练习题,刚开始的练…

vscode 如何支持点击跳转函数,以C++为例,Python等其它编程语言同理,Visual Studio Code。

VScode(Visual Studio Code)按住Ctrl鼠标左键,没法跳转到对应的函数怎么办。 如下图所示 1、点击有四个小方块的图标 2、输入C(如果你的编程语言是C,其它的就输其它的) 3、找到C Extension(其它编程语言&#xff0…

【包教包会】CocosCreator3.x——重写Sprite,圆角、3D翻转、纹理循环、可合批调色板、不影响子节点的位移旋转缩放透明度

一、效果演示 重写Sprite组件,做了以下优化: 1、新增自变换,在不影响子节点的前提下位移、旋转、缩放、改变透明度 新增可合批调色板,支持色相、明暗调节 新增圆角矩形、3D透视旋转、纹理循环 所有功能均支持合批、原生平台&…

Java八股文(11-29start)

p1 缓存预热也要预热到布隆过滤器.过滤不存在的数据 布隆过滤器需要存储 添加数据的时候进行预热.布隆过滤器里面是位图结构,通过多个hash函数获得下标.改为1. 查询 id进行查询获得对应下标是否为1.可能会出现误判. 判断id是否存在. 穿透就是查询一个不存在的id.一直查询数…

【Gitlab】gitrunner并发配置

并发介绍 涉及到并发控制的一共有4个参数: concurrent , limit ,request_concurrency,parallel 全局的配置: [rootiZ2vc6igbukkxw6rbl64ljZ config]# vi config.toml concurrent 4 #这是一个总的全局控制,它限制了所有pipline,所有runner执行器…

智能运维在配电所设备监控中的应用与洞察

在配电所的设备监控中,智能运维正发挥着越来越重要的作用。通过对配电所内各关键设备的实时监测和数据分析,智能运维系统不仅提高了运维效率,还为我们提供了更深入的设备运行洞察。 一、设备监控概况 配电所内设有多个监测点,包括…

Lumos学习王佩丰Excel第十九讲:Indirect函数

一、认识indirect单元格引用 1、了解Indirect函数的意义及语法 Indirect:引用函数,间接引用。 函数语法:INDIRECT(ref_text,[a1]) 其中,ref_text是一个表示单元格地址或名称的字符串,a1是一个可选的逻辑值参数&…

QT6学习第八天 QFrame 类

QT6学习第八天 QFrame 类族QLabel 标签部件按钮部件QLineEdit 行编辑器部件QAbstractSpinBoxQAbstractSlider 今天来学一学 QFrame 类。 QFrame 类族 QFrame 类是带有边框的部件的基类。它的子类包括常用的标签部件 QLabel、以及 QLCDNumber、QSplitter、QStackedWidget、QToo…

Nginx学习-安装以及基本的使用

一、背景 Nginx是一个很强大的高性能Web和反向代理服务,也是一种轻量级的Web服务器,可以作为独立的服务器部署网站,应用非常广泛,特别是现在前后端分离的情况下。而在开发过程中,我们常常需要在window系统下使用Nginx…

【AI系统】Ascend C 语法扩展

Ascend C 语法扩展 Ascend C 的本质构成其实是标准 C加上一组扩展的语法和 API。本文首先对 Ascend C 的基础语法扩展进行简要介绍,随后讨论 Ascend C 的两种 API——基础 API 和高阶 API。 接下来针对 Ascend C 的几种关键编程对象——数据存储、任务间通信与同步…

java将word docx pdf转换为图片(不需要额外下载压缩包,直接导入maven坐标)

(本代码实现的是将第1页转为图片,主要用于制作文件缩略图) pdf转图片容易 docx转图片麻烦,看其他博客可以直接导入maven坐标,但我知道那是需要付费且有时限的包 本着简单实用的心,我找到法子了 pdf转图片:有库直接转…

工作:三菱PLC防止程序存储器爆满方法

工作:三菱PLC防止程序存储器爆满方法 一、防止程序存储器爆满方法1、编程时,添加行注释时,记得要选“外围”,这样不会占用PLC程序存储器内存;2、选择“外围”的注释,前面会有个*星号,方便检查 二…

「Mac畅玩鸿蒙与硬件36」UI互动应用篇13 - 数字滚动抽奖器

本篇将带你实现一个简单的数字滚动抽奖器。用户点击按钮后,屏幕上的数字会以滚动动画的形式随机变动,最终显示一个抽奖数字。这个项目展示了如何结合定时器、状态管理和动画实现一个有趣的互动应用。 关键词 UI互动应用数字滚动动画效果状态管理用户交…

【C#】书籍信息的添加、修改、查询、删除

文章目录 一、简介二、程序功能2.1 Book类属性:方法: 2.2 Program 类 三、方法:四、用户界面流程:五、程序代码六、运行效果 一、简介 简单的C#控制台应用程序,用于管理书籍信息。这个程序将允许用户添加、编辑、查看…

Linux 各个目录作用

刚毕业的时候学习Linux基础知识,发现了一份特别好的文档快乐的 Linux 命令行,翻译者是happypeter,作者当年也在慕课录制了react等前端相关的视频,通俗易懂,十分推荐 关于Linux的目录,多数博客已有详细介绍…

python学opencv|读取视频(一)灰度视频制作和保存

【1】引言 上一次课学习了用opencv读取图像,掌握了三个函数:cv.imread()、cv.imshow()、cv.imwrite() 相关链接如下: python学opencv|读取图像-CSDN博客 这次课我们继续,来学习用opencv读取视频。 【2】学习资源 首先是官网…

第六届金盾信安杯Web题解

比赛一共4道Web题,比赛时只做出三道,那道文件上传没有做出来,所以这里是另外三道题的WP 分别是 fillllll_put hoverfly ssrf fillllll_put 涉及: 绕过exit() 死亡函数 php://filter 伪协议配合base64加解密 一句话木马 题目源码: $content参数在开头被…

机器学习概述,特征工程简述2.1——2.3

机器学习概述: 1.1人工智能概述 达特茅斯会议—人工智能的起点 机器学习是人工智能的一个实现途径 深度学习是机器学习的一个方法发展而来 1.1.2 机器学习和深度学习能做什么 传统预测 图像识别 自然语言处理 1.2什么是机器学习 数据 模型 预测 从历史数…