List of my modules...
Module: Partition
Description:
Decomposes an object into elements, by using the method described in [1].
The process is a series of operations illustrated in the following figure.
Illustration of the sequence of operations, from left to right, top to bottom: original image, binarised (with optional biggest connected component extraction) and with a pre-processing to remove topological artefacts, Euclidean distance transform, skeleton transformed into a graph, processed graph to merge nodes into clusters that define the elements, and finally watershed that delimits the elements inside the object.
Notes
- Periodic boundary conditions are not an option yet.
- Very summary documentation. Please email me if more detail is needed.
Connections:
Data
[required]
The input image, of type HxUniformScalarField3.
Mask
[optional]
A mask image, of type HxUniformScalarField3, to indicate the region of interest to decompose. For example, if you were to perform a pore decomposition with this module on a open porosity, this can be a binary image indicating where the interior of the sample is.
Ports:
Threshold

Threshold defining the pixels of the object.
Comparison

The way the threshold value is used.
Mask_Threshold

If a mask image is connected, threshold defining the region of interest in the input image.
Mask_Comparison

The way the mask threshold value is used.
Connectivity

Specifies voxel adjacency relation for the skeleton (and subsequently for the conversion to a graph).
Options

Some options: Save specifies to save to file all intermediate results, Stats computes statistics on the resulting elements, to obtain a spreadsheet of values, Low_mem tries to use as little memory as possible, namely by converting the distance transform to bytes before skeletonising (takes a quarter of the memory), and BCC computes the decomposition on the biggest connected component of the binarised image.
Directory

If the Save options is checked, this port specifies the directory in which to save the intermediate results.
Graph_Processing

Element positioning options at the graph level, i.e. after the conversion of the skeleton to a graph structure. Includes node merging and insertion. The first option, Merge, considers the overlap of the spheres centered on the nodes with radius equal to the corresponding value in the distance map. If the overlap is greater than a certain threshold fraction of the volume of the smallest of the two (given in the port Relative_volume_threshold), then they are merged into one cluster. Remove_unconstricting_paths also merges two nodes if the branch or connection between them does not show a sufficient constriction or bottleneck. The radius along the path must decrease by a certain margin, given in port Constriction_Margin in between the connecting nodes. If so, nothing is done. Otherwise we consider that the two nodes belong to the same cluster and are merged. Add_nodes works in the same way, by examining the radius along paths, but inserts new nodes if the radius dips to a minimum, rises, and dips again. If the smallest difference between that local maximum and the two surrounding local minima (called the dynamic) is greater that a certain threshold, given in the port Dynamic, then a node is added at the position of the local maximum. Finally, More_merging merges small nodes (small being defined in the port Small_threshold) with the biggest neighbouring one.
For more info, see the documentation for module Skeleton_Process, which it directly uses.
Relative_volume_threshold

If the Merge option is selected in Graph_Processing, then this defines the threshold of the overlap fraction (between 0 and 1) above which the nodes are merged.
Constriction_Margin

If the Remove_unconstricting_paths option is selected in Graph_Processing, this defines the threshold above which a constriction is detected.
Dynamic

If the Add_nodes option is selected in Graph_Processing, this defines the threshold on the local min-max difference along a branch above which a node is inserted.
Small_threshold

If the Add_nodes option is selected in Graph_Processing, defines the size below which nodes are considered small and are merged.
Surface_merge

Post-process of the decomposition. It looks at the connecting surface between elements and merges those that have a high enough fraction of their surface connected to others. This option make use of the module Pore_Merge
Surface

Surface fraction threshold above which to merge.
Compute

Starts the computation.
Commands:
Additional options can be accessed when typing in the console Partition COMMAND_NAME.
create
Runs the computation. Returns the name of the output, so it can be used in a script, such as set RESULT [Partition create].
Reference:
[1] E. Plougonven. Link between the microstructure of porous materials and their permeability [dissertation], University of Bordeaux-1, 2009.