Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Cheap home-mode diffraction plate designed with matlab

7 views
Skip to first unread message

Bas

unread,
Jan 15, 2004, 7:30:35 AM1/15/04
to
Hi group,

there are some companies that sell diffraction plates that create
arrows, bulls-eyes and the like when held in front of a laser pointer.

We figured we could do this ourselves as a friday afternoon
experiment. The idea is to start with a bitmap of some logo, take the
2d fft with matlab and print this with a good laser printer. This
picture is then attached to the wall and photographed with a
dia-positive (or negative) from a certain distance. In this way it
should be able to get features almost down to the grain size on the
film. If you would illuminate the resulting slide with a laser you get
back your picture without any lenses. A colleague already tried this
with a line pattern and the resulting grating works as expected.

We already simulated this with matlab to do the transforms forward and
back but we didn't succeed yet. Some of the thoughts/issues we have:
-we are dealing with an intensity diffration plate, so you throw away
all the phase information. Does this mean you can only make
(point-)symmetric images??
-squaring/square rooting to convert between intensity and E-field
-the fft will always have one very high peak at DC. This should be
clipped to reveal the information carrying sidelobes.
We shouldn't have to many problems to solve this if we would spend
some real thinking, but we didn't yet.

Has anybody tried this before? Any thoughts, comments on this?

Cheers,
Bas

Stephen H. Westin

unread,
Jan 15, 2004, 11:29:40 AM1/15/04
to
ba...@hotmail.com (Bas) writes:

> Hi group,
>
> there are some companies that sell diffraction plates that create
> arrows, bulls-eyes and the like when held in front of a laser pointer.
>
> We figured we could do this ourselves as a friday afternoon
> experiment. The idea is to start with a bitmap of some logo, take the
> 2d fft with matlab and print this with a good laser printer. This
> picture is then attached to the wall and photographed with a
> dia-positive (or negative) from a certain distance. In this way it
> should be able to get features almost down to the grain size on the
> film. If you would illuminate the resulting slide with a laser you get
> back your picture without any lenses. A colleague already tried this
> with a line pattern and the resulting grating works as expected.
>
> We already simulated this with matlab to do the transforms forward and
> back but we didn't succeed yet. Some of the thoughts/issues we have:
> -we are dealing with an intensity diffration plate, so you throw away
> all the phase information. Does this mean you can only make
> (point-)symmetric images??
> -squaring/square rooting to convert between intensity and E-field

More than that, compensating for the luminance nonlinearities of the
film and the printer.

> -the fft will always have one very high peak at DC. This should be
> clipped to reveal the information carrying sidelobes.

Hmm. Not if the input has zero mean. Which a scanned image wouldn't;
you might want to try subtracting the mean from the image before the
transform.

> We shouldn't have to many problems to solve this if we would spend
> some real thinking, but we didn't yet.
>
> Has anybody tried this before? Any thoughts, comments on this?

Sounds like fun.

--
-Stephen H. Westin
Any information or opinions in this message are mine: they do not
represent the position of Cornell University or any of its sponsors.

Tom Burgess

unread,
Jan 16, 2004, 2:10:22 AM1/16/04
to
This paper (and some of the references it gives) might be helpful:
Thad Walker - "Holography without Photography"
http://www-atoms.physics.wisc.edu/Papers/holo.pdf
I think that to get good results with an unspread (narrow) beam you
would need a large reduction factor and very fine grain film, but as
shown above, if you can spread the beam no reduction is needed.

cv

unread,
Jan 16, 2004, 2:08:46 PM1/16/04
to
Yes, I have done this before. It can give you a very satisfactory
result, but there are a couple of points you need to understand.


ba...@hotmail.com (Bas) wrote in message news:<8fe46d4f.04011...@posting.google.com>...


> Hi group,
>
> there are some companies that sell diffraction plates that create
> arrows, bulls-eyes and the like when held in front of a laser pointer.
>
> We figured we could do this ourselves as a friday afternoon
> experiment. The idea is to start with a bitmap of some logo, take the
> 2d fft with matlab and print this with a good laser printer. This
> picture is then attached to the wall and photographed with a
> dia-positive (or negative) from a certain distance. In this way it
> should be able to get features almost down to the grain size on the
> film. If you would illuminate the resulting slide with a laser you get
> back your picture without any lenses. A colleague already tried this
> with a line pattern and the resulting grating works as expected.
>
> We already simulated this with matlab to do the transforms forward and
> back but we didn't succeed yet. Some of the thoughts/issues we have:
> -we are dealing with an intensity diffration plate, so you throw away
> all the phase information. Does this mean you can only make
> (point-)symmetric images??

