Documentation of pi2¶
This is documentation for pi2/itl2, an image analysis program/library designed for processing and analysis of terapixel-scale volume images locally or on a computer cluster. Some typical uses of this program are, e.g., tracing blood vessels in tomographic images, analysis of fibre orientation in composite materials, or stitching of volumetric mosaic images.
Some of the capabilities of pi2 include
- Saturating image arithmetic
- Fast non-rigid stitching
- Filtering for noise reduction: bilateral, approximate bilateral, variance weighted mean, median, Gaussian, high-pass, …
- Post-processing of segmented images: small region removal (volume opening), minimum and maximum filtering (optionally with fast approximate spherical structuring element), opening and closing, …
- Skeletonization (line and plate+line skeletons), skeleton tracing with measurements (branch length, cross-sectional area…).
- Detection of interfaces using an Edwards-Wilkinson surface model
- Orientation analysis using the structure tensor approach
- Fast separable distance map and local thickness map
- Watershed segmentation, region growing, estimation of surface curvature by quadric fitting or using an implicit form.
- Particle/blob/connected component analysis and visualization.
- Generation of 3D shapes like spheres, boxes, …
- I/O with
.pngimage sequences; memory-mapped
- Supports (at least) unsigned and signed 8-, 16-, 32-, and 64-bit integer and 32-bit floating point pixels.
- Most operations can be performed on arbitrarily large images either locally or on a computer cluster with lazy evaluation.
Versions for Windows and some Linuxes can be downloaded from the GitHub Releases page.
Windows users must have the Visual Studio Redistributable package installed. Other installation steps are not necessary, just unpack the .zip archive to a suitable folder.
Linux users must ensure that fftw3, libpng, libtiff, zlib, and a recent version of glibc are installed.
For other platforms, refer to prerequisites and build instructions at GitHub.
Quick start examples¶
Python script or iPython console:
from pi2py2 import * pi = Pi2() img = pi.newimage(ImageDataType.UINT8, 100, 100, 100) pi.noise(img, 100, 25) pi.writetif(img, './noise')
Linux shell with pi2 as a standalone program:
./pi2 "newimage(img, uint8, 100, 100, 100); noise(img, 100, 25); writetif(img, ./noise);"
Windows Command Prompt with pi2 as a standalone program:
pi2 newimage(img, uint8, 100, 100, 100); noise(img, 100, 25); writetif(img, ./noise);
In a C# program:
Pi2 pi = new Pi2(); Pi2Image img = pi.NewImage(ImageDataType.UInt8, 100, 100, 100); pi.Noise(img, 100, 25); pi.WriteTif(img, "./noise");
For more complicated examples, please refer to the Examples page.
- Using pi2 from Python
- Using pi2 from shell or command line
- Using pi2 from .NET programs
- Using pi2 from C++ code and other programming languages
- Distributed processing and cluster configuration
- Non-rigid stitching & the NRStitcher program
- Command reference
- Supported file formats
- Articles where pi2 has been used
- Spherical coordinates