Skip to content

jcxz/Holoren

Repository files navigation

#What is this project ?#

This project is my bachelor's thesis and it deals with rendering synthetic holograms. It takes an input in form of an image or an XML description of scene composed of simple geometric shapes. The program uses a simple diffraction integral evaluation algorithm. That is for each point on optical field it computes a sum of complex amplitudes from all point sources. The program is capable of generating holograms of only very simple scenes. That is images will work and simple 3D wireframes might also work, but do not expect any complicated stuff. These restrictions are given mainly due to the algorithm itself.

#What are the dependancies ?#

The program exploits GPU to boost its rendering process, therefore you need a computer equipped with graphics card supporting OpenCL (basically any newer card will do). The program only generates the optical field (a matrix of complex numbers, that represents the state of light at each point on hologram plate), which however needs yet to be postprocessed to become an image, which can then be printed and reconstructed with laser. This postprocessing is performed via HoloToolkit, which can be found at [http://www.kiv.zcu.cz/en/research/downloads/product-detail-en.html?produkt%20id=31] (http://www.kiv.zcu.cz/en/research/downloads/product-detail-en.html?produkt%20id=31).

#Known issues#

The program is quite crude and for an uninitiated individual it will be probably quite frustrating to get it working. I plan to improve this and also to provide a GUI shell to all of the command line tools (the current one is ... eh, how to say it - quite cumbersome). Also I would like to improve the current algorithm and implement new and more efficient ones too. So there is a plenty of work to be done and this SW can still be improved greatly, but hopefully it can be usefull to someone as there are still not many programs that deal with holograms.

#Links# In the following three sections I will put some interesting links, that I have gathered while working on this project.

#Links to code samples (projects)#

A Holography toolkit developed by University of West Bohemia. I think this is the best source to start experimenting with CGH. It contains utilities for numerical reconstruction of holograms, utilities for optical field postprocessing and even programs to generate synthetic holograms (like my program does). This is where I have drawn most of my inspiration from. The disadvantage might be that the codebase is not so tiny and some utilities are quite difficult to get working:

This program uses the same algorithm as I do and it is written in Java. The speed is terrible, but the code is pretty easy to read (even for a non-Java programmer like me):

This project claims to be doing numerical reconstruction of computed holograms. I have not tried it, because I have used tools from HoloToolkit, but maybe it will be of some use to you:

#Links to learning material#

This doctoral thesis deals directly with CGH and covers various methods of generating holograms with computer. It also discusses some theoretical basics of holography, but if you are completely new to this field and to optics, then you are better of finding some other materials:

If you can read Slovak, then you can have a look at my bachelor's thesis:

Again, if you read Slovak, I found this to be a very easy to understand source:

and this (in czech):

Slides from See Real presentation, they won't really enlighten you without further explanation, but it might be interesting to have a look at:

#Links to some fun stuff about holography#

This is how amazing computer generated holography can be, if you know what you are doing:

Even better are the optical holograms:

And some even try to run holography in real time (of course by employing certain tricks):

The video from the optical reconstruction of my own hologram:

About

Bachelor's thesis - a program to compute an optical field of a hologram

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published