Computational holography
For quite some years during high school and some of my early bachelor years, I used to work on holography, sometimes doing it from a more scientifically perspective (interferometry, …) and sometimes doing it more for the fun of it (just as people do photography, but in this case you can get a nice 3D image out of it 🙂 ).
In 2006 while I was a bachelor student, I decided to do something with computer generated holograms (CGH). Here’s some basic stuff based on T. Walker, Holography without photography, A. J. Phys 67(9), Sep. 1999.
The diffraction patterns were generated using this code (Matlab) using a slow DFT (nowadays I would completely change this, but unfortunately I have no time):
%-------------------------------
% CGH
%
% Created by Alexandre Lopes
% Universidade de Aveiro
%
% Based on Walker, Holography without photography
% 2006
%-------------------------------
clear all
hi = clock
R = 75;
N = 300;
thr = 0.6;
f = 0.15; %m
lambda = 633*10^(-9); % m
tobj = 0.0004; % object size (m)
tholo = 0.0254; % hologram size (m)
o = tobj/R;
h = tholo/N;
% A - matrix with initial image:
% 1 for white
% 0 for black
% A,B -> RxR matrix
% Holo -> NxN matrix
A=imread('A preto.bmp');
Holo = zeros(N);
% DFT
for row=0:R-1
for col=0:R-1
randphi = rand*2*pi;
for X=0:N-1
for Y=0:N-1
Holo(X+1,Y+1)= Holo(X+1,Y+1)+ A(row+1,col+1)*cos(2*pi ...
/(lambda*f)*(o*h)*(X*row+Y*col)+ randphi);
end
end
end
end
maxholo = max(max(Holo));
minholo = min(min(Holo));
for I=1:N;
for J =1:N;
if ((Holo(I,J)-minholo)/(maxholo-minholo))>thr %Threshold
B(I,J) = 1; % White pixel
else
B(I,J) = 0; % Black pixel
end
end
end
imwrite(B,'C:\out.bmp','bmp')
hfinal = clock
and printed on transparencies using a laser printer.
The setup consisted of a HeNe laser, plus a spatial filter (which is not really necessary) and a plano-convex lens (see this).
That we can reconstruct the original image, is explained by Fourier optics and the Fraunhofer diffraction produced by the transparency (see this, I won’t go into details right now, maybe I will do this if I ever find the time).
Note that as the image is projected on a wall, there’s no 3D image (and it was anyway not encoded in the diffraction pattern).