光(复振幅)在自由空间中传播的matlab仿真 |
您所在的位置:网站首页 › 傅里叶分析仿真 › 光(复振幅)在自由空间中传播的matlab仿真 |
光(复振幅)在自由空间中传播的matlab仿真
光在空间中传播是一种很常见的现象,经过前人的努力,描述光的传播已经具有一套非常完整的理论,那便是傅里叶光学。借助傅里叶分析工具,可以很容易地分析光的传播规律。本文主要介绍如何利用matlab实现光在空间中的自由传播的仿真。即若已知一个物面分布,那么就可以计算出该物面的光传播到空间中任意位置的新强度; 参考资料: 秦克诚的 《傅里叶光学》 (第三版),P40-44;Contemporary Optical Image Processing with MATLAB;如果是光线旁轴追迹,可以参考《矩阵光学》。 一、问题描述 问题说明:如图1所示,已知在z=0的平面内光波(复振幅)分布为U(x,y; 0),求解当光传播z距离之后的光波(复振幅)分布。 说明:光是一种电磁波,对光的描述可以用复振幅
U
(
x
,
y
)
=
A
(
x
,
y
)
⋅
e
x
p
(
j
⋅
φ
(
x
,
y
)
)
U(x,y) = A(x,y) \cdot exp\left( {j \cdot \varphi (x,y)} \right)
U(x,y)=A(x,y)⋅exp(j⋅φ(x,y))来表示,其中A(x,y)表示平面内的振幅分布,φ(x,y)表示平面内的相位分布。 光在自由空间中传播这一基础知识点涉及到光学中的很多应用,比如光的衍射问题,生物显微成像(相位恢复),研究成像系统问题等等。而且其理论知识也比较基础,很适合作为刚接触计算成像的同学的入手点。 如图,设置物面的振幅是“相机人”,相位是“lena”,当光传播一段距离后,相位信息会表现在光强中。 在《傅里叶光学》中,它构建了一种角谱传播理论,即从一种频谱的角度来分析光的传播规律。由傅里叶变换关系可知 U ( x , y ; 0 ) = ∫ − ∞ ∞ ∫ A ( f X , f Y ; 0 ) exp [ − j 2 π ( f X x + f Y y ) ] d f X d f Y U(x,y;0) = \int\limits_{ - \infty }^\infty {\int {A({f_X},{f_Y};0)\exp [ - j2\pi ({f_X}x + {f_Y}y)]d{{f_X}}d{{f_Y}}} } U(x,y;0)=−∞∫∞∫A(fX,fY;0)exp[−j2π(fXx+fYy)]dfXdfY其中 A ( f X , f Y ; 0 ) {A({f_X},{f_Y};0)} A(fX,fY;0)表示在z=0平面上 U ( x , y ; 0 ) U(x,y;0) U(x,y;0)的频谱。 因为光是一种电磁波,且在自由空间中传播是无源的,所以 U ( x , y ; 0 ) U(x,y;0) U(x,y;0)满足亥姆霍兹方程: ∇ 2 U + k 2 U = 0 {\nabla ^2}U + {k^2}U = 0 ∇2U+k2U=0将上一式代入此式可得: d 2 d z 2 A ( f X , f Y ; z ) + 4 π 2 [ 1 λ 2 − f X 2 − f Y 2 ] A ( f X , f Y ; z ) = 0 \frac{{{d^2}}}{{d{z^2}}}A\left( {{f_X},{f_Y};z} \right){\text{ + 4}}{\pi ^2}\left[ {\frac{1}{{{\lambda ^2}}} - f_X^2 - f_Y^2} \right]A\left( {{f_X},{f_Y};z} \right) = 0 dz2d2A(fX,fY;z) + 4π2[λ21−fX2−fY2]A(fX,fY;z)=0这个二阶微分方程的一个基元解是 A ( f X , f Y ; z ) = A ( f X , f Y ; 0 ) exp ( j 2 π z 1 λ 2 − f X 2 − f Y 2 ) A\left( {{f_X},{f_Y};z} \right){\text{ = }}A\left( {{f_X},{f_Y};0} \right)\exp \left( {j2\pi z\sqrt {\frac{1}{{{\lambda ^2}}} - f_X^2 - f_Y^2} } \right) A(fX,fY;z) = A(fX,fY;0)exp(j2πzλ21−fX2−fY2 )这个解就是使用matlab做仿真的关键。它描述了在传播z距离后,传播面的频谱与初始频谱之间的关系,主要表现是在不同的频率分量上引入的相位偏移; 并且具有传播的限制条件: f X 2 + f Y 2 < 1 λ 2 f_X^2 + f_Y^2 < \frac{1}{{{\lambda ^2}}} fX2+fY2{{\lambda ^2}}} - f_X^2 - f_Y^2} } \right) \cdot circ({\frac{{\sqrt {f_X^2 + f_Y^2} }}{\lambda }}) \cdot \exp [ - j2\pi ({f_X}x + {f_Y}y)]d{f_X}d{f_Y}} } 对图像做FT -> 计算z距离下的频谱 -> 求解图像; 在仿真中,需要注意构建具有真实量纲的频率。 % 实现光在自由空间中传播的matlab仿真 % 流程:初始化参数 -> 对图像做FT -> 角谱传播,计算z距离下的频谱 -> 求解图像; clc, clear close all % 初始化参数 z = 100; % 传播距离(mm) L = 50; % 物面的长 W = 50; % 物面的宽 lamda = 532e-6; % 光波长 % 振幅和相位 A = im2double(imread('./cameraman.tif')); % 振幅和相位可以设置不同的值, Phi = im2double(imread('./lena.tif')); % 可以是纯相位或纯振幅物体; U0 = A.*exp(1j*2*pi*Phi); % 初始化频率 [r_dim, c_dim, ~] = size(U0); fX = [0:fix(r_dim/2),ceil(r_dim/2)-1:-1:1]/L; fY = [0:fix(c_dim/2),ceil(c_dim/2)-1:-1:1]/L; [fy,fx] = meshgrid(fY,fX); % 对图像做傅里叶变换 U0_fft = fft2(U0); % 角谱传播 f = sqrt(fx.^2+fy.^2); circ_f = circ(f.*lamda); % 高于1/λ的频率无法传播 Uz_fft = U0_fft.*exp(1j*2*pi*z.*sqrt(1./lamda.^2-f.^2)).*circ_f; % 复原图像 Uz = ifft2(Uz_fft); % 显示图像 imshow(abs([U0 Uz]),[]); set(gcf, 'outerposition', get(0,'ScreenSize'));① 对于纯相位物体:对于大部分生物细胞来说是透明的,所以主要特点表征在相位中,通过衍射传播的方式可以将相位反演出来。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |