Comments (5)
Hi @LeoKonzett ,
Thanks again for these great questions and glad to see that Fourier calibration is running, even if it isn't perfect for your setup.
- The kxy grid is the grid of the SLM, not the grid of the camera. So there may be any number of flips and rotations causing this SLM-coordinate to appear in a different direction in camera-space.
- Thanks for finding this bug. Fixed in 9ac3ecb.
- This is actually working as intended. Wavefront compensation only works best around the point of calibration (though we have not seen aberration outside the point of calibration to this degree). The issue is somewhat fundamental: an SLM is more akin to a vector-vector operation than a matrix-vector operation. If you run wavefront calibration more times with different reference points, you'll probably find that the result is slightly different. This is because in your case, different corrections are needed for each point. This is what I mean by a vector-vector operation: light targeting different points is sourced from different angles in SLM
$k$ -space, but the pattern displayed on the SLM is imparted the same way for each$k$ -vector. The behavior of a desired far-future SLM which could implement a "matrix-vector" product (at the cost of many more degrees of freedom) would be to impart different phase for each of the$k$ -vectors. In this same vein, this is why people can't do arbitrary basis transformations for spatial light with only a single SLM. Sure you can turn a$HG_{10}$ into a$LG_{10}$ mode, but doing$HG_{10}$ to$LG_{10}$ at the same time as other conversions ($HG_{20}$ to$LG_{20}$ ,$HG_{30}$ to$LG_{30}$ , ...) is a huge challenge and is an active field of research for spatial mode multiplexing (the solutions usually involve multiple SLMs or multiple bounces off of the same SLM to reach toward matrix-vector products). All that said, there are a few things that you might be able to do to fix this:
- Better alignment is better. Having the SLM precisely in the Fourier domain will generally yield better results. This includes making sure that the beam incident on the SLM is collimated. What does your setup look like? Are you using a
$4f$ system? - On one of our setups, we found wavefront calibration at different points produces different amplitude distributions. Unlike phase error across the field, amplitude error is fixable because an iris in front of the SLM can clip all patterns to the same amplitude distribution. A comment about this was tucked in a supplementary "We find that the amplitude distribution becomes significantly clipped as the reference position approaches the edge of the field of view. To compensate for this, we purposefully overclip the SLM with an iris such that the amplitude distribution is equally clipped regardless of the reference position (clipping oval from the iris is visible on the amplitude distribution pictured in Fig. S5a). This allows us to generate more accurate holograms across the region near the edge of the field of view where the input grating array is located." I don't think it will help in your case because your amplitude distribution is already small, but it might be worth seeing the differences between calibrations produced by two different reference points.
- I think you probably would be able to get better results with two SLMs (separated in
$z$ ), but I don't think it's worth the complexity. - We also have plans to use Zernike Polynomials to generate the best "average" phase correction to compensate for aberration. There are several groups who have contacted us with interest for such a feature, so this is becoming a priority. Let me know if you're interested in implementing this. The algorithm would involve iteratively cancelling Zernike orders.
- We have other plans to try to implement a James-Webb-type wavefront calibration, which might also work better for you.
- As a last comment, depending on what you're trying to do, you can do wavefront calibration at the point at which you want to do science, and then restrict yourself to operation inside that region. Expanding your input beam size can give you more effective resolution inside that region of low aberration.
from slmsuite.
Hi Leo,
I think we have found a way to fix this issue and get diffraction-limited spots across a field of view despite aberration. Stay tuned. ETA a month or so depending on how things go. Let us know if you would be interested in helping with this!
I'm going to close this issue in the meantime.
from slmsuite.
@ichristen re-opening since it is still an active issue in slmsuite
from slmsuite.
This issue will be closed since this is a faithful execution of the current wavefront calibration algorithm as implemented. Improvements to wavefront correction will be discussed in #60
from slmsuite.
See the new features and examples Zernike Holography and Multipoint Calibration, which resolve @LeoKonzett 's issue.
from slmsuite.
Related Issues (20)
- slmsuite.holography.toolbox.smallest_distance unexpected behavior HOT 1
- Clean up true 2D support for cameras/SLMs with non-square pixels. HOT 1
- DataRay Camera support HOT 3
- `take` does not work properly for stacks of images. HOT 1
- `averaging` flag for cameras HOT 1
- `Filesystem` camera
- Cameras update HOT 2
- AL Loop for Weights HOT 1
- Wavefront calibration over a field of view HOT 3
- gradient-based optimization for phase and amplitude objectives HOT 1
- Unusual behavior with `take` using even pixel number.
- Some AlliedVision cameras don't have binning attributes.
- Some corrections for MRAF in the package
- Allied Vision Vimba-X Support HOT 2
- MindVision HOT 2
- `pylablib` Cameras
- Numpy 2.0.0 support HOT 3
- Basler
- cuda.cu was not included in the 0.1.0 wheel.
- Remove `opencv-python` (`cv2`) as a dependency.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from slmsuite.