用于模拟和重建平面和球面波记录的直线数字全息图的实用方法(Matlab代码实现)

 💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码、文章下载


💥1 概述

文献来源:

用于模拟和重建数字直线全息图的实用算法。
摘要:本文介绍了用于模拟和重建平面和球面波记录的直线数字全息图的实用方法。这里描述的算法适用于具有吸收和相移特性的物体的全息成像。对于成功模拟和重建全息图,评估了与距离、采样率和其他因素相关的最佳参数,并制定了可实现的分辨率的标准。此外,我们展示了在某些条件下,使用平面和球面波记录的全息图的重建的数值过程是相同的。还讨论了全息图及其重建的实验例子。
内联全息图与Gabor提出的原始全息方案相关[1, 2, 3]。它在概念上设计简单,不包括样品和检测器之间的光学元件,并且自发明以来已经在使用各种类型的波进行了许多实验,包括光线、电子或X射线等等。如今,全息图由数字检测器记录,并且需要进行数字重建,这构成了数字全息学的领域[4]。Kim的书[5]中对不同类型的全息图以及专门用于其形成和重建的理论给出了很好的概述。在数字全息学中应用的所有模拟和重建例程都采用快速傅里叶变换(FFT)。大多数例程都利用单个傅里叶变换,除了基于角谱方法的平面波例程[6],该例程涉及两个傅里叶变换。一般来说,当使用两个傅里叶变换时,可以实现最佳重建[7]。原因有两个。首先,当在模拟或重建中涉及两个傅里叶变换时,物体及其全息图将以类似数量的像素进行采样。例如,如果物体在物体平面上占据四分之一,那么它的全息图也将大致占据探测器面积的四分之一,反之亦然。其次,当使用单个傅里叶变换时,所有以下参数都是相互依赖的,并且受到一个方程的限制:样品和检测器之间的距离、像素数、波长、物体面积大小和检测器面积大小。因此,仅在一定数量的像素处才能实现正确的重建,而这是非常不方便的。另一方面,使用两个傅里叶变换进行波传播的计算可以避免对像素数的依赖。在这里,我们总结了用平面波和球面波模拟和重建全息图的简单方法。这里描述的所有算法都使用了两个傅里叶变换。这里描述的一些方法已经在先前的研究中使用过[8, 9, 10],但没有详细讨论。

按照定义,内联全息图中,参考波和物体波共享相同的光轴。通常,实验如下实现:一波通过平面上的一个位置处的物体。波的一部分被物体散射,从而形成物体波O,而波的未散射部分形成参考波R。这两个波在物体后相干,记录在一定距离处的干涉图案被称为全息图。在图1中,显示了利用平面波和球面波的两种内联全息图方案。球面波的内联全息图也被称为Gabor全息图。入射波分布由Uincident(x, y)描述,其中(x, y)是物体平面上的坐标。详细文章见第四部分。

📚2 运行结果

部分代码:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% parameters
  N = 500;                    % number of pixels
  lambda = 532*10^(-9);       % wavelength in meter
  s = 0.002;                  % sidelength of the object area in meter
  z = 0.04;                   % object-to detector distance z in meter
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% reading object distribution
  object = zeros(N,N);        
  object0 = imread('a_object.jpg');  
  object(:,:) = rot90(rot90(rot90(object0(:,:,1))));   
% normalizing object distribution, so that the values are between 0 and 1
  object = (object - min(min(object)))/(max(max(object)) - min(min(object)));  
  % showing the normalized object distribution
    figure('Position',[300 200 800 800])
    subplot(2,2,1), imshow(flipud(rot90(object)), []);
    title('normalized object distribution / a.u.')
    xlabel({'x / px'})
    ylabel({'y / px'})
    axis on
    set(gca,'YDir','normal')
    colormap('gray')
    colorbar; 
% creating transmission function in the object plane
% t(x,y)=ampl(x,y)*exp(i*phase(x,y)) from the normalized object
% distribution
  am = exp(-1.6*object);  % amplitude distribution, exp(-1.6)=0.2
  ph0 = 3;                % maximum of the phase shift, in radians
  ph = ph0*object;        % phase shift distribution, assumed to be positive
  t = zeros(N,N);
  t = am.*exp(i*ph);
  % showing amplitude of the transmission function
    subplot(2,2,2), imshow(flipud(rot90(am)), [],'colormap',gray);
    title('amplitude = exp(-absorption) / a.u.')
    xlabel({'x / px'})
    ylabel({'y / px'})
    axis on
    set(gca,'YDir','normal')
    colorbar; 
  % showing phase of the transmission function
    subplot(2,2,3),imshow(flipud(rot90(ph)), [],'colormap',gray);
    title('phase / radian')
    xlabel({'x / px'})
    ylabel({'y / px'})
    axis on
    set(gca,'YDir','normal')
    colorbar; 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% simulating hologram
  prop = Propagator(N, lambda, s, z);
  U = IFT2Dc(FT2Dc(t).*prop);
  hologram = abs(U).^2;
  % showing hologram
    subplot(2,2,4), imshow(flipud(rot90(hologram)), []);
    title('simulated hologram / a.u.')
    xlabel({'x / px'})
    ylabel({'y / px'})
    axis on
    set(gca,'YDir','normal')
    colormap('gray')
    colorbar; 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% saving simulated hologram as BIN file
  fid = fopen(strcat('b_hologram.bin'), 'w');
  fwrite(fid, hologram, 'real*4');
  fclose(fid);
% saving simulated hologram as JPG file
  p = rot90(hologram);
  p = 255*(p - min(min(p)))/(max(max(p)) - min(min(p)));
  imwrite (p, gray, 'b_hologram.jpg');

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

🌈4 Matlab代码、文章下载

  • 29
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值