Yes, you are limited to images with hermitian symmetry. That is, your
image will appear the same if you flip the sign on both the x and y
axes, and take the complex congugate. You can make your assymetric
arrow by shifting it off-axis. However, A second arrow image will
appear on the other side of the axis pointing the other direction.

You can easily simulate this in matlab. Shift your image, take the
FFT2, take the ABS() of your amplitude, and then IFFT2 the amplitude.
The resulting image is what you will get from your hologram. In
general, you can improve on this result using a phase-retrieval
technique, often called the "Gerchberg-Saxton Algorithm" in the world
of computer-generated holography.

> -squaring/square rooting to convert between intensity and E-field

Use a binary image and this is irrelevant. If you are trying
greyscale, then take the SQRT() before you do the FFT2.

> -the fft will always have one very high peak at DC. This should be
> clipped to reveal the information carrying sidelobes.

Yes. You will always have at least 50% of the light in the DC spot
(look up the Central Moment Theorem) since your optimum hologram
transmission is 50%. You can only get an average transmission of 0%
(and thus no DC spot) if you use a phase hologram.

Steve Taylor

unread,
Jan 16, 2004, 8:23:31 PM1/16/04
to
Tom Burgess wrote:
> This paper (and some of the references it gives) might be helpful:
> Thad Walker - "Holography without Photography"
> http://www-atoms.physics.wisc.edu/Papers/holo.pdf

Thanks for the link - very interesting.

Steve -trying-to-make-a-computer-generated-scatterplate

Bas

unread,
Jan 21, 2004, 11:24:39 AM1/21/04
to
Hi again,

thanks for the replies. We did some early experiments and we got it
working!! The resulting image is still a little bit vague, so we might
need some additional tricks.

Steps to reproduce:
1) Read the paper mentioned by Tom:


> This paper (and some of the references it gives) might be helpful:
> Thad Walker - "Holography without Photography"
> http://www-atoms.physics.wisc.edu/Papers/holo.pdf

This is a very interesting read that explains most of the details.

2) Get a logo of your choice, i suggest you use a black&white image at
most a few hundred pixels wide.

3) Calculate the hologram. I didn't use the C-program from the
article, but i translated it roughly to matlab. I also converted the 4
level deep nested loops (very slow!) to the built-in fft2 function. I
might have missed a few of the details in the convertion, but i
believe i covered the essentials. See m-file below.

4) Open the calculated image with a good image program (i used
irfanview) that lets you change the DPI setting and print it on a
sheet. I did it at 300 DPI, although our printer can do better. I have
the suspicion that the inkt droplets somehow merge when you print at
higher resolution. Needs more experimenting with other printers
though.

5) Grab a HeNe and expand the beam to a few cm diameter, i used a 40x
objective and a 200mm lens. I also inserted a pinhole for some spatial
filtering but i don't know if this is necessary. Focus the beam on a
wall some meters away and hold the sheet behind the collimator.

The resulting image contains one very bright spot (corresponding to
the DC level of the fft, as expected) surrounded with a faint cloud of
speckles. The logo is visible vaguely in this cloud.

Enjoy,
Bas

*********** holo.m *************

threshold=0.4;
n=400;
input=ones(n,n);

%load image, adjust as needed
logo=double(imread('logo.png')); %184*400 pix in our case
input((1:184)+8,:)=logo; %make square matrix, might not be necessary
input=input+flipud(fliplr(input)); %make image point-symmetric

figure;imagesc(input);colormap gray;axis image; %display input image

input=fftshift(input); %needed to shift dc peak to center of input
image

F=real(fft2(input.*exp(2*pi*i*rand(size(input))))); %calculate fft
output=((F-min(min(F))) / (max(max(F))-min(min(F))))>threshold;
%convert to discrete pixels

figure;imagesc(output);colormap gray;axis image; %display hologram

figure; imagesc(log(abs(fftshift(ifft(output)))));colormap gray;axis
image; %display simulated end result on your wall

output=[output,output,output,output]; %tile 4*4
output=[output;output;output;output];
imwrite(output,'opticafft.png'); %save hologram

0 new messages