三维物体计算全息及显示

##三维物体计算全息及显示(二)
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列的数据.

三维物体计算全息及显示_第1张图片

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建模的茶壶重建图像如下:
三维物体计算全息及显示_第2张图片
参考文献
[1]王鹏,计算全息三维显示的技术研究[D],2013

你可能感兴趣的:(全息显示)