Created by sebastien.popoff on 24/04/2013
A pioneering experiment: Focusing through scattering media using wavefront shaping
In 2007 I.M. Vellekoop and A.P. Mosk published their work on the first demonstration of focusing light through a highly scattering medium. Most techniques to image or focus through scattering media relied on selecting only the part of the light that has not been scattered - the ballistic light. The ballistic signals decay exponentially with the thickness of the medium, limiting drastically the depth at which light can be focused. The idea developed by the authors is to use the scattered waves, that are randomly mixed, to focus light through the medium. A scattering sample illuminated by a coherent wave gives rise to a so-called speckle pattern, that results from the interference of the scattered waves. Using a spatial light modulator (SLM), the authors are able to control independently the phase of the different parts of the incident beam. Each segment gives an output seemingly random complex field. By testing different values of the phase for each segment, they are able to put in phase all the contributions, giving rise to a very bright focus spot.
Created by sebastien.popoff on 18/04/2013
How to control an SLM with Matlab/Octave using Psychtoolbox
Most spatial light modulators (SLMs) available are controllable like a normal computer monitor and are plugged on a computer with a DVI cable. Some SLMs are now sold with a dedicated card or can be controlled via USB. If you possess such a device, this tutorial is not for you. The first requirement to control the SLM with a DVI/HDMI cable is to have a graphic card with two monitor outputs, one for your screen, one for your SLM. Once plugged to the computer, the SLM is then handled by the operating system as a secondary monitor. No software is required to display an image on the SLM. For that reason, the constructor does not provide any code to use the SLM with Matlab/Octave or other software. One solution to send images with Matlab is to display an array in a figure that fits the size of the secondary monitor. Nevertheless, this technique presents some drawbacks due to the fact that you do not control directly the pixels of the SLM. For instance, the border of the figure, which may be different depending on the operating system, has to be taken into account. More importantly, the scaling of the figure does not guarantee that one pixel of the image displayed corresponds to one pixel of the SLM. For application where a very good resolution is needed, a blurred image on the SLM can be detrimental.
I present how to control directly the pixels of the SLM using Psychtoolbox, a free toolbox for Matlab and Octave that uses GPU acceleration. I show here a tutorial for Matlab, but the toolbox also exists for Octave and seems to work a similar way.