A Neural Approach to Blind Motion Deblurring
Matlab Cuda
Switch branches/tags
Nothing to show
Clone or download
Latest commit c0d2f34 Sep 3, 2016
Permalink
Failed to load latest commit information.
sunUtil Initial commit. Mar 19, 2016
training Doc fix. Sep 2, 2016
FCR_f.m Initial commit. Mar 19, 2016
FC_f.m Initial commit. Mar 19, 2016
README.md Doc fix. Sep 2, 2016
cMul.m Initial commit. Mar 19, 2016
deepcopy.m Initial commit. Mar 19, 2016
doEPLL.m Initial commit. Mar 19, 2016
doForward.m Initial commit. Mar 19, 2016
estK.m Initial commit. Mar 19, 2016
ndeblur1.m Initial commit. Mar 19, 2016
ndeblur2.m Initial commit. Mar 19, 2016
pforward.m Initial commit. Mar 19, 2016

README.md

Neural Blind Motion Deblurring

Copyright (C) 2016, Ayan Chakrabarti ayanc@ttic.edu

This is a reference implementation of the algorithm described in the paper:

Ayan Chakrabarti, "A Neural Approach to Blind Motion Deblurring", Proc. of the European Conference on Computer Vision (ECCV) 2016.

This implementation is being made available for non-commercial research use only. If you find this code useful in your research, please consider citing the above paper.

Please see the project page and contact ayanc@ttic.edu with any questions.

Requirements

  1. You will need to download the trained neural model, available as a MAT file at the project page.

  2. This implementation requires a modern CUDA-capable GPU (it has been tested on an NVIDIA Titan X), and a recent version of MATLAB's Parallel Computing Toolbox that supports the GPUArray class.

  3. To run the full algorithm with the final non-blind deconvolution step, you will also need to download an implementation of the EPLL method described in the ICCV 2011 paper "From Learning Models of Natural Image Patches to Whole Image Restoration", by Daniel Zoran and Yair Weiss, and add it to your MATLAB path. This implementation can be downloaded from Daniel Zoran's page.

  4. We provide a couple of utility functions in the sunUtil/ directory for running experiments on the Sun et al. 2013 benchmark. After you download the dataset from this page, please edit the loadSDB.m file to set paths accordingly.

Usage

The two top level functions for performing deblurring are ndeblur1 and ndeblur2. The first function applies the local neural network on all patches, and forms an initial estimate of the sharp image by averaging their outputs. The second function then uses this initial estimate to estimate a global motion blur kernel, and then calls EPLL to do non-blind deconvolution. The following shows example usage of these functions (see their documentation, using help funcname in MATLAB, for more information):

>>> model = load('/path/to/model.mat'); % Load trained neural model
>>> out_navg = ndeblur1(blurry_input,model); % Compute neural average output
>>> out_final = ndeblur2(blurry_input,out_navg); % Compute final output

Please see the training/ sub-directory if you wish to train your own model.