/JIVOX

Primary LanguagePython

JIVOX : Joint Illumination and Inspection of VCSEL OXidation

This repository contains the code used to generate the results presented in the Optica Imaging Congress 2024 submitted article "Joint spectrally-shaped illumination and detection of VCSEL oxydation", A. Rouxel, S. Calvez, A. Monmayrant, G. Almuneau

1. Project Description

Alt text

Key features

  • Generation of VCSEL-like shapes (circle, hexagon, square) using Blender
  • Calculation of various multi-layers structures using Scattering-Matrix algorithm [1], [2]
  • Lateral wet oxidation simulation of these structures using the method described in [3]
  • Generation of spectral filters with arbitrary spectral shapes or Michelson interferometer
  • Monitoring system modeling (optical setup + detection)
  • Segmentation algorithm with Resnet34

2. Installation

  1. Clone the repository to your local machine.
git clone https://github.com/a-rouxel/JIVOX.git
  1. Install the required packages using the following command:
pip install -r requirements.txt

3. How to prepare VCSEL Structures

3.1. Generation of VCSEL-like shapes using Blender

  1. Generate json config files using : generate_vcsel_config_files_blend.py. Please look at the python file comments for more details on the parameters.
python generate_vcsel_config_files_blend.py

These config json files will be stored in the directory specified in "dir_configs".

  1. Run generation of VCSEL-like shapes using : generate_shapes.blend (Blender 3.x) and associated script (already loaded in the blender file). It will load the configs files geenrated at the previous step.

3.2. Lateral wet oxidation simulation of these structures

  1. Define the oxidation parameters in the python file "oxidize_aperture.py" (oxidation speed depending on Al concentration, nb of vcsels to oxidize , ...)
  2. Run the oxidation simulation using : oxidize_aperture.py
python oxidize_aperture.py

The resulting images will be stored in the directory specified in "input_dir".

3.3. Calculation of various multi-layers structures using s-matrix algorithm

  1. Define the multilayer stacks of interest in a json file (for now, there are in "multilayer_stacks")
  2. Calculate the reflectivity of these stacks using the s-matrix algorithm using the implementation described in (https://gitlab.laas.fr/arouxel/s-algorithm)
python generating_spectra_from_stack.py

The generated spectra will be stored in the directory specified in "output_dir".

3.4 Combining previous outputs to generate generic ground truth dataset

  1. Generate resulting png files from various masks (corresponding to various steps of the oxidation)
  2. Associate the spectra from the multi-layers stacks to the corresponding files
  3. Generate the ground truth gif
python generate_ground_truth_data.py

References

References

[1]: N. P. K. Cotter, T. W. Preist, and J. R. Sambles (1995). "Scattering-matrix approach to multilayer diffraction." Journal of the Optical Society of America A, 1097–1103. Link to publication

[2]: A. Rouxel, P. Gadras, "S-algorithm matrix repository" (2023). Link to repository

[3]: Calvez, S., Lafleur, G., et al. (2018). "Modelling anisotropic lateral oxidation from circular mesas." Optical Material Express. Link to publication

[4]: Monvoisin, N. et al. (2023). "Spectrally-shaped illumination for improved optical monitoring of lateral III-V-semiconductor oxidation." Link to publication