# Fresnelab: Multi-resolution Fresnel transform for Matlab

A Fresnel transform Matlab Package written by M. Liebling and N. Chacko (a) General design for obtaining discrete samples of continuous Fresnel transform, (b) its discrete equivalent when the ratio of the second to the first sampling step is M and (c) its corresponding inverse framework for reconstruction.

## Introduction

This package provides several functions to compute the Fresnel(et) transform of complex wavefronts, as described in .

For a given parameter τ, the continuous unitary Fresnel transform of a function f(x), x in RD (D=1 or 2), is defined as the convolution:
g(x) =( f * kτ ) (x),
where the convolution kernel,
kτ(x)=(1/τ)D exp(i π (||x||/τ)2)

`fresnelet_transform` is essentially a numerical implementation of the efficient multiresolution Fresnel transform algorithm elucidated in . The Fresnelet transform computes inner products of the function to transform with Fresnelets, wavelets that result from the Fresnel transform of B-splines. A complete description of the algorithm and of some applications can be found in .

A good starting point to explore these functions is 'demo_fresnelet_wt.m' and the comments therein, and of course, the functions themselves.

## Syntax

`d=fresnelet_transform(c, tau, T) `
`d=fresnelet_transform(c, tau, T, m) `
`d=fresnelet_transform(c, tau, T, m, deg) `

`ct=inv_fresnelet_transform(d, tau, T) `
`ct=inv_fresnelet_transform(d, tau, T, m) `
`ct=inv_fresnelet_transform(d, tau, T, m, deg) `

## Description

`fresnelet_transform(c, tau, T)` computes the Fresnelet transform of f, with a parameter tau. f contains the samples characterizing function f(x) and sampled with a sampling step T. It assumes the same sampling step for the transformed function and sinc interpolation.

`fresnelet_transform(c, tau, T, m)` computes the same as above, but the sampling step on the transformed side is T' = mT. The default is `m=1`. If f has size N x M the output image will be of size N/m x M/m.

`fresnelet_transform(c,tau, T, m, deg)` computes the same as above, but the degree of the used Fresnelets is given by `deg`. The default is `deg=inf`.

`inv_fresnelet_transform(d, tau, T, ...) ` returns the least-square estimate of the input approximation coefficients from the output samples computed using `fresnelet_transform`, where all parameters mean same as before.

## Examples

1) Consider a one-dimensional complex wave field in a reference plane, represented as a weighted sum (with associated weights, c, spaced apart by T1=1 and periodic by N=5 of B-spline functions (of degree=3).  The discrete samples of its Fresnel transform (with say tau=2.5) spaced apart by T2=1 may be computed using:

`d=fresnelet_transform(c, 2.5, 1, 1, 3)`  2) Fresnel transform being seperable, the concept may readily be extended to higher dimensions. Original image, f

For any given parameter tau, discrete samples of the Fresnel transform of the image is obtained by,

```d=0.1; lambda=632.8e-9; tau=sqrt(lambda*d); T=10e-6; fres=fresnelet_transform(c,tau,T)``` abs(fres) for d=0.1 angle(fres) for d=0.1

3) By changing the sub-sampling factor in a subsequent manner, a pyramidic structure may be obtained, as is depicted in 'demo_fresnelet_wt.m'. abs(pyramidic_structure) for d=0.05 angle(pyramidic_structure) for d=0.05

4) The multiresolution version of the Fresnel transform described may be implemented using FRENELET_TRANSFORM and the fractional wavelet transform package written by Dr. Thierry Blu, available at http://bigwww.epfl.ch/demo/fractsplines/, to realize a multistage wavelet decomposition, as depicted in 'demo_fresnelet_wt.m'. Five-stage Fresnelet-wavelet transform

Going in the inverse direction, the original image may be reconstructed while retaining only a portion of the wavelet coefficients possessing the highest energy. Reconstructed image from
5% of the wavelet coefficients

## Reference

 M. Liebling, T. Blu, M. Unser, "Fresnelets: new multiresolution wavelet bases for digital holography", IEEE Trans. Image Proc., vol. 12, no. 1, pp. 29-43, January 2003.

## Acknowledgements

Michael Liebling has written this library while a PhD student with Prof. Michael Unser at the Biomedical Imaging Group, EPFL. The program is based on code initially written by Thierry Blu. Further modifications and this page have been done by Nikhil Chacko at UCSB.

IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, OF ANY KIND WHATSOEVER, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF HE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION IS PROVIDED "AS IS". THE COPYRIGHT HOLDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.

If you publish results that are based on any of the functions included in the FRESNELAB distribution, I expect you to acknowledge our work by citing the following paper:

M. Liebling, T. Blu, M. Unser, "Fresnelets: new multiresolution wavelet bases for digital holography", IEEE Trans. Image Proc., vol. 12, no. 1, pp. 29-43, January 2003.

In that paper, you will also find the mathematical details concerning this algorithm.

Note: In order to function properly, Fresnelab requires the fractional wavelet transform package written by Thierry Blu, available at http://bigwww.epfl.ch/demo/fractsplines/ .