WASS / WASSfast mini tutorial

Filippo Bergamasco

21/07/2023

Dataset preparation

Start by creating a new dataset directory. In this tutorial let’s create a directory named my_sequence/. Inside my_sequence/, images and calibration data must be arranged in the following way:

my_sequence
├── config
│   ├── distortion_00.xml
│   ├── distortion_01.xml
│   ├── intrinsics_00.xml
│   ├── intrinsics_01.xml
│   ├── matcher_config.txt
│   ├── stereo_config.txt
├── output
└── input
    ├── cam0
    │   ├── 000000_0000000000000_01.tif
    │   ├── 000001_0000000000199_01.tif
    │   ├── 000002_0000000000399_01.tif
    │   ├── 000003_0000000000599_01.tif
     ...
    ├── cam1
    │   ├── 000000_0000000000000_02.tif
    │   ├── 000001_0000000000199_02.tif
    │   ├── 000002_0000000000399_02.tif
    │   ├── 000003_0000000000599_02.tif
    ...

Run WASS pipeline

Note 1: You can skip this step if WASS is executed via Matlab script.

Note 2: If needed, activate the “wass environment” with $ conda activate wass.

cd into the my_sequence/ directory, and execute the WASS pipeline with the wasscli tool:

$ wasscli


 WASS-cli v. 0.1.4
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Copyright (C) Filippo Bergamasco 2022


Searching for WASS pipeline executables...OK
Current directory is: .../my_sequence 
? What do you want to do?  (Use arrow keys)
 ❯ Prepare
   Match
   Autocalibrate
   Stereo
   ---------------
   Set number of parallel workers
   Quit

Select Prepare, then Match and Autocalibrate. Then, select Stereo and reconstruct just the first stereo pair for testing. Check the my_sequence/output/000000_wd directory if the output looks good, then select Stereo again to process the whole sequence.

Configure for gridding

  1. Create a directory named gridding/ inside the my_sequence/ directory:
$ mkdir gridding
  1. Generate a default grid config file:
wassgridsurface --action generategridconfig . gridding
  1. Open the newly generated file my_sequence/gridding/gridconfig.txt. It should contain something like:
[Area]
area_center_x=0.0
area_center_y=-35.0
area_size=50
N=1024

area_center_x and area_center_y controls the grid location (in meters). area_size controls the area extent. N controls the grid resolution. For example, N=1024 means that a 1024x1024 grid will be created.

Note: You must set N=256 if you plan to use WASSfast to reconstruct a sequence.

  1. Setup the reconstruction grid by running the following command:
wassgridsurface --action setup ./output ./gridding --gridconfig ./gridding/gridconfig.txt --baseline [CAMERA_BASELINE]

Where [CAMERA_BASELINE] must be replaced with the camera baseline in meters.

  1. Open the file my_sequence/gridding/area_grid.png to check if the grid location and size is correct. If not, repeat steps 3, 4 and 5 until satisfied.

Grid the point clouds

Skip this step if you want to use WASSfast only. Otherwise, run

wassgridsurface --action grid --gridsetup ./gridding/config.mat ./output ./gridding

to grid the point clouds. The resulting NetCDF file is placed in my_sequence/gridding/gridded.nc.

Running WASSfast

  1. Activate the wassfast_cnn environment:
conda activate wassfast_cnn
  1. cd into the WASSfast root directory and run:
alias wassfast="python `pwd`/wassfast/wassfast.py"
  1. In the same shell, cd into my_sequence/gridding/ directory

  2. Create a file named settings.cfg into my_sequence/gridding directory and paste the following:

[ImgProc]
use_clahe=yes
I0_cliplimit=1.0
I0_gridsize=8
I1_cliplimit=1.0
I1_gridsize=8

[SparseMatcher]
quality_level=0.001
max_corners=100000
min_distance=6
block_size=9

[Flow]
method=PyrLK
#method=Fnbk
winsize=15
fb_threshold=0.6
maxlevel=3

[SpecFit]
mit=1500
stol=1E-9
alpha=16.0
final_smooth_sigma=0.37

[PointsReducer]
max_pt_distance=0.0055
winsize=7

[Visual]
plot_surfaces=no
  1. Run WASSfast by executing the following command:
wassfast ./input ./gridding/config.mat ./config ./gridding/settings.cfg AUTO CNN --batchsize 16 -r [FPS] -o ./gridding/wassfast_output.nc --debug_stats

where [FPS] must be replaced with camera framerate (in Hz). Output NetCDF file will be saved in my_sequence/gridding/wassfast_output.nc

Plot the reconstructed surface on top of the original images

  1. Activate the wass environment:
conda activate wass
  1. cd into my_sequence/ and create a new directory where the rendered frames will be placed:
mkdir frames
  1. Run wassncplot:
wassncplot ./gridding/wassfast_output.nc ./frames

Resulting images are saved in my_sequence/frames. To create an mp4 video instead, add the following options:

wassncplot ./gridding/wassfast_output.nc ./frames --ffmpeg --ffmpeg-delete-frames

For a full list of wassncplot program options, run:

wassncplot --help