点源に基づく三次元物体計算ホログラム表示

21535 ワード

点源に基づくホログラフィック3 D表示(一)
13 D物体の3次元データ取得1.1 3 dsmax 3次元データ取得3 dsmaxを開き、ティーポットのような3 dモデルを新規作成し、スクリプトファイルに以下のコードを貼り付け、対応するモデルの3 Dデータを出力することができる
exFile=openFile"C:\exportData1.txt"mode:"w"
for obj in geometry 
	do(
   format "    (\"%\");       :%
"
obj.name obj.mesh.numverts to:exFile for i in 1 to obj.mesh.numverts do( vertPos=getVert obj.mesh i format" % % %
"
vertPos.x vertPos.y vertPos.z to:exFile ) )

1.2 2 Dイメージポイントソースサンプリングホログラム1枚の画像を表示する一般的にm× n m×n m×n個のデータ構成は、2次元画像の平面を対応する座標系に対応させるだけでよく、1枚の画像のサイズをL xとする× L y Lx×Ly Lx×Lyは、それを対応する座標系に離散させ、この場合、対応する座標系で採用される数はmに等しくなければならない× n m×n m×n,ピクチャの2次元サンプリングを例に,2次元画像上の点が球面波で伝搬することを説明する.
A=imread('e:\TP\DH.BMP');  %    
B=double(A(:,:,1));        %     , r、g、b     
[r,c]=size(B);             %      ,   m,n
B=B.*exp(j*rand(size(r,c))*2*pi);
lambda=0.000532;        %    ,  mm
k=2*pi/lambda;
L=8;                   %        ,  mm
d=1200;                %    
                 
x0=linspace(-L/2,L/2,r);
y0=linspace(-L/2,L/2,c);
[x0,y0]=meshgrid(y0,x0);
%              ,
xx=linspace(-L/2,L/2,r);
yy=linspace(-L/2,L/2,c);
[xx,yy]=meshgrid(yy,xx);
UF=0;
%(exp(j*k*d)/j*lambda*d)%                    ,        。
for i=1:r
    for n=1:c
        U=B(i,n).*exp(j*k*((xx-x0(i,n)).^2+(yy-y0(i,n)).^2)/2/d);
        %      ,                     ,                 
        %               
        UF=U+UF;
    end
end
% figure,imshow(conj(UF).*conj(UF),[])
I=UF.*conj(UF);
alpha=pi/2.00;                  %    x     
beita=pi/2.01;                  %    y     
R=exp(j*k*(x0*cos(alpha)+y0*cos(beita))); %   
%,     
inter=UF./max(max(sqrt(I)))+R;   %     ,   、    
II= inter.*conj(inter);         %       
figure,imshow(II,[]),title('   ')
%= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
%      
%  S-FFT       II
II=double(II);
zi=1200;                      %          ,  : 
Lix=r*lambda*zi/L;                %       ,  : 
Liy=c*lambda*zi/L;
x=linspace(-Lix/2,Lix/2,r);y=linspace(-Liy/2,Liy/2,c);
[x,y]=meshgrid(y,x);
F0=exp(j*k*zi)/(j*lambda*zi)*exp(j*k/2/zi*(x.^2+y.^2));
F=exp(j*k/2/zi*(x0.^2+y0.^2));  % T-FFT               
%           C=1
holo=L/r*L/c*fftshift(fft2(II.*F*1)); holo=holo.*F0;
Ii=holo.*conj(holo);
figure,imshow(Ii,[0,max(max(Ii))./1]),title('S-FFT   ')