DOI: 10.17863/cam.126934
title: Research data supporting "Seidel-based position-dependent aberration correction in Fourier holography"

description: The dataset contains the experimental research data collected for the “Seidel-based position-dependent aberration correction in Fourier holography” research paper. The purpose of the experiment was to measure Seidel aberration coefficients (coma, astigmatism, field curvature, distortion, as well as tip and tilt coefficients), and correct for these aberrations in the generation of holograms. The holograms were displayed on the Santec SLM-200 spatial light modulator, and the images were captured by Zelux CS165MU CMOS camera in a focal plane of the projection (Fourier) lens of 6cm focal length. The code to generate the experimental data was written in Python and is available at GitHub: https://github.com/antoni-wojcik/hololab_wavecorr. The experiment required 3 steps: 1. Measuring the position independent aberrations (phase and amplitude on the SLM). This is done using a technique described in: A. J. Wojcik, D. Singh, A. Rakshit, et al., “Fourier-plane wavefront and SLM aberration characterization via iterative scanning of beam deflector segments,” Sci. Reports 16, 3025 (2025). 2. Measuring the Seidel coefficients. This is done using a grid of square markers and observing a group of central 4 markers and 4 markers in the corners of the observed field of view. An objective function defining the quality of the markers is then calculated and minimized. The minimization process was tested in two separate ways: (a) Scanning over each coefficient, as described in the main manuscript. The measurement was then repeated for the distortion coefficient to make sure that the markers are centered at the desired positions, which is difficult to do during the first sweep. (b) Using the Gaussian Process to find the optimal parameters stochastically. 3. Generating the holograms using the data measured in step 1, and displaying them: (a) Without any Seidel corrections. (b) With a correction using the Chebyshev series expansion (it is faster than the Taylor series expansion also described in the manusrcipt). (c) With a correction using the patch-based method, where aberrations are assumed constant over each patch. Blending between patches was also tested to avoid patch edge artifacts. This dataset is divided into three directories, each following its respective step listed above: 1. Position-independent wavefront measurement ("wavefront_measurement" directory): This contains data collected when measuring the incident wavefront. This includes “log.txt” which is the log information outputted by the program to check if the operation was successful; “tile_gradients.npy” are the raw measured gradients at each tile; “segment_gradients.png” is the visualisation of the gradients; “phase_wavefront.npy” and “amp_wavefront.npy” are the computed phase and amplitude of the wavefront (the latter is computed from “amp_wavefront_raw_intensity.npy” raw intensity data); “phase_wav.png” and “amp_wav.png” are the visualisations of these. The directories contain also “roi_reference” files which show the location of the reference point used in calculating the gradients and “roi##” subdirectories containing more files of the same type showing how the location of points from selected patches shift as the program optimises the gradients. In these subdirectories “#.txt” files contain specific information about the location and gradients for each of the spots. 2. Seidel coefficient measurements ("seidel_measurements" directory). It contains 3 subdirectories: (a) "run_sweep" that contains sweep measurements of the 6 coefficients. (b) "run_sweep_second_dist" that contans the second measurement of the distoriton coefficients after (a) was completed. (c) "run_gaussian" that contains the measurements using the Gaussian Process. The structure of the subdirectories is the same. "raw_image_0.png" and "raw_image_1.png" contain the images of the initial and final pattern of markers observed by the camera (before and after correction). "aligned_image_0.png" and "aligned_image_1.png" show the same images, affine-aligned to the target image, with each tile identified by its index. "affine_transform.npy" is the affine transformation from the camera space to the target space, while "affine_transform_adjusted.npy" has a correction that makes the output shape square, which makes defining the markers easier - this affine transform was used to obtained "algined_image_0" and "algined_image_1". "affine_cross_fit.png" and "affine_points_fit.png" show the group of reference points and axes used to find the affine transforms. "optimal_seidel_coeffs.npy" stores the final values of the measured coefficients, and "seidel_loss_array.npy" stores the values of the objective values over the scans. "tile_init_i_j" and "tile_final_i_j" store the initial and final patches of the markers used in the optimization process, where i,j are the marker labels along each of the axes - the come in .npy and .png formats. “log.txt” contains the log information outputted by the program to check if the operation was successful, as well as to measure execution times. 3. Measurements of the generated holograms ("seidel_display" directory). It contains 7 subdirectories of holograms and observed images for different patterns and CGH techniques: (a) "run_uncorr_markers" and (b) "run_patch_markers" - images of the marker grid before and after correction (using the patch-based approach). (c) "run_uncorr" - the full field of view target image generated without Seidel correction. (d) "run_series" - the full field of view target image generated using the series expansion approach. (e) "run_patch" - the full field of view target image generated using the patch-based approach, and (f) "run_patch_blend_10" and (g) "run_patch_blend_30" - the same target pattern generated using the patch-based approach and patch blending. The structure of the subdirectories is the same. "int_target_j" are the tested target images (full image, left/right halves). "int_far_predicted_j" are the corresponding predicted intensities encoded by the generated holograms. "holo_i_target_j" contain hologram grayscale values of the i-th hologram for the j-th target image (4 holograms were generated for each target and time-averaged for smoother patterns). The holograms come in the .csv and .npy formats. "loss_history_j.pdf" show the loss plots during the CGH process for each of the hologram batches. "avg_capture_target_j" show the experimentally captured images for each target image. The images come in the .png and .npy formats for easier analysis. “log.txt” contains the log information outputted by the program to check if the operation was successful, as well as to measure execution times. Additionally, each subdirectory contains "info.txt" that stores additional details about the particular experiment.