Git Product home page Git Product logo

deepoptics's Introduction

End-to-end Optimization of Optics and Image Processing for Achromatic Extended Depth of Field and Super-resolution Imaging

Project web-site with more infos and videos: link.

Link to our group website with other VR, AR, and computational imaging projects: link

This repository contains the code to reproduce the results presented in the following paper:

*Sitzmann, Vincent, et al. "End-to-end Optimization of Optics and Image Processing for Achromatic Extended Depth of Field and Super-resolution Imaging" SIGGRAPH 2018.

If you use this code or dataset in you research, please consider citing our paper with the following Bibtex code:

@article{sitzmann2018end,
  title={End-to-end optimization of optics and image processing for achromatic extended depth of field and super-resolution imaging},
  author={Sitzmann, Vincent and Diamond, Steven and Peng, Yifan and Dun, Xiong and Boyd, Stephen and Heidrich, Wolfgang and Heide, Felix and Wetzstein, Gordon},
  journal={ACM Transactions on Graphics (TOG)},
  volume={37},
  number={4},
  pages={114},
  year={2018},
  publisher={ACM}
}

A pre-print is available at this link.

Dataset

We used the high-resolution images from Jegou et al. (2008) for optimizing the phase masks presented in the paper, though any other set of high-resolution images should work. The images are available for download here.

Usage

This code was written for python 3.6.3 and Tensorflow 1.4.0. I recommend to use anaconda for dependency management. You can create an environment with name "deepoptics" with all dependencies like so:

conda env create -f src/environment.yml

Each one of the scripts aedof_diffractive.py, focussing_diffractive.py and aedof_zernike.py reproduces one experiment from the paper. They take as command-line parameters the log directory, which all log files and checkpoints will be written to, and the image directory, which should contain high-resolution jpg images (see "Dataset" above). Example call:

python focusing_diffractive.py --log_dir /path/to/logdir --img_dir /path/to/image/dir

Training progress can be inspected via tensorboard:

tensorboard --logdir=/path/to/logdir

Abstract

In typical cameras the optical system is designed first; once it is fixed, the parameters in the image processing algorithm are tuned to get good image reproduction. In contrast to this sequential design approach, we consider joint optimization of an optical system (for example, the physical shape of the lens) together with the parameters of the reconstruction algorithm. We build a fully-differentiable simulation model that maps the true source image to the reconstructed one. The model includes diffractive light propagation, depth and wavelength-dependent effects, noise and nonlinearities, and the image post-processing. We jointly optimize the optical parameters and the image processing algorithm parameters so as to minimize the deviation between the true and reconstructed image, over a large set of images. We implement our joint optimization method using autodifferentiation to efficiently compute parameter gradients in a stochastic optimization algorithm. We demonstrate the efficacy of this approach by applying it to achromatic extended depth of field and snapshot super-resolution imaging.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.