TICS Fuse

TICS Fuse is a command line tile fusion software compatible with ImageJ.

Its purpose is to finalize image stitching by fusing all tiles into a single image.

It uses little memory, is fast, configurable, and can be used with CLI.

A special ‘fast’ mode allows to quickly check if the tiles are correctly positioned.

The software outputs raw TGA files by copying the memory directly on the hard disk drive, so image saving is very fast, and supports images up to 65535x65535 pixels.

Downloads

Benchmarks

Fused 22x23 tiles of this panorama.
On Ubuntu with an Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz.
Note: this CPU have 4 physical cores.

  • ImageJ: 14min30 (1min20 to load the tiles)
  • tics_fuse (1 thread): 54sec
  • tics_fuse (8 threads): 22sec

Usage

Note that the given folder must contain a ‘TileConfiguration.registered.txt’ file.

Tiles fusion for panoramas generation. Compatible with ImageJ.
Usage:
  ./tics_fuse [OPTION...]

 tics_fuse options:
      --path PATH           Select the path of the folder containing the 
                            tiles.
      --fast                Uses the fast blit algorithm to preview the 
                            position of the tiles.
      --fast-margin MARGIN  Uses the fast blit algorithm with a margin to 
                            crop the tiles.
      --chunk-size SIZE     Define chunk size in pixels to optimize RAM 
                            consumption. (default: 2048)
      --cache-size CACHE    Define the cache size in MB to optimize RAM. 
                            (default: 512)
  -j, --threads COUNT       Define the number of threads that will be used.
      --progress            Print progress. (default: true)
      --verbose             Print more informations.
      --timer               Display the time it took to process. (default: 
                            true)
  -o, --out FILENAME        Select the output file name. Image will be 
                            saved as TGA file. (default: fused.tga)
      --config FILENAME     Specify a TileConfiguration file. (default: 
                            TileConfiguration.registered.txt)
      --dummy SIZE          Output a dummy image of the specified size
  -h, --help                Print help


Minimal command:

tics_fuse --path /path/of/your/folder


Check tiles placement:

tics_fuse --path /path/of/your/folder --fast


You can also crop the tiles with a margin (in pixels) for a better preview:

tics_fuse --path /path/of/your/folder --fast-margin 300


Note: output file will be saved in the folder specified with --path.

Memory consumption

The software allocate a buffer for the output, and a configurable LRU cache for tiles loading.

For an image of 65535x65535 pixels, the buffer size will be 16GB, and the output will take the same amount of data.

You can compute the necessary memory (in MB) for the buffer with the following formula:

size_mb = 4⋅image_width⋅image_height/1024/1024


Possible optimizations

Some optimizations are possible to improve the performances or the memory usage:

  • Stream directly into the output file so the buffer is no longer necessary
  • Output file in a compressed format to save disk space, but this will be slower and may consume more memory
  • Output large tiles so the final render is not limited to 65k pixels