Module: Converging Active Contours Segmentation ()
Binarize the image, that is classify every non-masked voxel as belonging to one of two phases, using a region growing method called converging active contours. This is a rather more sophisticated method for achieving the same task than Thresholding. Like that filter, the primary information used by this method is the intensity (value) of each voxel.
This method is designed to be fairly noise tolerant, and to produce relatively smooth interfaces with small numbers of isolated pieces. This characteristic can be a disadvantage if the image is of sufficient quality that very small features, containing just a few voxels, can be considered as real. It can also be a disadvantage for identifying very fine features, since the finite speed of the region growth makes it difficult for one phase to advance very far. If one is working with a high quality image then it is normal to set the initial thresholds very close to one another. In this case the algorithm will run more quickly and will generate results closer to that of simple thresholding.
The algorithm works by choosing two initial threshold values. Voxels with values less than the low threshold are classified as "definitely low"; those with values above the high threshold are "definitely high", while those in between are classified as "undecided". Additionally, one may specify a gradient threshold for this step; any voxel with a local gradient (calculated using the Sobel filter) higher than the gradient threshold is automatically classified as undecided.
After the initial thresholding, the algorithm expands the two "definite" regions into the undecided region towards one another. The two interfaces grow simultaneously using a speed function which depends on the local gradients and (optionally) intensities. The algorithm terminates when every voxel has been classified as either high or low.
The speed function can be controlled by numerous parameters, almost all of which need never be altered from their defaults. The main thing that a user needs to know is that the speed is greatly reduced in regions of high gradient. Since phase boundaries (edges) should lie in regions of high gradient, a growing interfaces that encounters an edge will therefore slow down and wait until the other interface arrives. It is somewhat unclear just how effective this method is for tomographic images that contain rather diffuse (blurry) edges.
The algorithm has an optional additional intermediate step, controlled by the "tight" thresholds. If tight thresholding is used, then a second thresholding step is performed, in which voxels that had been classified as "undecided" may be classified as "maybe_low" or "maybe_high". In the second stage we first perform a cluster labelling of the maybe_low and maybe_high phases, giving each connected component a different label. Then, clusters of maybe_low that are adjacent to regions that were labelled low in the first stage are labelled low; clusters that are disconnected from the low phase are labelled undecided. In the same way clusters of maybe_high voxels are labelled as high or undecided. Now that all voxels are labelled low, high or undecided we proceed with the CAC algorithm as described above. Tight thresholds enable one to eliminate isolated components from the final segmentation without using the time consuming CAC process. They are particularly useful for phase-contrast images.
The CAC segmentation algorithm is rather time consuming and uses the time-warp framework for parallelisation. Run times are roughly proportional to the number of undecided voxels before the CAC step. High porosity samples, or ones where a large fraction is undecided, may take longer.
Data [required]
The uniform scalar input field to be processed. Limitation: only 16-bit unsigned data with less than 2 billion voxels are currently supported.
Lower Threshold
Cut off value below which the voxels are labelled as void in the initial thresholding, if the gradient is also lower than the void gradient threshold.Upper Threshold
Cut off value above which the voxels are set to solid in the initial thresholding, if the gradient is lower than the grain gradient threshold.Use Gradient Thresholds
In addition to thresholding on intensity, threshold on gradient.Void Gradient Threshold
Initial gradient threshold value for 'void' voxels - those with intensity values below the lower_threshold. If the gradient is above this value the voxel is set to undecided in the initial thresholding.Grain Gradient Threshold
Initial gradient threshold value for 'grain' voxels - those with intensity values above the upper_threshold. If the gradient is above this value the voxel is set to undecided in the initial thresholding.Use Tight Thresholds
Tight thresholds may aid difficult segmentations with disconnected small lower and higher intensity regions. Linear gradients provide a more dynamic use of gradient information.Tight Lower Threshold
Cut off value below which the data is conditionally set to void before the second stage. Clusters of maybe_void set to void in this stage remain void only if they connect to regions set to void in the initial thresholding.Tight Upper Threshold
Cut off value above which the data is conditionally set to grain before the second stage. Clusters set to maybe_grain in this stage remain grain only if they connect to regions set to void in the initial thresholding. Should be lower than upper_threshold.Tight Void Gradient Threshold
The secondary gradient threshold for the void phase.Voxels with intensities less than the lower tight threshold but with higher gradient values than this parameter will be put in the undecided group otherwise they will be set to maybe pore. This parameter can undermine the effectiveness of tight thresholds so it should be used with care.Tight Grain Gradient Threshold
The secondary gradient threshold for the grain phase.Voxels with intensities greater than the upper tight threshold but with higher gradient values than this parameter will be put in the undecided group otherwise they will be set to maybe grain. This parameter can undermine the effectiveness of tight thresholds so it should be used with care.Use Linear Thresholds
Inner Lower Threshold
Cut off value below which the data is set to void before the second stage if its gradient falls below a decreasing gradient parameter. At the lower threshold the gradient parameter is the inner void gradient. This decreases linearly to zero as the intensity values increase to this inner lower threshold.Inner Upper Threshold
Cut off value above which the data is set to solid before the second stage if its gradient is below an increasing gradient parameter. At the inner upper threshold the gradient is zero. This increases linearly to the inner grain gradient when the intensity values reach the upper threshold.Inner Void Gradient Threshold
Secondary gradient threshold for the void phase.Voxels with intensities between the lower and inner lower thresholds will be set to void if the gradient is below a decreasing value. This value is equal to the inner void gradient threshold at the first intensity threshold and drops to zero linearly to the inner lower threshold.Inner Grain Gradient Threshold
Secondary gradient threshold for the grain phase.Voxels with intensities between the upper and inner upper thresholds will be set to grain if the gradient is below an increasing value. This value is equal to zero at the inner upper threshold and increases linearly to the inner grain gradient at the upper intensity threshold.Void Grain Speed Ratio
Ratio between the speed of growth of the void seed regions relative to the grain regions. Values less than one retard the void phase relative to the grain phase; values greater than 1 speed it up. Normally this should be left at 1.0.Unassigned Voxel Phase
If the segmentation is taking place in a multiply-connected domain, then it's possible to have some isolated components of the domain that don't have any seed values. These regions will always end up as undecided. If you are using a multiply connected domain, e.g. as part of a multi-stage segmentation, then you may wish to assign a particular phase to these regions, often a phase with a low gradient threshold. For normal segmentations this should be left to -1 which will means that unassigned voxels cause an error.Gradient Divisor
The higher this value is, the less influence the gradient will have on the front propagation speed. The default value should be sufficient in almost all cases.Gradient Exponent
Larger exponents increase the speed sensitivity to the gradients. Normally best left at the default value.