/HoloFlow-PTV

Code of "Snapshot Space-Time Holographic 3D Particle Tracking Velocimetry", Laser & Photonics Reviews, 2021.

Primary LanguageMATLABGNU General Public License v2.0GPL-2.0

Space-Time 4D Holographic PTV

License: GPL v2

Project Page | Paper

Snapshot Space-Time Holographic 3D Particle Tracking Velocimetry in Laser & Photonics Reviews, 2021.
Ni Chen*, Congli Wang*, and Wolfgang Heidrich
King Abdullah University of Science and Technology
*denotes equal contribution


Overview

This repository contains MATLAB and CUDA (not yet published) implementation of the Holo-Flow framework.


Requirements

How to use

  1. Clone the code
git clone https://github.com/Ni-Chen/HoloFlow-PTV.git
  1. Download the sample data from Dropbox, and put it in folder of 'code/data/simulation'

  2. Run the code

    • For MATLAB version, go into /HoloFlow-PTV/code/, run 'main.m'.

    • For CUDA version, compile the code firstly. (Documentation is under construction.)

    • Sample results:

particle volumes hologram #1 hologram #2 reconstructed flow
  1. Prepare your data if you need to test it.
    • The hologram frames are stored in ./data/ as a .mat file

    • The .mat file is of size $N_y \times N_x \times N_{frame}$, where $N_y \times N_x $ is the hologram dimensions and $N_{frame}$ is the frame number.

    • The holography system parameters are stored as a structure and named as params, where

params.dz       % depth interval of the object
params.Nz       % depth number of the particle volume
params.Nx/Ny    % lateral dimension of the particle volume
params.pps      % pixel pitch of the hologram
params.lambda   % wavelength of the light source
  • For the Holo-Flow reconstruction, you need to set the below parameters:
%% holo solver parameters
fasta.ratio = 1;      % alpha-beta ratio if the lateral and axial pixel pitch are different in the particle volume
fasta.mu = 0.1;       % FASTA deconvolution
fasta.maxIters = 20;  % FASTA iteration number, 10-20 is OK

%% flow parameters
flow.flow.warping_iters = [3 3 3];  % Depends on the range of the flow
flow.flow.ratio = ratio;   % alpha-beta ratio if the lateral and axial pixel pitch are different in the particle volume
flow.flow.priors = priors; %[1e-4 1e-4 1e-6 1e-6]
flow.cg.maxit = 1000;      % Flow solver iteration number
flow.cg.tol = 1e-3;        % flow error tollorance

% additional parameters
other.tau = 0.001;  % As the difination in the paper
other.maxit = 3;    % The outer iteration

Contact

Ni Chen (nichen.optics@gmail.com), Congli Wang (congli.wang@kaust.edu.sa)