2019年12月26日
本人第三篇博客终于出来了!撒花庆祝。。。。。。
最近在学习傅里叶光学相关知识,将近期整理的知识点做一记录。主要围绕随机散斑,因为主要为自己记录,加之才疏学浅,实在难以做到表述严谨,面面俱到,还望见谅。
这一篇将从以下几个方面来整理,:
- 何为随机散斑
- 随机散斑的影响变量
- 随机散斑的数学推导
- 随机散斑的matlab仿真
1,何为随机散斑
在这里,我将“随机散斑”定义为具有随机位相的结构光散斑,区别于有特定光学分布形式的散斑,例如哈达玛(Hadamard)散斑、小波散斑等等,在实际实验中,随机散斑则为激光通过毛玻璃后,相位被随即调制过的散斑样式。
其具有一下特性:
- 分布随机
- 分辨率可以做到更高
- 实际光路发散性强,需要有透镜组约束
2,随机散斑的影响变量
我们将随机散斑的生成过程简单做图:

如图,激光经过小孔约束后,照射到毛玻璃G.G.上,经过毛玻璃叠加上随即相位,再投影到远处。
在这里我们有输入参数:
波长 lambda
孔径 w
传播距离 z
为了方便描述,我们规定:
Pattern为一张随机散斑图
Speckle为一张图中的一个散斑
Pattern的像素大小为 M = 1024,对应真实长度为 L1 = 1m
那么我们通过计算可得:
单个像素对应真实长度为 dx1 = L1/M 米
Speckle的真实尺寸 s = lambda*z/w 米
则随机散斑产生过程可以拆分为:
- 以光源直径得到一个圆形光斑图
- 在光斑上叠加上随机相位
- 携带有随机相位信息的光斑通过夫琅禾费传输获得观测平面的散斑分布
- 提取散斑分布的功率谱
3,随机散斑的数学推导
那么我们接下来就按照这几步进行数学推导。我们先来复习一下傅里叶变换公式:
请记住这个数学形式。
接下来,我们来看一下弗朗禾费传播,因为在傅里叶光学中,远场传播遵从弗朗禾费传播条件:
距离远大于源场的平方
则夫琅禾费传播公式为:
经过变量替换:
表达式可以理解为带有变量替换的源场的傅里叶变换。
尺寸对应关系:
由上式可得,根据源面参数求得观测面边长和采样间隔:
观测平面坐标为:
由此,我们可以开始我们对随机散斑的matlab仿真:
4,随机散斑的matlab仿真
这个就不多说了,直接整!
-
%% Generate the Pattern
-
M =
1024;
-
Pattern_a = Create_speckels(
650,
0.1,
0.32);
-
Pattern = Pattern_a(:,:)/max(max(Pattern_a(:,:)));
-
figure(
1);imagesc(Pattern);colormap(
'gray');title(
'Patterns');
其中M是分辨率,650,0.1,0.32分别对应波长,孔径和传播距离。
函数Create_speckles附在代码的下边即可。
-
function [I2]=test_speckels(lam_value,w,z)
-
L1=
1;
-
M=
1024;
-
dx1=L1/M;
-
x1=-L1/
2:dx1:L1/
2-dx1;
-
y1=x1;
-
lambda=lam_value*
10^
-9;
-
k=
2*pi/
lambda;
-
s =
lambda*z/w;
-
[X1,Y1] = meshgrid(x1,y1);
-
u1 = circle_(X1/(
2*w),Y1/(
2*w)).*exp(
1j*
2*pi*rand(M));
-
[u2]=propFF(u1,L1,
lambda,z);
-
I2=abs(u2.^
2);
关于弗朗禾费的仿真函数,大家可以参考我给参考书籍,在本文最后的链接部分,如果大家懒得查阅书籍,可以从我给的连接中自行下载我写好的代码,直接粘贴到主体代码下边,就可以直接运行出结果,而且代码有注释方便阅读。不过需要少量下载币,但是肯定是可以运行的,知识无价,还望谅解。
最终得到的散斑图像为:
看到这里,第三篇博客就结束了,主要在理论和仿真层面介绍了随机散斑,还望批评指正。
参考书籍:《傅里叶光学导论》Joseph,W,Goodman https://item.jd.com/12004623.html
代码下载链接:https://download.youkuaiyun.com/download/weixin_40678482/12055524