傅里叶光学随机散斑原理 & matlab仿真实现随机散斑

2023-10-31

2019年12月26日

本人第三篇博客终于出来了!撒花庆祝。。。。。。

最近在学习傅里叶光学相关知识,将近期整理的知识点做一记录。主要围绕随机散斑,因为主要为自己记录,加之才疏学浅,实在难以做到表述严谨,面面俱到,还望见谅。

这一篇将从以下几个方面来整理,:

  1. 何为随机散斑
  2. 随机散斑的影响变量
  3. 随机散斑的数学推导
  4. 随机散斑的matlab仿真

1,何为随机散斑

在这里,我将“随机散斑”定义为具有随机位相的结构光散斑,区别于有特定光学分布形式的散斑,例如哈达玛(Hadamard)散斑、小波散斑等等,在实际实验中,随机散斑则为激光通过毛玻璃后,相位被随即调制过的散斑样式。

其具有一下特性:

  • 分布随机
  • 分辨率可以做到更高
  • 实际光路发散性强,需要有透镜组约束

2,随机散斑的影响变量

我们将随机散斑的生成过程简单做图:

随机散斑产生机理图

如图,激光经过小孔约束后,照射到毛玻璃G.G.上,经过毛玻璃叠加上随即相位,再投影到远处。

在这里我们有输入参数:

  波长 lambda

  孔径 w

  传播距离 z

为了方便描述,我们规定:

  Pattern为一张随机散斑图

  Speckle为一张图中的一个散斑

  Pattern的像素大小为 M = 1024,对应真实长度为 L1 = 1m

那么我们通过计算可得:

  单个像素对应真实长度为 dx1 = L1/M 米

  Speckle的真实尺寸 s = lambda*z/w 米

 则随机散斑产生过程可以拆分为:

  1. 以光源直径得到一个圆形光斑图
  2. 在光斑上叠加上随机相位
  3. 携带有随机相位信息的光斑通过夫琅禾费传输获得观测平面的散斑分布
  4. 提取散斑分布的功率谱

3,随机散斑的数学推导

那么我们接下来就按照这几步进行数学推导。我们先来复习一下傅里叶变换公式:

请记住这个数学形式。

接下来,我们来看一下弗朗禾费传播,因为在傅里叶光学中,远场传播遵从弗朗禾费传播条件:

距离远大于源场的平方

则夫琅禾费传播公式为:

经过变量替换:

 

表达式可以理解为带有变量替换的源场的傅里叶变换。

尺寸对应关系:

由上式可得,根据源面参数求得观测面边长和采样间隔:

观测平面坐标为:

由此,我们可以开始我们对随机散斑的matlab仿真:

4,随机散斑的matlab仿真

这个就不多说了,直接整!


 
 
  1. %% Generate the Pattern
  2. M = 1024;
  3. Pattern_a = Create_speckels( 650, 0.1, 0.32);
  4. Pattern = Pattern_a(:,:)/max(max(Pattern_a(:,:)));
  5. figure( 1);imagesc(Pattern);colormap( 'gray');title( 'Patterns');

其中M是分辨率,650,0.1,0.32分别对应波长,孔径和传播距离。

函数Create_speckles附在代码的下边即可。


 
 
  1. function [I2]=test_speckels(lam_value,w,z)
  2. L1= 1;
  3. M= 1024;
  4. dx1=L1/M;
  5. x1=-L1/ 2:dx1:L1/ 2-dx1;
  6. y1=x1;
  7. lambda=lam_value* 10^ -9;
  8. k= 2*pi/ lambda;
  9. s = lambda*z/w;
  10. [X1,Y1] = meshgrid(x1,y1);
  11. u1 = circle_(X1/( 2*w),Y1/( 2*w)).*exp( 1j* 2*pi*rand(M));
  12. [u2]=propFF(u1,L1, lambda,z);
  13. I2=abs(u2.^ 2);

关于弗朗禾费的仿真函数,大家可以参考我给参考书籍,在本文最后的链接部分,如果大家懒得查阅书籍,可以从我给的连接中自行下载我写好的代码,直接粘贴到主体代码下边,就可以直接运行出结果,而且代码有注释方便阅读。不过需要少量下载币,但是肯定是可以运行的,知识无价,还望谅解。

最终得到的散斑图像为:

看到这里,第三篇博客就结束了,主要在理论和仿真层面介绍了随机散斑,还望批评指正。

参考书籍:《傅里叶光学导论》Joseph,W,Goodman https://item.jd.com/12004623.html

代码下载链接:https://download.csdn.net/download/weixin_40678482/12055524

 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

