Tuesday, March 18, 2014

The Flutter Shutter Code Calculator - implementation -

At the First French-German Mathematical Image Analysis Conference, I noted a rather interesting presentation by Yohann Tendero entitled On The Foundations of Computational Photography. Of interest was his ability to develop a model for the Flutter Shutter so that better pictures could come out of this technology than regular snapshot. This is important because a few of the multiplexing schemes undertaken in compressive sensing use similar set-up. A very important item to remember when reading and experimenting with this paper and its attendant algorithm is that the inversion of the kernel doesn't take into account much of the priors on the image save for the velocity of the objects in the scene. Let me just observe that an improvement over a simple snapshot is when the scene is described by velocity distribution that is spiky on three peaks (sparsity in velocity) as opposed to a uniform velocity distribution. More on that later.  

The goal of the flutter shutter is to make motion blur invertible, by a fluttering" shutter that opens and closes on a sequence of well chosen sub-intervals of the exposure time interval. In other words, the photon flux is modulated according to a well chosen sequence called flutter shutter code. This article provides a numerical method that computes optimal flutter shutter codes in terms of mean square error (MSE). We assume that the observed objects follow a known (or learned) random velocity distribution. In this paper, Gaussian, uniform and a trimodal velocity distributions are considered. Snapshots are also optimized taking the velocity distribution into account. For each velocity distribution, the gain of the optimal flutter shutter code with respect to the optimal snapshot in terms of MSE is computed. This symmetric optimization of the flutter shutter and of the snapshot allows to compare on an equal footing both solutions, i.e., camera designs. Optimal flutter shutter codes are demonstrated to improve substantially the MSE compared to classic (patented or not) codes. A numerical method that permits to perform a reverse engineering of any existing (patented or not) flutter shutter codes is also described and an implementation of the numerical method is given. In this case we give the underlying velocity distribution from which a given optimal flutter shutter code comes from. The combination of these two numerical methods furnishes a comprehensive study of the optimization of a flutter shutter that includes a forward and a backward numerical solution.

Online experiments at available at http://dev.ipol.im/~tendero/ipol_demo/flutter_2/, (username is demo and password is demo)

Source code available at 

Join the CompressiveSensing subreddit or the Google+ Community and post there !
Liked this entry ? subscribe to Nuit Blanche's feed, there's more where that came from. You can also subscribe to Nuit Blanche by Email, explore the Big Picture in Compressive Sensing or the Matrix Factorization Jungle and join the conversations on compressive sensing, advanced matrix factorization and calibration issues on Linkedin.

No comments: