Measured data

You can download PSFs and raw data that we’ve measured here. We recommend placing this content in the data folder.

The commands below to download the data and place it in the data folder.

wget https://drive.switch.ch/index.php/s/NdgHlcDeHVDH5ww/download -O data.zip
unzip data.zip -d data
cp -r data/*/* data/
rm -rf data/LenslessPiCam_GitHub_data
rm data.zip

The commands below perform a reconstruction with the above data. Be sure to use the correct PSF file for the data you’re using!

# field of view
python scripts/recon/gradient_descent.py -cn in_the_wild

# mug
python scripts/recon/gradient_descent.py -cn in_the_wild \
input.data=data/raw_data/mug_rgb_31032023.png

# plant
python scripts/recon/gradient_descent.py -cn in_the_wild \
input.data=data/raw_data/plant_rgb_31032023.png

# thumbs up
python scripts/recon/gradient_descent.py -cn in_the_wild \
input.data=data/raw_data/thumbs_up_rgb.png \
input.psf=data/psf/tape_rgb.png

Measured CelebA Dataset

You can download a dataset of 10K measurements and a dataset of 26K measurements from Hugging Face. The PSFs (measured and simulated) can be found under “Files and versions”. Both dataset are measured with DigiCam, namely an LCD-based lensless camera, where the pattern was set randomly. The images were taken of a monitor 30 cm away from the camera, and the LCD was 2 mm away from the sensor.

DiffuserCam Lensless Mirflickr Dataset

The original dataset is available here. However, it is quite large (100 GB). We’ve prepared a more manageable (6GB) and viewable version on Hugging Face.

3D data

You can download example 3D PSF and raw data from Prof. Laura Waller’s lab here, or by running the commands at the beginning of this page to download all the example data.

Their PSF has to be converted from .mat to .npy in order to be usable:

# replace path to .mat file if different
python scripts/data/3d/mat_to_npy.py data/psf/waller_3d_psfs.mat

The following command can be used to run a reconstruction on the 3D data:

python scripts/recon/gradient_descent.py \
input.data=data/raw_data/waller_3d_raw.png \
input.psf=psf.npy preprocess.downsample=1 \
-cn pytorch   # if pytorch is available with GPU

You can also perform a 3D reconstruction on data we have simulated:

# 3D LCAV logo
python scripts/recon/gradient_descent.py \
input.data=data/raw_data/3d_sim.png \
input.psf=data/psf/3d_sim.npz \
-cn pytorch   # if pytorch is available with GPU

Once you have run a reconstruction, you may want to convert the resulting .npy files in separate .tiff images for each depth. This can be done with the following script:

python scripts/data/3d/npy_to_tiff.py ~path/to/output.npy

You may also want to export it into a wavefront .obj file for it to be displayed in 3D rendering softwares with the following script. It mostly exists to allow the user to preview it and is not 100% accurate, as there are multiple approach to interpolate discrete pixels into a “continuous” wavefront:

python scripts/data/3d/npy_to_obj.py ~/path/to/output.npy