Optics · Graduate coursework, Fall 2025
Wavefront Shaping Through Scattering Media
- At a glance
- Built a closed-loop optical system that uses a phase-only spatial light modulator to focus laser light through a ground-glass diffuser, and simulated how strongly each focusing algorithm depends on SLM calibration
- Methods
- Free-space optical alignment, SLM phase calibration, feedback-driven phase optimization (OpenWFS, Python), algorithm simulation
What?
Light passing through a strongly scattering material such as ground glass or biological tissue leaves as a random speckle pattern. The scattering is deterministic, so it can be partly undone: if the incoming wavefront is given the right phase profile, the scattered light interferes constructively at a chosen point behind the sample. Vellekoop and Mosk first demonstrated this in 2007, producing a focus about 1000 times brighter than the background speckle.
For a graduate course project (EE 290, UC Berkeley), a team of three set out to reproduce the experiment with a 632 nm laser and a ground-glass diffuser, and to compare focusing algorithms in simulation. I built and aligned the optical setup, and calibrated and verified the spatial light modulator (SLM).
How?
The laser is polarized, attenuated with an ND filter and expanded onto a Hamamatsu X13138 phase-only SLM, reached through a 50:50 non-polarizing beam splitter. The SLM is driven as a second monitor from a laptop, so any grayscale image becomes a phase pattern across the beam. The shaped beam is focused onto the diffuser, and a 4x objective images the transmitted speckle onto a CMOS camera, which supplies the feedback signal.

SLM calibration. Before any focusing, the SLM's gray levels had to be mapped to phase. With a mirror added as a reference arm, the beam splitter formed interference fringes on the camera. Stepping the gray level on the top section of the SLM from 0 to 255 shifted the fringes, and they returned to their starting position at a gray level of 180. That value marks a 2π phase shift and set the lookup table for every pattern that followed.
Optimization. Focusing used the open-source OpenWFS Python library. A circular target region was defined on the camera, and a modified stepwise sequential algorithm worked through the SLM segment by segment from a flat starting phase, trying eight phase values per segment and keeping whichever made the target brightest. The full pass was run three times, keeping the best mask, to limit the effect of measurement noise.
Simulation. In parallel, the team simulated stepwise sequential against two dual-reference algorithms, Hadamard (Mastiani and Vellekoop, 2021) and Fourier (Mastiani et al., 2022), then repeated each run with the SLM's 2π level deliberately set 10% and 50% too low and too high.


Result
On the bench, optimization raised the mean intensity in the target region from 85.0 to 198.6 camera units, a 2.3x enhancement. A second run reached 1.7x (97.0 to 162.7).

That falls well short of the simulated enhancements below. The likely causes we identified were residual calibration error, the camera's limited dynamic range and exposure settings, and the lack of a half-wave plate to control polarization at the SLM.
| Algorithm (simulated) | Enhancement | Measurements |
|---|---|---|
| Stepwise sequential | 42.7x | 402 |
| Hadamard dual reference | 47.3x | 402 |
| Fourier dual reference | 71.4x | 618 |
Simulated intensity enhancement with a correctly calibrated SLM
| Algorithm | 2π set 50% low | 10% low | 10% high | 50% high |
|---|---|---|---|---|
| Stepwise sequential | −61.8% | −1.9% | −4.3% | −49.3% |
| Hadamard dual reference | −99.4% | −59.6% | −25.5% | −97.4% |
| Fourier dual reference | −94.9% | −6.7% | −8.6% | −73.2% |
Change in simulated enhancement when the SLM's 2π level is miscalibrated
The calibration study was the clearest finding. With a 10% calibration error, stepwise sequential and Fourier dual reference lost less than 9% of their enhancement, while Hadamard dual reference lost 26 to 60%. With a 50% error every algorithm lost about half or more, and Hadamard almost all of it. At 50% error, setting the 2π level too low did more damage than setting it too high for all three algorithms: the phase values then never complete a full cycle, whereas an overestimate only wraps them unevenly back to lower values.
Thanks to Prof. Anat Levin and Dr. Munkyu Kang for their support. Team: Arvind Swamynathan, Atulit Dasaratha, Alex Mehta.