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