三维物体计算全息及显示

##三维物体计算全息及显示(二)
1.1 博奇编码公式推导
由光学的全息理论,全息面上光学离轴全息图的透过率函数为
h ( x , y ) = ∣ A ( x , y ) e x p ( j ϕ ( x , y ) ) + R ( x , y ) e x p ( j 2 π α x ) ∣ 2 h(x,y)=|A(x,y)exp(j\phi(x,y))+R(x,y)exp(j2\pi \alpha x)|^{2} h(x,y)=A(x,y)exp(jϕ(x,y))+R(x,y)exp(j2παx)2
= A 2 + R 2 + 2 R A c o s ( 2 π α x − ϕ ( x , y ) ) ( 1 ) =A^{2}+R^{2}+2RAcos(2\pi \alpha x-\phi (x,y)) (1) =A2+R2+2RAcos(2παxϕ(x,y))(1)
其中, R ( x , y ) R(x,y) R(x,y)为参考光的复振幅。式中前
两项可视为偏置分量,第三项包含了原物的全部信息。年经博奇研究发
现,式中前两项不仅对再现原物波毫无贡献,反而会引入多余的衍射像,抽样点数多,增加全息图的带宽要求。为此,博奇提出用新的直流偏置来代替式中的前两项,重新构成全息图的透过率函数为:
h ( x , y ) = 0.5 ( 1 + A ( x , y ) c o s ( 2 π α x − ϕ ( x , y ) ) ( 2 ) h(x,y)=0.5(1+A(x,y)cos(2\pi \alpha x-\phi (x,y)) (2) h(x,y)=0.5(1+A(x,y)cos(2παxϕ(x,y))(2)
设置相应的物函数及参考光波,可以推到出相应的透过率函数 [ 1 ] ^{[1]} [1]
h = 0.5 ∗ ( 1 + u 0. ∗ c o s ( 2 ∗ π . ∗ x . ∗ s i n ( t h e t a x ∗ π / 180 ) . / λ + 2 ∗ π . ∗ y . ∗ s i n ( t h e t a y ∗ π / 180 ) . / λ − p 0 − ( ( π / λ ) . / z 0 ) . ∗ ( ( x . 2 + y . 2 ) + ( x 0 . 2 + y 0 . 2 ) − 2. ∗ ( x 0. ∗ x + y 0. ∗ y ) ) ) ) ( 3 ) h=0.5*(1+u0.*cos(2*\pi.*x.*sin(thetax*\pi/180)./\lambda +2*\pi.*y.*sin(thetay*\pi/180)./\lambda-p0-((\pi/\lambda )./z0).*((x.^2+y.^2)+(x0.^2+y0.^2)-2.*(x0.*x+y0.*y)))) (3) h=0.5(1+u0.cos(2π.x.sin(thetaxπ/180)./λ+2π.y.sin(thetayπ/180)./λp0((π/λ)./z0).((x.2+y.2)+(x0.2+y0.2)2.(x0.x+y0.y))))(3)
可根据上述公式进行编码

%------------------------------------------------
clear all;clc
%----------------------------------------------------
w=532e-009;
thetax=1.0;%参考光入射角
thetay=1.0;%参考光入射角
M=512;N=512;
z1=1.2;%单位m
d=24e-006;%全息图上取样间隔,由空间光的像素尺寸大小决定,不同的空间光调制器,取样间隔不同,常用的空间光调制器LCOS,DMD;
%--------------------------------------------------------
a=load ('chafu18530.txt');%chafu18530.txt为x,y,z的三维数据,该数据由3dsmax 获得,如果有N个三维数据点,则有N行3列的数据.

在这里插入图片描述

b=[cos(30) 0 sin(30);0 1 0; -sin(30) 0  cos(30)];
a=a*b;
rx=0.0002;%按需修改放大缩小倍数,
ry=0.0002;
rz=0.0002;
a(:,1)=a(:,1).*rx;
a(:,2)=a(:,3).*ry;
a(:,3)=z1-a(:,2).*rz;
% a(:,6)=sqrt(a(:,6));%物上的振幅
%-------------------------------
X=(-N/2+1)*d:d:N/2*d;%和linspace函数的作用一致
Y=(-M/2+1)*d:d:M/2*d;
[x,y]=meshgrid(X,Y);%生成网格数据
%-------------------------------
h=0;
for tt=1:size(a,1)
x0=a(tt,1);
y0=a(tt,2);
z0=a(tt,3);
p0=rand(1)*2*pi;%取随机相位值
u0=1;%为方便,复振幅的值设置为1,也可以设置为其他数值。
h_1=0.5*(1+u0.*cos(2*pi.*x.*sin(thetax*pi/180)./w+2*pi.*y.*sin(thetay*pi/180)./w-p0-((pi/w)./z0).*((x.^2+y.^2)+(x0.^2+y0.^2)-2.*(x0.*x+y0.*y))));%博奇编码
h=h+h_1;
end
minh=min(min(h));
maxh=max(max(h));
I=(h-minh)./(maxh-minh);

%三维物体重建

t=24e-006;%取样间隔
theta=0.5; %入射角
W=532e-009;%为再现光波长
z=1.2;
I_1=double(imread('e:\c1.bmp'));
I=I_1-mean(mean(I_1));
[m,n]=size(I);
[X,Y]=meshgrid(1:m,1:n);
dx=W*z/(t*m);
C=exp((i*2*pi/W)*(sin(theta*pi/180)*t.*X));
A=(exp(i*2*pi*z/W)/(i*W*z))*exp((i*pi/(W*z))*((dx)^2).*((X-m/2).^2+(Y-n/2).^2));%积分号前的因子
f=exp((i*pi/(W*z))*t^2.*((X-m/2).^2+(Y-n/2).^2));
I_2=I';
B=C.*I_2.*f;
D=fftshift(fft2(B));
U=A.*D;
I_3=abs(U);
I_4=I_3./max(max(I_3));
I_5=flipud(I_4);
figure,imshow(I_5,[]);
colormap(gray(256));
imwrite(I_5,'F:bmp\c1.bmp')

试验采用18530点的由3dsmax建模的茶壶重建图像如下:
在这里插入图片描述
参考文献
[1]王鹏,计算全息三维显示的技术研究[D],2013

  • 8
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 26
    评论
MATLAB三维傅立叶计算全息图是一种用于光学全息图模拟和分析的技术。在光学领域中,全息图是一种能够记录和重现物体三维形态和光场分布的图像。全息术是通过记录物体的干涉图案,将物体的波前信息以复杂的干涉图案的形式保存在记录介质中。当这个记录介质通过适当的照明方式再现出来时,人眼能够看到物体三维形态和光场分布。 MATLAB提供了相应的函数和工具箱,可以用于计算和分析三维傅立叶全息图。具体的计算过程包括以下几个步骤: 1. 创建待计算物体模型。可以使用MATLAB的图形处理函数和工具箱来创建三维物体的模型,例如用三维网格表示物体的形状。 2. 利用物体的模型计算出其复数振幅分布。利用三维傅立叶变换函数,通过对物体模型进行傅立叶变换,可以得到物体的复数振幅分布。 3. 构建全息图的参考波片。全息图中除了物体复数振幅分布外,还需要一个参考波片。可以使用MATLAB的数学函数生成合适的平面波或球面波作为参考波片。 4. 计算全息图的复数振幅分布。将物体的复数振幅分布与参考波片的复数振幅分布进行干涉运算,得到全息图的复数振幅分布。 5. 通过适当的数学处理,得到全息图的可视化表示。可以使用MATLAB的图像处理和可视化函数,将全息图的复数振幅分布转化为可视化的图像或动画。 MATLAB的三维傅立叶计算全息图技术在光学全息图的仿真和分析中具有很大的应用潜力,可以用于物体形态的重建、光场分布的计算和分析,以及全息图的显示和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值