{"id":20620615,"url":"https://github.com/lcav/lenslesspicam","last_synced_at":"2025-04-15T12:14:06.428Z","repository":{"id":39590381,"uuid":"420028806","full_name":"LCAV/LenslessPiCam","owner":"LCAV","description":"Lensless imaging toolkit. Complete tutorial: https://go.epfl.ch/lenslesspicam","archived":false,"fork":false,"pushed_at":"2025-04-15T08:54:30.000Z","size":123304,"stargazers_count":61,"open_issues_count":14,"forks_count":27,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-15T12:13:46.635Z","etag":null,"topics":["admm","bayer","fista","inverse-problems","lensless","python","raspberry-pi","signal-processing","unrolled-algorithms"],"latest_commit_sha":null,"homepage":"https://lensless.readthedocs.io","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LCAV.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGELOG.rst","contributing":"CONTRIBUTING.rst","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-10-22T08:50:29.000Z","updated_at":"2025-04-15T08:54:33.000Z","dependencies_parsed_at":"2023-10-10T16:11:45.195Z","dependency_job_id":"0928bcc7-f7b3-4e04-b7cb-24b628e40572","html_url":"https://github.com/LCAV/LenslessPiCam","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LCAV%2FLenslessPiCam","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LCAV%2FLenslessPiCam/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LCAV%2FLenslessPiCam/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LCAV%2FLenslessPiCam/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LCAV","download_url":"https://codeload.github.com/LCAV/LenslessPiCam/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249067779,"owners_count":21207396,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["admm","bayer","fista","inverse-problems","lensless","python","raspberry-pi","signal-processing","unrolled-algorithms"],"created_at":"2024-11-16T12:14:59.155Z","updated_at":"2025-04-15T12:14:06.421Z","avatar_url":"https://github.com/LCAV.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"=============\nLenslessPiCam\n=============\n\n.. image:: https://img.shields.io/badge/GitHub-100000?style=for-the-badge\u0026logo=github\u0026logoColor=white\n    :target: https://github.com/LCAV/LenslessPiCam\n    :alt: GitHub page\n\n.. image:: https://readthedocs.org/projects/lensless/badge/?version=latest\n    :target: http://lensless.readthedocs.io/en/latest/\n    :alt: Documentation Status\n\n.. image:: https://joss.theoj.org/papers/10.21105/joss.04747/status.svg\n      :target: https://doi.org/10.21105/joss.04747\n      :alt: DOI\n\n.. image:: https://static.pepy.tech/badge/lensless\n      :target: https://www.pepy.tech/projects/lensless\n      :alt: Downloads\n\n.. image:: https://colab.research.google.com/assets/colab-badge.svg\n      :target: https://lensless.readthedocs.io/en/latest/examples.html\n      :alt: notebooks\n\n.. image:: https://img.shields.io/badge/Google_Slides-yellow\n      :target: https://docs.google.com/presentation/d/1PcNhMfjATSwcpbHUMrmc88ciQmheBJ7alz8hel8xnGU/edit?usp=sharing\n      :alt: slides\n\n.. image:: https://huggingface.co/datasets/huggingface/badges/resolve/main/powered-by-huggingface-dark.svg\n      :target: https://huggingface.co/bezzam\n      :alt: huggingface\n\n\n*A Hardware and Software Toolkit for Lensless Computational Imaging*\n--------------------------------------------------------------------\n\n.. image:: https://github.com/LCAV/LenslessPiCam/raw/main/scripts/recon/example.png\n    :alt: Lensless imaging example\n    :align: center\n\n\nThis toolkit has everything you need to perform imaging with a lensless camera.\nThe sensor in most examples is the `Raspberry Pi HQ \u003chttps://www.raspberrypi.com/products/raspberry-pi-high-quality-camera\u003e`__,\ncamera sensor as it is low cost (around 50 USD) and has a high resolution (12 MP).\nThe lensless encoder/mask used in most examples is either a piece of tape or a `low-cost LCD \u003chttps://www.adafruit.com/product/358\u003e`__.\nAs **modularity** is a key feature of this toolkit, we try to support different sensors and/or lensless encoders.\n\nThe toolkit includes:\n\n* Training scripts/configuration for various learnable, physics-informed reconstruction approaches, as shown `here \u003chttps://github.com/LCAV/LenslessPiCam/blob/main/configs/train#training-physics-informed-reconstruction-models\u003e`__.\n* Camera assembly tutorials (`link \u003chttps://lensless.readthedocs.io/en/latest/building.html\u003e`__).\n* Measurement scripts (`link \u003chttps://lensless.readthedocs.io/en/latest/measurement.html\u003e`__).\n* Dataset preparation and loading tools, with `Hugging Face \u003chttps://huggingface.co/bezzam\u003e`__ integration (`slides \u003chttps://docs.google.com/presentation/d/18h7jTcp20jeoiF8dJIEcc7wHgjpgFgVxZ_bJ04W55lg/edit?usp=sharing\u003e`__ on uploading a dataset to Hugging Face with `this script \u003chttps://github.com/LCAV/LenslessPiCam/blob/main/scripts/data/upload_dataset_huggingface.py\u003e`__).\n* `Reconstruction algorithms \u003chttps://lensless.readthedocs.io/en/latest/reconstruction.html\u003e`__ (e.g. FISTA, ADMM, unrolled algorithms, trainable inversion, , multi-Wiener deconvolution network, pre- and post-processors).\n* `Pre-trained models \u003chttps://github.com/LCAV/LenslessPiCam/blob/main/lensless/recon/model_dict.py\u003e`__ that can be loaded from `Hugging Face \u003chttps://huggingface.co/bezzam\u003e`__, for example in `this script \u003chttps://github.com/LCAV/LenslessPiCam/blob/main/scripts/recon/diffusercam_mirflickr.py\u003e`__.\n* Mask `design \u003chttps://lensless.readthedocs.io/en/latest/mask.html\u003e`__ and `fabrication \u003chttps://lensless.readthedocs.io/en/latest/fabrication.html\u003e`__ tools.\n* `Simulation tools \u003chttps://lensless.readthedocs.io/en/latest/simulation.html\u003e`__.\n* `Evalutions tools \u003chttps://lensless.readthedocs.io/en/latest/evaluation.html\u003e`__ (e.g. PSNR, LPIPS, SSIM, visualizations).\n* `Demo \u003chttps://lensless.readthedocs.io/en/latest/demo.html#telegram-demo\u003e`__ that can be run on Telegram!\n\nPlease refer to the `documentation \u003chttp://lensless.readthedocs.io\u003e`__ for more details,\nwhile an overview of example notebooks can be found `here \u003chttps://lensless.readthedocs.io/en/latest/examples.html\u003e`__.\n\nWe've also written a few Medium articles to guide users through the process\nof building the camera, measuring data with it, and reconstruction.\nThey are all laid out in `this post \u003chttps://medium.com/@bezzam/a-complete-lensless-imaging-tutorial-hardware-software-and-algorithms-8873fa81a660\u003e`__.\n\nCollection of lensless imaging research\n---------------------------------------\n\nThe following works have been implemented in the toolkit:\n\nReconstruction algorithms:\n\n* ADMM with total variation regularization and 3D support (`source code \u003chttps://github.com/LCAV/LenslessPiCam/blob/d0261b4bc79ef05228b135e6898deb4f7793d1aa/lensless/recon/admm.py#L24\u003e`__, `usage \u003chttps://github.com/LCAV/LenslessPiCam/blob/main/scripts/recon/admm.py\u003e`__). [1]_\n* Unrolled ADMM (`source code \u003chttps://github.com/LCAV/LenslessPiCam/blob/d0261b4bc79ef05228b135e6898deb4f7793d1aa/lensless/recon/unrolled_admm.py#L20\u003e`__, `usage \u003chttps://github.com/LCAV/LenslessPiCam/tree/main/configs/train#unrolled-admm\u003e`__). [2]_\n* Unrolled ADMM with compensation branch (`source code \u003chttps://github.com/LCAV/LenslessPiCam/blob/d0261b4bc79ef05228b135e6898deb4f7793d1aa/lensless/recon/utils.py#L84\u003e`__, `usage \u003chttps://github.com/LCAV/LenslessPiCam/tree/main/configs/train#compensation-branch\u003e`__). [3]_\n* Trainable inversion from Flatnet (`source code \u003chttps://github.com/LCAV/LenslessPiCam/blob/d0261b4bc79ef05228b135e6898deb4f7793d1aa/lensless/recon/trainable_inversion.py#L11\u003e`__, `usage \u003chttps://github.com/LCAV/LenslessPiCam/tree/main/configs/train#trainable-inversion\u003e`__). [4]_\n* Multi-Wiener deconvolution network (`source code \u003chttps://github.com/LCAV/LenslessPiCam/blob/d0261b4bc79ef05228b135e6898deb4f7793d1aa/lensless/recon/multi_wiener.py#L87\u003e`__, `usage \u003chttps://github.com/LCAV/LenslessPiCam/tree/main/configs/train#multi-wiener-deconvolution-network\u003e`__). [5]_\n* SVDeconvNet (for learning multi-PSF deconvolution) from PhoCoLens (`source code \u003chttps://github.com/LCAV/LenslessPiCam/blob/main/lensless/recon/sv_deconvnet.py#L42\u003e`__, `usage \u003chttps://github.com/LCAV/LenslessPiCam/tree/main/configs/train#multi-psf-camera-inversion\u003e`__). [6]_\n* Incorporating pre-processor (`source code \u003chttps://github.com/LCAV/LenslessPiCam/blob/d0261b4bc79ef05228b135e6898deb4f7793d1aa/lensless/recon/trainable_recon.py#L52\u003e`__). [7]_\n* Accounting for external illumination(`source code 1 \u003chttps://github.com/LCAV/LenslessPiCam/blob/d0261b4bc79ef05228b135e6898deb4f7793d1aa/lensless/recon/trainable_recon.py#L64\u003e`__, `source code 2 \u003chttps://github.com/LCAV/LenslessPiCam/blob/d0261b4bc79ef05228b135e6898deb4f7793d1aa/scripts/recon/train_learning_based.py#L458\u003e`__, `usage \u003chttps://github.com/LCAV/LenslessPiCam/tree/main/configs/train#multilens-under-external-illumination\u003e`__). [8]_ \n\nCamera / mask design:\n\n* Fresnel zone aperture mask pattern (`source code \u003chttps://github.com/LCAV/LenslessPiCam/blob/d0261b4bc79ef05228b135e6898deb4f7793d1aa/lensless/hardware/mask.py#L823\u003e`__). [9]_ \n* Coded aperture mask pattern (`source code \u003chttps://github.com/LCAV/LenslessPiCam/blob/d0261b4bc79ef05228b135e6898deb4f7793d1aa/lensless/hardware/mask.py#L288\u003e`__). [10]_\n* Near-field Phase Retrieval for designing a high-contrast phase mask (`source code \u003chttps://github.com/LCAV/LenslessPiCam/blob/d0261b4bc79ef05228b135e6898deb4f7793d1aa/lensless/hardware/mask.py#L706\u003e`__). [11]_\n* LCD-based camera, i.e. DigiCam (`source code \u003chttps://github.com/LCAV/LenslessPiCam/blob/d0261b4bc79ef05228b135e6898deb4f7793d1aa/lensless/hardware/trainable_mask.py#L117\u003e`__). [7]_ \n\nDatasets (hosted on Hugging Face and downloaded via their API):\n\n* DiffuserCam Lensless MIR Flickr dataset (copy on `Hugging Face \u003chttps://huggingface.co/datasets/bezzam/DiffuserCam-Lensless-Mirflickr-Dataset-NORM\u003e`__). [2]_\n* TapeCam MIR Flickr (`Hugging Face \u003chttps://huggingface.co/datasets/bezzam/TapeCam-Mirflickr-25K\u003e`__). [7]_ \n* DigiCam MIR Flickr (`Hugging Face \u003chttps://huggingface.co/datasets/bezzam/DigiCam-Mirflickr-SingleMask-25K\u003e`__). [7]_\n* DigiCam MIR Flickr with multiple mask patterns (`Hugging Face \u003chttps://huggingface.co/datasets/bezzam/DigiCam-Mirflickr-MultiMask-25K\u003e`__). [7]_ \n* DigiCam CelebA (`Hugging Face \u003chttps://huggingface.co/datasets/bezzam/DigiCam-CelebA-26K\u003e`__). [7]_\n* MultiFocal mask MIR Flickr under external illumination (`Hugging Face \u003chttps://huggingface.co/datasets/Lensless/MultiLens-Mirflickr-Ambient\u003e`__). [8]_ Mask fabricated by [12]_\n\n\nSetup \n-----\n\nIf you are just interested in using the reconstruction algorithms and \nplotting / evaluation tools you can install the package via ``pip``:\n\n.. code:: bash\n\n   pip install lensless\n\n\nFor plotting, you may also need to install\n`Tk \u003chttps://stackoverflow.com/questions/5459444/tkinter-python-may-not-be-configured-for-tk\u003e`__.\n\n\nFor performing measurements, the expected workflow is to have a local \ncomputer which interfaces remotely with a Raspberry Pi equipped with \nthe HQ camera sensor (or V2 sensor). Instructions on building the camera\ncan be found `here \u003chttps://lensless.readthedocs.io/en/latest/building.html\u003e`__.\n\nThe software from this repository has to be installed on **both** your\nlocal machine and the Raspberry Pi. Note that we recommend using\nPython 3.11, as some Python library versions may not be available with \nearlier versions of Python. Moreover, its `end-of-life \u003chttps://endoflife.date/python\u003e`__ \nis Oct 2027.\n\n*Local machine setup*\n=====================\n\nBelow are commands that worked for our configuration (Ubuntu 22.04.5 LTS), \nbut there are certainly other ways to download a repository and\ninstall the library locally.\n\nNote that ``(lensless)`` is a convention to indicate that the virtual\nenvironment is activated. After activating your virtual environment, you only\nhave to copy the command after ``(lensless)``.\n\n.. code:: bash\n\n   # download from GitHub\n   git clone git@github.com:LCAV/LenslessPiCam.git\n   cd LenslessPiCam\n\n   # create virtual environment (as of Oct 4 2023, rawpy is not compatible with Python 3.12)\n   # -- using conda\n   conda create -n lensless python=3.11\n   conda activate lensless\n\n   # -- OR venv\n   python3.11 -m venv lensless_env\n   source lensless_env/bin/activate\n\n   # install package\n   (lensless) pip install -e .\n\n   # extra dependencies for local machine for plotting/reconstruction\n   (lensless) pip install -r recon_requirements.txt\n\n   # pre-commit hooks for code formatting\n   (lensless) pip install pre-commit black\n   (lensless) pre-commit install\n\n   # (optional) try reconstruction on local machine\n   (lensless) python scripts/recon/admm.py\n\n   # (optional) try reconstruction on local machine with GPU\n   (lensless) python scripts/recon/admm.py -cn pytorch\n\n\nNote (25-04-2023): for using the :py:class:`~lensless.recon.apgd.APGD` reconstruction method based on Pycsou\n(now `Pyxu \u003chttps://github.com/matthieumeo/pyxu\u003e`__), a specific commit has \nto be installed (as there was no release at the time of implementation):\n\n.. code:: bash\n\n   pip install git+https://github.com/matthieumeo/pycsou.git@38e9929c29509d350a7ff12c514e2880fdc99d6e\n\nIf PyTorch is installed, you will need to be sure to have PyTorch 2.0 or higher, \nas Pycsou is not compatible with earlier versions of PyTorch. Moreover, \nPycsou requires Python within \n`[3.9, 3.11) \u003chttps://github.com/matthieumeo/pycsou/blob/v2-dev/setup.cfg#L28\u003e`__.\n\nMoreover, ``numba`` (requirement for Pycsou V2) may require an older version of NumPy:\n\n.. code:: bash\n\n   pip install numpy==1.23.5\n\n*Raspberry Pi setup*\n====================\n\nAfter `flashing your Raspberry Pi with SSH enabled \u003chttps://medium.com/@bezzam/setting-up-a-raspberry-pi-without-a-monitor-headless-9a3c2337f329\u003e`__, \nyou need to set it up for `passwordless access \u003chttps://medium.com/@bezzam/headless-and-passwordless-interfacing-with-a-raspberry-pi-ssh-453dd75154c3\u003e`__. \nDo not set a password for your SSH key pair, as this will not work with the\nprovided scripts.\n\nOn the Raspberry Pi, you can then run the following commands (from the ``home`` \ndirectory):\n\n.. code:: bash\n\n   # dependencies\n   sudo apt-get install -y libimage-exiftool-perl libatlas-base-dev \\\n   python3-numpy python3-scipy python3-opencv\n   sudo pip3 install -U virtualenv\n\n   # download from GitHub\n   git clone git@github.com:LCAV/LenslessPiCam.git\n\n   # install in virtual environment\n   cd LenslessPiCam\n   virtualenv --system-site-packages -p python3 lensless_env\n   source lensless_env/bin/activate\n   pip install --no-deps -e .\n   pip install -r rpi_requirements.txt\n\n   # test on-device camera capture (after setting up the camera)\n   (lensless_env) python scripts/measure/on_device_capture.py\n\nYou may still need to manually install ``numpy`` and/or ``scipy`` with ``pip`` in case libraries (e.g. ``libopenblas.so.0``) cannot be detected.\n   \n\nAcknowledgements\n----------------\n\nThe idea of building a lensless camera from a Raspberry Pi and a piece of \ntape comes from Prof. Laura Waller's group at UC Berkeley. So a huge kudos \nto them for the idea and making tools/code/data available! Below is some of \nthe work that has inspired this toolkit:\n\n* `Build your own DiffuserCam tutorial \u003chttps://waller-lab.github.io/DiffuserCam/tutorial\u003e`__.\n* `DiffuserCam Lensless MIR Flickr dataset \u003chttps://waller-lab.github.io/LenslessLearning/dataset.html\u003e`__ [2]_. \n\nA few students at EPFL have also contributed to this project:\n\n* Julien Sahli: support and extension of algorithms for 3D.\n* Yohann Perron: unrolled algorithms for reconstruction.\n* Aaron Fargeon: mask designs.\n* Rein Bentdal and David Karoubi: mask fabrication with 3D printing.\n* Stefan Peters: imaging under external illumination.\n\nWe also thank the Swiss National Science Foundation for funding this project through the `Open Research Data (ORD) program \u003chttps://ethrat.ch/en/eth-domain/open-research-data/\u003e`__.\n\nCiting this work\n----------------\n\nIf you use this toolkit in your own research, please cite the following:\n\n::\n\n   @article{Bezzam2023,\n      doi = {10.21105/joss.04747},\n      url = {https://doi.org/10.21105/joss.04747},\n      year = {2023},\n      publisher = {The Open Journal},\n      volume = {8},\n      number = {86},\n      pages = {4747},\n      author = {Eric Bezzam and Sepand Kashani and Martin Vetterli and Matthieu Simeoni},\n      title = {LenslessPiCam: A Hardware and Software Platform for Lensless Computational Imaging with a Raspberry Pi},\n      journal = {Journal of Open Source Software}\n   }\n\n\nThe following papers have contributed new approaches to the field of lensless imaging:\n\n* Introducing pre-processor component as part of modular reconstruction (`IEEE Transactions on Computational Imaging \u003chttps://arxiv.org/abs/2502.01102\u003e`__ and `IEEE International Conference on Image Processing (ICIP) 2024 \u003chttps://arxiv.org/abs/2403.00537\u003e`__):\n\n::\n\n   @ARTICLE{10908470,\n      author={Bezzam, Eric and Perron, Yohann and Vetterli, Martin},\n      journal={IEEE Transactions on Computational Imaging}, \n      title={Towards Robust and Generalizable Lensless Imaging With Modular Learned Reconstruction}, \n      year={2025},\n      volume={11},\n      number={},\n      pages={213-227},\n      keywords={Training;Wiener filters;Computational modeling;Transfer learning;Computer architecture;Cameras;Transformers;Software;Software measurement;Image reconstruction;Lensless imaging;modularity;robustness;generalizability;programmable mask;transfer learning},\n      doi={10.1109/TCI.2025.3539448}\n   }\n   \n   @INPROCEEDINGS{10647433,\n      author={Perron, Yohann and Bezzam, Eric and Vetterli, Martin},\n      booktitle={2024 IEEE International Conference on Image Processing (ICIP)}, \n      title={A Modular and Robust Physics-Based Approach for Lensless Image Reconstruction}, \n      year={2024},\n      volume={},\n      number={},\n      pages={3979-3985},\n      keywords={Training;Multiplexing;Pipelines;Noise;Cameras;Robustness;Reproducibility of results;Lensless imaging;modular reconstruction;end-to-end optimization},\n      doi={10.1109/ICIP51287.2024.10647433}\n   }\n\n\n* Lensless imaging under external illumination (`IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP) 2025 \u003chttps://arxiv.org/abs/2502.01102\u003e`__):\n\n::\n\n   @INPROCEEDINGS{10888030,\n      author={Bezzam, Eric and Peters, Stefan and Vetterli, Martin},\n      booktitle={ICASSP 2025 - 2025 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP)}, \n      title={Let There Be Light: Robust Lensless Imaging Under External Illumination With Deep Learning}, \n      year={2025},\n      volume={},\n      number={},\n      pages={1-5},\n      keywords={Source separation;Noise;Lighting;Interference;Reconstruction algorithms;Cameras;Optics;Speech processing;Image reconstruction;Standards;lensless imaging;ambient lighting;external illumination;background subtraction;learned reconstruction},\n      doi={10.1109/ICASSP49660.2025.10888030}\n   }\n\nReferences\n----------\n\n.. [1] Antipa, N., Kuo, G., Heckel, R., Mildenhall, B., Bostan, E., Ng, R., \u0026 Waller, L. (2017). DiffuserCam: lensless single-exposure 3D imaging. Optica, 5(1), 1-9.\n.. [2] Monakhova, K., Yurtsever, J., Kuo, G., Antipa, N., Yanny, K., \u0026 Waller, L. (2019). Learned reconstructions for practical mask-based lensless imaging. Optics express, 27(20), 28075-28090.\n.. [3] Zeng, T., \u0026 Lam, E. Y. (2021). Robust reconstruction with deep learning to handle model mismatch in lensless imaging. IEEE Transactions on Computational Imaging, 7, 1080-1092.\n.. [4] Khan, S. S., Sundar, V., Boominathan, V., Veeraraghavan, A., \u0026 Mitra, K. (2020). Flatnet: Towards photorealistic scene reconstruction from lensless measurements. IEEE Transactions on Pattern Analysis and Machine Intelligence, 44(4), 1934-1948.\n.. [5] Li, Y., Li, Z., Chen, K., Guo, Y., \u0026 Rao, C. (2023). MWDNs: reconstruction in multi-scale feature spaces for lensless imaging. Optics Express, 31(23), 39088-39101.\n.. [6] Cai, X., You, Z., Zhang, H., Gu, J., Liu, W., \u0026 Xue, T. (2024). Phocolens: Photorealistic and consistent reconstruction in lensless imaging. Advances in Neural Information Processing Systems, 37, 12219-12242.\n.. [7] Bezzam, E., Perron, Y., \u0026 Vetterli, M. (2025). Towards Robust and Generalizable Lensless Imaging with Modular Learned Reconstruction. IEEE Transactions on Computational Imaging.\n.. [8] Bezzam, E., Peters, S., \u0026 Vetterli, M. (2024). Let there be light: Robust lensless imaging under external illumination with deep learning. IEEE International Conference on Acoustics, Speech and Signal Processing.\n.. [9] Wu, J., Zhang, H., Zhang, W., Jin, G., Cao, L., \u0026 Barbastathis, G. (2020). Single-shot lensless imaging with fresnel zone aperture and incoherent illumination. Light: Science \u0026 Applications, 9(1), 53.\n.. [10] Asif, M. S., Ayremlou, A., Sankaranarayanan, A., Veeraraghavan, A., \u0026 Baraniuk, R. G. (2016). Flatcam: Thin, lensless cameras using coded aperture and computation. IEEE Transactions on Computational Imaging, 3(3), 384-397.\n.. [11] Boominathan, V., Adams, J. K., Robinson, J. T., \u0026 Veeraraghavan, A. (2020). Phlatcam: Designed phase-mask based thin lensless camera. IEEE transactions on pattern analysis and machine intelligence, 42(7), 1618-1629.\n.. [12] Lee, K. C., Bae, J., Baek, N., Jung, J., Park, W., \u0026 Lee, S. A. (2023). Design and single-shot fabrication of lensless cameras with arbitrary point spread functions. Optica, 10(1), 72-80.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flcav%2Flenslesspicam","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flcav%2Flenslesspicam","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flcav%2Flenslesspicam/lists"}