傅里叶光学随机散斑原理 & matlab仿真实现随机散斑 的相关文章

  • Oracle的高可用

    快速浏览了一下Oracle官方的网页以及非官方的ppt 简单了解了一下Oracle提供的高可用方案 主要有三种 1 RAC RAC Real Application Clusters 多个Oracle服务器组成一个共享的Cache 而这些O
  • Python读取cfg文件

    mysql HOST 127 0 0 1 PORT 3306 USER root PWD 123456789 DB employees CHARSET utf8 redis redis配置 暂时写在这里 线下配置 线上一定要从新配置 并且不
  • Android入门教程

    EditText 监听回车 使用EditText时 有时候我们会需要监听输入的回车 以做出一些操作 或者需要把回车变成 搜索 发送 或 完成 等等 EditText 为我们提供了一个属性 imeOptions 用来替换软键盘中 enter
  • 怎样简便的使用vw完成移动端rem适配

    怎样简便的完成移动端rem适配 了解一些必要的单位 px 像素 进行页面开发的基础单位 em 相对单位 rem 相对单位 vw 相对宽度 vh 相对高度 如何进行简单的px rem转换 了解一些必要的单位 px 像素 进行页面开发的基础单位
  • 数据库第十五课-------------非关系型数据库----------Redis

    作者前言 作者介绍 作者id 老秦包你会 简单介绍 喜欢学习C语言和python等编程语言 是一位爱分享的博主 有兴趣的小可爱可以来互讨 个人主页 小小页面 gitee页面 秦大大 一个爱分享的小博主 欢迎小可爱们前来借鉴 Redis的简单
  • 通信工程专业论文毕设选题推荐

    文章目录 1前言 2 如何选题 2 1 移动通信方向 2 2 嵌入式开发方向 2 3 人工智能方向 2 4 物联网方向 2 5 算法研究方向 2 6 移动应用开发方向 2 7 网络通信方向 2 8 学长作品展示 4 最后 1前言 近期不少学
  • html视频自动播放

    音频
  • Java如何让CPU利用率达到100%

    一 背景 记得有一次去面试Java软件开发工程师 面试官问了我一个关于Java如何让CPU利用率到达百分百的问题 我当时下意识的回答到让程序死循环就可以了 这源于我之前的工作中有一次无意间写了死循环 当时电脑卡的简直不能动 我都关机了 可是
  • C/C++编程:模板参数

    现在存在3种模板参数 类型参数 非类型参数 模板的模板参数 C 设计模板参数的用意在于 尽量将编译可知的因素提取处理 从而进一步抽象代码 无论时代码中的类型 变量地址还是函数地址 只要编译时可知 C 语言就为其一视同仁的提供模板参数支持 以
  • el-dialog 内容居中

    原样 dialog 内容部分 默认左对齐 目的 内容居中显示 比如表单 修改 el dialog el dialog body display flex justify content center align items center
  • 微信 获取signature签名

    本文是使用java语言调用微信提供的接口 获取签名的详细过程 大致步骤如下 在官网生成appId 与 appSecret 然后通过appId 与 appSecret调用接口获取到Access token 通过Access token调用微信
  • SAP 谈谈成本中心和内部订单

    内部订单 内部订单用于计划 收集 监视和结算在公司内部进行的特定操作或任务 内部订单可用于不同的目的 这种功能分类反映在不同的订单类型中 其属性定义了在系统中处理订单的方式 SAP系统内内部定单分为两类 实际定单 和 统计性定单 统计性定单
  • 【千律】C++基础:文件的删除、复制、移动和重命名

    include
  • Qt--在.pro文件中添加链接库的写法

    要在Qt中使用OpenCV 按照OpenCV与Qt的环境搭建及Demo中的步骤配置了Qt Creator的编译选项 选择MSVC 再修改 pro文件 INCLUDEPATH D Program Files opencv opencv3 4
  • automake 生成的Makefile之 install过程

    automake生成的Makefile当你执行make install 的时候我们知道会找install规则 那么具体是怎么安装的呢 看下面 install install recursive 很显然 install recursive是依
  • SYNPROXY抵御DDoS攻击的原理和优化

    序 又到了周末 我又要必须写点什么了 周末依然加班 感谢周末上班平日休息的老婆分担了几乎所有家务 一切依然 然而这些对我来讲都不是个事儿 事实上我是希望取消一切节假日和周末的 所谓的周末和节假日是我一直以来觉得出自 圣经 里面最荒唐的东西
  • 一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假如兔子都不死,请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到N对?

    include
  • Creator实战项目【保卫萝卜】-- 格子地图

    import ScriptBase from ScriptBase const ccclass property cc decorator ccclass export default class TiledMapCtrl extends
  • lru页面置换算法_页面更换算法

    当一个理论过时或者出现悖论时 我们就用一个新的理论来替换它 当一个页面不再有用时 我们也用一个新的页面进行替换 准确地说 我们不是因为一个页面过时而用一个新的页面来替换 而是因为需要使用新的页面而用一个过时的页面作为替换牺牲品 页面需要更换

随机推荐