Git Product home page Git Product logo

ndeblur's Introduction

Neural Blind Motion Deblurring

Copyright (C) 2016, Ayan Chakrabarti [email protected]

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 [email protected] 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.

ndeblur's People

Contributors

ayanc avatar

Watchers

James Cloos avatar  avatar

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.