点源に基づく三次元物体計算ホログラム表示
21535 ワード
点源に基づくホログラフィック3 D表示(一)
13 D物体の3次元データ取得1.1 3 dsmax 3次元データ取得3 dsmaxを開き、ティーポットのような3 dモデルを新規作成し、スクリプトファイルに以下のコードを貼り付け、対応するモデルの3 Dデータを出力することができる
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次元画像上の点が球面波で伝搬することを説明する.
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 ')